tcblistof,书籍类别和垂直间距

tcblistof,书籍类别和垂直间距

它处理使用 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一个以逗号分隔的列表,其中包含与每个列表相关的文件扩展名。

相关内容