我该怎么做才能在这里打印术语表?

我该怎么做才能在这里打印术语表?

我以前使用 nomencl 没有任何问题,但最近遇到了这个无法解决的问题。

下面你可以找到一个 MWE。我使用 TeXworks。第一行来自这里。即使多次运行“pdfLaTeX”命令,也不会打印任何命名法。
这对我来说是最令人困惑的,因为同一个文档以前曾以这种方式创建过命名法。
我无法确定它停止显示的位置,并且不生成它的 MWE 也不包含原始文档的任何最新包含的包,因此我会排除包之间可能存在的任何冲突。

梅威瑟:

\immediate\write18{makeindex \jobname.nlo -s nomencl.ist -o \jobname.nls}
\documentclass[english]{article}
% Packages
\usepackage[english]{babel}
\usepackage{nomencl}
\title{ \LARGE \bf title\\}
\makenomenclature
% Start Document
\begin{document}
\maketitle
\printnomenclature
\nomenclature{foo}{a function}
\nomenclature{bar}{an argument}
\nomenclature[a]{fubar}{an undesired result}
\section{test}
\end{document}
% End Document

结果:

在此处输入图片描述

我做错了什么?否则,我该怎么做才能解决这个问题?

答案1

nomencl包用于makeindex按字母顺序对条目进行排序。要使命名法正常工作,您必须运行:

pdflatex - To write the \nomenclature commands into the .nlo file
makeindex - To read the .nlo file, sort it, and write the to the .nls file
pdflatex - To read back the .nls file and write the nomenclature to the .pdf

运行的命令行makeindex是:

makeindex <file>.nlo -s nomencl.ist -o <file>.nls

其中 file 是您的主 .tex 文件的名称。

每次写起来都很拗口,这就是为什么你的 .tex 文件的第一行是这样的:

\immediate\write18{makeindex \jobname.nlo -s nomencl.ist -o \jobname.nls}

makeindex每次都会自动运行。

由于从未调用过,所以您无法获取命名法makeindex,因此 .nls 文件为空。您必须启用 shell 转义才能正常工作\write18

您可以pdflatex -shell-escape <file>.tex手动运行,或者像使用 TeXWorks 一样,您可以使能够-shell-escape自动地。


推荐:

-shell-escape可能会很危险,如果你从互联网上复制代码,则表示你允许代码执行任何事物在您的计算机上,所以要小心。一般来说,这种事情不会发生,但谨慎总比后悔好。

作为替代方案,您可以使用arara它来自动化此类操作。arara有一个专门针对该nomencl包的规则。您只需将其添加到文档的标题中即可:

% arara: pdflatex
% arara: nomencl
% arara: pdflatex

并用 进行编译arara <file>.tex

相关内容