引文格式化和hyperref包

3

我在文档中使用hyperref包。它的一个功能是根据目录在我的PDF文档中创建书签。一些章节标题包含对引用的引用。

\section{Some title \citep{BibTeXkey}}

书签的标签看起来像这样:
Some title BibTeXkey

但我希望它是这样的

Some title (Author, year)

就像文本和目录中显示的那样。所以只有书签混乱了。

我使用序列pdflatexbibtexpdflatexpdflatex编译文档。

如何将书签标签更改为与目录中使用相同的格式?

2个回答

5
每当我遇到pdf书签无法正常工作的问题时,通常的解决方法是使用 \texorpdfstring。它允许您使一个章节标题包含一些非文本材料(如链接或某些符号),并指定pdf书签中应该出现什么内容,因为pdf书签不能包含符号。输入
\section{The section with \texorpdfstring{LaTeX symbols}{plain text version}}
会产生章节标题"The section with LaTeX symbols",但该章节的pdf书签是"The section with plain text version"。
在你的情况下,最简单的方法可能是
\section{Some title \texorpdfstring{\citep{BibTeXkey}}{(Author, year)}}
不幸的是,这意味着你必须手动粘贴"(Author, year)",这有点烦人,但如果你的参考文献条目不改变(这可能不应该改变),并且你不改变引用约定,那就没什么大不了的。
如果你真的想避免手动输入"(Author, year)",你可以尝试使用\show命令来尝试弄清楚\citep如何产生输出。但我警告你,这种方法不适合胆小的人:在这种情况下,我认为你最终会查看aux文件,更不用说blgbrfbbl文件了。

0

使用bibentry包可以轻松完成此操作。

\documentclass{article}

\usepackage[style=apa]{biblatex}
\usepackage{bibentry}

\addbibresource{\jobname.bib}

\begin{document}
\begin{filecontents}{\jobname.bib}
@book{Labov1972,
    Address = {Philadelphia},
    Author = {William Labov},
    Publisher = {University of Pennsylvania Press},
    Title = {Sociolinguistic Patterns},
    Year = {1972}}
\end{filecontents}

\section{Some title \parencite{Labov1972}}

\end{document}

请注意,根据样式的不同,上述代码不一定会给您所期望的结果,即(作者,年份)。如果您使用不同的样式,可以通过以下方式实现相同的效果:
\section{Some title (\citeauthor{Labov1972}, \citeyear{Labov1972})}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接