格式化 \listoftables 和 \listofalgorithms

格式化 \listoftables 和 \listofalgorithms

我需要 \listoffigures 和 \listofalgorithms 的特殊格式。

它应该是:

List of Tables
      Table 1: T1.....................1

以及各自的

List of Algorithms
      Algorithm 1: A1.................1

对于表格,我发现:

\renewcommand*\cfttabpresnum{Table~}
\settowidth{\cfttabnumwidth}{\cfttabpresnum}
\renewcommand{\cfttabaftersnumb}{$\;$$\;$:~}

效果非常好。

对于我找到的算法

\let\oldlistofalgorithms\listofalgorithms
\renewcommand{\listofalgorithms}{%
  \begingroup%
  \let\oldnumberline\numberline%
  \renewcommand{\numberline}{Algorithmus:~\oldnumberline}%
  \oldlistofalgorithms%
\endgroup}

从这里:在算法列表中的每个条目前添加单词“算法” 这也行得通。但风格是

 List of Algorithms
         Algorithm 1 A1................1

所以“:”不见了。我试着自己解决,但没能解决。你能帮我解决一下吗?

你好,托尼

答案1

这个想法是首先注册算法列表,以便tocloft意识到这一点;例如,可以使用egreg 的回答定制由 \lstlistoflistings 生成的列表列表?。相关部分根据算法的情况进行了调整,

\makeatletter
\begingroup
  \let\newcounter\@gobble
  \let\setcounter\@gobbletwo
  \globaldefs\@ne
  \let\c@loadepth\@ne
  \newlistof{algorithms}{loa}{\listalgorithmname}
\endgroup
\let\l@algorithm\l@algorithms
\makeatother

完成后,您可以使用\cft...命令系列自定义条目格式:

\documentclass{book}
\usepackage{tocloft}
\usepackage{algorithm}

\makeatletter
\begingroup
  \let\newcounter\@gobble
  \let\setcounter\@gobbletwo
  \globaldefs\@ne
  \let\c@loadepth\@ne
  \newlistof{algorithms}{loa}{\listalgorithmname}
\endgroup
\let\l@algorithm\l@algorithms
\makeatother

\renewcommand\cfttabaftersnum{:}
\renewcommand\cfttabpresnum{Table~}
\cftsetindents{tab}{1.5em}{5em}

\renewcommand\cftalgorithmsaftersnum{:}
\renewcommand\cftalgorithmspresnum{Algorithm~}
\cftsetindents{algorithms}{1.5em}{7em}

\begin{document}

\listoftables
\cleardoublepage
\listofalgorithms
\cleardoublepage

\begin{table}
\centering A
\caption{test table}
\end{table}

\begin{algorithm}
\centering A
\caption{test algorithm}
\end{algorithm}

\begin{table}
\centering A
\caption{another test table}
\end{table}

\begin{algorithm}
\centering A
\caption{another test algorithm}
\end{algorithm}

\end{document}

表格列表的图像:

在此处输入图片描述

算法列表的图像:

在此处输入图片描述

答案2

如果有人正在寻找上述“lstlistings”相同的内容,那么应该这样做:

\makeatletter
\begingroup\let\newcounter\@gobble\let\setcounter\@gobbletwo
  \globaldefs\@ne \let\c@loldepth\@ne
  \newlistof{listings}{lol}{\lstlistlistingname}
\endgroup
\let\l@lstlisting\l@listings
\AtBeginDocument{\addtocontents{lol}{\protect\addvspace{10\p@}}}
\makeatother
\renewcommand{\lstlistoflistings}{\listoflistings}

\renewcommand\cftlistingsaftersnum{:}
\renewcommand\cftlistingspresnum{Listing~}
\cftsetindents{listings}{1.5em}{7em}

相关内容