makeglossariesNP.yaml

makeglossariesNP.yaml

我不想安装 Perl。我使用 arara 进行构建。我使用词汇表包。

我可以不使用makeglossaries帮助脚本来编译我的文档吗(我不想安装 Perl)?我也使用 biblatex。

目前我的 arara 指令如下所示:

% arara: xelatex
% arara: biber
% arara: xelatex
% arara: clean: {files ... blah blah

我需要将词汇表编译命令放在哪里?它必须放在 xelatex 编译之前还是之后?

非常感谢。

答案1

cmhughes 的答案最适合一般用途,但您也可以只使用指令,makeindex但您需要明确写出文件名。如果调用您的 LaTeX 文件,myDoc.tex则以下内容将起作用:

% arara: makeindex: {style: myDoc.ist, options: "-t myDoc.glg -o myDoc.gls myDoc.glo"}

(避免文件名中有空格。)这样只会创建main词汇表。如果您使用了该acronyms选项,则需要有一行类似的首字母缩略词列表:

% arara: makeindex: {style: myDoc.ist, options: "-t myDoc.alg -o myDoc.acr myDoc.acn"}

类似地,如果您有额外的词汇表(通过\newglossary或通过其他包选项明确创建,例如index)。

如果您想按字母顺序而不是单词顺序排序,则需要添加-l到选项列表中。

(该脚本的优点makeglossaries是它会读取.aux文件,找出文档中定义了哪些词汇表、它们对应的文件扩展名是什么,以及是否使用makeindexxindy。TeX Live 带有自己的 Perl 解释器。唯一的不便之处是对于 MiKTeX 用户来说,但是MiKTeX 和 Perl 脚本(以及一个 Python 脚本)提供 MiKTeX 的说明。)

编辑: ararav4.0 有一个makeglossarieslite规则它可用于调用makeglossaries-lite.lua,即 的 Lua 替代品makeglossaries。由于 LuaTeX 需要 Lua 解释器,因此现代 TeX 系统应该已经有一个可用的解释器。

虽然makeglossaries-lite.lua没有完整的功能集makeglossaries,但它仍然具有能够从.aux文件中提取词汇表信息的优势,而这是显式调用无法makeindex做到的,因此可以与文档中定义的任意数量的自定义词汇表一起使用。

答案2

下列的尼古拉·塔尔博特评论,以及来自arara,我们知道该makeglossaries规则实际上只是一条捷径:

makeindex -s myfile.ist -t myfile.glg -o myfile.gls myfile.glo

因此,我们可以做出arara使用 为我们完成此操作@{getBasename(file)}

makeglossariesNP.yaml

!config
# Make glossaries *without perl* rule for arara
# author: Chris Hughes
# last edited by: cmh, March 3rd 2014
# https://tex.stackexchange.com/questions/163474/how-to-compile-glossaries-with-arara-without-perl
# requires arara 3.0+
#
# Sample usage
#
# % arara: makeglossariesNP
#
identifier: makeglossariesNP
name: makeglossariesNP
commands: 
- <arara> makeindex -s @{getBasename(file)}.ist -t @{getBasename(file)}.glg -o @{getBasename(file)}.gls @{getBasename(file)}.glo
arguments: []

myfile.tex

% arara: pdflatex
% !arara: makeglossaries
% arara: makeglossariesNP
% arara: pdflatex
\documentclass{article}
\usepackage{glossaries}
\newglossaryentry{equation}{name=equation,description={an equation usually involves at least one variable, and 
has two sides; typically we will try and solve an equation for one of the unknown variables}}
\newglossaryentry{expression}{name=expression,description={an expression usually involves at least one variable--
    in contrast to an equation, an expression does not have two sides, and will often need to be simplified (not solved)
in some way}}

\makeglossaries

\begin{document}

\glsaddall
\printglossary
\end{document}

相关内容