词汇表仍为空白

词汇表仍为空白

我想在我的文档中添加词汇表。在此网站上:词汇表我找到了一个例子并在我的计算机上尝试了一下:

\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(构建/编译/排版)文档时输入。因此,步骤如下:

  1. 运行 (pdf)LaTeX 来创建myDoc.pdf
  2. 运行索引应用程序来创建myDoc.gls
  3. 运行 (pdf)LaTeX 来创建myDoc.pdf现在应该包含词汇表。

第 2 步是许多人陷入困境的地方。有两个索引应用程序:makeindexxindy。所有 TeX 发行版都应该已makeindex安装。这是一个预编译的应用程序,因此不需要任何额外的东西来运行它,但它是针对英文字母进行硬编码的,不支持 UTF-8。另一个索引应用程序,xindy更加灵活,并且有针对不同语言的规则,但它是一个 Perl 脚本,这意味着您需要安装 Perl 才能运行它。

在你的文档中你只需要

\usepackage{glossaries}

\makeglossaries

这意味着假定makeindex使用默认应用程序,并且glossaries包将创建文件myDoc.glomyDoc.ist,应用程序可以读取这些文件makeindex

如果你有

\usepackage[xindy]{glossaries}

\makeglossaries

然后glossaries将创建文件myDoc.glomyDoc.xdy,可以被读取xindy

记住是否使用makeindexxindy以及将哪些选项传递给相应的应用程序可能会有点麻烦,因此glossaries附带一个名为的 Perl 脚本makeglossaries,它将读取myDoc.aux文件并为您运行makeindexxindy。(不要将外部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均不起作用。在文件中搜索 的实例以查明是否允许运行该应用程序。makeindexxindy.logrunsystem

另一种备用方法是减慢文档构建速度因为它将使用 TeX 对词汇表条目进行排序和整理,而不是使用更高效的makeindexxindy应用程序。在这种情况下,您需要替换

\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用户手册中。

最后,如果您需要调用外部应用程序,例如makeglossariesmakeindexbibtex您可能需要查看以下其中一个自动化工具, 例如阿拉拉,它将为您运行所有必需的应用程序。

相关内容