我使用 LaTeX + BibTeX 撰写论文。我.tex
为每一章都创建了一个单独的文件。我会为每一章生成一个参考书目。但所有参考资料都来自同一个文件 ( main.bib
)。
因此,在很多情况下,不同的章节会引用相同的参考文献。因此,一个参考文献可以在整个论文的参考书目中出现多次(但在不同的章节中)。我想使用来自hyperref
包裹。我只是想知道是否有可能这样做?
% chapter 1
Bibliography
[1]. A and B, Nature, 1991. 15, 20.
...
% chapter 2
Bibliography
...
[3]. A and B, Nature, 1991. 55, 67.
...
答案1
您可能想要尝试使用该chapterbib
软件包。(也有软件包bibunits
,但由于您声明您的章节包含在单独的.tex
文件中,因此使用该软件包可能最容易chapterbib
。)该软件包旨在为每个章节单独创建参考书目,无论您有多少个 bib 文件。
以下 MWE 演示了如何使用这个包以及一个非常基本的设置。它加载了包natbib
、、chapterbib
和hyperref
以及backref
参考书目样式文件plainnat.bst
。该文件demo.bib
包含:
@article{abadir:1993a,
author = "Karim M. Abadir",
title = "{OLS} bias in a nonstationary autoregression",
journal = "Econometric Theory",
year = 1993,
volume = 9,
number = 1,
pages = "81--93"
}
“章节”文件demo-1.tex
、demo-2.tex
和demo-3.tex
每个文件都包含(它们是相同的):
\chapter{Hello}
\citet{abadir:1993a}\clearpage\citet{abadir:1993a}
\bibliographystyle{plainnat}
\bibliography{demo}
(请注意,每章都发出两次引用调用。)整体驱动文件demo.tex
包含:
\documentclass{book}
\usepackage{natbib,chapterbib,hyperref,backref}
\begin{document}
\include{demo-1}
\include{demo-2}
\include{demo-3}
\end{document}
在 上运行 (pdf)latex 两次;在、 和demo.tex
上各运行一次 bibtex ;并在 上再运行 (pdf)latex 两次。编译后的文档应包含 11 页(第 1 章和第 2 章各 4 页,第 3 章 3 页)。第 11 页上的第 3 章的排版参考书目如下所示:demo1.tex
demo2.tex
demo3.tex
demo.tex
demo.pdf
第 1 章和第 2 章参考书目的反向引用应分别为“第 1、2 页”和“第 5、6 页”。
当然,您可以调整反向引用的外观;backref
有关详细信息,请参阅包的手册。
答案2
以下解决方案基于biblatex
并提供您想要的内容:它使用biblatex
以下概念段(参见biblatex
手册第 3.5.4 节)定义引文跟踪的上下文。通过refsegment=chapter
类选项,每章都成为一个独立的段;在每章末尾打印特定段的参考书目;在文档末尾打印包含完整参考书目的章节。所有这些都与反向引用配合得很好,biblatex
专用的类选项为其提供内置支持。
唯一(可能)的问题可能是反向引用始终是完整的。这意味着如果您在第 1 章和第 2 章中都引用了来源,则第 1 章参考书目的反向引用列表也将包含第 2 章中相应页面的条目。
\documentclass{book}
\usepackage[defernums=true, hyperref, backref, refsegment=chapter]{biblatex}
% Define typesetting of references heading
\defbibheading{references}[References]{%
\section*{#1}%
\markboth{#1}{#1}%
}
% Define typesetting of bibliography heading
\defbibheading{bibliography}[Complete Bibliography]{%
% define as above if you want to have this numbered as well:
\chapter*{#1}%
\addcontentsline{toc}{chapter}{#1}
\markboth{#1}{#1}%
}
% The filtecontent package is just used to create an example .bib-File
% automatically out of the following (for the MWE)
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@misc{A01,
author = {Author, A.},
year = {2001},
title = {Alpha},
}
@misc{B02,
author = {Buthor, B.},
year = {2002},
title = {Bravo},
}
@misc{C03,
author = {Cuthor, C.},
year = {2003},
title = {Charlie},
}
\end{filecontents}
% The bibtex database to use (mybib for mybib.bib)
\bibliography{\jobname}
\begin{document}
\tableofcontents
\cleardoublepage
\chapter{First Chapter}
Some more text \autocite{A01,B02}.
% print the segment-specific bibliography (using the references style
% defined above for the heading
\printbibliography[heading=references,segment=\therefsegment]
\chapter{Second Chapter}
Some text \autocite{A01,C03}.
\printbibliography[heading=references,segment=\therefsegment]
% print the full bibliography (using the bibliography style
% defined above for the heading above
\printbibliography[heading=bibliography]
\end{document}