latexmk 似乎没有对我的 makeindex 自定义依赖项起作用

latexmk 似乎没有对我的 makeindex 自定义依赖项起作用

我正在尝试获取一个文档来打印 URL 列表,并且我有此处的示例makeindex这需要我在 pdflatex 的调用之间运行。latexmk -pdf似乎并没有自动执行,虽然我认为它会将.idx文件转换为.ind文件并自动重新运行pdflatex

手动操作如下:我有一个main.tex文件。

$ pdflatex main      # produces main-url.idx and main-url.mst
$ makeindex main-url # produces main-url.ind
$ pdflatex main      # produces a pdf with the index .ind file just created

据我了解,它latexmkmakeindex自动运行,但当我在干净的目录(仅有main.tex)上运行它时,.ind文件就不会被创建,并且索引也不会出现在pdf中。

我尝试过的方法:首先,我尝试向本地文件添加以下依赖项latexmkrc,但没有成功(我认为是因为已经有一条将.idx文件转换为.ind文件的规则:

# support for the printing urls:
add_cus_dep('idx', 'ind', 0, 'makeurlindex');
sub makeurlindex {
  return system("makeindex \"$_[0].idx\"");
}

然后我尝试将输出扩展更改为.ndx并具有自定义依赖项,如下所示,但同样没有成功:

# support for the printing urls:
add_cus_dep('ndx', 'ind', 0, 'makeurlindex');
sub makeurlindex {
  return system("makeindex \"$_[0].ndx\"");
}

此外,我尝试将输出文件更改为main.idx并相应地更新自定义依赖项,但它也不起作用。

最后,我尝试使依赖关系从 变为.mst.ind但没有效果。

我怎样才能latexmk对这种依赖采取行动?

答案1

idx我确定了一种使用常规->依赖关系处理的方法ind,即在 latex 文件中提供日志消息:

\wlog{}
\wlog{Writing index file \jobname-url.idx}

额外的日志消息是在实际消息之前强制换行。

这使得latexmk脚本能够找到索引消息并处理它。

相关内容