[英]How to make a dictionary on the Latex
我想要這種乳膠命令:
\\ setdictionary {dictionary_name} {key} {value}
\\ getdictionary {dictionary_name} {key}
這些命令應與C ++中的map <string,string>相同。
要定義一個關聯容器,有幾種工具。 最老的是keyval軟件包,它以某種方式被LaTeX3的pgfkeys和l3keys等更新的軟件包所取代。
l3keys和pgfkeys最初是作為將參數以key=value
形式傳遞給宏的方法而開發的。 l3keys是用戶界面,應與l3prop一起使用,該l3prop實現可與對象關聯並檢索的屬性列表。 如果不需要key=value
語法,也可以直接使用l3prop。
pgfkeys可能更易於使用。 您可以按分層方式定義鍵,設置這些鍵的值並進行檢索。
pgfkeys和l3的基本用法是
\documentclass{article}
\usepackage{pgfkeys}
\usepackage{expl3,xparse}
\begin{document}
% pgfkeys version
\pgfkeyssetvalue{/my dictionary/my entry1}{Hello world!}
\pgfkeysvalueof{/my dictionary/my entry1}
% with latex3 prop
\ExplSyntaxOn
\prop_new:N \mydict % define a container (property list)
\prop_new:N \myotherdict % and another one
\NewDocumentCommand \AddToDict { O{\mydict} m m } % add a key to a dictionary default to \mydict
{
\prop_put:Nnn #1 {#2}{#3}
}
\NewDocumentCommand \GetFromDict { O{\mydict} m } % get a key from a dictionary default \mydict
{
\prop_item:Nn #1 {#2}
}
\ExplSyntaxOff
\AddToDict{my entry1}{Hello again world!}
\GetFromDict{my entry1}
\AddToDict[\myotherdict]{my entry1}{Hello again again world!}
\GetFromDict[\myotherdict]{my entry1}
\end{document}
LaTeX3的方式有點復雜,因為捆綁包僅包含低級庫例程。 但這可能更靈活。 查看interface3手冊中的l3prop條目。
使用pgfkeys,有很多方法可以輸入值,檢索值,設置默認值,將代碼與鍵關聯等。請參閱tikz手冊中的“鍵管理”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.