Falha da condição \if dentro de \titlecontents

Falha da condição \if dentro de \titlecontents

Preciso adicionar alguma palavra antes do contentlabel tocpor alguma condição usando titletoc.

\documentclass[]{report}
\usepackage{titlesec, titletoc}

\newif{\ifappendix}


\titlecontents{section}% <section-type>
[2em]% <left>
{}% <above-code>
{\ifappendix \appendixname~\fi\thecontentslabel\ }% <numbered-entry-format>
{}% <numberless-entry-format>
{\titlerule*[0.75pc]{.}\contentspage}% <filler-page-format>\\

\titleformat{\section}[block]
    {\hspace{\parindent}}
    {\ifappendix\appendixname~\fi\thesection}
    {1em}{}    

\begin{document}

\tableofcontents

\section{One}

\appendixtrue

\section{Two}

\end{document}

Como se pode ver pela MWEcondição interna \titlecontentsnão funciona (eu esperava a palavra vermelha na imagem), mas ao mesmo tempo funciona com \titleformatmacro.

insira a descrição da imagem aqui

Responder1

Quando o sumário está sendo composto, \ifappendixretorna falso. Você precisa passar \appendixtruetambém para o .tocarquivo.

\documentclass[]{report}
\usepackage{titlesec, titletoc}

\newif{\ifappendix}

\titlecontents{section}% <section-type>
[2em]% <left>
{}% <above-code>
{\ifappendix \appendixname~\fi\thecontentslabel\ }% <numbered-entry-format>
{}% <numberless-entry-format>
{\titlerule*[0.75pc]{.}\contentspage}% <filler-page-format>\\

\titleformat{\section}[block]
    {\hspace{\parindent}}
    {\ifappendix\appendixname~\fi\thesection}
    {1em}{}    

\begin{document}

\tableofcontents

\section{One}

\appendixtrue
\addtocontents{toc}{\protect\appendixtrue}

\section{Two}

\end{document}

insira a descrição da imagem aqui

informação relacionada