我正在写论文,文档(在book
课堂上)包含多个参考文献列表,每章一个。因此,我使用multibib
包和命令\newcites
将引用分组到正确的列表中。我将其与结合起来natbib
,因为我想要这种apa
风格。此外,我使用hyperref
包在整个文档中生成超链接。
我有一些在不同的参考文献列表中重复的参考文献,因为它们在不同的章节中被引用。
我的问题是,hyperref 总是将此类引用指向它出现的第一个参考列表。例如,如果某个特定引用在第一章和第二章中出现两次,hyperref 会将第二章中的引用指向第一章的参考列表,而不是第二章的列表。
这里有相关的代码:
\RequirePackage{filecontents}
\begin{filecontents*}{bibliotest.bib}
@article{author2014,
author = "Author",
title = "Title of the paper",
journal = "The Journal",
volume = "1",
number = "1",
pages = "1-2",
month = "September",
year = "2014",
}
\end{filecontents*}
\documentclass[a4paper,11pt,english,pdftex]{book}
\usepackage[latin1]{inputenc}
\usepackage{babel}
\usepackage[pdftex]{color,graphicx}
\usepackage{float}
\usepackage{hyperref}
%citation Harvard style
\usepackage{natbib}
\bibpunct{(}{)}{;}{a}{,}{,}
%Multiple reference sections (per chapter)
\usepackage{multibib}
\def\@mb@citenamelist{cite,citep,citet,citealp,citealt}
\newcites{oneintro}{References 1}
\newcites{twomatproc}{References 2}
\begin{document}
\chapter{Intro}
I am citing for the first time this reference here. \citeponeintro{author2014}
%%%%%%%%The Biliography%%%%%%%%%%%%%%
\renewcommand{\bibname}{References 1}
\bibliographystyleoneintro{apa}
\bibliographyoneintro{bibliotest}
\chapter{Methods}
And now, I am citing it once again in this chapter. \citeptwomatproc{author2014}
%%%%%%%%%The bibliography%%%%%%%%%%%%
\renewcommand{\bibname}{References 2}
\bibliographystyletwomatproc{apa}
\bibliographytwomatproc{bibliotest}
\end{document}
该.bib
文件包含在 MWE 包中filelists
。
我尝试过调试这个问题,并在网上寻找答案,但没有成功。你能帮助我吗?
答案1
我建议你使用biblatex
。它具有refsection
按部分列出参考书目功能,并且可以使用hyperref
。你只需使用biber
而不是bibtex
。biblatex
具有以下样式的示例文档版本apa
将是:
\RequirePackage{filecontents}
\begin{filecontents*}{bibliotest.bib}
@article{author2014,
author = "Author",
title = "Title of the paper",
journal = "The Journal",
volume = "1",
number = "1",
pages = "1-2",
month = "September",
year = "2014",
}
\end{filecontents*}
\documentclass[a4paper,11pt,american,pdftex]{book}
\usepackage[latin1]{inputenc}
\usepackage{babel}
\usepackage[pdftex]{color,graphicx}
\usepackage{float}
\usepackage{csquotes}
\usepackage[style=apa,refsection=chapter]{biblatex}
\DeclareLanguageMapping{american}{american-apa}
\usepackage[colorlinks=true]{hyperref}
\addbibresource{bibliotest.bib}
\begin{document}
\chapter{Intro}
I am citing for the first time this reference
here. \parencite{author2014}
\printbibliography
\chapter{Methods}
And now, I am citing it once again in this
chapter. \parencite{author2014}
\printbibliography
\end{document}
答案2
非常感谢您的回答。
我按照建议成功解决了阅读第 1.3 章“限制”时遇到的问题。在 .bib 文件中,我为同一参考文献引入了两个具有不同标签的条目,然后在与特定章节的参考文献列表相对应的引文中使用了每个标签。例如,根据前面的示例,引文变为\citeponeintro{author2014I}
第 1 章的引文,也变为\citeptwomatproc{author2014II}
第 2 章的引文。
尽管如此,我将来可能会使用 biblatex,因为此线程中提出的解决方案看起来要简单得多。Ana