[英]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.