当缩写位于单独文件夹中时,列出缩写列表

当缩写位于单独文件夹中时,列出缩写列表

我查阅了多个资料来回答这个问题,包括文字博客latex.org分享乳胶。我复制了代码,虽然没有收到任何错误,但我没有得到所需的缩写列表,甚至没有得到标题缩写(或词汇表或任何其他标题)。我的缩写位于单独的文件夹中,因此我不知道这是否有区别。另外,我正在使用 Texmaker。

我有一个“主”文件夹,其中包含所有前言代码,并使用“include”命令将所有其他文件夹/章节整合在一起,例如:

\include{Frontmatter/title}
\newpage

\include{Frontmatter/abstract}


\include{Frontmatter/acknowledgements}

\include{Frontmatter/abbreviations}


\include{Frontmatter/declaration}


\tableofcontents
\newpage

\listoffigures
\addcontentsline{toc}{section}{\numberline{}\textit{List of figures}}
\newpage

\listoftables
\addcontentsline{toc}{section}{\numberline{}\textit{List of tables}}
\newpage

\pagenumbering{arabic}
\include{Chapters/ch1/ch1}

\include{Chapters/ch2/ch2}
etc.

我对 Latex 还比较陌生,因此非常希望能够提供一些简单的例子。

答案1

我认为可能存在多个问题。我在评论中已经提到了几个,但我认为可能还有更多:

假设您有一个名为的文件abbreviations.tex,其中包含:

\newacronym{xml}{XML}{extensible markup language}
\newacronym{svg}{SVG}{scalable vector graphics}
\newacronym{html}{HTML}{hypertext markup language}

然后应该输入前言使用\input\loadglsentries。在文档中,您需要使用如下命令\gls,它处理首次/后续使用格式和索引。

以下是完整的文档:

\documentclass{book}

\usepackage{glossaries}

\makeglossaries

\loadglsentries{abbreviations}

\title{Sample Document}
\author{Ann Author}

\begin{document}
\frontmatter
\maketitle
\tableofcontents
\printglossary[title={Abbreviations}]

\mainmatter

\include{introduction}

\end{document}

其中introduction.tex包含:

\chapter{Introduction}

Something about \gls{html}. Something else about \gls{html}.

如果调用主文件myDoc.tex,则构建过程为:

pdflatex myDoc
makeglossaries myDoc
pdflatex myDoc

或者(如果您没有安装 Perl):

pdflatex myDoc
makeglossaries-lite myDoc
pdflatex myDoc

(根据您的设置,您可能需要使用makeglossaries-lite.lua而不是makeglossaries-lite。)

如果您使用的文本编辑器只需单击按钮即可运行 LaTeX,那么您需要找到一种方法来添加makeglossaries(或makeglossaries-lite)作为可识别的工具。这取决于编辑器。既然您使用了标签texmaker,我猜这就是您正在使用的,所以尝试在 Windows 上使用 Texmaker 和词汇表

仅在创建关联文件后(在makeglossaries/makeglossaries-lite步骤期间)才会出现缩写列表。

另一个选项是使用automakepackage 选项,它将尝试在 LaTeX 运行期间使用 TeX 的 shell escape 生成关联文件。由于 TeX 能够执行其他应用程序存在安全问题,因此根据您的 TeX 设置,此操作可能会被禁止。

例如:

\documentclass{book}

\usepackage[automake]{glossaries}

\makeglossaries

\loadglsentries{abbreviations}

\title{Sample Document}
\author{Ann Author}

\begin{document}
\frontmatter
\maketitle
\tableofcontents
\printglossary[title={Abbreviations}]

\mainmatter

\include{introduction}

\end{document}

文档构建现在如下:

pdflatex myDoc
pdflatex myDoc

缩写列表仅包括文档中引用的术语\gls

Abbreviations HTML hypertext markup language. 1

(1 表示使用的页码\gls{html}。如果您不想要它,请使用nonumberlist包选项。)

xml和术语svg未列出,因为它们未被引用。以下是 的修改版本introduction.tex

\chapter{Introduction}

Something about \gls{html}.  Something else about \gls{html}.
Something about \gls{xml}.

重建文档,现在列出了 XML:

Abbreviations HTML hypertext markup language. 1 XML extensible markup language. 1

SVG 术语仍然未列出。

这是使用包的最常见方法glossaries。类似的方法是添加xindy包选项。构建过程大致相同,但现在makeglossaries将尝试运行xindy代替makeindex

还有另一种方法,它不使用任何外部工具,因为它使用 TeX 进行排序和整理,但它是效率最低的方法,在某些情况下可能会失败。修改后的文档如下:

\documentclass{book}

\usepackage{glossaries}

\makenoidxglossaries % <--- use TeX to sort and collate

\loadglsentries{abbreviations}

\title{Sample Document}
\author{Ann Author}

\begin{document}
\frontmatter
\maketitle
\tableofcontents
\printnoidxglossary[title={Abbreviations}]% <--- use TeX to sort and collate

\mainmatter

\include{introduction}

\end{document}

glossaries-extra扩展包提供了一种手动方法,不进行排序或整理。相反,所有定义的术语都将按定义顺序列出,即使它们未在文档中使用。以下是修改后的文档:

\documentclass{book}

\usepackage[sort=none]{glossaries-extra}

% set the abbreviation style before abbreviations are defined:
\setabbreviationstyle % requires glossaries-extra.sty
 [acronym]% governs \newacronym (unless category key is set)
 {long-short}% style name

\loadglsentries{abbreviations}

\title{Sample Document}
\author{Ann Author}

\begin{document}
\frontmatter
\maketitle
\tableofcontents
\printunsrtglossary[title={Abbreviations}]% <--- no sorting or collating

\mainmatter

\include{introduction}

\end{document}

Abbreviations XML extensible markup language SVG scalable vector graphics HTML hypertext markup language

现在列出了所有条目,但它们按定义顺序排列,没有数字列表。基本示例自动添加的描述后面的句号glossaries丢失了。您可以使用包选项postdot或将其添加回来postpunc=dot

使用glossaries-extra,你可以使用\newabbreviation代替\newacronym。例如:

\newabbreviation{xml}{XML}{extensible markup language}
\newabbreviation{svg}{SVG}{scalable vector graphics}
\newabbreviation{html}{HTML}{hypertext markup language}

[acronym]现在应该省略可选参数\setabbreviationstyle

% set the abbreviation style before abbreviations are defined:
\setabbreviationstyle % requires glossaries-extra.sty
 {long-short}% style name

事实上,long-short样式是 的默认样式\newabbreviation,因此您可以忽略它。我已将其包含在下面,以突出显示如果需要不同的样式,命令需要去哪里。

最后一种方法是使用.bib格式。如果你有大量术语,你可能会发现这种方法更方便,因为你可以在书目管理系统中管理文件,例如贾布雷夫

这些缩写现在在名为 的文件中定义abbreviations.bib(而不是abbreviations.tex):

% Encoding: UTF-8
@abbreviation{xml,
  short = {XML},
  long = {extensible markup language}
}

@abbreviation{svg,
  short = {SVG},
  long = {scalable vector graphics}
}

@abbreviation{html,
  short = {HTML},
  long = {hypertext markup language}
}

该文件现为:

\documentclass{book}

\usepackage[record]% using bib2gls
 {glossaries-extra}

% set the abbreviation style before abbreviations are defined:
\setabbreviationstyle % requires glossaries-extra.sty
 {long-short}% style name

\GlsXtrLoadResources[
 src={abbreviations}% definitions provided in abbreviations.bib
]

\title{Sample Document}
\author{Ann Author}

\begin{document}
\frontmatter
\maketitle
\tableofcontents
\printunsrtglossary[title={Abbreviations}]% <--- using bib2gls

\mainmatter

\include{introduction}

\end{document}

构建过程如下:

pdflatex myDoc
bib2gls myDoc
pdflatex myDoc

同样,您需要将 添加bib2gls到文本编辑器中作为可识别工具。只需按照 相同的步骤操作makeglossaries,但将 替换makeglossariesbib2gls


  • 对于除 之外的所有方法sort=none,您必须使用 之类的命令对需要出现在缩写列表中的术语进行索引\gls。未编入索引的术语不会出现在列表中。
  • 除了第一种方法(\makeglossaries仅使用基础glossaries包)之外,其他所有方法都无法在document环境中定义术语。使用第一种方法可以,但可能会出错。
  • 仅使用\input\loadglsentries不使用\include(除了bib2gls需要使用的方法\GlsXtrLoadResources)。

glossaries由于使用和包的方式有多种glossaries-extra,如果您遇到问题,则需要提供一个简短但完整的示例文档(如此处的文档)并说明您如何构建文档。

相关内容