\listofalgorithms 中的点线

\listofalgorithms 中的点线

我一直在研究 ToC、LoF、LoT,最近又研究了我论文中的 LoA(算法列表)。我使用该tocloft软件包是为了可以按照自己想要的方式设置它们的样式。我的第一个问题是让这些点更接近。我通过更新一些命令并删除其中的分隔符解决了这个问题。

我正在使用algorithm2e包来管理我的算法并获取命令\listofalgorithms。索引生成得很好,但点仍然是分开的。我试过使用,\newlistof但没有用。还使用更新命令\renewcommand{\cftalgorithmleader}{~\cftdotfill{}},但它说\cftalgorithmleader未定义。

这里我们有一个问题的最小例子,其中算法列表中的点仍然是分开的。

\documentclass[10pt]{book}
\usepackage[utf8]{inputenc}
\usepackage[portuguese,algosection,algoruled,linesnumbered]{algorithm2e}
\usepackage[titles]{tocloft}
\renewcommand{\cftchapleader}{~\cftdotfill{}}
\renewcommand{\cftsubsecleader}{~\cftdotfill{}}
\renewcommand{\cftsubsubsecleader}{~\cftdotfill{}}
\renewcommand{\cftsecleader}{~\cftdotfill{}}
\renewcommand{\cftfigleader}{~\cftdotfill{}}
\renewcommand{\cfttableader}{~\cftdotfill{}}
\renewcommand{\cftpartleader}{~\cftdotfill{}}
\renewcommand{\cftparaleader}{~\cftdotfill{}}

% \renewcommand{\cftalgorithmleader}{~\cftdotfill{}}

\begin{document}

\tableofcontents
\listofalgorithms

\chapter{One}
\section{OnedotOne}
\begin{algorithm}[H]
\SetAlgoLined
\KwData{this first text}
\caption{first algorithms}
\end{algorithm}

\chapter{Two}
\section{TwodotOne}
\begin{algorithm}[H]
\SetAlgoLined
\KwData{this second text}
\caption{second algorithms}
\end{algorithm}

\end{document}

答案1

algorithm2e管理自己的算法列表 (LoA)。这就是为什么tocloft不知道如何处理命令\cftalgorithmleader。此外,它实际上将 LoA 中的算法引用为algocf,而不是algorithm。无论哪种方式,您都必须以“老式方式”修改点分隔 - 通过更新\@dotsep

\makeatletter
\renewcommand{\@dotsep}{0}
\makeatother
\listofalgorithms

它在您的 MWE 中如下所示:

在此处输入图片描述

\documentclass[10pt]{book}
%\usepackage[utf8]{inputenc}% http://ctan.org/pkg/inputenc
\usepackage[portuguese,algosection,algoruled,linesnumbered]{algorithm2e}% http://ctan.org/pkg/algorithm2e
\usepackage[titles]{tocloft}% http://ctan.org/pkg/tocloft
\renewcommand{\cftchapleader}{~\cftdotfill{0}}
\renewcommand{\cftsubsecleader}{~\cftdotfill{0}}
\renewcommand{\cftsubsubsecleader}{~\cftdotfill{0}}
\renewcommand{\cftsecleader}{~\cftdotfill{0}}
\renewcommand{\cftfigleader}{~\cftdotfill{0}}
\renewcommand{\cfttableader}{~\cftdotfill{0}}
\renewcommand{\cftpartleader}{~\cftdotfill{0}}
\renewcommand{\cftparaleader}{~\cftdotfill{0}}

\begin{document}

\tableofcontents
\makeatletter
\renewcommand{\@dotsep}{0}% Remove gap between dot leader in LoA.
\makeatother
\listofalgorithms

\chapter{One}
\section{OnedotOne}
\begin{algorithm}[H]
\SetAlgoLined
\KwData{this first text}
\caption{first algorithms}
\end{algorithm}

\chapter{Two}
\section{TwodotOne}
\begin{algorithm}[H]
\SetAlgoLined
\KwData{this second text}
\caption{second algorithms}
\end{algorithm}

\end{document}

请注意不是指定\cftdotfill{},而是\cftdotfill{0},因为设置的值(就像\@dotsep)用作单位的参数:mus 或math units。

相关内容