我对命名法有一个新的问题。我在主文件中的序言中有以下几行:
\documentclass[ngerman,draft,table*]{sdqthesis}
\usepackage{nomencl}
\makenomenclature
\immediate\write18{%
makeindex -s nomencl.ist -o \jobname.nls -t \jobname.nlg \jobname.nlo%
}
.
.
.
在同一个主文件中我使用以下命令:
\打印命名法
然后,在主文件中包含的另一个文件中,我定义一个方程式:
\nomenclature{$P^{NOpt}$}{Elektrische Leistung der nicht optimierbaren Geräte}
编译后没有显示任何错误消息,但在任何地方都找不到命名法。有人知道我该怎么办吗?
有人建议我发布一个新问题,并附上指向其他问题的链接。
答案1
在关闭文件.nlo
(包含命名法条目)和调用 shell-escape 之间似乎存在一些异步 IO。
我已经定义了一个命令\writenomcl{\jobname}
并将其挂接到\AtEndDocument
,因此在两次运行之后pdflatex
,条目应该就在那里。
重点在于推迟写作,即没有\write18
和。\closeout
\immediate
\documentclass{article} % Don't have this sdqthesis.cls
\usepackage[utf8]{inputenc}
\usepackage{nomencl}
\makenomenclature
\makeatletter
\newcommand{\closenomencl}{%
\closeout\@nomenclaturefile%
}
\makeatother
\newcommand{\writenomencl}[1]{%
\closenomencl%
\IfFileExists{#1.nlo}{%
\write18{%
makeindex -s nomencl.ist -o #1.nls -t #1.nlg #1.nlo%
}%
}{\typeout{Nothing there}}%
}
\AtEndDocument{\writenomencl{\jobname}}
\begin{document}
\nomenclature{$P^{NOpt}$}{Elektrische Leistung der nicht optimierbaren Geräte}
\nomenclature{$\lambda$}{Wellenlänge}
Hello World
\printnomenclature
\end{document}