知道为什么我的词汇表没有显示吗?
%--- Long usepackage list, it got included to check for possible conflicts ----
\documentclass[11pt,a4paper,oneside,openright]{report}
\usepackage[utf8]{inputenc}
\usepackage[italian]{babel}
\usepackage[T1]{fontenc}
\usepackage[dvips]{graphicx}
\usepackage{tabularx}
\usepackage{subfigure}
\usepackage{afterpage}
\usepackage{amsmath,amssymb}
\usepackage{rotating}
\usepackage{fancyhdr}
\usepackage[scriptsize]{caption}
\usepackage[toc,section=chapter,acronym,automake]{glossaries}
\usepackage{color}
\usepackage{cancel}
\usepackage{lipsum}
\usepackage{enumitem}
\usepackage{url}
\usepackage{pdfpages}
\usepackage{makecell}
\usepackage{romannum}
\makeglossaries
\glstoctrue
\loadglsentries{glossario}
\begin{document}
\pagenumbering{arabic}
\tableofcontents
\listoffigures
\listoftables
%---- List of chapters to include ----
\printglossaries
% ---- Bibliography ----
\appendix
% ---- Appendices includes ----
\end{document}
它们显示得很好,我处理了几天文档,我一定没有意识到它们不再显示了。 \gls{} 和 \acr{} 正在工作,但没有打印词汇表页面。我正在使用 Texmaker,我的设置是:
- 快速编译:PdfLaTeX + Bib(la)tex + PdfLaTeX (x2) + Display Pdf
- 命令:PdfLaTeX:LateX_folder\miktex\bin\pdflatex -synctex=1 -interaction=nonstopmode %.tex
我尝试了能找到的所有建议,现在我担心某些包与词汇表相冲突。
答案1
首先使用一个简单的文档检查您的文档构建是否正确:
\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[toc,acronym]{glossaries}
\makeglossaries
\newglossaryentry{sample}{name={sample},description={an example}}
\newacronym{ex}{ex}{example}
\begin{document}
\tableofcontents
\chapter{Sample Chapter}
\gls{sample}, \gls{ex}.
\printglossaries
\appendix
\chapter{Sample Appendix}
\gls{sample}, \gls{ex}.
\end{document}
如果调用该文件myDoc.tex
则文档构建为:
pdflatex myDoc
makeglossaries myDoc
pdflatex myDoc
pdflatex myDoc
第一个 LaTeX 调用不会显示词汇表,但会写入生成词汇表所需的文件。
该
makeglossaries
调用使用在相应文件上makeglossaries
运行的 Perl 脚本。在本例中,它运行两次makeindex
,因为有两个词汇表(默认词汇表(除非使用,否则始终会创建)和由包选项创建的词汇表)。xindy
makeindex
main
nomain
acronym
acronym
makeindex
第二个 LaTeX 调用读取包含排版词汇表代码创建的文件。第三次 LaTeX 调用确保目录是最新的。
您的示例中有一些不必要的代码:
\glstoctrue
这是由包选项自动实现的toc
。直到第三次调用 LaTeX 时,词汇表才会显示在目录中。
section=chapter
这不是必需的,因为它是定义任何类文件的默认设置\chapter
(就是这种情况report
)。
automake
该选项告诉glossaries
软件包使用 TeX 的 shell 转义来运行makeindex
或xindy
。TeX 可以在完全禁用 shell 转义的情况下运行(在这种情况下automake
将不起作用),在受限模式下使用 shell 转义(automake
仅适用于受信任的应用程序,因此它适用于makeindex
但不适用于xindy
)或完全启用 shell 转义(存在安全风险,但允许automake
使用xindy
)。
如果您有一个运行的构建过程makeglossaries
(或makeglossaries-lite
,或明确makeindex
/ xindy
),那么您不需要automake
。
最好glossaries
最后加载(除非另一个必需包另有说明)。这是最后加载的一般规则的少数例外之一hyperref
。您的示例未使用,hyperref
因此如果在之后加载其他包,可能不会有太大问题glossaries
。
\usepackage[dvips]{graphicx}
与 无关glossaries
,但您已告知graphicx
您正在使用 DVI 格式,但您已声明您的构建过程使用 pdfLaTeX。使用现代 TeX 发行版,您不需要告诉软件包您正在使用哪种 LaTeX 格式,但是,如果您这样做,它实际上应该匹配,而这会冲突。
如果上述示例对您来说运行良好,则说明您的构建过程运行正常,这意味着问题出在文档代码的某个地方。下一步是添加其他包以查看它们是否会引起冲突:
\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[italian]{babel}
\usepackage{graphicx}
\usepackage{tabularx}
\usepackage{subfigure}
\usepackage{afterpage}
\usepackage{amsmath,amssymb}
\usepackage{rotating}
\usepackage{fancyhdr}
\usepackage[scriptsize]{caption}
\usepackage{color}
\usepackage{cancel}
\usepackage{lipsum}
\usepackage{enumitem}
\usepackage{url}
\usepackage{pdfpages}
\usepackage{makecell}
\usepackage{romannum}
\usepackage[toc,acronym]{glossaries}
\makeglossaries
\newglossaryentry{sample}{name={sample},description={an example}}
\newacronym{ex}{ex}{example}
\begin{document}
\tableofcontents
\chapter{Sample Chapter}
\gls{sample}, \gls{ex}.
\printglossaries
\appendix
\chapter{Sample Appendix}
\gls{sample}, \gls{ex}.
\end{document}
这份文档对我来说编译得很好。如果它不适合你,那么添加
\listfiles
在开头,它将在文件末尾显示所有已加载软件包的版本号.log
。将这些版本号与加拿大运输安全局。您使用的可能是旧版本,它会导致问题。
如果第二个示例对您来说运行良好,则可能是文件中的一个或多个条目定义存在问题glossario.tex
。因此,下一步是检查 创建的转录文件makeindex
。这些文件的扩展名为.glg
(for the main
glossary) 和.alg
(for the acronym
glossary)。这些文件中是否有任何错误消息?
我的示例文档名为test.tex
,因此第一个记录文件是test.glg
且包含:
This is makeindex, version 2.15 [TeX Live 2017] (kpathsea + Thai support).
Scanning style file ./test.ist.............................done (29 attributes redefined, 0 ignored).
Scanning input file test.glo....done (2 entries accepted, 0 rejected).
Sorting entries....done (2 comparisons).
Generating output file test.gls....done (7 lines written, 0 warnings).
Output written in test.gls.
Transcript written in test.glg.
第二个记录文件是test.alg
且包含:
This is makeindex, version 2.15 [TeX Live 2017] (kpathsea + Thai support).
Scanning style file ./test.ist.............................done (29 attributes redefined, 0 ignored).
Scanning input file test.glo....done (2 entries accepted, 0 rejected).
Sorting entries....done (2 comparisons).
Generating output file test.gls....done (7 lines written, 0 warnings).
Output written in test.gls.
Transcript written in test.glg.
两种情况下的关键行都是包含 的行(2 entries accepted, 0 rejected)
。如果任何条目被拒绝,则说明您的glossario.tex
文件存在问题,在这种情况下,请更改上述示例文档,以便将\newglossaryentry
和\newacronym
定义替换为您文件中的一个\newglossaryentry
和定义,并将相应的和替换。\newacronym
glossario.tex
\gls{sample}
\gls{ex}
以下是一些可能出错的地方(但这只是猜测,因为不知道该文件中实际包含什么):
- 一个或多个标签可能包含特殊字符或其他无法扩展为简单标签的内容。如果您有 UTF-8 字符,则包括这些字符
\usepackage[utf8]{inputenc}
(但 XeLaTeX/LuaLaTeX 不会出现此问题)。 - 字段中的某些内容
sort
(如果省略则从中获取name
)包含干扰用于转义makeindex
特殊字符的机制的代码。
第一个问题是两者中最常见的一个。
如果示例文档在修改后仍然有效,请尝试定义的每个术语,glossario.tex
直到找到一个失败的术语。如果它们都没有失败,那么问题可能在于您引用术语的方式。由于您没有提供如何使用\gls
(或类似命令)的示例,因此这再次只是猜测。您必须砍倒来查明问题所在。
可能出现的问题:
- 您没有
\gls
在文档的任何地方使用(或类似命令)。(抄本文件将显示0 entries accepted, 0 rejected
。) \gls
(或类似)已在某些干扰索引的上下文中使用。
第一个是最常见的原因。
答案2
显然,将附录移到词汇表之前解决了这个问题,词汇表打印正确了。LaTeX 功能强大,我几乎没触及它提供的可能性的表面,但有时它就是很愚蠢。