我已经尝试让 multibib 工作了几个小时,但它没有读取或打印参考书目条目。这里可能出了什么问题?它应该在命令行上单独执行,而不是在 GUI(文本编辑器)上执行吗?
\documentclass[a4paper,11pt,german,american]{article}
\usepackage[resetlabels,labeled]{multibib}
\newcites{J}{\normalsize{Journal publications}\vspace*{0truemm}}
\newcites{C}{\normalsize{Conference publications}\vspace*{0truemm}}
\newcites{R}{\normalsize{General publications}\vspace*{0truemm}}
\begin{document}
x \citeJ{paper1} \citeC{paper1}
y \citeR{paper2} \citeR{paper2}
z \citeJ{paper3} \citeC{paper3}
\bibliographystyleR{IEEEtran}
\bibliographyR{articles}
\bibliographystyleJ{IEEEtran}
\bibliographyJ{articles}
\bibliographystyleC{IEEEtran}
\bibliographyC{articles}
\end{document}
答案1
根据第 1.2 节多号码包aux
文档,通过 创建的每个参考书目都会生成一个附加文件\newcites
。您需要bibtex
在这些附加辅助文件上运行。使用您的示例代码,.aux
运行 LaTeX 时会创建三个文件:C.aux
、J.aux
和R.aux
(当然还有通常的\jobname.aux
)。
这些额外的辅助文件中的每一个都需要单独进行 BibTeX 处理。我认为大多数 IDE 都没有设置处理这个问题;相反,它们(IDE)会将 bibtex 指向\jobname.aux
,因此不会产生与参考书目相关的输出。为了正确处理额外的辅助文件,您可以打开命令窗口,切换到文件所在的目录,然后发出命令
bibtex C
bibtex J
bibtex R
然后,再运行两次 LaTeX 以传播所有更改。
如果您有一个基于 Unix 的系统,文档建议使用以下 bash 脚本来自动执行此过程:
#!/bin/bash
for file in *.aux ; do
bibtex `basename $file .aux`
done
您可以在 tcsh 中执行相同操作。
#!/bin/tcsh
foreach x (*.aux)
bibtex `basename $x`
end
#