我在使用 xindy 的自定义 latexMK.rc 文件和 makeglossaries 方面遇到了问题。
该文件:
\documentclass{article}
\usepackage[nomain,acronym,xindy]{glossaries-extra}
\makeglossaries
\newglossaryentry{API}{
type=\acronymtype,
name={API},
description={Application programming interface},
first={Application programming interface (API)},
plural={Application programming interfaces},
firstplural={Application programming interfaces (API's)}
}
\begin{document}
First: \gls{API}
Second: \gls{API}
\printglossary[type=\acronymtype]
\end{document}
编译批处理:
latexmk -lualatex -synctex=1 -shell-escape -r C:\latexmk\LatexMK.rc -pvc TEST.tex
这latexMK.rc
:
$out_dir = 'build';
#
$pdf_mode = 4;
$postscript_mode = $dvi_mode = 0;
#
add_cus_dep('glo', 'gls', 0, 'makeglossaries');
sub makeglossaries {
my ($base_name, $path) = fileparse( $_[0] );
pushd $path;
my $return = system "makeglossaries $base_name";
popd;
return $return;
}
问题如图所示。我尝试在文件中同时添加build\
两个$path
表达式.rc
。第一次成功了,但之后我无法重现该行为。
我尝试使用,automake
但没有效果。我也尝试makeglossaries
手动调用 - 并得到了所需的输出。
答案1
实际上,问题不在于使用,而在于您只定义了从文件$out_dir
创建文件的自定义依赖项。这是针对常规词汇表的。对于您的文档,您需要有一条从文件创建文件的规则。.gls
.glo
.acr
.acn
要纠正这个问题,只需添加以下行
add_cus_dep( 'acn', 'acr', 0, 'makeglossaries' );
到您的latexmkrc
文件中。
顺便说一句,使用 的当前版本makeglossaries
,您可以将子程序的定义简化为
sub makeglossaries {
my ($base_name, $path) = fileparse( $_[0] );
return system "makeglossaries -d '$path' '$base_name'";
}
Latexmk 分发和词汇表
请注意,在发行版中,在文件中latexmk
有关于如何使其与软件包一起工作的信息。目前,该文件重点关注过时的软件包,您必须仔细阅读才能了解如何正确处理现代和软件包。这将在下一个版本中得到改进。glossaries
example_rcfiles/glossary_latexmkrc
glossary
glossaries
glossaries-extra