为了将 bibtex 参考书目正确放入目录中,我使用\phantomsection
并为其添加标签。然后我使用 将其添加到目录中\addcontentsline{toc}{section}{References}
。您可以在下面查看完整示例以进行说明。
现在我想通过标题字符串自动引用参考书目(在我的情况下,这个标题是“参考文献”)。如果我将标题更改为例如“参考书目”或“来源”,它应该会自行更改对该字符串的引用。这里的问题是总是\nameref
使用最后一个实际部分的标题(在我的情况下是“某些部分”)。
这个问题适用于所有书目样式的列表,例如表格列表、图片列表和缩写列表。您有针对该问题的解决方案/解决方法吗?
\documentclass[a4paper,10pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{hyperref,url}
\usepackage[all]{hypcap}
\bibliographystyle{plainnat}
\begin{document}
\section{Some Section}
Some uninterstion citation: \cite{random}
%%%%%%%%%%%%%%%% Below this line it gets interesting %%%%%%%%%%%%%%%%
Some text \nameref{refer}. % <--- This nameref produces "Some Section" instead of "References"
\phantomsection \label{refer}
\addtocounter{section}{1}
\addcontentsline{toc}{section}{\protect\numberline{\Alph{section}}References}
\bibliography{test}
\end{document}
答案1
KoMa-script 类中有一个选项可以获取编号的参考书目部分;但提供标签会很困难,所以这里有一个解决方法:将以下代码放在序言中
\makeatletter
\renewcommand*\bib@heading{%
\section{\refname}\label{refer}%
\@mkboth{\sectionmarkformat \refname}{\sectionmarkformat \refname}%
}
\makeatletter
您不必发布“既非\phantomsection
也非” \addcontentsline
,只需发布\bibliography{test}
“。
但是,由于参考书目部分的名称已经为\refname
,我建议
\documentclass[a4paper,10pt,bibliography=totocnumbered]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{hyperref,url}
\usepackage[all]{hypcap}
\renewcommand{\refname}{References\label{refer}}
\bibliographystyle{plain}
\begin{document}
\cite{random} % bibtex wants this
The cited papers can be found in section~\nameref{refer}.
\bibliography{test}
\end{document}
同样的策略适用于\listoffigures
和\listoftables
;要添加的相关选项是
listof=numbered
更新的命令是
\renewcommand{\listfigurename}{List of Figures\label{figurelist}}
\renewcommand{\listtablename}{List of Tables\label{tablelist}}
因为nomencl
命令是
\renewcommand{\nomname}{Nomenclature\label{nomencl}}
但是在 KoMa-Script 中没有对其进行编号和目录的选项,但包中有:
\usepackage[intoc]{nomencl}