自定义书籍类别中的目录(附录和着色部分取决于当前章节)

自定义书籍类别中的目录(附录和着色部分取决于当前章节)

我正在尝试自定义我的目录,如下所示这个帖子(第二个例子)我遇到了两个问题。

第一个是有文档记录的,但我搞不清楚我做错了什么:我想写“附录”而不是“章节”。如果我不自定义,\titlecontents{chapter}那么一切都会正常,但如果我自定义,我得到的是“章节”而不是“附录”。我尝试了各种配置(我认为这是由于书籍类),有/没有\begin{appendices},使用 titletoc 选项加载(或不加载)附录包……任何帮助都将不胜感激!

我遇到的第二个“问题”是,我试图根据子章节所在的章节自定义目录中子章节的外观。每个章节都有自己的颜色,我希望各个部分的颜色与它们所在的章节相同。

这是我的 MWE 和结果。

\documentclass[11pt]{book}
\usepackage[table]{xcolor}
\usepackage{ifthen}
\usepackage{tikz,pgf}

\definecolor{chapa}{HTML}{15CA7F}
\definecolor{chapb}{HTML}{CA16BD}
\definecolor{chapc}{HTML}{DE1841}

\makeatletter
\newcommand{\ch@p}{chapa}
\newcommand{\ch@ngeCouleurs}[1]
{
    \ifthenelse{\equal{#1}{1}}{\renewcommand{\ch@p}{chapa}}{}
    \ifthenelse{\equal{#1}{2}}{\renewcommand{\ch@p}{chapb}}{}
    \ifthenelse{\equal{#1}{3}}{\renewcommand{\ch@p}{chapc}}{}
}


\usepackage[titletoc]{appendix}
\usepackage{titletoc}
\usepackage{titlesec}

\contentsmargin{-1.5cm}
\titlecontents{chapter}[4pc]
    {\addvspace{30pt}%
    \ch@ngeCouleurs{\thecontentslabel}%
    \begin{tikzpicture}[remember picture, overlay]%
        \draw[\ch@p,fill=\ch@p] (-4.2,-.1) rectangle (-.8,.5);%
        \pgftext[left,x=-3.7cm,y=0.2cm]{\color{white}\large\bfseries\sc\@chapapp\ \thecontentslabel};%
    \end{tikzpicture}%
    \large\bfseries\color{\ch@p!80!black}}%
    {}
    {}
    {\titlerule\, Page \thecontentspage
    \begin{tikzpicture}[remember picture, overlay]
       \draw[\ch@p] (2pt,0) rectangle (6,0.1pt);
    \end{tikzpicture}%
    }
    [\addvspace{.2cm}]%

\titlecontents{section}[0pc]
    {\addvspace{5pt}}
    {
        \color{\ch@p}\contentslabel[\thecontentslabel]{2pc}\color{black}}
    {}
    {\hfill\small\color{black}\thecontentspage}
    [\addvspace{3pt}]
\makeatother

\begin{document}
\tableofcontents
\chapter{One chapter}
\section{First section}
\section{First subsection}
\chapter{Another chapter}
\section{Foo}
\section{Bar}
\begin{appendices}
    \chapter{First appendix}
\end{appendices}
\end{document}

结果(2.1 和 2.2 应为紫色,“第 A 章”应为“附录 A”)。

结果

我想我知道如何解决附录的颜色问题(因为章节计数器已被重置,可以使用包 totcount 和 assoccnt 来避免)。

但我不明白为什么我的\ch@ngeCouleurs宏对 不起作用\titlecontents{section}。如果我可以访问 中的章节编号\titlecontents{section},那将解决我的问题。

感谢您阅读我的(长篇)帖子!并感谢所有能提供帮助的人!

答案1

目录中章节标题的排版阶段没有\renewcommand{\ch@p}保留下来,因此section目录条目使用了错误的颜色设置。

\renewcommand不是全局的(除非在序言中或嵌套组之外的文档主体中直接指定)。如果颜色设置应该是持久的,\gdef\ch@p则使用。

现在的Appendix问题是:

在编写 ToC 行时,\@chapapp默认为Chapter,因此即使在appendix环境中,在 ToC 中将其更改为 ToC` 也为时过早\appendixname (i.e. 'Appendix'). This can be cured by explicitly writting the redefinition to the

它不会对\@chapapp主体中以后的使用产生影响,因为\tableofcontents使用\@starttoc,进而将.toc文件加载到组中。

\documentclass[11pt]{book}
\usepackage[table]{xcolor}
\usepackage{ifthen}
\usepackage{tikz,pgf}

\definecolor{chapa}{HTML}{15CA7F}
\definecolor{chapb}{HTML}{CA16BD}
\definecolor{chapc}{HTML}{DE1841}

\usepackage{titletoc}
\usepackage{titlesec}

\usepackage[titletoc]{appendix}

\makeatletter
\newcommand{\ch@p}{chapa}
\newcommand{\ch@ngeCouleurs}[1]
{%
  \ifthenelse{\equal{#1}{1}}{\gdef\ch@p{chapa}}{}
  \ifthenelse{\equal{#1}{2}}{\gdef\ch@p{chapb}}{}
  \ifthenelse{\equal{#1}{3}}{\gdef\ch@p{chapc}}{}
}


\usepackage{etoolbox}
\AtBeginEnvironment{appendices}{%
  \makeatletter
  \addtocontents{toc}{\protect\renewcommand{\protect\@chapapp}{\protect\appendixname}}
  \makeatother
}


\contentsmargin{-1.5cm}
\titlecontents{chapter}[4pc]
    {\addvspace{30pt}%
      \ch@ngeCouleurs{\thecontentslabel}%
      \begin{tikzpicture}[remember picture, overlay]%
        \draw[\ch@p,fill=\ch@p] (-4.2,-.1) rectangle (-.8,.5);%
        \pgftext[left,x=-3.7cm,y=0.2cm]{\color{white}\large\bfseries\sc\@chapapp\ \thecontentslabel};%
      \end{tikzpicture}%
      \large\bfseries\color{\ch@p!80!black}}%
    {}
    {}
    {\titlerule\, Page \thecontentspage
    \begin{tikzpicture}[remember picture, overlay]
       \draw[\ch@p] (2pt,0) rectangle (6,0.1pt);
    \end{tikzpicture}%
    }
    [\addvspace{.2cm}]%

\titlecontents{section}[0pc]
    {\addvspace{5pt}}
    {
      \color{\ch@p}\contentslabel[\thecontentslabel]{2pc}}%
    {}
    {\hfill\small\color{black}\thecontentspage}
    [\addvspace{3pt}]
\makeatother

\begin{document}
\tableofcontents
\chapter{One chapter}
\section{First section}
\section{First subsection}
\chapter{Another chapter}
\section{Foo}
\section{Bar}
\begin{appendices}
  \chapter{First appendix}
\end{appendices}
\end{document}

在此处输入图片描述

相关内容