eliminar decoraciones de texto en el encabezado

eliminar decoraciones de texto en el encabezado

Podría eliminar decoraciones de texto como resaltado o todos del TOC pero no de la línea del encabezado. Hice esto sin poner el texto sin formato en el parámetro opcional \chapter[]{}porque pandoc se usa para convertir el texto a látex y actualmente no admite parámetros opcionales.

Aquí hay un MWE simple:

\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}

decoraciones de cabecera

¿Cómo puedo eliminar el resaltado en la línea del encabezado (predeterminado y con fancyhdr) sin usar el parámetro opcional de \chapter? ¿O es incluso posible eliminar cualquier comando/macro de látex y simplemente mantener el texto interno?

Por cierto: \DeclareRobustCommandy \let\hl\nohles una solución alternativa porque \protect\renewcommand{\hl}[1]{#1}produce el error! Illegal parameter number in definition of \reserved@a.

Respuesta1

Puede comprobar si el comando va a la tabla de contenido o a los encabezados con \ifx\protect\@unexpandable@protect <code for moving text> \else <normal code> \fi.

Tenga en cuenta que para que esto funcione, es importante que la macro así definidanoestar protegido / "robusto".

Prueba esto:

\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}

información relacionada