Я мог бы удалить текстовые украшения, такие как выделение или todos, из TOC, но не из строки заголовка. Я сделал это, не помещая простой текст в необязательный параметр, потому \chapter[]{}
что pandoc используется для преобразования текста в latex и в настоящее время не поддерживает необязательные параметры.
Вот простой 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}
Как убрать подсветку в строке заголовка (по умолчанию и с fancyhdr) без использования необязательного параметра \chapter? Или вообще возможно удалить любую команду/макрос latex и просто сохранить внутренний текст?
Кстати: \DeclareRobustCommand
and \let\hl\nohl
— это обходной путь, потому что \protect\renewcommand{\hl}[1]{#1}
приводит к ошибке! Illegal parameter number in definition of \reserved@a.
решение1
Вы можете проверить, попадает ли команда в оглавление или заголовки, с помощью \ifx\protect\@unexpandable@protect <code for moving text> \else <normal code> \fi
.
Обратите внимание, что для того, чтобы это работало, важно, чтобы макрос был определен таким образом.нетбыть защищенным / «надежным».
Попробуй это:
\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}