我有一个项目,其中有一个参考书目,我已使用 将其包含在目录中tocbibind
。在我的报告中,我有一个部分详细介绍了报告的结构,我提到了其中的每一章,但我无法引用参考书目,因为链接指向上一节。请参阅示例代码:
\documentclass[a4paper, 12pt]{report}
\usepackage[nottoc,numbib]{tocbibind}
\begin{document}
\tableofcontents
\chapter{first chapter}\label{chap:one}
first we have \ref{chap:one} then \ref{chap:two} followed by \ref{chap:bib}
\chapter{second chapter}\label{chap:two}
\bibliography{references}{}\label{chap:bib}
\bibliographystyle{ieeetran}
\end{document}
由于参考书目不是真正的章节,因此指向\ref{chap:bib}
第二章,我如何链接或在文本中引用它?
答案1
由于\bibliography
读取文件时会包含
\begin{thebibliography}{<number>}
<contents>
\end{bibliography}
并且该\chapter
命令出现在包围环境的组内,\label
之后的设置\bibliography{references}
无效,因为的值\@currentlabel
已被遗忘,并且您得到的是前一个值(在示例中是与第二章相关的值)。
然而,执行numbib
的选项tocbibind
\chapter{\tocbibname}
因此我们只需添加\label{chap:bib}
到宏中\tocbibname
:
\documentclass[a4paper, 12pt]{report}
\usepackage[nottoc,numbib]{tocbibind}
\usepackage{etoolbox}
\appto{\tocbibname}{\label{chap:bib}}
%% or just \renewcommand{\tocbibname}{Bibliography\label{chap:bib}}
\begin{document}
\tableofcontents
\chapter{first chapter}\label{chap:one}
first we have \ref{chap:one} then \ref{chap:two} followed by \ref{chap:bib}
\chapter{second chapter}\label{chap:two}
\nocite{*}
\bibliography{references}
\bibliographystyle{IEEEtran}
\end{document}
这也将完美地发挥作用hyperref
。
请注意,{}
after\bibliography{references}
是多余的,并且样式的名称是IEEEtran
(在不区分大小写的系统上它可能是等效的,但并非所有系统都是如此)。