调整算法列表左边距

调整算法列表左边距

如何调整算法列表的左边距?

我尝试过

对于图表列表,左边距可以按照说明进行调整调整 LOT 和 LOF 的左边距

\renewcommand\l@figure{\@dottedtocline{1}{0em}{2.3em}}
\renewcommand\l@table{\@dottedtocline{1}{0em}{2.3em}}

然而,这是行不通的:

\renewcommand\l@algorithm{\@dottedtocline{1}{0em}{2.3em}}

边距不受影响,但出现以下警告:

Command \l@algorithm undefined. \renewcommand\l@algorithm

我尝试了几种变体:l@algorithms,,l@algo但都不起作用。我能够l@figure在中找到的定义book.cls,但我找不到与算法列表相关的任何内容。

平均能量损失

\documentclass{scrbook}

\makeatletter
\renewcommand\l@figure{\@dottedtocline{1}{0em}{2.3em}}
\makeatother

\usepackage{algorithm}

\begin{document}

\begin{algorithm}
    \caption{An algorithm}
\end{algorithm}

\begin{figure}
    \caption{A figure}
\end{figure}

\listoffigures
\listofalgorithms

\end{document}

输出:

在此处输入图片描述 在此处输入图片描述

答案1

\listofalgorithms从和的定义来看\listof

$ latexdef -p algorithm -s listofalgorithms
% algorithm.sty, line 97:
\newcommand{\listofalgorithms}{\listof{algorithm}{\listalgorithmname}}

$ latexdef -p float -s \listof
% float.sty, line 127:
\newcommand*{\listof}[2]{%
  \@ifundefined{ext@#1}{\float@error{#1}}{%
    \@namedef{l@#1}{\@dottedtocline{1}{1.5em}{2.3em}}%
    \float@listhead{#2}%
    \begingroup\setlength{\parskip}{\z@}%
      \@starttoc{\@nameuse{ext@#1}}%
    \endgroup}}

我们可以看到,\l@algorithm直到使用时才定义\listof{algorithm}{...}。这解释了错误Command \l@algorithm undefined.,并且还将覆盖现有的定义\l@algorithm

\l@algorithm在下面的例子中,通过在 aux 文件的开头重新定义来解决该问题,该文件由in\jobname.loa输入。\@starttoc{\@nameuse{ext@#1}}\listof

\documentclass{scrbook}
\usepackage{algorithm}

\makeatletter
\renewcommand\l@figure{\@dottedtocline{1}{0em}{2.3em}}

\addtocontents{loa}{%
  \protect\renewcommand\protect\l@algorithm{\protect\@dottedtocline{1}{0em}{2.3em}}%
  \protected@file@percent%
}
\makeatother

\begin{document}

\begin{algorithm}
    \caption{An algorithm}
\end{algorithm}

\begin{figure}
    \caption{A figure}
\end{figure}

\listoffigures
\listofalgorithms

\end{document}

\listoffigures 的输出 \listofalgorithms 的输出

答案2

KOMA-Script 类加载并使用包tocbasic。因此您不必重新定义内部命令。

图表条目的缩进可以通过以下方式更改

\DeclareTOCStyleEntries[indent=0pt]{tocline}{figure,table}

如果要克隆算法条目的图形设置,可以使用:

%get list of algorithms under control of tocbasic:
\addtotoclist[float]{loa}
\renewcommand{\listofalgorithms}{\listoftoc[\listalgorithmname]{loa}}
% algorithm entries should use same settings as figure entries
\DeclareTOCStyleEntry[
  level:=figure,
  indent:=figure,
  numwidth:=figure
]{tocline}{algorithm}

例子:

\documentclass{scrbook}
\usepackage{algorithm}
% adjust the indent of figure and table entries
\DeclareTOCStyleEntries[indent=0pt]{tocline}{figure,table}

%get list of algorithms under control of tocbasic:
\addtotoclist[float]{loa}
\renewcommand{\listofalgorithms}{\listoftoc[\listalgorithmname]{loa}}
% algorithm entries should use same settings as figure entries
\DeclareTOCStyleEntry[
  level:=figure,
  indent:=figure,
  numwidth:=figure
]{tocline}{algorithm}

\begin{document}

\begin{algorithm}\caption{An algorithm}\end{algorithm}
\begin{figure}\caption{A figure}\end{figure}
\begin{table}\caption{A table}\end{table}

\listoffigures
\listoftables
\listofalgorithms
\end{document}

相关内容