当同时使用cite
、bibuints
和hyperref
包时,没有从引文到参考文献列表的链接。如何才能使链接存在,同时保持默认cite
引文排序和我对 的自定义?这是我的 MWE(您需要自己的包含和条目citepunct
的“refs.bib”文件):article1
article2
\documentclass{report}
\usepackage{cite}
\usepackage{bibunits}
\usepackage{hyperref}
\renewcommand\citepunct{], [}
\renewcommand\citedash{]--[}
\begin{document}
\chapter*{Executive Summary}
\begin{bibunit}[ieeetr]
Second article~\cite{article2}.
\putbib[refs]
\end{bibunit}
\chapter{A Chapter}
First article~\cite{article1}.
Second article~\cite{article2}.
Both articles~\cite{article2,article1}.
\bibliographystyle{ieeetr}
\bibliography{refs}
\end{document}
我在 TeX StackExchange 上找到了类似的问题([1],[2],[3]) 为使用该软件包的用户提供了解决方案natbib
,但这些解决方案仅部分适用于cite
。具体来说,当我将两个答案中的代码应用于[1],链接可以正常工作,但我失去了自定义渲染和在同一命令中引用多个参考文献时执行的citepunct
自动排序。因此,渲染为“[2, 1]”,而不是我学校要求的“[1], [2]”。我该如何克服这个问题?谢谢。cite
\cite{}
\cite{article2,article1}
编辑:我的学校使用自定义的 .bst(BibTeX 样式)文件,所以我没有选择切换到 BibLaTeX 和 Biber。
答案1
感谢 @Mico 在最初问题的评论中提出的想法,即用 替换cite
,natbib
这需要对natbib
(v. 8.31b) 进行一些深度(但不广泛)的定制。诀窍在于克服natbib
缺少修改cite
调用citepunct
和的属性的钩子citedash
。在 中natbib
,使用\setcitestyle
修改citesep
不足以达到与 相同的效果,cite
因为citepunct
后面natbib
总是跟citesep
一个空格(\
准确地说是 )。因此,我还必须重新定义\NAT@spacechar
从{\ }
到{}
。citedash
是唯一的硬编码方面,所以我用 来etoolbox
将\patchcmd
替换--
为]--[
。
以下是更新后的 MWE 及其解决方案:
\documentclass{report}
\usepackage{etoolbox}
\usepackage[numbers,square,sort&compress]{natbib}
\setcitestyle{citesep={], [}}
\makeatletter
\renewcommand\NAT@spacechar{}
\patchcmd{\NAT@citexnum}{--}{]--[}{}{}
\makeatother
\usepackage{bibunits}
\usepackage{hyperref}
\begin{document}
\chapter*{Executive Summary}
\begin{bibunit}[ieeetr]
Second article~\cite{article2}.
\putbib[refs]
\end{bibunit}
\chapter{A Chapter}
First article~\cite{article1}.
Second article~\cite{article2}.
Both articles~\cite{article2,article1}.
All articles~\cite{article2,article1,article3}.
\bibliographystyle{ieeetr}
\bibliography{refs}
\end{document}
这是对以下问题的回答:“如何保持相同的引用风格,同时克服、和包之间明显的冲突,cite
从而bibunits
阻止hyperref
引用链接到参考文献列表起作用?”