我正在使用现有的 LaTeX 模板撰写论文,并尝试将算法列表与图片列表进行匹配。我已经应用了一些格式更改,但有一些属性我无法操作。
以下是 LoF 的一个示例:
以下是 LoA 的样本:
我仍然需要在 LoA 中编辑三个属性:
- 算法编号需要与列标题齐平
- 算法数字后的缩进需要稍微减少
- 点间距需要在 LoA 中减小
经过大量的谷歌搜索后,我能够找到几个属性。理想情况下,我想知道生成 LoA 的源代码位于何处,以便我可以自己查看它以及与 LOA 构建相关的任何文档,但我也想知道如何编辑这三个特定的属性。
编辑
我正在研究一个最小的工作示例,但是模板有点复杂。
这是主要的 .tex 文件:
\documentclass[oneside, 12pt]{memoir}
\usepackage{verbatim}
\usepackage[labelsep=period, font=singlespacing, skip=12pt, format=hang,
justification=RaggedRight, singlelinecheck=false]{caption}
\usepackage[T1]{fontenc}
\usepackage{times}
\usepackage{indentfirst}
\usepackage{thesis}
\usepackage{layouts}
\usepackage{array}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{subfig}
\usepackage{algorithmic}
\usepackage{algorithm}
\usepackage{multirow}
\usepackage{amsmath}
\usepackage{tocloft}
\floatname{algorithm}{\textnormal{Algorithm}}
\renewcommand{\thealgorithm}{\textnormal{\arabic{algorithm}.} }
\renewcommand{\listalgorithmname}{LIST OF ALGORITHMS\\
\thispagestyle{plain}%
\par\nobreak {\normalfont ALGORITHM \hfill PAGE}\par\nobreak
}
\begin{document}
\listoffigures
\clearpage
\pagebreak
\listofalgorithms
\clearpage
\pagebreak
\pagestyle{plain}
\mainmatter
\counterwithout{figure}{chapter}
%\counterwithout{table}{chapter}
\addtocontents{toc}{\noindent CHAPTER \par}
\setulmarginsandblock{0.75in}{1.25in}{*}
\begin{figure}[t]
\centering
\begin{subequations}
\begin{equation} \label{eq:tf}
tf(t, d) = \frac{| t \in d |}{| words \in d |}
\end{equation}
\vspace{\linespace}
\begin{equation} \label{eq:idf}
idf(t, D) = \log \frac{|D|}{|\{d \in D : t \in d\}|}
\end{equation}
\vspace{\linespace}
\begin{equation} \label{eq:tfidf}
tfidf(t, d, D) = tf(t, d) \times idf(t, D)
\end{equation}
\end{subequations}
\caption{Formula for calculating the TF-IDF}
\label{fig:tfidf}
\vspace{\linespace}
\end{figure}
\begin{algorithm}[t]
\caption{Building a C4.5 Decision Tree}
\label{alg:C4.5}
\begin{algorithmic}[1]
\STATE Check for base cases
\FORALL{$a$ $\in$ attributes}
\STATE Find the normalized information gain ratio from splitting on $a$
\ENDFOR
\STATE Let $a\_best$ be the attribute with the highest normalized information
gain
\STATE Create a decision $node$ that splits on $a\_best$
\STATE Recurse on the sublists obtained by splitting on $a\_best$, and add those
nodes as children of $node$
\end{algorithmic}
\end{algorithm}
\end{document}
以下是包含许多自定义布局命令的 .sty 文件: 关联
.sty 文件充满了随机的位和片段,但我会尝试尽可能简化它们(编辑应通过 Dropbox 实时进行)。
编辑2
通过大量的谷歌搜索,我能够重新定义 LoA 中的几个命令 thealgorithm
:listofalgorithmname
。我认为我的主要问题是我不知道这些命令在哪里记录、声明或使用,所以我不知道如何重新定义其他命令。
这些命令在哪里声明?
答案1
这是我分析这个问题的思路...
我首先尝试创建一个最小示例会复制您的问题。这意味着我会密切关注您生成的内容以及可能影响它们的包。为此,algorithm
和tocloft
脱颖而出:
\documentclass{memoir}
\usepackage{algorithm,tocloft}
\renewcommand*{\cftdotsep}{1}
\begin{document}
\listoffigures
\listofalgorithms
\begin{figure}[ht]
\caption{A figure}
\end{figure}
\begin{algorithm}[ht]
\caption{An algorithm}
\end{algorithm}
\end{document}
那很简单...
现在我们尝试理解如何\listoffigures
和\listofalgorithms
生成输出之间的区别。好吧,要理解这一点,似乎对前者tocloft
有影响\cftdotsep
,但对后者没有影响。奇怪……看看代码algorithms.dtx
- 软件包的源包algorithm
- 很明显,algorithm
浮动环境是通过float
包裹具有\listofalgorithms
以下定义:
\newcommand{\listofalgorithms}{\listof{algorithm}{\listalgorithmname}}
也就是说,\listofalgorithms
实际上只是调用\listof
提供的一些例程float
。那么,让我们看看\listof
:
\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}}
啊,通过调用\listof{<name>}{..}
,它会创建\l@<name>
- 负责设置 XX 构造列表内每个条目的宏。由此我可以得出结论,的内联构造\l@algorithm
很可能与不兼容tocloft
,这就是为什么它不会受到同样的影响。
解决方法是尝试使 的\l@algorithm
行为与 完全相同\l@figure
。在 TeX 术语中,这很简单\let\l@algorithm\l@figure
。我们可以使用etoolbox
修补\listof
总是\l@XX
等同于\l@figure
(对于任何的XX
):
\usepackage{etoolbox}
\makeatletter
\patchcmd{\listof}% <cmd>
{\float@listhead}% <search>
{\@namedef{l@#1}{\l@figure}\float@listhead}% <replace>
{}{}% <success><failure>
\makeatother
上述补丁将上述的变体插入\let
到的适当位置\listof
。
这是一个显示输出的最小示例:
\documentclass{memoir}
\usepackage{etoolbox}
\usepackage{algorithm,tocloft}
\makeatletter
\patchcmd{\listof}% <cmd>
{\float@listhead}% <search>
{\@namedef{l@#1}{\l@figure}\float@listhead}% <replace>
{}{}% <success><failure>
\makeatother
\renewcommand*{\cftdotsep}{1}
\begin{document}
\listoffigures
\listofalgorithms
\begin{figure}[ht]
\caption{A figure}
\end{figure}
\begin{algorithm}[ht]
\caption{An algorithm}
\end{algorithm}
\end{document}