我正在尝试使用简单的 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
,您可以重新定义打开相应环境时调用的内容。