章节标题中的删除线

章节标题中的删除线

我目前正在使用ulem\sout做删除线,但如果我想在章节标题中添加删除线怎么办?

我正在使用hyperref并在使用时收到以下错误\section{\sout{..}}

Argument of \UL@word has an extra }.

有谁知道如何做到这一点?

答案1

与往常一样,在使用宏移动诸如章节标题之类的参数时,您需要格外小心。它们被写入目录,也hyperref写入 PDF 书签,这些书签只接受文本,不接受格式。

确保\protect所有宏(\sout已受保护)。解决方案为什么 hyperref 不喜欢在章节标题中通过 \let 设置的命令?没有用,但使用\texorpdfstring可以。我建议使用自己的包装器宏,它在内部使用并使用(或)\texorpdfstring定义:\DeclareRobustCommand\protected\def

\documentclass{article}

\usepackage{ulem}
\usepackage{hyperref}
\usepackage{nameref}

\DeclareRobustCommand{\hsout}[1]{\texorpdfstring{\sout{#1}}{#1}}

\begin{document}
\tableofcontents

\section{\hsout{Striked out section title}}\label{foo}

\ref{foo}

\autoref{foo}

\nameref{foo}

\end{document}

答案2

\sout您可以通过将以下内容放入其中来实现\section

\documentclass{article}

\usepackage{ulem}

\begin{document}

\section{\sout{Striked out part} of a section title}

\end{document}

删除部分章节标题

使其与 hyperref 一起工作

为了使它能够正常工作,hyperref请使用\texorpdfstring

\section{\texorpdfstring{\sout{Striked out part}}{Striked out part} of a section title}

\section或者使用可选参数

\section[Striked out part of a section title]{\sout{Striked out part} of a section title}

相关内容