Latexmk 4.70a 无法编译带有 bibtex 引用的文档

Latexmk 4.70a 无法编译带有 bibtex 引用的文档

我使用 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

我已经在新版本latexmkv. 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

相关内容