Articles for Proceedings of Machine Learning Research (PMLR) formerly Journal of Machine Learning Research Workshop and Conference Proceedings
(JMLR W&CP)
Nicola L. C. Talbot
http://www.dickimaw-books.com/
2022-02-09 (version 1.30)
Contents
1 Introduction 4
1.1 Required Packages . . . 4
2 Guidelines for Article Authors 6 2.1 Title Information . . . 6
2.2 Font Changing Commands . . . 10
2.3 Structure . . . 10
2.4 Citations and Bibliography . . . 12
2.5 jmlrutilssupplementary package . . . 12
2.5.1 Package Options . . . 12
2.5.2 Figures and Tables . . . 13
2.5.3 Algorithms . . . 15
2.5.4 Description Lists . . . 17
2.5.5 Theorems, Lemmas etc . . . 17
2.5.6 Cross-Referencing . . . 19
2.5.7 Mathematics. . . 21
2.6 Color vs Grayscale . . . 23
2.7 Where To Go For Help . . . 24
3 Guidelines for Production Editors 25 3.1 jmlrbookClass Options. . . 25
3.2 The Preamble . . . 26
3.3 Main Book Commands. . . 28
3.3.1 Two Column Articles in a One Column Book . . . 32
3.3.2 Cross-Referencing . . . 32
3.4 Altering the Layout of the Main Title Page. . . 33
3.5 Potential Pitfalls. . . 34
4 The Code 36 4.1 jmlrutils.sty Code . . . 36
4.1.1 Cross-Referencing . . . 37
4.1.2 Figures, Tables and Algorithms . . . 40
4.1.3 General Markup. . . 46
4.1.4 Proofs and Theorems. . . 48
4.2 jmlr.cls Code. . . 53
4.2.1 Sections . . . 58
4.2.2 Footnotes . . . 59
4.2.3 Article abstract . . . 59
4.2.4 Keywords. . . 60
4.2.5 Title Page Information . . . 60
4.2.6 Pagestyles . . . 67
4.2.7 Miscellany . . . 70
4.2.8 Compatibility with combine.cls . . . 74
4.3 jmlrbook.cls Code. . . 84
Change History 117
Index 120
1 Introduction
The
jmlr
class was designed primarily for the Journal of Machine Learning Research Work- shop and Conference Proceedings (JMLR W&CP) based on thejmlrwcp2e
package to make it easier for production editors to combine articles into a single book.The
nowcp
option implements thejmlr2e
style to make it easier to include reprints from JMLR articles. If you are an author wanting to submit an article to the JMLR, please see their guidelines and use their official package.Since the creation of this class, the JMLR W&CP has changed its name to the Proceedings of Machine Learning Research (PMLR). Articles submitted to the PMLR should use the
pmlr
option. Reprints of old JMLR W&CP articles should use thewcp
option.The
jmlrbook
class was provided to combine articles that use thejmlr
class into a book.The
combine
class internally used byjmlrbook
has stopped work following changes to the LATEX kernel in 2020. This means that thejmlrbook
class is now deprecated. This only affects production editors not article authors.As from v1.24, some non-class dependent commands and environments have been moved to a new package
jmlrutils
(see Section2.5). This package is automatically loaded byjmlr
, but may be used with other classes. (Note that you will need to explicitly loadalgorithm2e
if you want to use thealgorithm
environment.)Note that the
jmlr
(and thereforejmlrbook
) class automatically loads thehyperref
package, but some packages need to be loaded beforehyperref
.Anything that needs to be done before
hyperref
is loaded can be specified by defining the command\jmlrprehyperref
\jmlrprehyperref
beforethe class is loaded. For example, to load the packages
foo
andbar
beforehyperref
, you can do:\newcommand{\jmlrprehyperref}{\usepackage{foo,bar}}
\documentclass{jmlr}
1.1 Required Packages
The
jmlr
class is based on thearticle
class and loads the following packages:jmlrutils
(see Sec- tion2.5),amsmath
,amssymb
,natbib
,url
,graphicx
andalgorithm2e
,hyperref
,nameref
,xcolor
and
xkeyval
. Note that unlike thejmlr2e
andjmlrwcp2e
packages, this class file does not load the obsoleteepsfig
package.2 Guidelines for Article Authors
Article authors should use the
jmlr
class with thepmlr
option. This class comes with the example filepmlr-sample.tex
, which can be used as a template.The following class options are available:
pmlr The article is for the Proceedings of Machine Learning Research (PMLR).
wcp The article is for JMLR Workshop and Conference Proceedings (JMLR W&CP).
nowcp The article is for the Journal of Machine Learning Research (default).
twocolumn Use two-column style. The title and author information will span both columns through the use of the optional argument of
\twocolumn
. This means that no page break can occur in the title and author list.onecolumn Use one-column style (default).
color Color version (see Section2.6).
gray Grayscale version (see Section2.6).
tablecaption=top in a
table
environment,\floatconts
puts the caption at the top.tablecaption=bottom in a
table
environment,\floatconts
puts the caption at the bottom.cleveref This option is passed to
jmlrutils
(see Section2.5).nocleveref This option is passed to
jmlrutils
(see Section2.5).2.1 Title Information
The
jmlr
class uses different syntax fromjmlr2e
andjmlrwcp2e
to specify the title information.In particular, it doesn’t define
\jmlrheading
and\ShortHeading
. Instead, the following commands should be used:\jmlrvolume{
〈number〉}
\jmlrvolume
This specifies the volume number. For example:
\jmlrvolume{2}
\jmlryear{
〈year〉}
\jmlryear
This specifies the year. For example:
\jmlryear{2010}
\jmlrsubmitted{
〈date〉}
\jmlrsubmitted
This specifies the submission date.
\jmlrpublished{
〈date〉}
\jmlrpublished
This specifies the publication date.
\jmlrworkshop{
〈title〉}
\jmlrworkshop
This specifies the workshop title (for use with the
wcp
class option).The title information is specified using the commands described below. These commands should typically go in the preamble. As with most class files, The title itself is produced using
\maketitle
\maketitle
This command should go after
\begin{document}
. For example:\begin{document}
\maketitle
Before
\maketitle
, you must specify the title information using the following commands:\title[
〈short title〉]{
〈title〉}
\title
This specifies the article’s title. A short title for the page header can be supplied via the op- tional argument〈short title〉. If you want to force a line break in the title, use
\titlebreak
\titlebreak
instead of
\newline
or\\
as this will ensure that the line break doesn’t also end up in the table of contents or bookmarks when the article is included in a book. If there is content within the title that should not appear in the page headings or table of contents (for example, a footnote) use\titletag{
〈title only stuff〉}
\titletag
For example:
\title{An Interesting Paper\titlebreak With a Line Break\titletag{\thanks{and an acknowledgement}}}
\editor{
〈name〉}
\editor
This specifies the editor’s name. If there is more than one editor, use:
\editors{
〈names〉}
\editors
\author{
〈author specs〉}
\author
This specifies the author. The specifications〈author specs〉are a bit different to
jmlr2e
andjmlrwcp2e
. Use\Name[
〈abbreviated name〉]{
〈author’s name〉}
\Name
to specify the author’s name. Note that if the surname contains a space it must be grouped (enclosed in braces {}). Similarly if the initial letter of each forename is a diacritic it must be grouped. If the abbreviation of the name doesn’t get parsed properly you can override the default using the optional argument. (See below for examples.)
If there is any content within〈author’s name〉that shouldn’t get copied to the header, footer or table of contents, it should be enclosed within the argument of
\nametag{
〈title only stuff〉}
\nametag
For example:
\Name{Ann Other\nametag{\thanks{formerly with some other institute}}}
Ensure no space occurs before
\nametag
otherwise the surname will be interpreted as an empty string because the space is used to separate the forenames from the surname.\Email{
〈author’s email〉}
This specifies the author’s email address. It should only be used within the argument to
\author
.\and
\and
This should be used to separate two authors with the same address.
\AND
\AND
This should be used to separate authors with different addresses.
\\
\\
This should be used before an author’s address or between authors with the same address where there are more that two authors.
\addr
\addr
This should be used at the start of the address.
Example 1 Two authors with the same address:
\author{\Name{Jane Doe} \Email{[email protected]}\and
\Name{John {Basey Fisher}} \Email{[email protected]}\\
\addr Address}
In this example, the second author has a space in his surname so the surname needs to be grouped.
Example 2 Three authors with the same address:
\author{\Name{Fred Arnold {de la Cour}} \Email{[email protected]}\\
\Name{Jack Jones} \Email{[email protected]}\\
\Name{{\'E}louise {\'E}abhla Finchley} \Email{[email protected]}\\
\addr Address}
In this example, the third author has an accent on her forename initials so grouping is required.
Example 3 Authors with a different address:
\author{\Name{John Smith} \Email{[email protected]}\\
\addr Address 1
\AND\Name{May Brown} \Email{[email protected]}\\
\addr Address 2 }
Example 4 The author is actually a company so there’s no first name and surname:
\author{\Name[Some Company, Ltd]{Some Company, Ltd}\Email{xyz:some.com}\\
\addr Address }
2.2 Font Changing Commands
Use the LATEX 2ε font changing commands, such as
\bfseries
or\textbf{
〈text〉}
, rather than the obsolete LATEX2.09 commands, such as\bf
. (The obsolete font changing commands will produce a warning if used.)\url{
〈address〉}
\url
This will typeset〈address〉in a typewriter font. Special characters, such as
~
, are correctly displayed. Example:\url{http://theoval.cmp.uea.ac.uk/~nlct/}
This command is provided by the
url
package which is automatically loaded.\mailto{
〈email address〉}
\mailto
This will typeset the given email address in a typewriter font. Note that this is not the same as
\author
. This command is provided by the supplementary packagejmlrutils
. Other commands are described in Section2.5.2.3 Structure
\begin{abstract}
〈text〉
\end{abstract}
abstract
The abstract text should be displayed using the
abstract
environment.\begin{keywords}
〈keyword list〉\end{keywords}
keywords
The keywords should be displayed using the
keywords
environment.\acks{
〈text〉}
\acks
This displays the acknowledgements.
\section{
〈title〉}
\section
Section titles are created using
\section
. The heading is automatically numbered and can be cross-referenced using\label
and\ref
. Unnumbered sections can be produced using:\section*{
〈title〉}
\section*
\subsection{
〈title〉}
\subsection
Sub-section titles are created using
\subsection
. Unnumbered sub-sections can be pro- duced using:\subsection*{
〈title〉}
\subsection*
\subsubsection{
〈title〉}
\subsubsection
Sub-sub-section titles are created using
\subsubsection
. Unnumbered sub-sub-sections can be produced using:\subsubsection*{
〈title〉}
\subsubsection*
Further sectioning levels can be obtained using
\paragraph
and\subparagraph
, but these are unnumbered with running heads.\appendix
\appendix
Use
\appendix
to switch to the appendices. This changes\section
to produce an appendix.Example:
\appendix
\chapter{Proof of Theorems}
2.4 Citations and Bibliography
The
jmlr
class automatically loadsnatbib
and sets the bibliography style toplainnat
. Refer- ences should be stored in a.bib
file.\bibliography{
〈bib file〉}
\bibliography
This displays the bibliography.
\citep[
〈pre note〉][
〈post note〉]{
〈label〉}
\citep
Use
\citep
for a parenthetical citation.\citet[
〈note〉]{
〈label〉}
\citet
Use
\citet
for a textual citation.See the
natbib
documentation1for further details.2.5 jmlrutils supplementary package
The
jmlrutils
package is automatically loaded by thejmlr
class but may be used with other classes.2.5.1 Package Options
The following options may be passed to the
jmlrutils
package if it is to be used without thejmlr
class.maths Define the commands
\set
and\oldvec
and redefine\vec
. This will also automat- ically load theamsmath
package. (Default.)nomaths Don’t define
\set
and\oldvec
and don’t redefine\vec
.theorems Define the theorem commands and environments listed in Section 2.5.5. (De- fault.)
notheorems Don’t define the theorem commands and environments.
cleveref Loads
aliascnt
andcleveref
and defines the theorem environments with aliased counters. Note that this option is largely redundant withnotheorems
. Whenjmlru- tils
is loaded implicitly byjmlr
, this option will also ensure thathyperref
is loaded be- forecleveref
. Ifjmlrutils
is loaded withoutjmlr
thenhyperref
won’t be loaded unless\jmlrprehyperref
is defined.1http://ctan.org/pkg/natbib
nocleveref Don’t load
aliascnt
andcleveref
(default).subfloats Define the sub-figure and sub-table commands listed in Section2.5.2. (Default.) nosubfloats Don’t define the sub-figure and sub-table commands.
The non-default options are provided when
jmlrutils
is loaded without thejmlr
class. Don’t try passing the non-default options tojmlrutils
if you are using thejmlr
class as this could interfere with the build process for the proceedings or book.The
jmlrutils
package doesn’t recognise any of thejmlr
class options (such astablecaption
).2.5.2 Figures and Tables
Floats, such as figures, tables and algorithms, are moving objects and are supposed to float to the nearest convenient location. Please don’t force them to go in a particular place. In general it’s best to use the
htbp
specifier and don’t put the float in the middle of a paragraph (that is, make sure there’s a paragraph break above and below the float). Floats are supposed to have a little extra space above and below them to make them stand out from the rest of the text.This extra space is put in automatically and shouldn’t need modifying.
To ensure consistency, pleasedon’ttry changing the format of the caption by doing some- thing like:
\caption{\textit{A Sample Caption.}}
or
\caption{\em A Sample Caption.}
You can, of course, change the font for individual words or phrases. For example:
\caption{A Sample Caption With Some \emph{Emphasized Words}.}
The
jmlrutils
package provides the following command for displaying the contents of a fig- ure or table:\floatconts{
〈label〉}{
〈caption command〉}{
〈contents〉}
\floatconts
This ensures that the caption is correctly positioned and that the contents are centred. For example:
\begin{table}[htbp]
\floatconts
{tab:example}% label
{\caption{An Example Table}}% caption command {%\begin{tabular}{ll}
\bfseries Dataset & \bfseries Result\\
Data1 & 0.123456
\end{tabular}
\end{table}}
If the
jmlr
class is used, the table caption (when used with\floatconts
) will obey thetable- caption
class option, otherwise it will be placed above the table contents. Within thefigure
environment,\floatconts
will put the caption below the contents. This command may be used within other floats.The
jmlr
class automatically loadsgraphicx
which defines:\includegraphics[
〈options〉]{
〈file name〉}
\includegraphics
where〈options〉is a comma-separated list of options. If you are using
jmlrutils
with another class you need to loadgraphicx
in order to use this command. See the documentation for thegraphicx
package for further details of this command and other provided commands.For example, suppose you have an image called
mypic.png
in a subdirectory calledimages
:\begin{figure}[htbp]
\floatconts
{fig:example}% label
{\caption{An Example Figure}}% caption command
{\includegraphics[width=0.5\textwidth]{images/mypic}}
\end{figure}
Note that you shouldn’t specify the file extension when including the image when using the
jmlr
class. It’s helpful if you can also provide a grayscale version of colour images. This should be labelled as the colour image but with-gray
immediately before the extension.(The extension need not be the same as that of the colour image.) For example, if you have an image called
mypic.pdf
, the grayscale can be calledmypic-gray.pdf
,mypic-gray.png
ormypic-gray.jpg
. See Section2.6for further details.\includeteximage[
〈options〉]{
〈file name〉}
\includeteximage
If your image file is made up of LATEX code (e.g.
tikz
commands) the file can be included using\includeteximage
. The optional argument is a key=value comma-separated list where the available keys are a subset of those provided bygraphicx
’s\includegraphics
. The main keys are:width
,height
,scale
andangle
. Some of the keys specific to image files (such as the bounding box and type keys) do nothing with\includeteximage
.Sub-Figures and Sub-Tables
The
subfig
package causes a problem forjmlrbook
so thejmlr
class will give an error if it is used. Therefore thejmlr
class provides its own commands for including sub-figures and sub- tables. If you aren’t using thejmlr
class, you can preventjmlrutils
from defining these com- mands with thenosubfloats
package option.Sub-float captions that are wider than the corresponding sub-float content are placed in- side a
\parbox
set to the width of the sub-float content. This allows long captions to linewrap in a mini-paragraph below the sub-float. However, if the sub-float is very narrow, this can lead to badly-broken sub-captions that generate overfull or underfull hbox warnings. You can specify a minimum width for sub-float captions by setting the following length:
\jmlrminsubcaptionwidth
\jmlrminsubcaptionwidth
The default value is 0pt. The value should be set with
\setlength
. The assignment can be localised by placing it within a group or environment.\subfigure[
〈title〉][
〈valign〉]{
〈contents〉}
\subfigure
This makes a sub-figure where〈contents〉denotes the contents of the sub-figure. This should also include the
\label
. The first optional argument〈title〉indicates a caption for the sub- figure. By default, the sub-figures are aligned at the base. This can be changed with the second optional argument〈valign〉, which may be one of:t
(top),c
(centred) orb
(base).For example, suppose there are two images files,
mypic1.png
andmypic2.png
, in the sub- directoryimages
. Then they can be included as sub-figures as follows:\begin{figure}[htbp]
\floatconts
{fig:example2}% label for whole figure
{\caption{An Example Figure.}}% caption for whole figure {%\subfigure{%
\label{fig:pic1}% label for this sub-figure
\includegraphics{images/mypic1}
}\qquad % space out the images a bit
\subfigure{%
\label{fig:pic2}% label for this sub-figure
\includegraphics{images/mypic2}
} }
\end{figure}
\subtable[
〈title〉][
〈valign〉]{
〈contents〉}
\subtable
This is an analogous command for sub-tables. The default value for〈valign〉is
t
.2.5.3 Algorithms
The
jmlr
class automatically loads thealgorithm2e
package. If you are usingjmlrutils
with an- other class, you will need to loadalgorithm2e
if you want to use thealgorithm
andalgorithm2e
environments described below.\begin{algorithm}[
〈placement〉]
〈contents〉
\end{algorithm}
algorithm
Enumerated textual algorithms can be displayed using the
algorithm
environment. The op- tional argument is as forfigure
andtable
.Within the body of the environment you can use the
enumerate
environment.\begin{enumerate*}
\item
〈text〉...
\end{enumerate*}
enumerate*
If you want to have nested
enumerate
environments but you want to keep the same num- bering throughout the algorithm, you can use theenumerate*
environment, provided by thejmlrutils
package. For example:\begin{algorithm}
\floatconts{alg:path}%label
{\caption{Shortest Path}}% caption {% contents
\begin{enumerate*}
\item Set the label of vertex $s$ to 0
\item Set $i=0$
\begin{enumerate*}
\item \label{step:locate}Locate all unlabelled vertices adjacent to a vertex labelled $i$ and label them $i+1$
\item If vertex $t$ has been labelled,
\begin{enumerate*}
\item[] the shortest path can be found by backtracking, and the length is given by the label of $t$.
\end{enumerate*}
otherwise
\begin{enumerate*}
\item[] increment $i$ and return to step~\ref{step:locate}
\end{enumerate*}
\end{enumerate*}
\end{enumerate*}
}\end{algorithm}
\begin{algorithm2e}
〈contents〉
\end{algorithm2e}
algorithm2e
Pseudo code can be displayed using the
algorithm2e
environment, provided by thealgo- rithm2e
package, which is automatically loaded. For example:\begin{algorithm2e}
\caption{Computing Net Activation}
\label{alg:net}
\DontPrintSemicolon
\LinesNumbered
\KwIn{$x_1, \ldots, x_n, w_1, \ldots, w_n$}
\KwOut{$y$, the net activation}
$y\leftarrow 0$\;
\For{$i\leftarrow 1$ \KwTo $n$}{
$y \leftarrow y + w_i*x_i$\;
}\end{algorithm2e}
See the
algorithm2e
documentation2for more details.2.5.4 Description Lists
\begin{altdescription}{
〈widest label〉}
\item[
〈label〉]
〈item text〉\end{altdescription}
altdescription
In addition to the standard
description
environment, thejmlr
class also provides thealtde- scription
environment. This has an argument that should be the widest label used in the list.For example:
\begin{altdescription}{differentiate}
\item[add] A method that adds two variables.
\item[differentiate] A method that differentiates a function.
\end{altdescription}
2.5.5 Theorems, Lemmas etc
The
jmlrbook
class doesn’t work well with common theorem packages, sojmlrutils
provides theorem code that won’t conflict withjmlrbook
. If you’re usingjmlrutils
without thejmlr
class, you can prevent the definition of these commands with thenotheorems
package option.The
jmlrutils
package provides the following theorem-like environments:theorem
,example
,lemma
,proposition
,remark
,corollary
,definition
,conjecture
andaxiom
. Within the body of those environments, you can use theproof
environment to display the proof if need be. The theorem-like environments all take an optional argument, which gives the environment a title. For example:2http://ctan.org/pkg/algorithm2e
\begin{theorem}[An Example Theorem]
\label{thm:example}
This is the theorem.
\begin{proof}
This is the proof.
\end{proof}
\end{theorem}
You can define your own numbered theorem-like environment using:
\newtheorem{
〈name〉}[
〈counter〉]{
〈title〉}[
〈outer counter〉]
\newtheorem
or you can define an unnumbered theorem-like environment using:
\newtheorem*{
〈name〉}{
〈title〉}
\newtheorem*
where〈name〉is the name of the new environment and〈title〉is the title tag at the start of the environment. In the case of the numbered theorems,〈counter〉is a predefined counter to use with this theorem. If omitted, a new counter called〈name〉will be defined. The final optional argument〈outer counter〉is the name of a parent counter which, when incremented, should reset the theorem counter.
Both
\newtheorem
and\newtheorem*
set the new theorem’s style to the current defined style. The current style is set using the following commands:\theorembodyfont{
〈declarations〉}
\theorembodyfont
This sets the font declarations used in the body of the theorem. This defaults to
\itshape
.\theoremheaderfont{
〈declarations〉}
\theoremheaderfont
This sets the font declarations used for the theorem title. This defaults to
\bfseries
.\theorempostheader{
〈text〉}
\theorempostheader
This indicates what should occur at the end of the title. This defaults to nothing.
\theoremsep{
〈text〉}
\theoremsep
This indicates what to put between the header and the body of the environment. This defaults to nothing.
For example, to define an unnumbered theorem-like environment called “note” with the title “Note” followed by a colon and a new line between the title and the body of the
note
environment:\theorembodyfont{\upshape}
\theoremheaderfont{\scshape}
\theorempostheader{:}
\theoremsep{\newline}
\newtheorem*{note}{Note}
Now it can be used in the document environment:
\begin{note}
This is an numbered theorem-like environment.
\end{note}
2.5.6 Cross-Referencing
Always use
\label
when cross-referencing, rather than writing the number explicitly. Thejmlrutils
package provides some convenience commands to assist referencing. These com- mands, described below, can all take a comma-separated list of labels.\sectionref{
〈label list〉}
\sectionref
Used to refer to a section or sections. For example, if you defined a section as follows:
\chapter{Results}\label{sec:results}
you can refer to it as follows:
The results are detailed in \sectionref{sec:results}.
This command may also be used for sub-sections and sub-sub-sections.
\appendixref{
〈label list〉}
\appendixref
Used to refer to an appendix or multiple appendices.
\equationref{
〈label list〉}
\equationref
Used to refer to an equation or multiple equations.
\tableref{
〈label list〉}
\tableref
Used to refer to a table or multiple tables. This can also be used for sub-tables where the main table number is also required.
\subtabref{
〈label list〉}
\subtabref
Used to refer to sub-tables without the main table number, e.g. (a) or (b).
\figureref{
〈label list〉}
\figureref
Used to refer to a figure or multiple figures. This can also be used for sub-figures where the main figure number is also required, e.g. 2(a) or 4(b).
\subfigref{
〈label list〉}
\subfigref
Used to refer to sub-figures without the main figure number, e.g. (a) or (b).
\algorithmref{
〈label list〉}
\algorithmref
Used to refer to an algorithm or multiple algorithms.
\theoremref{
〈label list〉}
\theoremref
Used to refer to a theorem or multiple theorems.
\lemmaref{
〈label list〉}
\lemmaref
Used to refer to a lemma or multiple lemmas.
\remarkref{
〈label list〉}
\remarkref
Used to refer to a remark or multiple remarks.
\corollaryref{
〈label list〉}
\corollaryref
Used to refer to a corollary or multiple corollaries.
\definitionref{
〈label list〉}
\definitionref
Used to refer to a definition or multiple definitions.
\conjectureref{
〈label list〉}
\conjectureref
Used to refer to a conjecture or multiple conjectures.
\axiomref{
〈label list〉}
\axiomref
Used to refer to an axiom or multiple axioms.
\exampleref{
〈label list〉}
\exampleref
Used to refer to an example or multiple examples.
2.5.7 Mathematics
The
jmlr
class loads theamsmath
package so you can use any of the commands and environ- ments defined in that package. Thejmlrutils
package will loadamsmath
if the defaultmaths
package option is used but won’t loadamsmath
if thenomaths
option is used. A brief sum- mary of some of the more common commands and environments is provided here. See theamsmath
documentation3for further details.\set{
〈maths〉}
\set
In addition to the commands provided by
amsmath
, thejmlrutils
package also provides the\set
command which can be used to typeset a set. For example:The universal set is denoted $\set{U}$
This command won’t be provided if the
nomaths
option is used.\vec{
〈maths〉}
\vec
The
\vec
command is redefined byjmlrutils
to use\boldsymbol
, which is provided byams- math
. (This command won’t be redefined if thenomaths
option is used.) If you require the original\vec
, you can access it with:\orgvec{
〈maths〉}
\orgvec
This command won’t be provided if the
nomaths
option is used.Unnumbered single-line equations should be displayed using
\[
and\]
. For example:\[E = m c^2\]
3http://ctan.org/pkg/amsmath
Numbered single-line equations should be displayed using the
equation
environment. For example:\begin{equation}\label{eq:trigrule}
\cos^2\theta + \sin^2\theta \equiv 1
\end{equation}
The above are provided by the LATEX kernel but may be adjusted by packages such as
amsmath
. The commands and environments below are provided byamsmath
.Multi-lined numbered equations should be displayed using the
align
environment. For example:\begin{align}
f(x) &= x^2 + x\label{eq:f}\\
f'(x) &= 2x + 1\label{eq:df}
\end{align}
Unnumbered multi-lined equations should be displayed using the
align*
environment. For example:\begin{align*}
f(x) &= (x+1)(x-1)\\
&= x^2 - 1
\end{align*}
If you want to mix numbered with unnumbered lines use the
align
environment and suppress unwanted line numbers with\nonumber
. For example:\begin{align}
y &= x^2 + 3x - 2x + 1\nonumber\\
&= x^2 + x + 1\label{eq:y}
\end{align}
An equation that is too long to fit on a single line can be displayed using the
split
environment.Text can be embedded in an equation using
\text{
〈text〉}
or you can use\intertext {
〈text〉}
to interupt a multi-line environment such asalign
.Predefined operator names are listed intable 2.1. For additional operators, either use
\operatorname{
〈name〉}
\operatorname
for example
If $X$ and $Y$ are independent,
$\operatorname{var}(X+Y) =
\operatorname{var}(X) + \operatorname{var}(Y)$
or declare it with
\DeclareMathOperator{
〈command〉}{
〈name〉}
\DeclareMathOperator
for example
\DeclareMathOperator{\var}{var}
and then use this new command:
If $X$ and $Y$ are independent,
$\var(X+Y) = \var(X)+\var(Y)$
If you want limits that go above and below the operator (like
\sum
) use the starred versions (\operatorname*
or\DeclareMathOperator*
).Table 2.1: Predefined Operator Names (taken from
amsmath
documentation)\arccos
arccos\deg
deg\lg
lg\projlim
proj lim\arcsin
arcsin\det
det\lim
lim\sec
sec\arctan
arctan\dim
dim\liminf
lim inf\sin
sin\arg
arg\exp
exp\limsup
lim sup\sinh
sinh\cos
cos\gcd
gcd\ln
ln\sup
sup\cosh
cosh\hom
hom\log
log\tan
tan\cot
cot\inf
inf\max
max\tanh
tanh\coth
coth\injlim
inj lim\min
min\csc
csc\ker
ker\Pr
Pr\varlimsup
lim\varinjlim
lim\varliminf
lim\varprojlim
−−→lim←−−
2.6 Color vs Grayscale
If the proceedings are to be incorporated into a black and white printed book, it can be helpful if authors supply grayscale versions of their image files. This section can be ignored if your article will only be available online.
With external PDF, PNG or JPG graphic files, the grayscale version should be named with
-gray
added to the basename (before the image file extension).For example, if the file is called
myimage.png
, then the gray version should bemyimage-gray.png
ormyimage-gray.pdf
ormyimage-gray.jpg
. You don’t need to modify your code. Thejmlr
class checks for the existence of the grayscale version if it is print mode (provided you have used\includegraphics
and haven’t specified the file extension). This check is performed by code provided by thejmlr
class not thejmlrutils
package.\ifprint{
〈true part〉}{
〈false part〉}
\ifprint
You can use
\ifprint
to determine which mode you are in. For example:in \figureref{fig:nodes}, the
\ifprint{dark gray}{purple}
ellipse represents an input and the
\ifprint{light gray}{yellow} ellipse represents an output.
Another example:
{\ifprint{\bfseries}{\color{red}}important text!}
You can use the class option
gray
to see how the document will appear in gray scale mode.The
xcolor
class is loaded with thex11names
option, so you can use any of the x11 prede- fined colors (listed in thexcolor
documentation4).2.7 Where To Go For Help
If you have a general LATEX query, the first place to go to is the TEX FAQ5.
If you are unfamiliar or just getting started with LATEX, there’s a list of on-line introduc- tions to LATEX athttps://texfaq.org/FAQ-man-latexor have a look atLATEX for Complete Novices.
There are also forums, mailing lists and newsgroups. For example, TEX on StackEx- change (https://tex.stackexchange.com/), the LATEX Community (https://latex.org/
forum/), the
texhax
mailing list (http://tug.org/mailman/listinfo/texhax) andcomp.text.tex
(archives available athttp://groups.google.com/group/comp.text.tex/).Documentation for packages or classes can be found using the
texdoc
application. For example:texdoc natbib
Alternatively, you can go to
http://www.ctan.org/pkg/
〈name〉where〈name〉is the name of the package. For example:http://www.ctan.org/pkg/natbibFor a general guide to preparing papers (regardless of whether you are using LATEX or a word processor), see Kate L. Turabian, “A manual for writers of term papers, theses, and disserta- tions”, The University of Chicago Press, 1996.
4http://ctan.org/pkg/xcolor
5https://texfaq.org/
3 Guidelines for Production Editors
The
jmlrbook
class is now obsolete as it has stopped working following changes to the LATEX kernel in 2020. The class is described here for archival purposes.To prepare articles for PMLR, you will need to manually set the first page number using:
\firstpageno{
〈n〉}
\firstpageno
Please follow thePMLR specifications.
3.1 jmlrbook Class Options
nowcp The imported pre-published articles were published in the Journal of Machine Learn- ing Research (default).
pmlr The imported pre-published articles were published in the Proceedings of Machine Learning Research (PMLR).
wcp The imported pre-published articles were published in the JMLR Workshop and Con- ference Proceedings (JMLR W&CP).
If the book has a mixture of JMLR, JMLR W&CP or PMLR articles, you can switch be- tween them using
\jmlrnowcp
\jmlrnowcp
(for JMLR) or
\jmlrwcp
\jmlrwcp
(for JMLR W&CP) or
\jmlrpmlr
\jmlrpmlr
(for PMLR). Alternatively, you can set the name of the journal or conference proceed- ings using:
\jmlrproceedings{
〈short title〉}{
〈long title〉}
\jmlrproceedings
color Color version (see Section2.6). Use this option for the on-line version with hyperlinks enabled (default).
gray Grayscale version (see Section2.6). Use this option for the print version without hyper- links.
tablecaption=top in a
table
environment,\floatconts
puts the caption at the top.tablecaption=bottom in a
table
environment,\floatconts
puts the caption at the bottom.letterpaper Set the paper size to letter (default).
7x10 Set the paper size to 7×10 inches.
10pt Use 10pt as the normal text size.
11pt Use 11pt as the normal text size (default).
12pt Use 12pt as the normal text size.
3.2 The Preamble
Any packages that the imported articles load (which aren’t automatically loaded by
jmlr
) must be loaded in the book’s preamble. For example, if one or more of the articles load thesiunitx
package, this package must be loaded in the book.Commands that are defined in the imported articles will be local to that article unless they have been globally defined using
\gdef
or\global
. Since most authors use\newcommand
and\newenvironment
(or\renewcommand
and\renewenvironment
) this shouldn’t cause a conflict if more that one article has defined the same command or environment. For exam- ple, in the sample files supplied, bothpaper1/paper1.tex
andpaper2/paper2.tex
have defined the command\samplecommand
using\newcommand
. As long as this command isn’t also defined in the book, there won’t be a conflict.\title[
〈PDF title〉]{
〈book title〉}
\title
In the book preamble,
\title
sets the book title and the optional argument is used for the PDF title, which will be displayed when the reader views the PDF file’s properties in their PDFviewer. (Note that in the imported articles,
\title
sets the article’s title and the optional argument sets the short title for the page header and table of contents.)\author[
〈PDF author(s)〉]{
〈book author(s)〉}
\author
In the book preamble,
\author
sets the book’s author (or editor) and the optional argument is used for the PDF author, which will be displayed when the reader views the PDF file’s proper- ties in their PDF viewer. (Note that in the imported articles,\author
sets the article’s author and the optional argument sets the short author list for the page header.)\volume{
〈number〉}
\volume
This command sets the book’s volume number. Omit if the book has no volume number.
\subtitle{
〈sub-title〉}
\subtitle
This command sets the book’s subtitle. Omit if the book has no sub-title.
\logo[
〈url〉]{
〈image command〉}
\logo
This sets the book’s title image. Use
\includegraphics
and omit the file extension. If you provide a grayscale version as well as a color version, the grayscale version will be used for the print version of the book. (See Section2.6for further details.) The optional argument, if present, was formerly used bymakejmlrbookgui
to make the logo a link to〈url〉on the index HTML page. (The HTML pages are no longer generated by the application as PMLR now generate the HTML from the .bib file for the proceedings.)\team{
〈team title〉}
\team
This can be used to set the name of the editorial team. This command may be omitted if not required.
\productioneditor{
〈name〉}
\productioneditor
This command may be used to name the production editor. The command may be omitted if not required.
\jmlrlocation{
〈location〉}
\jmlrlocation
This specifies the workshop location. By default this doesn’t appear on the title page. See Section3.4for details on how to modify the layout of the title page.
3.3 Main Book Commands
All commands that are provided by the
jmlr
class are also available with thejmlrbook
class, but some commands might behave differently depending on whether they are in the main part of the book or within the imported articles.In the main part of the book you can use the following commands:
\maketitle
\maketitle
This displays the book’s title page. Note that
\maketitle
has a different effect when used in imported articles.\frontmatter
\frontmatter
Use this command at the start of the front matter (e.g. before the foreword or preface). This will make chapters unnumbered even if you use
\chapter
instead of\chapter*
. It also sets the page style and sets the page numbering to lower case Roman numerals.\begin{authorsignoff}
〈author list〉
\end{authorsignoff}
authorsignoff
This environment may be used by the author signing off at the end of a chapter such as the foreword. Within the environment use:
\Author{
〈details〉}
\Author
for the author’s details. More than one
\Author
should be used if there is more than one author. Example:\begin{authorsignoff}
\Author{Nicola Talbot\\
University of East Anglia}
\Author{Anne Author\\
University of No Where}
\end{authorsignoff}
\begin{preface}[
〈filename〉]
prefaceThis environment may be used to typeset the preface. This starts a new chapter using
\chapter{\prefacename}
where
\prefacename
defaults to “Preface”. This environment should typically go in the front\prefacename
matter and is provided to allow
makejmlrbookgui
create a standalone document for the preface. The optional argument is the filename (without any extension or path) that will be used bymakejmlrbookgui
. This defaults topreface
but, to conform with PMLR guidelines, should be changed to the surname of the first author (editor) followed by the final two digits of the year. See the PMLR website for further details of the guidelines.\begin{signoff}[
〈team name〉]{
〈date〉}
〈editor list〉
\end{signoff}
signoff
This environment may be used by the editorial team when signing off a chapter such as the preface. If the optional argument is omitted, “The Editorial Team” is used. If you are using the
preface
environment described above, thesignoff
environment must go inside thepreface
environment.Within the
signoff
environment use:\Editor{
〈details〉}
\Editor
for each editor. Example:
\begin{signoff}{March 2010}
% First editor:
\Editor{Nicola Talbot\\
University of East Anglia\\
\mailto{[email protected]}}
% Second editor:
\Editor{Anne Editor\\
University of Nowhere\\
\mailto{[email protected]}}
\end{signoff}
\tableofcontents
\tableofcontents
This command displays the book’s table of contents. Note that it has a different effect if used in an imported article.
\mainmatter
\mainmatter
Use this command to switch to the book’s main matter. This will switch the chapter number- ing back on, reset the page numbering to Arabic and set up the main page style.
\part[
〈short title〉]{
〈title〉}
\part
If used in the main part of the book, this command will start a new part and issue a clear double page. Note that this command has a different effect if used in an imported article (or inside the
jmlrpapers
environment).\addtocpart{
〈title〉}
\addtocpart
This adds〈title〉to the table of contents, issues a clear double page, but doesn’t display any text or affect the part numbering.
\chapter[
〈short title〉]{
〈title〉}
\chapter
This command may be used in the main body of the book but will cause an error if used within an imported article (or inside the
jmlrpapers
environment).\section[
〈short title〉]{
〈title〉}
\section
\subsection[
〈short title〉]{
〈title〉}
\subsection
\subsubsection[
〈short title〉]{
〈title〉}
\subsubsection
\paragraph[
〈short title〉]{
〈title〉}
\paragraph
\subparagraph[
〈short title〉]{
〈title〉}
\subparagraph
These commands may be used in the main body of the book or within imported articles. In the main body of the book (outside of the
jmlrpapers
environment) they need to be within a chapter and will be numbered according to the chapter.\appendix
\appendix
If used in the main body of the book (outsideof the
jmlrpapers
environment) this will switch to the book appendices. Subsequent\chapter
commands will produce the appendices.(Any imported articles in the appendix will be identified by
makejmlrbookgui
as supple- mental material.) If used within an imported article (or within thejmlrpapers
environment)\appendix
will switch to the article appendices and won’t affect the main part of the book.\begin{jmlrpapers}
〈imported papers〉
\end{jmlrpapers}
jmlrpapers
This environment must be used when importing articles and may be used as often as re- quired. Take care not to include book sectioning commands, such as
\chapter
, in this en- vironment. Within thejmlrpapers
environment, use the following commands to import arti- cles:\importpubpaper[
〈label〉]{
〈directory〉}{
〈file〉}{
〈pages〉}
\importpubpaper
This imports an article that has already been published elsewhere. The〈pages〉argument should be the page range from thepreviously publishedversion of this article. This may not necessarily be the same as the page range of the article in the book. The directory the im- ported file is contained in is given by〈directory〉. If the file is in the same directory as the book, use a dot. The file name is given by〈file〉. The article is also given a label, specified by the optional argument. This is〈directory〉/〈file〉by default. The label is used as a prefix to labels in the imported articles which ensures that cross-references are unique. You can also use this label to reference the article elsewhere in the book (see Section3.3.2).
\importpaper[
〈label〉]{
〈directory〉}{
〈file〉}
\importpaper
Imports an article that is being published in the book. The arguments are the same as above except that there is no page range (the page range is computed automatically).
\importarticle[
〈label〉]{
〈directory〉}{
〈file〉}
\importarticle
This imports an article that hasn’t been published elsewhere. There is no page range, but the other arguments are the same as those describe above for
\importpubpaper
.Example: to import a previously published paper
paper1/paper1.tex
and an unpub- lished paperpaper2/paper2.tex
:\begin{jmlrpapers}
\importpubpaper{paper1}{paper1}{23--45}
\importarticle{paper2}{paper2}
\end{jmlrpapers}
3.3.1 Two Column Articles in a One Column Book
The
jmlrbook
class column style will override the column style of the imported articles. You can use thetwocolumn
class option tojmlrbook
, but this will make the whole book with two columns. If you only want the imported articles to be in two columns, then put\twocolumn
in thejmlrpapers
environment to switch on two column formatting. The effect will be lo- calised to the end of the environment.3.3.2 Cross-Referencing
You can cross-reference other parts of the book using the standard
\label
/\ref
mecha- nism, but if you want to reference something within an imported article, you must prefix the label with the label given when importing the article (that is, the optional argument to\importpubpaper
,\importpaper
or\importarticle
). For example, if you want to refer- ence a section labelledsec:results
in the imported paperpaper1/paper1.tex
, you would need to do:see Section~\ref{paper1/paper1sec:results}
or
see \sectionref{paper1/paper1sec:results}
In addition to the commands described in Section2.5.6, the
jmlrbook
class also provides the following cross-referencing commands:\chapterref{
〈label list〉}
\chapterref
Reference a chapter or chapters. The argument is a comma-separated list of labels.
\articlepageref{
〈label〉}
\articlepageref
This displays the starting page number of the article whose label is given by〈label〉. Note that this must a single label, not a list. For example:
An interesting article starts on page~\articlepageref{paper1/paper1}
\articlepagesref{
〈label〉}
\articlepagesref
This displays the page range of the article whose label is given by 〈label〉. Again, this must be a single label, not a list. This page range is unrelated to the〈pages〉argument of
\importpubarticle
.\articletitleref{
〈label〉}
\articletitleref
This displays the short title for the article whose label is given by〈label〉. Again, this must be a single label, not a list.
\articleauthorref{
〈label〉}
\articleauthorref
This displays the author list for the article whose label is given by〈label〉. Again, this must be a single label, not a list.
3.4 Altering the Layout of the Main Title Page
\titlebody
\titlebody
The main body of the book’s title page is given by the command
\titlebody
. Within the definition of this command, you can use:\SetTitleElement{
〈element〉}{
〈pre〉}{
〈post〉}
\SetTitleElement
where 〈element〉 can be:
title
,volume
,issue
1,subtitle
,logo
,team
,author
,date
,productioneditor
. The〈pre〉and〈post〉arguments specify what to do before and after the element. Note that\SetTitleElement
does nothing if that element hasn’t been set. For example, if\volume
has been omitted or\volume{}
is used, then\SetTitleElement{volume}{\mainvolumefont}{\postmainvolume}
will do nothing (so you don’t end up withVolume :).
\IfTitleElement{
〈element〉}{
〈true part〉}{
〈false part〉}
\IfTitleElement
This does〈true part〉if〈element〉has been set otherwise it does〈false part〉. For example,
\postmainvolume
is defined as:\newcommand{\postmainvolume}{%
\IfTitleElement{subtitle}{}{:}\par\relax }
This means that it will only print a colon after the volume number if the subtitle has been set.
The default definition of
\titlebody
is:\newcommand{\titlebody}{%
\SetTitleElement{title}{\maintitlefont}{\postmaintitle}%
\SetTitleElement{volume}{\mainvolumefont}{\postmainvolume}%
1The default title page layout doesn’t useissue, but if required it can be set with\issue{〈number〉}
\SetTitleElement{subtitle}{\mainsubtitlefont}{\postmainsubtitle}%
\SetTitleElement{logo}{\mainlogofont}{\postmainlogo}%
\SetTitleElement{team}{\mainteamfont}{\postmainteam}%
\SetTitleElement{author}{\mainauthorfont}{\postmainauthor}%
\SetTitleElement{productioneditor}{\mainproductioneditorfont}%
{\postmainproductioneditor}%
}
3.5 Potential Pitfalls
The
combine
class andhyperref
package are individually both easily broken by packages that change certain internals and they don’t ordinarily work together. Thejmlrbook
class applies patches to the internal referencing mechanism to make them work together, but it’s a fairly fragile alliance. Some packages are known to break it, for examplesubfig
,pdfpages
andge- ometry
. This is why thejmlr
class checks for known problem packages and generates an error message to dissuade authors from using them. It’s likely that there are other packages that may cause a problem and, as they are found, they will be added to the check list. Also, it’s possible for an author to disable the package checking mechanism if they are determined to use a particular package.In the event that an article has loaded a problem package, the editors will have to decide whether to ask the author to change the article so that it doesn’t cause a problem or to make the changes themselves or to find a way of fudging things to get it to work. It depends on the level of LATEX expertise amongst the editors and the time available.
Another problem that can arise is when different articles use packages that conflict. For example, one article uses package
foo
and another uses packagebar
. Each article compiles okay as a stand-alone article, but when combinedfoo
andbar
conflict. Another problem may occur when articles load the same package but with conflicting package options. To reduce the chance of this occurring, thejmlr
class loads some commonly used packages. For example, it loads thealgorithm2e
package with thealgo2e
andruled
options and provides thealgorithm
environment in addition toalgorithm2e
’salgorithm2e
environment. Different versions of the same package can also be a problem. To help counteract the problem caused by different papers using different versions of thealgorithm2e
package,jmlrbook
defines most of the old style commands if they don’t exist.Articles that use different input encodings can also cause a problem. For example, if one article uses
utf8
and another useslatin1
. If the authors have directly entered a diacritic or ligature, such as é or æ, instead of using a LATEX command, such as\’e
or\ae
, then this will cause an error on compiling the book.2The choice then is to either change all non-keyboard characters with the appropriate LATEX commands or to use the\inputencoding
command, supplied by theinputenc
package, to switch the encoding at the start of each article. One thing to watch out for are bib files that contain a mixture of encodings caused by copying and pasting from different sources. Version 0.4.2b ofmakejmlrbookgui
provides a function to search for characters outside the range 0x20 (space) and 0x7E (tilde).2and may also cause a problem for the editor’s text editor.
Authors who use
\nonumber
within anequation
environment can mess up the hyperlinks.Remove
\nonumber
and change the equation environment to\[
. . .\]
(or just make it a numbered equation).If the article changes the graphics path using
\graphicspath
,jmlrbook
won’t find the graphics if the imported articles aren’t in the same directory as the book.4 The Code
4.1 jmlrutils.sty Code
Non-class dependent code. This package is automatically loaded by
jmlr
but may be used with other classes.1\ProvidesPackage{jmlrutils}[2022/02/09 v1.30 (NLCT)]
Package options:
\ifjmlrutilsmaths Determine if the maths commands should be provided.
2\newif\ifjmlrutilsmaths
3\jmlrutilsmathstrue
4\DeclareOption{maths}{\jmlrutilsmathstrue}
5\DeclareOption{nomaths}{\jmlrutilsmathsfalse}
Provide US synonyms
6\DeclareOption{math}{\jmlrutilsmathstrue}
7\DeclareOption{nomath}{\jmlrutilsmathsfalse}
\ifjmlrutilstheorems Determine if the theorem environments should be provided.
8\newif\ifjmlrutilstheorems
9\jmlrutilstheoremstrue
10\DeclareOption{theorems}{\jmlrutilstheoremstrue}
11\DeclareOption{notheorems}{\jmlrutilstheoremsfalse}
\ifjmlrcleveref Determine whether or not to load
cleveref
.12\newif\ifjmlrcleveref
13\jmlrclevereffalse
14\DeclareOption{cleveref}{\jmlrclevereftrue}
15\DeclareOption{nocleveref}{\jmlrclevereffalse}
\ifjmlrutilssubfloats Determine if the sub-floats should be provided.
16\newif\ifjmlrutilssubfloats
17\jmlrutilssubfloatstrue
18\DeclareOption{subfloats}{\jmlrutilssubfloatstrue}
19\DeclareOption{nosubfloats}{\jmlrutilssubfloatsfalse}
20\ProcessOptions Requires
etoolbox
:21\RequirePackage{etoolbox}
If the maths commands are needed, load
amsmath
.22\ifjmlrutilsmaths
23 \RequirePackage{amsmath}
24\fi
Check if
cleveref
is required. If it is andhyperref
is also required (which it is ifjmlrutils
is being loaded byjmlr
) thenhyperref
needs to be loaded beforecleveref
.25\ifjmlrcleveref
26 \ifdef\jmlrprehyperref
27 {
28 \jmlrprehyperref
29 \@ifundefined{@pre@hyperref}{}{\@pre@hyperref\undef\@pre@hyperref}
30 \RequirePackage{hyperref}
31 \let\jmlrprehyperref\relax
32 \@ifundefined{@post@hyperref}{}{\@post@hyperref\undef\@post@hyperref}
33 }
34 {}
35 \RequirePackage{aliascnt}
36 \RequirePackage{cleveref}
37\fi
The conditional
\iftablecaptiontop
will already have been defined by thejmlr
class, so only needs to be defined if not already done.\iftablecaptiontop
38\@ifundefined{iftablecaptiontop}
39{\newif\iftablecaptiontop
40\tablecaptiontoptrue}
41{}
4.1.1 Cross-Referencing
Convenient macros for cross-referencing.
42\newcommand*{\@jmlr@reflistsep}{, }
43\newcommand*{\@jmlr@reflistlastsep}{ and }
44\newcommand*{\sectionrefname}{Section}
45\newcommand*{\sectionsrefname}{Sections}
46\newcommand*{\equationrefname}{Equation}
47\newcommand*{\equationsrefname}{Equations}
48\newcommand*{\tablerefname}{Table}
49\newcommand*{\tablesrefname}{Tables}
50\newcommand*{\figurerefname}{Figure}
51\newcommand*{\figuresrefname}{Figures}
52\newcommand*{\algorithmrefname}{Algorithm}
53\newcommand*{\algorithmsrefname}{Algorithms}
54\newcommand*{\theoremrefname}{Theorem}
55\newcommand*{\theoremsrefname}{Theorems}
56\newcommand*{\lemmarefname}{Lemma}
57\newcommand*{\lemmasrefname}{Lemmas}
58\newcommand*{\remarkrefname}{Remark}
59\newcommand*{\remarksrefname}{Remarks}
60\newcommand*{\corollaryrefname}{Corollary}
61\newcommand*{\corollarysrefname}{Corollaries}
62\newcommand*{\definitionrefname}{Definition}
63\newcommand*{\definitionsrefname}{Definitions}
64\newcommand*{\conjecturerefname}{Conjecture}
65\newcommand*{\conjecturesrefname}{Conjectures}
66\newcommand*{\axiomrefname}{Axiom}
67\newcommand*{\axiomsrefname}{Axioms}
68\newcommand*{\examplerefname}{Example}
69\newcommand*{\examplesrefname}{Examples}
70\newcommand*{\appendixrefname}{Appendix}
71\newcommand*{\appendixsrefname}{Appendices}
72\newcommand*{\partrefname}{Part}
73\newcommand*{\partsrefname}{Parts}
\objectref Cross-reference a particular structural element. The first argument is the list of labels, the second argument is a control sequence containing the singular tag, the third argument a con- trol sequence containing the plural tag, the fourth argument is text to go before the reference number, e.g. an opening bracket, and the fifth argument is text to go after the reference num- ber, e.g. a closing bracket.
74\newrobustcmd*{\objectref}[5]{%
75 \let\@objectname\@empty
76 \def\@objectref{}%
77 \let\@prevsep\@empty
78 \@for\@thislabel:=#1\do{%
79 \toks@{\@prevsep}%
80 \protected@edef\@objectref{\@objectref\the\toks@
81 #4\ref{\@thislabel}#5}%
82 \ifx\@objectname\@empty
83 \let\@objectname#2% singular tag
84 \else
85 \let\@objectname#3% plural tag
86 \let\@prevsep\@jmlr@reflistsep
87 \fi
88 }%
89 \ifx\@objectname#3% plural tag
90 \let\@prevsep\@jmlr@reflistlastsep
91 \fi
92 \@objectname~\@objectref
93}
\sectionref
94\newcommand*{\sectionref}[1]{%
95 \objectref{#1}{\sectionrefname}{\sectionsrefname}{}{}}
\equationref
96\newcommand*{\equationref}[1]{%
97 \objectref{#1}{\equationrefname}{\equationsrefname}()}
\tableref
98\newcommand*{\tableref}[1]{%
99 \objectref{#1}{\tablerefname}{\tablesrefname}{}{}}
\figureref
100\newcommand*{\figureref}[1]{%
101 \objectref{#1}{\figurerefname}{\figuresrefname}{}{}}
\algorithmref
102\newcommand*{\algorithmref}[1]{%
103 \objectref{#1}{\algorithmrefname}{\algorithmsrefname}{}{}}
\theoremmref
104\newcommand*{\theoremref}[1]{%
105 \objectref{#1}{\theoremrefname}{\theoremsrefname}{}{}}
\lemmaref
106\newcommand*{\lemmaref}[1]{%
107 \objectref{#1}{\lemmarefname}{\lemmasrefname}{}{}}
\remarkref
108\newcommand*{\remarkref}[1]{%
109 \objectref{#1}{\remarkrefname}{\remarksrefname}{}{}}
\corollaryref
110\newcommand*{\corollaryref}[1]{%
111 \objectref{#1}{\corollaryrefname}{\corollarysrefname}{}{}}
\definitionref
112\newcommand*{\definitionref}[1]{%
113 \objectref{#1}{\definitionrefname}{\definitionsrefname}{}{}}
\conjectureref
114\newcommand*{\conjectureref}[1]{%
115 \objectref{#1}{\conjecturerefname}{\conjecturesrefname}{}{}}
\axiomref
116\newcommand*{\axiomref}[1]{%
117 \objectref{#1}{\axiomrefname}{\axiomsrefname}{}{}}
\exampleref
118\newcommand*{\exampleref}[1]{%
119 \objectref{#1}{\examplerefname}{\examplesrefname}{}{}}
\appendixref
120\newcommand*{\appendixref}[1]{%
121 \objectref{#1}{\appendixrefname}{\appendixsrefname}{}{}}
\partref
122\newcommand*{\partref}[1]{%
123 \objectref{#1}{\partrefname}{\partsrefname}{}{}}
4.1.2 Figures, Tables and Algorithms
\floatconts The first argument is the label, the second argument contains the caption (using
\caption
) and the third argument contains the contents of the float124\newcommand{\floatconts}[3]{%
125 \@ifundefined{\@captype conts}{\tableconts{#1}{#2}{#3}}%
126 {\csname\@captype conts\endcsname{#1}{#2}{#3}}%
127}
\tableconts This will already have been defined if the
jmlr
class was loaded.128\providecommand{\tableconts}[3]{%
129 #2\label{#1}\vskip\baselineskip
130 {\centering #3\par}%
131}
\figureconts
132\newcommand{\figureconts}[3]{%
133 {\centering #3\par}%
134 \vskip\baselineskip
135 #2\label{#1}%
136}
The following macro and environment assume that
algorithm2e
has been loaded (which is done by thejmlr
class). If thejmlrutils
package is loaded without thejmlr
class, thealgorithm2e
package will have to be explicitly loaded.\algocfconts Command used by
\floatconts
to display the caption contents.137\newcommand{\algocfconts}[3]{%
138 \jmlralgorule\par\smallskip
139 #2\label{#1}% caption and label
140 \jmlralgorule\par\smallskip
141 #3% algorithm content
142 \jmlralgorule
143}
\jmlralgorule
144\newcommand{\jmlralgorule}{\kern2pt\hrule height.8pt depth0pt\kern2pt}
The
algorithm
environment should float like a figure or table. It should use the same counter as thealgorithm2e
environment.145\newenvironment{algorithm}[1][htbp]%
146{%
147 \ifundef{\algocf}%
148 {‘algorithm2e’ package is required if you want to