我一直在研究 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
)用作单位的参数:mu
s 或m
ath u
nits。