优点:

优点:

我正在尝试在我的硕士论文中实现该nomencl包,但在制作latexmk/makeindex创建或更新nls文件时遇到了严重问题。我最终nls从终端手动创建了文件(根据nomencl文档),但它不会更新。我正在使用 TeX Live 和 Sublime Text 2 以及 LaTeXTools。

因此,根据相当广泛的网络信息,我不是唯一一个在正确创建nomencllatexmk/或makeindex通信方面遇到麻烦的人。根据一个帖子,我尝试将以下代码添加到文件中latexmkrc

# for nomenclature
add_cus_dep("nlo", "nls", 0, "nlo2nls");
sub nlo2nls {
    system("makeindex $_[0].nlo -s nomencl.ist -o $_[0].nls -t $_[0].nlg");
}

latexmkrc我在 Mac 上找到了不少于 8 个文件,但都无法根据latexmk文档找到它们,而且没有print('Hello, world!');对任何文件添加任何响应。我还尝试在(和,以防万一)中创建一个latexmkrc文件。两者都没有响应/opt/local/share/latexmk/LatexmK/opt/local/share/latexmk

Hello, world!

我的问题是:如何让nls文件自动创建和更新?

答案1

以防万一latexmk,第一步是latexmk -v在命令行/终端上验证您当前的版本;当前版本是 4.35,日期为 2012 年 11 月 11 日。否则,请更新您的 TeXlive 发行版或通过以下方式更新到最新版本latexmk 在 ctan

使用终端 (Linux)根据您的需求在.latexmkrc主目录中的文件中添加自定义依赖命令。有关nomencl示例,请参阅examplerc 脚本在ctan

  gedit $HOME/.latexmkrc 

内容如下

 # Custom dependency and function for nomencl package 
 add_cus_dep( 'nlo', 'nls', 0, 'makenlo2nls' );
 sub makenlo2nls {
 system( "makeindex -s nomencl.ist -o \"$_[0].nls\" \"$_[0].nlo\"" );
 }

那么它应该可以一起工作latexmk,至少对我来说是这样的。

答案2

如果可以的话,我建议你尝试一下阿拉拉

优点:

  1. 它有一本为人类编写的很棒的手册;-)
  2. 您可以在文档中使用指令,这意味着您可以用不同的方式编译不同的文档。换句话说,指令是特定于文档的。
  3. 编译很简单,只需一步:arara yourfile
  4. 文档告诉您如何集成 arara 以在许多编辑器中获得一键工具栏按钮。因此,您可以在编辑器中运行 arara。
  5. 它随 texlive 一起提供。
  6. ....
  7. ......

这是一个示例文件(例如myfile.tex):

% arara: pdflatex
% arara: nomencl
% arara: pdflatex
% arara: pdflatex
% !arara: indent: { overwrite: false, output: outputfile.tex, trace: true }

\documentclass{report}
\usepackage{nomencl}

\makenomenclature

\begin{document}
\printnomenclature

\chapter{Structural Analysis} \label{sec:Structural Analysis}
\section{Sectional Properties} \label{sec:Sectional Properties}

The cross-sectional area is defined as
\begin{equation} \label{eqn:Cross-sectional area}
    A = \int_{S} \, dS
\end{equation}
\nomenclature{$A$}{cross-sectional area, m$^{2}$}
\nomenclature{$S$}{arbitrary surface}

\chapter{Structural Analysis} \label{sec:Structural Analysis2}
\section{Sectional Properties} \label{sec:Sectional Properties2}
The cross-sectional area is defined as
\begin{equation} \label{eqn:Cross-sectional area2}
    A = \int_{S} \, dS
\end{equation}
\nomenclature{$A2$}{cross-sectional area, m$^{2}$}
\nomenclature{$S2$}{arbitrary surface}

\end{document}

使用 编译此文件arara myfile。有关详细信息,请参阅文档

相关内容