TeXworks 的 Multibib:如何解析第二个 .aux 文件?

TeXworks 的 Multibib:如何解析第二个 .aux 文件?

我需要使用 multibib 包来创建双重参考书目文档。

我目前正在使用 TeXworks 0.4.3(在 Windows 7 上),但无法使双重书目系统运行。

MWE 是:

\documentclass{report}
\usepackage{natbib}
\usepackage{multibib}
%Secondary bibliography
\newcites{sec}{Secondary contributions}

Text with \citet{primauthor} and \citetsec{secauthor}.

\bibliographystyle{plainnat}
\bibliography{tbib}
\bibliographystylesec{plainnat}
\bibliographysec{tbib}

\end{document}

TeXworks 正确生成了“sec.aux”文件...但我不知道如何让它处理这个文件!multibib 包说我应该放一个 for 循环

#!/bin/bash
for file in *.aux ; do
bibtex ‘basename $file .aux‘
done

但我不知道把它放在哪里...:D

我尝试做了以下测试(Thesis 是基础 tex 文件的名称):

我所做的尝试

没有合理的结果...任何建议都将受到赞赏...

答案1

文档中提供的脚本multibib是基于 Unix 的,因此在 Windows 中运行它会遇到麻烦。在脚本中,还有另一个在单引号内运行的命令 - basename $file .aux-,它返回$file(循环中的当前元素for)的完整路径。

解决方案是按照以下顺序手动运行这些命令:

pdflatex mydoc
bibtex mydoc
bibtex sec
pdflatex mydoc
pdflatex mydoc

正如 Mico 在评论中所建议的,您还可以创建一个与 Windows 等效的批处理文件。距离我上次使用 Windows 批处理文件已经有一段时间了,但我几乎可以肯定我们可以使用这个:

@echo off
FOR %%A IN (*.aux) DO bibtex %%A

将其另存为myscript.bat。它将bibtex对当前目录中的所有.aux文件运行。现在,我认为 TeXworks 可能不会在当前目录中运行批处理文件,所以我们需要稍微改变一下:

@echo off
FOR %%A IN (*.aux) DO bibtex %1\%%A

然后使用参数调用 TeXworks (请注意,这myscript.bat是一个 TeXworks 变量,它扩展为包含根文档的目录的绝对路径)。$directory$directory

另一个建议(抱歉在这里自吹自擂)是使用arara使文档编译自动化。标题如下:

% arara: pdflatex
% arara: bibtex: { files: [ mydoc, sec ] }
% arara: pdflatex
% arara: pdflatex
\documentclass{report}
...

这里的秘密是第二行包含bibtex指令。将在(您的文档名称)上arara运行,并且也在上运行。bibtexmydocsec

抱歉,没有提供屏幕截图和更多信息,我现在不在 Windows 机器旁。

相关内容