\nameref 使用长标题代替短标题

\nameref 使用长标题代替短标题

对于我的目录,我需要短标题,通常使用 进行格式化,\newline这样看起来会比较美观。因为\nameref{label}我需要长标题而不是短标题。是否可以\nameref使用长标题代替短标题?提前致谢。

\documentclass[headings=optiontotoc]{report}
\usepackage{nameref}
\begin{document}

\tableofcontents

\chapter[Title \newline displayed in toc]{Title displayed in header}\label{test}

Lorem ipsum dolor sit amet, consectetur adipiscing elit. \nameref{test}

\end{document}

目录中所需的标题

标题符合标题的要求,但不在正文中 - 正文使用短标题

答案1

headings=totoc是 KOMA-Script 选项。也许你可以使用KOMA-Script 类

\documentclass[headings=optiontotoc]{scrreprt}
\usepackage{nameref}
\begin{document}

\tableofcontents

\chapter[tocentry={Title \newline displayed in toc}]{Title displayed in header}\label{test}

Lorem ipsum dolor sit amet, consectetur adipiscing elit. \nameref{test}

\end{document}

在此处输入图片描述

请注意,即使设置了tocentry={...}选项,如果不应使用短版本作为参考,也必须在可选参数中使用。headings=totoc

如果您加载包hyperref(而不是仅仅nameref),那么对章节标题的引用就会变成一个链接。


更新为了标准班

建议标准班带包装hyperref(或仅nameref):

\documentclass{report}
\usepackage{hyperref}% loads also nameref
\pdfstringdefDisableCommands{% to avoid the hyperref warning for \newline
    \def\newline{\relax}%
}
\makeatletter
\newcommand*\referencetitle[1]{\def\@currentlabelname{#1}}
\makeatother

\begin{document}
\tableofcontents

\chapter[Title \newline displayed in toc]{Title displayed in header}
\referencetitle{Title displayed in header}\label{chap:test}
Some text

\clearpage
Lorem ipsum dolor sit amet, consectetur adipiscing elit.\nameref{chap:test}
\end{document}

结果:

在此处输入图片描述


原始答案为了标准班

标准班您可以加载包zref

\documentclass{report}% <- unused (unknown) option removed
\usepackage[user,titleref]{zref}
\begin{document}

\tableofcontents

\chapter[Title \newline displayed in toc]{Title displayed in header}
\ztitlerefsetup{title=Title displayed in header}\zlabel{chap:test}

Lorem ipsum dolor sit amet, consectetur adipiscing elit. \ztitleref{chap:test}

\end{document}

结果:

在此处输入图片描述


标准类的附加更新,zref包括hyperref

\documentclass{report}
\usepackage[user,titleref]{zref}
\usepackage{hyperref}
\pdfstringdefDisableCommands{% to avoid the hyperref warning for \newline
    \def\newline{\relax}%
}

\newcommand\chapterlabel[1]{\zlabel{#1}\label{#1}}
\newcommand\chapterref[1]{\hyperref[#1]{\ztitleref{#1}}}

\begin{document}
\tableofcontents

\chapter[Title \newline displayed in toc]{Title displayed in header}
\ztitlerefsetup{title=Title displayed in header}\chapterlabel{chap:test}
Some text

\clearpage
Lorem ipsum dolor sit amet, consectetur adipiscing elit. \chapterref{chap:test}
\end{document}

相关内容