最佳解决方案

最佳解决方案

我正在制作一本有 3 章的书。每章有 4 个部分。我需要将参考书目放在每个部分中,因此我使用\refsection环境来完成这项工作。

它运行得很完美,但是问题是我每次都需要手动编译 12 次参考书目。

我正在使用这个包含 2 个章节的示例代码,每个章节有 1 个参考书目部分:

\documentclass[12pt,twoside]{book}
\title{\LaTeX test for several things in my thesis}
\author{John Doe}

%% Biblio %%

\usepackage[backend = bibtex8,citestyle=numeric-comp,]{biblatex}

\addbibresource{biblio_1.bib}
\addbibresource{biblio_2.bib}

%% Document %%

\begin{document}

\begin{refsection}
\chapter{This is the 1$^{st}$ chapter}
Hello world, this is one reference \cite{Ex1}, and this is other \cite{Ex2}.
\printbibliography
\end{refsection}

%%

\begin{refsection}
\chapter{This is the 2$^{nd}$ chapter}
Hello world, this is one reference \cite{Ex3}, and this is other \cite{Ex1}.
\printbibliography
\end{refsection}

\end{document}

有没有办法在 TeXMaker 中进行批量编译,以避免编译 12 次(每次在编译器中手动更改 .aux 名称)并在一个命令中读取所有 .aux 文档(FileName1-blx.aux、FileName2-blx.aux...FileName12-blx.aux)?

提前感谢

答案1

最佳解决方案

最好的解决方案是使用 Biber 而不是 BibTeX/BibTeX8,后者现在被视为旧版后端。使用 Biber 您只需在一个文件上调用后端。

无论如何,切换到 Biber 是个好主意,因为 的一些出色功能biblatex只有 Biber 才可用。BibTeX 只允许您访问一组减少的功能。目前,文档暂时biblatex假设新文档使用 Biber。

切换到 Biber 应该像切换backend=bibtex8

backend=biber

然后你需要告诉你的编辑器运行 Biber 而不是 BibTeX,参见Biblatex 与 Biber:配置我的编辑器以避免未定义的引用


次优解决方案

您确实应该使用 Biber,但如果您实在无法切换,您可以尝试使用 来编译您的文档latexmk

latexmk可以自动找出需要在你的 TeX 文件上运行哪些工具。

所以

latexmk FileName

将自动运行

pdflatex FileName
bibtex8 FileName
bibtex8 FileName1-aux
bibtex8 FileName2-aux
pdflatex FileName
...

直到文件稳定。

当然,没有什么可以阻止您latexmk与 Biber 一起使用。


一个办法

您还可以编写批处理脚本/bash 脚本来为您执行此操作并在编辑器中调用它。

对于 Windows,以下操作似乎可以正常工作

@ECHO OFF

for %%f in (%**.aux) do (
    echo Running BibTeX8 on %%~nf
    bibtex8 %%~nf
)

另存为compilewithbibtex.bat。然后运行

 pdflatex <documentname>
 compilewithbibtex.bat <documentname>
 pdflatex <documentname>

在你的工作目录中。

对 Bash 也可以做类似的事情。

相关内容