使用 \nameref 引用未编号的部分但允许短标题

使用 \nameref 引用未编号的部分但允许短标题

我想引用一个未编号的\section*,通常与 结合才有意义\nameref。但是我想为可以引用的部分定义一个简短的标题,但是

\section[short title 2]*{Long Title Section Two}\label{sec:Two}

或者

\section*[short title 2]{Long Title Section Two}\label{sec:Two}

是不可能的。

有没有办法通过简称来引用未编号的部分?


平均能量损失

\documentclass{scrreprt}
\usepackage{hyperref}
\usepackage{cleveref}

\begin{document}

\chapter{chapter}

\section[short title 1]{Long Title Section One}\label{sec:One}

In \cref{sec:One} (\nameref{sec:One}) I refer to \nameref{sec:Two}

\section*{Long Title Section Two}\label{sec:Two}

\end{document}

在此处输入图片描述

答案1

也许KOMA类提供了更好的方法,但\@currentlabelname必须设置(替代\NR@gettitle)才能有效nameref,即使用可选参数值#2作为的内容\@currentlabelname

\documentclass{scrreprt}
\usepackage{hyperref}
\usepackage{cleveref}
\usepackage{xparse}

\makeatletter
\let\latex@@section\section
\RenewDocumentCommand{\section}{som}{%
  \IfBooleanTF{#1}{%
    \IfValueTF{#2}{%
      \addcontentsline{toc}{section}{#2}%
      \latex@@section*{#3}\edef\@currentlabelname{#2}%
    }{%
      \latex@@section*{#3}\edef\@currentlabelname{#3}%
    }%
  }{%
    \IfValueTF{#2}{%
      \latex@@section[#2]{#3}
    }{%
      \latex@@section{#3}
    }%
  }%
}
\makeatother


\begin{document}
\tableofcontents

\chapter{chapter}
\section[short title 1]{Long Title Section One}\label{sec:One}

In \cref{sec:One} (\nameref{sec:One}) I refer to \nameref{sec:Two}

\section*[Short Title of starred section]{Long Title Section Two}\label{sec:Two}

\end{document}

在此处输入图片描述

答案2

使用 KOMA-Script 类,您可以使用\addsec。然后可以在可选参数中定义一个短标题。

\documentclass{scrreprt}
\usepackage{hyperref}
\usepackage{cleveref}

\begin{document}
\tableofcontents
\chapter{chapter}
\section[short title 1]{Long Title Section One}\label{sec:One}
In \cref{sec:One} (\nameref{sec:One}) I refer to \nameref{sec:Two}

\addsec[Short Title Section Two]{Long Title Section Two}\label{sec:Two}
\end{document}

在此处输入图片描述

相关内容