删除章节标题中的文字

删除章节标题中的文字

似乎\st{}删除文本(删除线)对章节标题不起作用。例如,这个

\documentclass{article}
\usepackage{soul,color}
\begin{document}
\section{\st{Motivation}}\label{sec:theproblem}
In this section, we are going to explain the detail and you will see...
\end{document}

失败,但正文却运行正常

\documentclass{article}
\usepackage{soul,color}
\begin{document}
\section{Motivation}\label{sec:theproblem}
In this section, we are going to \st{explain the detail} and you will see...
\end{document}

顺便说一句,soul包裹是包含在内的 :)

更新

更新

使用\protect\st工作正常,但错误是,如果你添加\usepackage{hyperref},你将收到此错误

! Argument of \let has an extra }.
<inserted text>
                \par
l.5 \section{\protect\st{Motivation}}
                                     \label{sec:theproblem}
?

该问题已得到解决克里斯蒂安·胡普弗在他的回答中。

答案1

此解决方案的早期版本

命令的具体行为sectioning需要对内容进行特殊处理,例如章节标题等,在本例中是\st来自soul包的命令。它必须受到保护,即前面加上\protect

编辑

我刚刚测试过:这个\st宏已经很强大了。\protect并不是真的需要。

\documentclass{book}
\usepackage{soul}
\begin{document}
\tableofcontents
\chapter{\protect\st{This is crossed-out}}
\end{document}

在此处输入图片描述

编辑二

如果hyperref使用,这会遇到书签和超链接的典型问题。使用\texorpdfstring来解决这样的问题 ;-)

\documentclass{book}
\usepackage{soul}
\usepackage[bookmarksopen=true]{hyperref}
\begin{document}
\tableofcontents
\chapter{\texorpdfstring{\st{This is crossed-out}}{This is not crossed out}}
\end{document}

答案2

在 user31729 的解决方案中,未划掉的文本(“这没有划掉”)不会出现在标题或目录中。如果需要灵魂文本和纯文本(例如显示更正),则以下代码有效:

\documentclass{article}
\usepackage{lipsum}
\usepackage{soul}
\usepackage{hyperref}
\begin{document}
  \tableofcontents
  \section{\texorpdfstring{\st{Old}{New}}{}}
  \lipsum[1]
\end{document}

示例输出

显示划线文本和未划线文本的图像

相关内容