我正在准备提交给会议的手稿。这里是会议所需样式表的链接。具体来说,其中有以下几行:
\PassOptionsToPackage{algo2e,ruled}{algorithm2e}
\RequirePackage{algorithm2e}
我没有更改主 LaTeX 文件中的任何内容,但是当我编写示例算法时,它不会在顶部显示水平线,而根据 algorithm2e 包的这些选项的定义,它应该如此,这是提供的样式表中使用的。这是一个 MWE。请注意,它仅使用上面链接中提供的样式表(colt2018.cls、jmlr.cls、jmlrutils.sty)进行编译。
\documentclass[anon,12pt]{colt2018} % Anonymized submission
% \documentclass{colt2017} % Include author names
% The following packages will be automatically loaded:
% amsmath, amssymb, natbib, graphicx, url, algorithm2e
\title[Short Title]{Full Title of Article}
\usepackage{times}
% Authors with different addresses:
\coltauthor{\Name{Author Name1} \Email{[email protected]}\\
\addr Address 1
\AND
\Name{Author Name2} \Email{[email protected]}\\
\addr Address 2
}
\begin{document}
\maketitle
\begin{abstract}
This is a great paper and it has a concise abstract.
\end{abstract}
\begin{keywords}
List of keywords
\end{keywords}
\section{Introduction}
\begin{algorithm}[h!]
\KwData{this text}
\KwResult{how to write algorithm with \LaTeX2e }
initialization\;
\While{not at end of this document}{
read current\;
\eIf{understand}{
go to next section\;
current section becomes this one\;
}{
go back to the beginning of current section\;
}
}
\caption{How to write algorithms}
\end{algorithm}
% Acknowledgments---Will not appear in anonymized version
\acks{We thank a bunch of people.}
\bibliography{yourbibfile}
\end{document}
我在这里做错了什么?
答案1
我认为你没有做错什么。在类的文档中,你会发现以下有点神秘的评论:
如果会议记录包含使用新旧版本的论文,则允许使用旧的命令名称。(这意味着编辑者需要安装较新的版本。)出于某种原因,加载 algorithm2e 会导致出现消息
(\end occurred inside a group at level 1)
我不知道为什么,但这超出了这个班级的控制范围。
558 \PassOptionsToPackage{algo2e,ruled}{algorithm2e} 559 \RequirePackage{algorithm2e}
当你检查jmlrutils.sty
定义时algorithm
,你会发现以下内容:
\newenvironment{algorithm}[1][htbp]%
{%
\ifundef{\algocf}%
{`algorithm2e' package is required if you want to
use the algorithm environment}%
{}%
\begin{algocf}[#1]%
\renewcommand\@makecaption[2]{%
\hskip\AlCapHSkip
\parbox[t]{\hsize}{\algocf@captiontext{##1}{##2}}%
}%
}%
{%
\end{algocf}%
}
这样\@makecaption
就进行了重新定义,尽管选项被传递给了类,但是不会使用标尺标题。
这条含糊不清的注释暗示将规则选项传递给包可以避免错误,仅此而已。它的目的并不是真正让算法规则化。