вычеркнуть текст в названии раздела

вычеркнуть текст в названии раздела

Кажется, что \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

В решении пользователя 31729 не зачеркнутый текст («Это не зачеркнутый») не отображается в заголовке или оглавлении. Если требуются как текст soul, так и обычный текст, например, для отображения исправления, работает следующий код:

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

Пример вывода

Изображение, показывающее перечеркнутый и неперечеркнутый текст

Связанный контент