我是否过度使用了词汇表包?

我是否过度使用了词汇表包?

按照下面的 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}

相关内容