如何调整算法列表的左边距?
我尝试过
对于图表列表,左边距可以按照说明进行调整调整 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}
答案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}