latexmk 的 output_dir 破坏了 makeglossaries

latexmk 的 output_dir 破坏了 makeglossaries

我在使用 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有关于如何使其与软件包一起工作的信息。目前,该文件重点关注过时的软件包,您必须仔细阅读才能了解如何正确处理现代和软件包。这将在下一个版本中得到改进。glossariesexample_rcfiles/glossary_latexmkrcglossaryglossariesglossaries-extra

相关内容