如何将幻像部分与 nameref 结合使用?

如何将幻像部分与 nameref 结合使用?

为了将 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}

相关内容