我使用 latexmk 已有很长时间了,但自从上次更新 latexmk 4.70a(从 4.69a 开始)以来,我的一个演示文稿无法再编译。运行 bibtex 似乎存在一些问题。
这是错误日志的一段简短摘录:
bibtex:未写入 /workspaces/Ngas_Inrec_Presentation/Main.blg (openout_any = p)。我无法打开文件名“/workspaces/Ngas_Inrec_Presentation/Main.blg”
我创建了一个可重现的小示例:
主文本
\documentclass{article}
\usepackage[round]{natbib}
\bibliographystyle{abbrvnat}
\begin{document}
\cite{geng2017relationship}
\bibliography{lib}{}
\end{document}
库文件
@article{geng2017relationship,
title={The relationship between regional natural gas markets and crude oil markets from a multi-scale nonlinear Granger causality perspective},
author={Geng, Jiang-Bo and Ji, Qiang and Fan, Ying},
journal={Energy Economics},
volume={67},
pages={98--110},
year={2017},
publisher={Elsevier}
}
完整日志(工作和不工作)以及上述 2 个文件可在此处找到github要点。
有人有想法吗?提前谢谢大家。
编辑/更多信息。
在尝试手动执行命令后,我发现了以下内容:latexmk 4.70a 执行
bibtex "/workspaces/Ngas_Inrec_Presentation/Main.aux"
这是行不通的。
使用 latexmk 4.69a
bibtex "Main"
这确实有效。因此,指定完整路径似乎存在问题。我还尝试过:
bibtex "Main.aux"
检查文件扩展名是否会导致问题。没有,它工作正常。访问权限似乎也正确,因为使用以下命令编辑 Main.aux:
nano "/workspaces/Ngas_Inrec_Presentation/Main.aux"
也运行良好。
答案1
我已经在新版本latexmk
v. 4.70b 中修复了这个问题。在安装之前,请将其设置$bibtex_fudge
为 1,如另一个答案中所述。这可以在 latexmkrc 文件中完成,也可以在命令行中使用选项完成-e
。在 Linux 和 MacOS 下,您可以使用
-e '$bibtex_fudge=1'
在 MS-Windows 下,您可能应该省略单引号。
该设置会导致latexmk
在运行 bibtex 之前切换到适当的目录,并对环境变量进行一些其他恶作剧。此方法对某些文档也无效,这就是我在 v. 4.70a 中更改默认设置的原因。
笔记如果文档编译时输出目录位于当前工作目录下,则新版本中的修复将会起作用。
答案2
问题的原因是 latexmk 在最新版本中将 $bibtex_fudge 的默认值从 0 更改为 1。以下是该变量的描述:
$bibtex_fudge [0]
When using bibtex, whether to take special action to allow older versions of bibtex to work when $out_dir or
$aux_dir is specified. With bibtex from about 2019, this special action is longer be required; hence the default
is not to do it.
使用 VS-Code 和 Latex-Workshop 扩展时,有多种解决方案可以将此变量重新设置为 1。Github。