我想在我的文档中添加词汇表。在此网站上:词汇表我找到了一个例子并在我的计算机上尝试了一下:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{glossaries}
\makeglossaries
\newglossaryentry{latex}
{
name=latex,
description={Is a mark up language specially suited
for scientific documents}
}
\newglossaryentry{maths}
{
name=mathematics,
description={Mathematics is what mathematicians do}
}
\title{How to create a glossary}
\author{ }
\date{ }
\begin{document}
\maketitle
The \Gls{latex} typesetting markup language is specially suitable
for documents that include \gls{maths}.
\clearpage
\printglossaries
\end{document}
结果我得到了 2 页,其中第二页(实际词汇表应该出现的位置)是空的。
但是,已创建以下 2 个文件:
- myDoc.glsdefs
- 我的Doc.glo
我也多次编译了我的文档。
在 Sharelatex.com(在线 Latex 编译器)上编译相同的示例时,一切都按预期工作(第二页不是空的)。
答案1
(顺便说一句,我不明白为什么该文件myDoc.glsdefs
是从您提供的文档中创建的,因为只有\newglossaryentry
在环境中使用时才会创建该document
文件。当我尝试该示例时,肯定不会创建此文件。请确保将所有命令保留\newglossaryentry
在序言中,或者您可以将它们放在单独的文件中并使用加载它\loadglsentries
。)
但是,正如其他人在评论中提到的那样,在 LaTeX 创建 PDF 文件后,需要运行另一个应用程序。此步骤是创建词汇表文件所必需的,该文件将在下次使用 LaTeX(构建/编译/排版)文档时输入。因此,步骤如下:
- 运行 (pdf)LaTeX 来创建
myDoc.pdf
- 运行索引应用程序来创建
myDoc.gls
- 运行 (pdf)LaTeX 来创建
myDoc.pdf
现在应该包含词汇表。
第 2 步是许多人陷入困境的地方。有两个索引应用程序:makeindex
和xindy
。所有 TeX 发行版都应该已makeindex
安装。这是一个预编译的应用程序,因此不需要任何额外的东西来运行它,但它是针对英文字母进行硬编码的,不支持 UTF-8。另一个索引应用程序,xindy
更加灵活,并且有针对不同语言的规则,但它是一个 Perl 脚本,这意味着您需要安装 Perl 才能运行它。
在你的文档中你只需要
\usepackage{glossaries}
\makeglossaries
这意味着假定makeindex
使用默认应用程序,并且glossaries
包将创建文件myDoc.glo
和myDoc.ist
,应用程序可以读取这些文件makeindex
。
如果你有
\usepackage[xindy]{glossaries}
\makeglossaries
然后glossaries
将创建文件myDoc.glo
和myDoc.xdy
,可以被读取xindy
。
记住是否使用makeindex
或xindy
以及将哪些选项传递给相应的应用程序可能会有点麻烦,因此glossaries
附带一个名为的 Perl 脚本makeglossaries
,它将读取myDoc.aux
文件并为您运行makeindex
或xindy
。(不要将外部makeglossaries
脚本与\makeglossaries
文档中的命令混淆。)如果您使用命令提示符然后您可以使用以下应用程序调用来构建您的文档:
pdflatex myDoc
makeglossaries myDoc
pdflatex myDoc
当您使用 ShareLaTeX 时,您的示例之所以运行良好,是因为 ShareLaTeX 检测到您需要运行makeglossaries
并在后台为您执行了该操作。
如果您没有安装 Perl,则无法使用该makeglossaries
脚本,但您可以使用现在随软件包提供的简化 Lua 脚本glossaries
。此脚本与文件名捆绑在一起makeglossaries-lite.lua
,但您可能会发现您的 TeX 发行版为其提供了不同的名称。例如,类 Unix 系统上的 TeX Live 会创建一个省略扩展makeglossaries-lite
名的符号链接.lua
。在这种情况下,构建过程是:
pdflatex myDoc
makeglossaries-lite myDoc
pdflatex myDoc
或者您也可以makeindex
直接运行:
pdflatex myDoc
makeindex -s myDoc.ist -t myDoc.glg -o myDoc.gls myDoc.glo
pdflatex myDoc
如果您不使用终端或命令提示符,即只需单击按钮或菜单项即可构建 PDF,那么您如何运行索引应用程序取决于您使用的文本编辑器(例如 TeXWorks、TeXnicCenter、WinEdt)。每个编辑器都有不同的添加新工具的方式,因此说明会有所不同,但大多数编辑器的手册中都会有一个您可以修改的示例。我有一个如何makeglossaries
在 TeXWorks 中添加的示例建立你的文档。本网站有:
如果其他方法都失败了,还有两种备用方法。如果您的软件包至少是 4.08 版,glossaries
则可以添加automake
软件包选项:
\usepackage[automake]{glossaries}
这需要\write18
启用该模式,但现在您只需运行 (pdf)LaTeX 两次:
pdflatex myDoc
pdflatex myDoc
这将为makeindex
您运行。由于 shell 转义存在安全风险,因此默认模式通常仅限于仅允许受信任的应用程序运行。受信任列表通常包括makeindex
但不包括xindy
。某些系统可能会完全禁用 shell 转义,在这种情况下,该选项对或automake
均不起作用。在文件中搜索 的实例以查明是否允许运行该应用程序。makeindex
xindy
.log
runsystem
另一种备用方法是减慢文档构建速度因为它将使用 TeX 对词汇表条目进行排序和整理,而不是使用更高效的makeindex
或xindy
应用程序。在这种情况下,您需要替换
\makeglossaries
和
\makenoidxglossaries
并替换
\printglossaries
和
\printnoidxglossaries
(或替换\printglossary
为\printnoidxglossary
.)例如:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{glossaries}
\makenoidxglossaries
\newglossaryentry{latex}
{
name=latex,
description={Is a mark up language specially suited
for scientific documents}
}
\newglossaryentry{maths}
{
name=mathematics,
description={Mathematics is what mathematicians do}
}
\title{How to create a glossary}
\author{ }
\date{ }
\begin{document}
\maketitle
The \Gls{latex} typesetting markup language is specially suitable
for documents that include \gls{maths}.
\clearpage
\printnoidxglossaries
\end{document}
这glossaries-extra
扩展包提供了另一种不需要外部应用程序的方法,但使用此方法,词汇表会列出全部按定义顺序定义的条目:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{glossaries-extra}
\newglossaryentry{latex}
{
name=latex,
description={Is a mark up language specially suited
for scientific documents}
}
\newglossaryentry{maths}
{
name=mathematics,
description={Mathematics is what mathematicians do}
}
\title{How to create a glossary}
\author{ }
\date{ }
\begin{document}
\maketitle
The \Gls{latex} typesetting markup language is specially suitable
for documents that include \gls{maths}.
\clearpage
\printunsrtglossaries
\end{document}
构建方法现在很简单:
pdflatex myDoc
本节对所有不同的方法进行了比较1.1 索引选项在glossaries
用户手册中。
最后,如果您需要调用外部应用程序,例如makeglossaries
或makeindex
,bibtex
您可能需要查看以下其中一个自动化工具, 例如阿拉拉,它将为您运行所有必需的应用程序。