hyperref 与 multibib 结合的问题

hyperref 与 multibib 结合的问题

我正在写论文,文档(在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而不是bibtexbiblatex具有以下样式的示例文档版本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

相关内容