我想引用一个未编号的\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}