如何直接在 TeX 文件中包含词汇表?

如何直接在 TeX 文件中包含词汇表?

词汇表包使用外部文件(尤其是文件.gls)来构建词汇表,例如在构建以下示例时。有没有办法将此类文件的内容直接包含在 TeX 文件中?那么就没有必要使用makeglossaries或提供该.gls文件,例如在将 TeX 文件提交给期刊时。

\documentclass{scrbook}
\usepackage{glossaries}
\makeglossaries

\newglossaryentry{eta}{name=\ensuremath{\eta},description={eta}}
\newglossaryentry{psi}{name=\ensuremath{\psi},description={psi}}

\begin{document}
    \glsaddall
    \printglossary
\end{document}

直接将文件内容添加到 TeX 文件中

! Undefined control sequence.
<argument> \glossarytitle 

顺便说一句:不需要更新参考资料或其他任何东西。我只需要布局和条目。

答案1

\printglossary不仅仅是输入词汇表文件,而且还首先执行相当多的设置,这就是为什么你不能简单地用它替换它\input

基本上,如果您不想使用外部应用程序,那么:

  1. 如果你想要所有定义的条目,不想要数字列表,也不需要自动排序,请\printunsrtglossary使用glossaries-extra扩展包。
  2. 否则使用\makenoidxglossary\printnoidxglossary(如 Christian 所述)。

第一种方法的示例:

\documentclass{scrbook}

\usepackage[nogroupskip]{glossaries-extra}

\newglossaryentry{eta}{name=\ensuremath{\eta},description={eta}}
\newglossaryentry{psi}{name=\ensuremath{\psi},description={psi}}

\begin{document}
\printunsrtglossary
\end{document}

没有编号列表的词汇表图像

这只需要一次latex调用,因为不执行排序,也不检查条目是否已被索引。我使用了,nogroupskip因为在这种情况下没有逻辑字母组。

上述方法不同于使用\makenoidxglossaries\printnoidxglossary方法,后者需要第二次运行来确定哪些条目已被索引。该noidx方法(表示为选项1在手册中)也尝试默认按字母顺序对条目进行排序,name如果sort省略键,则会从键中获取排序值,但数学标记(\ensuremath{\eta}等)会导致问题。使用定义顺序(而不是字母顺序)的示例:

\documentclass{scrbook}

\usepackage[sort=def,nogroupskip]{glossaries}

\makenoidxglossaries

\newglossaryentry{eta}{name=\ensuremath{\eta},description={eta}}
\newglossaryentry{psi}{name=\ensuremath{\psi},description={psi}}

\begin{document}
\glsaddall

\printnoidxglossary
\end{document}

带位置信息的词汇表图像

实际上可以添加字母组和位置列表,\printunsrtglossary但必须手动完成:

\documentclass{scrbook}

\usepackage{glossaries-extra}

\glsaddstoragekey{group}{}{\entrygroup}
\glsaddstoragekey{location}{}{\entrylocation}

\glsxtrsetgrouptitle{greek}{Greek Symbols}

\newglossaryentry{eta}{name=\ensuremath{\eta},description={eta},
 group={greek},location={\setentrycounter[]{page}\hyperbf{5}}}
\newglossaryentry{psi}{name=\ensuremath{\psi},description={psi},
 group={greek},location={\setentrycounter[]{page}\hyperit{3}}}

\begin{document}
\printunsrtglossary[style=indexgroup]
\end{document}

包含字母组标题和位置的词汇表图像

两种方法都要求在词汇表之前定义所有条目。第二种情况要求在序言中定义所有条目。第一种情况可能允许文档定义,但只能使用包选项docdefs=restricted。一般来说,最好把所有序言中的文档定义

相关内容