关于这张照片,我想
(1)数字(I、1、1.1、1.1.1、II、2、2.1、2.1.1)和相对页码具有与其所代表内容相同的大小和颜色,即(I...第一个示例部分...3 必须具有相同的颜色和大小,在本例中为红色和巨大);
(2)部分与章节之间、章节与节之间以及节与小节之间的 \vspace 更好。
(3)我在“内容”上打了叉,因为我不喜欢两次相同的标题。
我的三个请求可以实现吗?如果可以,我该如何改进我的 tex 代码?
\documentclass{book}
%\usepackage[italian]{babel}
\usepackage[english]{babel}
\usepackage[a4paper,top=3cm,bottom=3cm,left=1.5cm,right=1.5cm]{geometry}
\usepackage[svgnames,x11names]{xcolor}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{amsthm}
\usepackage{stix}
\usepackage[most]{tcolorbox}
\tcbuselibrary{theorems}
\usepackage{imakeidx}
\usepackage[tight,english]{minitoc}
\begin{document}
\dominitoc
\begin{tcolorbox}[enhanced,title=\Huge{Contents},colframe=orange,colback=Silver!75,colbacktitle=Gold1,
fonttitle=\bfseries,coltitle=red,attach boxed title to top center=
{yshift=-0.25mm-\tcboxedtitleheight/2,yshifttext=2mm-\tcboxedtitleheight/2},
boxed title style={boxrule=0.5mm,
frame code={ \path[tcb fill frame] ([xshift=-4mm]frame.west)
-- (frame.north west) -- (frame.north east) -- ([xshift=4mm]frame.east)
-- (frame.south east) -- (frame.south west) -- cycle; },
interior code={ \path[tcb fill interior] ([xshift=-2mm]interior.west)
-- (interior.north west) -- (interior.north east)
-- ([xshift=2mm]interior.east) -- (interior.south east) -- (interior.south west)
-- cycle;} }] \tableofcontents
\end{tcolorbox}
\part{\Huge\textcolor{red}{First Example Part}}
\chapter{\huge Goldboxed Theorems}
\minitoc
\mtcskip
\section{\Large Some theorem for proof}
\subsection{\large Other examples}
\part{\Huge\textcolor{red}{Second Example Part}}
\chapter{\huge Tcolorboxed Posters}
\minitoc
\mtcskip
\section{\Large Definition: \LaTeX--function}
\subsection{\large With Poster of Tcolorbox--package}
\end{document}
答案1
好吧,首先,你应该把整个tcolorbox
环境放在一个新命令中。如果你真的很聪明,你可以这样做
\NewCommandCopy{\tableofcontentsOriginal}{\tableofcontents}
\RenewDocumentCommand{\tableofcontents}{}
{
\begin{tcolorbox}[lots of stuff]
% ❶
\tableofcontentsOriginal
\end{tcolorbox}
}
将其放入.sty
文件中,您只需编写“\tableofcontents”即可生成目录。
至于摆脱内容,因为我们\taleofcontentsOriginal
在组内¹,我们可以重新定义生成标题的命令,使其不执行任何操作。对于book
文档类,它是\chapter*{Contents}
。我们可以在标记 ❶ 的行中输入以下内容:
\RenewDocumentCommand{\chapter}{ mm }{}
我们说在重新定义的命令中有两个必需参数,第一个参数是 ,*
第二个参数是{Contents}
.²
更新
根据 Ulrike Fischer 的建议,另一种方法是甚至不必担心复制 \verb+\tableofcontents+ 的定义,而是使用私有命令³。由于它是一个私有命令,因此有两种方法可以做到这一点。我们将用以下任一方法替换内部\@starttoc{toc}
的实例\tableofcontents
tcolorbox
\makeatletter
\@starttoc{toc}
\makeatother
或者
\csname @starttoc\endcsname{toc}
我会推荐第一种方案,因为对于阅读代码的人来说,它能更清楚地了解发生了什么。
- 通过处于环境中,我们可以免费获得它。
- 我们本可以用 来定义命令,以
{ sm }
表明第一个参数是一个星号,但由于我们知道它将成为一颗星星,这种方法没有真正的好处,只会让事情(稍微)变慢。 - 这就是我用手机随意给出答案的结果——我没有费心去提醒自己命令
\tableofcontents
之后里面有什么\chapter*
。