我想要这种乳胶命令:
\ setdictionary {dictionary_name} {key} {value}
\ getdictionary {dictionary_name} {key}
这些命令应该与C ++中的map
答案 0 :(得分:2)
要定义一个关联容器,有几种工具。最老的是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 dictionnary/my entry1}{Hello world!}
\pgfkeysvalueof{/my dictionnary/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手册中的“键管理”。