在我当前的文档中,我有很多\section
包含\cite
命令的命令。使用hyperref
或bookmark
(如下面的 mwe 所示),pdf 书签只会打印相应的键而不是数字。
输出:章节标题第一
期望输出:章节标题 [1]
\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@article{First,
author = {First, A.},
journal = {Journal},
pages = {1762--1776},
volume = {27},
year = {2017}
}
\end{filecontents*}
\documentclass{scrreprt}
\usepackage{hyperref}
\usepackage{bookmark}
\usepackage[style=numeric]{biblatex}
\addbibresource{\jobname.bib}
\begin{document}
\chapter{chapter title\cite{First}}
\cite{First}
\end{document}
由于\cite
命令不可扩展,因此无法获得所需的输出。是否有可能访问与键相对应的计数器,以便可以使用该\texorpdfstring
方法将数字打印到 pdf 书签中,同时\cite
在 .tex 文件中使用常规命令?
最后,我还发现了以下可能性(来自 egreg) 确保按键不会打印在书签中,但如上所述,我希望书签中也包含数字。
\makeatletter
\pdfstringdefDisableCommands{\let\cite\@gobble}
\makeatother
答案1
假设您正在打印参考书目,您可以添加标签,然后在章节标题中使用 \ref:
\documentclass{scrreprt}
\usepackage{hyperref}
\usepackage{bookmark}
\usepackage[style=numeric]{biblatex}
\addbibresource{biblatex-examples.bib}
\makeatletter
\AtEveryBibitem{\def\@currentlabel{\thefield{labelnumber}}\label{labelnumber-\thefield{entrykey}}}
\makeatother
\begin{document}
\chapter{chapter title [\ref{labelnumber-herrmann}]}
\cite{doody} \cite{herrmann}
\printbibliography
\end{document}