![\titlecontents 中的 \if 条件失败](https://linux22.com/image/370223/%5Ctitlecontents%20%E4%B8%AD%E7%9A%84%20%5Cif%20%E6%9D%A1%E4%BB%B6%E5%A4%B1%E8%B4%A5.png)
我需要toc
根据某些条件在内容标签前添加一些单词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}
从MWE
条件可以看出,里面的东西\titlecontents
不起作用(我预计图中会出现红色字),但同时它确实可以与\titleformat
宏一起使用。
答案1
当目录正在排版时,\ifappendix
返回 false。您还需要将其传递\appendixtrue
给.toc
文件。
\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}