我正在尝试自定义我的目录,如下所示这个帖子(第二个例子)我遇到了两个问题。
第一个是有文档记录的,但我搞不清楚我做错了什么:我想写“附录”而不是“章节”。如果我不自定义,\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}