我一起使用multibib
和natbib
来获取两个不同的书目(一个用于正文,一个用于附录)。这是一个示例代码
\documentclass[12pt]{article}
\usepackage{natbib}
\usepackage{multibib}
\newcites{apndx}{References}
\begin{document}
First paper to cite: \cite{X1}
\bibliographystyle{ecca}
\bibliography{XXX}
\appendix
Cite a paper in the appendix \citeapndx{X2}
\bibliographystyleapndx{ecca}
\bibliographyapndx{XXX}
\end{document}
但是,第二个参考书目没有出现,附录中的引用只给出了一个“?”。我查阅了手册multibib
和其他类似的问题,但我不知道错误在哪里。
更新 1 即使我运行 bibtex 文件两次,也会发生这种情况。这是文件log
:
Process started: /Library/TeX/texbin/bibtex "prova".aux
This is BibTeX, Version 0.99d (TeX Live 2016)
The top-level auxiliary file: prova.aux
The style file: plain.bst
Database file #1: myrefs.bib
Process exited normally
Process started: /Library/TeX/texbin/bibtex "prova".aux
This is BibTeX, Version 0.99d (TeX Live 2016)
The top-level auxiliary file: prova.aux
The style file: plain.bst
Database file #1: myrefs.bib
Process exited normally
更新 2:我认为问题在于我的 TexStudio 无法运行sec.aux
生成第二个参考书目的链接的文件。我按照此链接的步骤操作https://sourceforge.net/p/texstudio/wiki/Tips%20and%20Tricks/并创建了一个.cwl
并将其添加到 TexStudio Completion 但它仍然不起作用。
答案1
使用第一次编译multibib
文件 的结果(或者在您的情况下使用 TeXStudio 编译)生成两个新文件和。两个文件都需要使用 运行。TeXStudio 使用 运行文件,因为您需要自己执行此操作。只需在 Windows 终端中运行命令即可。之后,您可以使用 TeXStudio 编译两次以获取生成的 PDF。mwe.tex
pdflatex
mwe.aux
apndx.aux
.aux
bibtex
bibtex
mwe.aux
apndx.aux
bibtex apndx
为了使命令\citeapndx
在图形标题中运行(您的问题在评论中),您需要使用\protect
如下命令(与 相同\section
):
\caption{In figure caption \protect\citeapndx{Johnson2000}}
% ^^^^^^^^
因此使用以下文件mwe.tex
(包filecontents
仅用于在一次编译 MWE 中同时拥有 bib 文件和 tex 代码):
% needs: bibtex apndx
\RequirePackage{filecontents}
\begin{filecontents}{\jobname.bib}
@inproceedings{Creighton2006,
author = {Creighton, Oliver and Ott, Martin and Bruegge, Bernd},
booktitle = {Requirements Engineering, 14th IEEE International Conference},
isbn = {0769525555},
pages = {109--118},
publisher = {IEEE},
title = {{Software cinema-video-based requirements engineering}},
url = {http://ieeexplore.ieee.org/xpls/abs{\_}all.jsp?arnumber=1704054},
year = {2006},
}
\end{filecontents}
\begin{filecontents}{apndx.bib}
@article{Johnson2000,
author = {Johnson, W Lewis and Rickel, Jeff W and Lester, James C},
journal = {International Journal of Artificial Intelligence in Education},
number = {11},
pages = {47--78},
title = {{Animated pedagogical agents: face-to-face interaction in
interactive learning environments}},
volume = {Internatio},
year = {2000},
}
\end{filecontents}
\documentclass[12pt]{article}
\usepackage{natbib}
\usepackage{multibib}
\usepackage{graphicx}
\newcites{apndx}{References in Appendix}
\begin{document}
First paper to cite: \cite{Creighton2006}
\bibliographystyle{ecca}
\bibliography{\jobname}
\appendix
Cite a paper in the appendix \citeapndx{Johnson2000}
%\section{In the appendix \protect\citeapndx{Johnson2000}} % <===========
\begin{figure}
\centering
\includegraphics[width=5cm]{example-image-a}
\caption{In figure caption \protect\citeapndx{Johnson2000}} % <=======
\label{fig:example-image-a}
\end{figure}
\bibliographystyleapndx{ecca}
\bibliographyapndx{apndx}
\end{document}
和编译链(独立于 TeXStudio):
- 在 Windows 中按 Windows 开始键打开终端窗口,
R
然后输入cmd
并按 Enter - 移动到有 tex 代码和 bib 文件的目录
cd <directory path>
- 运行命令
pdflatex mwe
(产生两个所需.aux
文件) - 运行命令
bibtex mwe
(编译mwe.aux
) - 运行命令
bibtex apndx
(编译apndx.aux
) - 运行命令
pdflatex mwe
(生成文件*.bbl
和*.blg
) - 运行命令
pdflatex mwe
(生成包含pdf
参考书目的文件)
如果您正在使用编辑器(TeXStudio、TeXnicCenter 等),编辑器可以为您运行pdflatex mwe
,bibtex mwe
但不能 bibtex apndx
。因此,在 Windows 终端中使用 TeXStudio 进行第一次编译运行后,运行此命令...
运行编译链后,您将获得以下结果 pdf: