它处理使用 tcolorbox 包的 tcblistof 功能的显示,这与\listoffigures
与书籍类一起使用时的经典功能不同。在下面的示例(使用tcolorbox v 3.05
)中,您可以看到在图片列表内的章节之间添加了垂直空间,但在定理列表内没有看到。
\documentclass{book}
\usepackage[theorems]{tcolorbox}
\newtcbtheorem[auto counter,number within=chapter,list inside=thm]{theo}{Theorem}{}{}
\begin{document}
\listoffigures{}
\tcblistof[\chapter*]{thm}{List of Theorems}
\chapter{Chapter No1}
\begin{figure}
\caption{Figure No1}
\end{figure}
\begin{figure}
\caption{Figure No2}
\end{figure}
\begin{theo}{Theorem No1}{}
\end{theo}
\begin{theo}{Theorem No2}{}
\end{theo}
\chapter{Chapter No2}
\begin{figure}
\caption{Figure No3}
\end{figure}
\begin{figure}
\caption{Figure No4}
\end{figure}
\begin{theo}{Theorem No3}{}
\end{theo}
\begin{theo}{Theorem No4}{}
\end{theo}
\end{document}
是否有可能实现两者相同的显示?(更准确地说,我想让 tcblistof 表现得像图形列表)。
答案1
您必须教导\chapter
在定理列表中添加垂直空间,就像图表和表格列表中添加垂直空间一样。
最简单的方法是\@chapter
使用以下方法进行修补etoolbox
:
\documentclass{book}
\usepackage[theorems]{tcolorbox}
\usepackage{etoolbox}
\newtcbtheorem[auto counter,number within=chapter,list inside=thm]{theo}{Theorem}{}{}
\makeatletter
\patchcmd{\@chapter}
{\chaptermark{#1}}% search
{\chaptermark{#1}\addtocontents{thm}{\protect\addvspace{10\p@}}}% replace
{}{}
\makeatother
\begin{document}
\listoffigures{}
\tcblistof[\chapter*]{thm}{List of Theorems}
\chapter{Chapter No1}
\begin{figure}
\caption{Figure No1}
\end{figure}
\begin{figure}
\caption{Figure No2}
\end{figure}
\begin{theo}{Theorem No1}{}
\end{theo}
\begin{theo}{Theorem No2}{}
\end{theo}
\chapter{Chapter No2}
\begin{figure}
\caption{Figure No3}
\end{figure}
\begin{figure}
\caption{Figure No4}
\end{figure}
\begin{theo}{Theorem No3}{}
\end{theo}
\begin{theo}{Theorem No4}{}
\end{theo}
\end{document}
如果您有更多列表,则可以只使用一个补丁,而不必使用多个补丁:
\makeatletter
\patchcmd{\@chapter}
{\chaptermark{#1}}% search
{\chaptermark{#1}\@addvspaceinlists}% replace
{}{}
\newcommand\@addvspaceinlists{%
\@for\next:=\listoftocs\do{%
\addtocontents{\next}{\protect\addvspace{10\p@}}%
}%
}
\newcommand\listoftocs{thm}
% in an ideal world it would be
% \renewcommand\listoftocs{lot,lof,thm}
\makeatother
只需定义\listoftocs
一个以逗号分隔的列表,其中包含与每个列表相关的文件扩展名。