按照下面的 MWE,我正在使用该glossaries
包来处理插入文本的值的自动化。
- 当趋势和讨论/结论没有改变但更新时价值观很难替换时,这很有用
- 这也是高度可定制的,以进行比较(最大搜索)和简单的数学。
- 从分析程序导出的值可以很容易地编写到观察到的
\newglossaryentry{}
条目中并导入,从而轻松进行动态更新
从下面可以看出,词汇表条目的创建需要描述,这有点浪费内存,因为这个例子(最小)无法显示,对于数千个条目,glossaries
返回内存大小限制问题。
除了之外,有没有更直接的方法将外部保存的值导入我的文档glossaries
?
注意:目前,Lua 脚本选项不是我可以维护的解决方案,但如果这是唯一的选择,我会欢迎它作为我进军的起点LuaTex
。
\documentclass{article}
\usepackage[nogroupskip,toc,acronym,indexonlyfirst]{glossaries} % must come after href
\usepackage{scrwfile}%http://www.dickimaw-books.com/cgi-bin/faq.cgi?action=view&categorylabel=glossaries#glsnewwriteexceeded
\newglossary[datag]{data}{datat}{datan}{Data}
\makeindex % activate index-making
\makeglossaries
\newglossaryentry{d.ControlRatio_Pooled_Classification_Control-Control}{ type={data}, name={1}, description={1} }
\newglossaryentry{d.ControlRatio_Pooled_Classification_Stimulant-Condition1}{ type={data}, name={0.86}, description={0.86} }
\newglossaryentry{d.ControlRatio_Pooled_Classification_Stimulant-Condition2}{ type={data}, name={0.83}, description={0.83} }
\begin{document}
Testing glossary for values \gls{d.ControlRatio_Pooled_Classification_Control-Control}, \gls{d.ControlRatio_Pooled_Classification_Stimulant-Condition2}, \gls{d.ControlRatio_Pooled_Classification_Stimulant-Condition2}
No need to run a builder of makeindex because I have no intention of creating a summary list.
\end{document}
答案1
我认为使用glossaries
这里有点过头了。这是一个重量级的包,因为它是为如此广泛的用途而设计的(常规术语、缩写、符号、复数、用户定义的附加信息等)。这个datatool
包也是重量级的,而且我再次认为使用它对于您的要求来说太过分了。如果您只对通过引用存储和查找值感兴趣,那么这里有一个更简单的替代方案,它使用etoolbox
:
\documentclass{article}
\usepackage{etoolbox}
\newcommand*{\newentry}[2]{%
\ifcsdef{@entry@#1}%
{\GenericError{}{Entry `#1' already defined}{}{}}%
{\csdef{@entry@#1}{#2}}%
}
\newcommand*{\entry}[1]{%
\ifcsdef{@entry@#1}%
{\csuse{@entry@#1}}%
{\GenericError{}{Entry `#1' not defined}{}{}}%
}
\newentry{d.ControlRatio_Pooled_Classification_Control-Control}{1}
\newentry{d.ControlRatio_Pooled_Classification_Stimulant-Condition1}{0.86}
\newentry{d.ControlRatio_Pooled_Classification_Stimulant-Condition2}{0.83}
\begin{document}
Testing values
\entry{d.ControlRatio_Pooled_Classification_Control-Control},
\entry{d.ControlRatio_Pooled_Classification_Stimulant-Condition1},
\entry{d.ControlRatio_Pooled_Classification_Stimulant-Condition2}.
\end{document}
该\newentry
命令定义用于存储相关值的控制序列。该\entry
命令访问存储的信息。该etoolbox
命令\ifcsdef
检查控制序列是否已定义。\GenericError
是 LaTeX 内核的一部分,用于打印错误消息。
如果您想进一步减少文档所需的资源,您可以跳过etoolbox
并直接使用 LaTeX 内核命令:
\documentclass{article}
\makeatletter
\newcommand*{\newentry}[2]{%
\@ifundefined{@entry@#1}%
{\@namedef{@entry@#1}{#2}}%
{\GenericError{}{Entry `#1' already defined}{}{}}%
}
\newcommand*{\entry}[1]{%
\@ifundefined{@entry@#1}%
{\GenericError{}{Entry `#1' not defined}{}{}}%
{\@nameuse{@entry@#1}}%
}
\makeatother
\newentry{d.ControlRatio_Pooled_Classification_Control-Control}{1}
\newentry{d.ControlRatio_Pooled_Classification_Stimulant-Condition1}{0.86}
\newentry{d.ControlRatio_Pooled_Classification_Stimulant-Condition2}{0.83}
\begin{document}
Testing values
\entry{d.ControlRatio_Pooled_Classification_Control-Control},
\entry{d.ControlRatio_Pooled_Classification_Stimulant-Condition1},
\entry{d.ControlRatio_Pooled_Classification_Stimulant-Condition2}.
\end{document}