Textdekorationen in der Kopfzeile entfernen

Textdekorationen in der Kopfzeile entfernen

Ich konnte Textdekorationen wie Hervorhebungen oder Aufgaben aus dem Inhaltsverzeichnis entfernen, aber nicht aus der Kopfzeile. Ich habe dies getan, ohne den Klartext in den optionalen Parameter von einzufügen, \chapter[]{}da Pandoc zum Konvertieren des Textes in Latex verwendet wird und derzeit keine optionalen Parameter unterstützt.

Hier ist ein einfaches MWE:

\documentclass[oneside]{book}

\usepackage{xcolor}
\usepackage{soul}
\usepackage{todonotes}
\usepackage{lipsum}
\usepackage{ulem}
\DeclareRobustCommand{\nohl}[1]{#1}
\addtocontents{toc}{\begingroup%
  \protect\renewcommand{\protect\todo}[1]{}
  \let\hl\nohl
}
\AtEndDocument{%
  \addtocontents{toc}{\endgroup}
}

\begin{document}

\tableofcontents

{\let\clearpage\relax \chapter{Header with \hl{highlights} and \sout{deletions}}}

\section[A second header with a note]{A second header with a note\todo{keep it}}

\lipsum[1-2]

\end{document}

Kopfzeilendekorationen

Wie kann ich die Hervorhebung in der Kopfzeile (Standard und mit fancyhdr) entfernen, ohne den optionalen Parameter von \chapter zu verwenden? Oder ist es sogar möglich, jeden Latex-Befehl/jedes Latex-Makro zu entfernen und nur den inneren Text beizubehalten?

BTW: das \DeclareRobustCommandund \let\hl\nohlist ein Workaround, weil \protect\renewcommand{\hl}[1]{#1}der Fehler! Illegal parameter number in definition of \reserved@a.

Antwort1

Ob der Befehl ins Inhaltsverzeichnis oder in die Überschriften geht, können Sie mit prüfen \ifx\protect\@unexpandable@protect <code for moving text> \else <normal code> \fi.

Beachten Sie, dass es für die Funktion dieses Verfahrens wichtig ist, dass das so definierte Makronichtgeschützt / „robust“ sein.

Versuche dies:

\documentclass[oneside]{book}

\usepackage{xcolor}
\usepackage{soul}
\usepackage{todonotes}
\usepackage{lipsum}
\usepackage{ulem}

\makeatletter
\newcommand\ifmoving{%
    \ifx\protect\@unexpandable@protect
        \expandafter\@firstoftwo
    \else
        \expandafter\@secondoftwo
    \fi
}

\let\oldhl\hl
% If you used \DeclareRobustCommand or \protected\def it would not work.
\renewcommand\hl{\ifmoving{}{\oldhl}}
\makeatother


\begin{document}

\tableofcontents

{\let\clearpage\relax \chapter{Header with \hl{highlights} and \sout{deletions}}}

\section[A second header with a note]{A second header with a note\todo{keep it}}

\lipsum[1-2]

\end{document}

verwandte Informationen