使用 TikZ 图形正确处理目录中的附录条目

使用 TikZ 图形正确处理目录中的附录条目

我正在尝试使用简单的 tikz 框创建 LaTeX TOC 条目(在报告类中)以添加一些亮点。这个主题在不久前已经讨论过了(请参阅如何使用 TikZ 自定义目录?),但是那里发布的解决方案不能正确处理附录环境。为了尝试解决这个问题,我使用了 \renewcommand 而不是他们的方法。我创建了一个样式文件(greenBoxTOC.sty,如下所示),如下所示:

% Style file to get green boxes in TOC.
% [email protected]

\usepackage{tikz}
\usepackage{xcolor}
\usepackage{titletoc}
\usepackage[titletoc]{appendix}
\usepackage{etoolbox}
\usepackage{lmodern}

% define color
\definecolor{uvmgreen}{rgb}{0,0.35,0.23}

% ToC title with color box.
\patchcmd{\tableofcontents}{\contentsname}{
\vspace*{-70pt}%
    \begin{tikzpicture}[remember picture, overlay]%
    \pgftext[right,x=12cm,y=0.2cm]{\color{uvmgreen}\Huge\bfseries\contentsname};%
\draw[fill=uvmgreen,draw=uvmgreen] (13.5,-.75) rectangle (10,1);%
\clip (15.5,-.75) rectangle (10,1);
\pgftext[right,x=12cm,y=0.2cm]{\color{white}\Huge\bfseries \contentsname};%
\end{tikzpicture}}{}{}

% ToC Entry modification -- green boxes.
\titlecontents{chapter}[0em]
{\vspace*{20pt}}%
{\hspace{80pt}%
    \begin{tikzpicture}[remember picture, overlay]%
    \draw[fill=uvmgreen,draw=uvmgreen] (-4,-.1) rectangle (-0.7,.5);%
    \pgftext[left,x=-3.7cm,y=0.2cm]{\color{white}\Large\bfseries Chapter\  \thecontentslabel};%
\end{tikzpicture}\color{uvmgreen}\large\bfseries%
\vspace{20pt}}{}{}

当包含在如下报告中时:

\documentclass{report}

% import style file
\usepackage{greenBoxTOC}

\begin{document}

\tableofcontents

\chapter{Quantum Harmonic Oscillator}
\section{test section}
\section{test section }
\subsection{test subsection}
\section{test section}
\subsection{test subsection}
\subsection{A test subsection with a long title spanning more than one line in the table of contents}
\section{test section}


\chapter{Is it a Riemann Integral?} 
\section{test section}
\subsection{test subsection}
\section{test section with a long title spanning more than one line in the table of contents}
\subsection{test subsection}


\begin{appendices}
% fix the fact that appendices show up as "Chapter (A,B..)"
\titlecontents{chapter}[0em]
{\vspace*{20pt}}%
{\hspace{80pt}%
\begin{tikzpicture}[remember picture, overlay]%
\draw[fill=uvmgreen,draw=uvmgreen] (-4,-.1) rectangle (-0.5,.5);%
%\pgftext[left,x=-3.72cm,y=0.2cm]{\color{white}\Large\bfseries Appendix    \pgftext[left,x=-3.72cm,y=0.2cm]{\color{white}\Large\bfseries Appendix\ 
\thecontentslabel};%
\end{tikzpicture}\color{uvmgreen}\large\bfseries%
\vspace{20pt}}{}{}

\chapter{QHO and Riemann Integrals}
\section{test section}


\end{appendices}

\end{document}

这会产生与他们所拥有的相同的结果,只是附录得到了正确的处理。这里唯一的问题是,除非您将代码片段放在文档正文中的附录环境中(这似乎没有必要),否则附录不会正确显示在目录中。如何根据我们是否在附录环境中来指定此命令的不同行为?另一个问题是,每当使用上述实现时,附录 A 的目录条目都会列为

附录A 附录QHO和黎曼积分

如何设置让附录章节名称前不出现附录一词?

如果有人知道如何解决这些问题,请告诉我!提前致谢。

答案1

您想要的是重新定义appendices环境,以便它除了通常执行的操作之外,还能发出您的命令。

有很多方法可以实现这一点(例如使用\let\renewcommand),但在这种情况下,我会使用方便的\g@addto@macro命令,将一些命令附加到已经定义的宏中,在这种情况下,我们需要将您的代码片段附加到宏中\appendices

\g@addto@macro\appendices{
    \titlecontents{chapter}[0em]
    {\vspace*{20pt}}%
    {\hspace{80pt}%
    \begin{tikzpicture}[remember picture, overlay]%
    \draw[fill=uvmgreen,draw=uvmgreen] (-4,-.1) rectangle (-0.5,.5);%
    %\pgftext[left,x=-3.72cm,y=0.2cm]{\color{white}\Large\bfseries Appendix\
    \pgftext[left,x=-3.72cm,y=0.2cm]{\color{white}\Large\bfseries Appendix\ 
    \thecontentslabel};%
    \end{tikzpicture}\color{uvmgreen}\large\bfseries%
    \vspace{20pt}}{}{}}

您可能想知道这\appendices与同名环境有什么关系。对\begin{env}和 的调用\end{env}实际上被重写为\env\endenv,因此通过重新定义\env,您可以重新定义打开相应环境时调用的内容。

相关内容