我以前使用 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
。