如何在 texstudio 中(或其他方式)对 \included 文件运行 bibtex

如何在 texstudio 中(或其他方式)对 \included 文件运行 bibtex

对于新手的问题,我感到抱歉,我正尝试在我的论文中使用 chapterbib 来获取多个参考书目。每个章节都在带有 \include 的主文件中,并且有来自同一 .bib 文件的自己的参考书目。我理解对于 chapterbib,我需要构建主文件,然后在每个子文件上运行 bibtex,然后再次构建主文件。但是,当我尝试在每个子文件上运行 bibtex 时,它只会再次在主文件上运行,而不是在子文件上运行。我正在使用 Texstudio,如何仅在子文件上运行 bibtex 以便 chapterbib 可以正常工作?

答案1

在主文件上运行 LaTeX 编译器(例如 PDFLaTeX)将为每个包含的文件创建辅助文件。打开每个辅助文件并在每个文件上运行 BibTex(在 TeXStudio 中按 F8)。您必须打开每个辅助文件并在每个辅助文件上运行 BibTex 以生成每个包含文件的 bbl 文件。然后,返回主文件。重新运行 LaTeX 编译器两次以生成每个章节的引文和参考书目。

答案2

您不需要parallel像 har-wradim 所说的那样安装工具箱。只需输入:

sh -c "for f in *.aux; do bibtex ${f}; done"

在 TeXstudio 配置窗口的 BibTeX 文本框中(即配置 --> 命令 --> BibTeX),您就可以开始了。

这对于 Linux/Mac 非常有效,对于 Windows,我们需要不同的命令:

cmd /C "FOR %f in (*.aux); DO bibtex %f"

解释:

  • 哈拉迪姆代码:什么parallel bibtex -- ?*.aux是不同的线对于它找到的每个带有扩展名的文件*.aux。虽然它可以工作,但使用多个线程运行任务需要parallel包。

  • 我的脚本:它只是通过以下方式删除了上述要求:

    1. 列出以aux(使用for语句)结尾的所有文件。
    2. 使用单核分别运行bibtex <file>.aux每个单独的文件。

答案3

最简单的解决方案是使用parallel bibtex -- ?*.aux配置 → 命令下的 BibTeX 命令。这意味着平行线已安装并可在 PATH 中使用,如果您使用的是 Linux 发行版,则默认情况下几乎肯定如此。使用 brew 在 OSX 上安装非常简单。不知道它在 Windows 上如何工作。

此解决方案不适用于名称中带有空格的辅助文件,但在文件名中使用空格首先可以说是一种不好的做法。

相关内容