我正在运行latexmk
我的文档main.tex
:
latexmk -pdfxe -silent -synctex=1 "main"
当我运行命令时,我收到此消息(通常连续重复几次):
Latexmk: ???!!!==== Using biber OMITTING TEST on missing bib files
Latexmk: !!!!!!!!!!! Fls file lists log file as an input file for rule 'xelatex'. I won't treat it as a source file, since there appear to be no good uses for it. This behavior happens at least under acmart.cls with xelatex
我没有acmart.cls
在我的文档中使用,除非它被包含在另一个包中。
我的.latexmkrc
文件包含以下内容:
ensure_path( 'TEXINPUTS', './pkg//' ); # Includes custom package files that I have placed in the ./pkg directory
$bibtex_use=2;
# Run bib2gls as needed
# From support/latexmk/example_rcfiles/bib2gls_latexmkrc (CTAN)
push @generated_exts, 'glstex', 'glg';
add_cus_dep('aux', 'glstex', 0, 'run_bib2gls');
sub run_bib2gls {
if ( $silent ) {
my $ret = system "bib2gls --silent --group '$_[0]'";
} else {
my $ret = system "bib2gls --group '$_[0]'";
};
my ($base, $path) = fileparse( $_[0] );
if ($path && -e "$base.glstex") {
rename "$base.glstex", "$path$base.glstex";
}
# Analyze log file.
local *LOG;
$LOG = "$_[0].glg";
if (!$ret && -e $LOG) {
open LOG, "<$LOG";
while (<LOG>) {
if (/^Reading (.*\.bib)\s$/) {
rdb_ensure_file( $rule, $1 );
}
}
close LOG;
}
return $ret;
}
有人可以解释一下我运行时输出的消息latexmk
(以及如果可能的话,如何修复它们)吗? 我没有包含 MWE,因为我只是想询问错误消息的含义。
答案1
Latexmk 维护者在这里:
为什么会出现有关 .log 文件的警告? 正如 David 和 OP 所发现的,第二条警告消息(关于 .log 文件的消息)是由于将 hyperxmp 包与 xelatex 一起使用而导致的。在这种情况下,hyperxmp 会读取 .log 文件的元数据来设置当前日期和时间的值。这会导致 .log 文件在 .fls 文件中被列为 INPUT 文件。通常,latexmk 将 .fls 文件视为 *latex 的源文件的最终列表。
现在,任何源文件内容的更改通常都是 latexmk 重新运行 *latex 的原因。但 .log 文件不是正常的输入文件,因此 latexmk 应该警惕这种情况。存在潜在的无限循环,因为日志文件的第一行包含运行时间,并且可能在每次运行时发生变化而不会影响任何相关输出。
此时,我更愿意保留有关 .log 文件被列为源文件的警告消息,因为它表示可能存在异常情况。但我已修改了 latexmk 下一版本的消息措辞,并提到 hyperxmp 是可能的(且无害的)原因。
附加评论:在调试此类问题时,.fls 文件(以及 latexmk)报告已输入 .log 文件,一种自然的策略是查看 .log 文件以查看 .log 文件被读入的位置。当您这样做时,您会一无所获。一旦您知道 .fls 文件中的“INPUT file.log”行可能是由编译读取引起的,表面上的矛盾就解决了元数据.log 文件,而不是仅仅通过读取 .log 文件的内容。
为什么会出现关于省略缺少 .bib 文件的测试的警告?
Latexmk 有一个配置变量$bibtex_use
,其默认设置是只有 .bib 文件存在时才运行 bibtex;这可以防止在 .bbl 文件可用但 .bib 文件不可用的情况下覆盖 .bbl 文件。但是当使用 biber 而不是 bibtex 时,latex 当前确定 .bib 文件名称的方法仅适用于后运行 biber,与 bibtex 的情况不同。因此,您读到的消息实际上是在说 latexmk 不会遵循变量$bibtex_use
。这个问题将在下一个版本中得到修复。
答案2
这个警告意味着 latexmk 认为你有一个像这样的文档
\documentclass{article}
\begin{document}
\input{\jobname.log}
xxx
\end{document}
它输入一个.log
文件,它只是警告你,即使它是输入,它也不会将其视为源文件。
上述代码生成:
Latexmk: Examining 'dd159.fls'
Latexmk: !!!!!!!!!!! Fls file lists log file as an input
file for rule 'latex'. I won't treat it as a source file, since
there appear to be no good uses for it.
This behavior happens at least under acmart.cls with xelatex
Latexmk: !!!!!!!!!!! Fls file lists log file as an input
file for rule 'latex'. I won't treat it as a source file, since
there appear to be no good uses for it.
This behavior happens at least under acmart.cls with xelatex
Latexmk: !!!!!!!!!!! Fls file lists log file as an input
file for rule 'latex'. I won't treat it as a source file, since
there appear to be no good uses for it.
This behavior happens at least under acmart.cls with xelatex
Latexmk: !!!!!!!!!!! Fls file lists log file as an input
file for rule 'latex'. I won't treat it as a source file, since
there appear to be no good uses for it.
This behavior happens at least under acmart.cls with xelatex
Latexmk: Examining 'dd159.log'
Latexmk: Log file says output to 'dd159.dvi'