%\iffalse
% jmlr.dtx generated using makedtx version 0.94b (c) Nicola Talbot
% Command line args:
% -src "jmlr.cls\Z=>jmlr.cls"
% -src "jmlrbook.cls\Z=>jmlrbook.cls"
% -doc "jmlr-manual.tex"
% -author "Nicola Talbot"
% -codetitle "jmlr.cls Code"
% jmlr
% Created on 2010/7/27 11:45
%\fi
%\iffalse
%<*package>
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%% Digits \0\1\2\3\4\5\6\7\8\9
%% Exclamation \! Double quote \" Hash (number) \#
%% Dollar \$ Percent \% Ampersand \&
%% Acute accent \' Left paren \( Right paren \)
%% Asterisk \* Plus \+ Comma \,
%% Minus \- Point \. Solidus \/
%% Colon \: Semicolon \; Less than \<
%% Equals \= Greater than \> Question mark \?
%% Commercial at \@ Left bracket \[ Backslash \\
%% Right bracket \] Circumflex \^ Underscore \_
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%
%\fi
% \iffalse
% Doc-Source file to use with LaTeX2e
% Copyright (C) 2010 Nicola Talbot, all rights reserved.
% \fi
% \iffalse
%<*driver>
\documentclass{nlctdoc}
\usepackage{amsmath}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{ifthen}
\usepackage[colorlinks,
bookmarks,
hyperindex=false,
pdfauthor={Nicola L.C. Talbot},
pdftitle={jmlr: LaTeX2e Classes for the Journal of Machine Learning Research},
pdfkeywords={LaTeX,jmlr}]{hyperref}
\CheckSum{3348}
\OnlyDescription
\begin{document}
\DocInput{jmlr.dtx}
\end{document}
%
%\fi
%\MakeShortVerb{"}
%\DeleteShortVerb{\|}
%
% \title{\LaTeXe\ Classes for the Journal of Machine
%Learning Research}
% \author{Nicola L. C. Talbot\\[10pt]
%\url{http://theoval.cmp.uea.ac.uk/~nlct/}}
%
% \date{2010-07-27 (version 1.08)}
% \maketitle
%\tableofcontents
%
%\section{Introduction}
%
%The \clsfmt{jmlr} class is for articles that need to be formatted
%according to the Journal of Machine Learning Research style. This
%class is based on the \sty{jmlr2e} and \sty{jmlrwcp2e} packages
%but has been adapted to enable it to work better with the
%\cls{combine} class to collate the articles into a book.
%\sectionref{sec:jmlr} describes how to use the \clsfmt{jmlr} class.
%
%The \clsfmt{jmlrbook} class is for combining JMLR articles into a book.
%This class uses \cls{combine} and \sty{hyperref}, which are
%troublesome enough on their own but together are quite fragile. The
%\clsfmt{jmlrbook} class redefines some internals to get \clsfmt{combine}
%and \clsfmt{hyperref} to work together but some packages (e.g.\
%\sty{subfig} and \sty{pdfpages}) are likely to mess everything up
%and cause errors. This is why the guidelines to authors are fairly
%stringent and why \clsfmt{jmlr} will give an error message if certain
%packages are loaded.\footnote{Currently \clsfmt{jmlr} will check if
%\sty{subfig}, \sty{pdfpages}, \sty{geometry}, \sty{psfig},
%\sty{epsfig} and \sty{theorem} are loaded and will throw an error.
%If other packages are found to be a problem, they will be added to
%the list.} The \clsfmt{jmlrbook} class works best with PDF\LaTeX\ so
%authors should ensure that their articles can compile with
%PDF\LaTeX. \sectionref{sec:jmlrbook} describes how to use the
%\clsfmt{jmlrbook} class.
%
%The \app{makejmlrbook} Perl script can be used to make a book that
%uses the \clsfmt{jmlrbook} class. In addition to creating the print
%and online versions of the book, it will compile the individual
%articles, running Bib\TeX\ where necessary, and create a set of
%HTML files containing a list of all the articles imported into the
%book along with links to the abstracts and PDFs of the individual
%articles. \sectionref{sec:makejmlrbook} describes how
%to use the \app{makejmlrbook} application.
%
%\section{Required Packages}
%
%The \clsfmt{jmlr} class is based on the \cls{scrartcl} class and loads
%the following packages: \sty{amsmath}, \sty{amssymb},
%\sty{natbib}, \sty{url}, \sty{graphicx} and \sty{algorithm2e}.
%Note that unlike the \sty{jmlr2e} and \sty{jmlrwcp2e} packages,
%this class file does not load the obsolete \sty{epsfig} package.
%
%The \clsfmt{jmlrbook} class additionally loads the \cls{combine} class
%and the following packages: \sty{hyperref}, \sty{xkeyval},
%\sty{combnat} and \sty{setspace}.
%
%The \app{makejmlrbook} script requires Perl, \TeX\ and \TeX4ht.
%
%\section{Guidelines for Article Authors}
%\label{sec:jmlr}
%
%Article authors should use the \clsfmt{jmlr} class. This class
%comes with example files \texttt{jmlr-sample.tex} and
%\texttt{jmlrwcp-sample.tex}, which can be used as templates.
%
%The following class options are available:
%\begin{description}
%\item[\clsopt{nowcp}]The article is for the Journal of Machine
%Learning Research (default).
%\item[\clsopt{wcp}] The article is for JMLR Workshop and Conference
%Proceedings.
%
%\item[\clsopt{twocolumn}] Use two-column style.
%
%\item[\clsopt{onecolumn}] Use one-column style (default).
%
%\item[\clsopt{color}] Color version (see \sectionref{sec:color}).
%
%\item[\clsopt{gray}] Grayscale version (see \sectionref{sec:color}).
%
%\item[\clsopt{tablecaptiontop}] in a \env{table} environment,
%\ics{floatconts} puts the caption at the top.
%
%\item[\clsopt{tablecaptionbottom}] in a \env{table} environment,
%\ics{floatconts} puts the caption at the bottom.
%\end{description}
%
%\subsection{Title Information}
%
%The \clsfmt{jmlr} class uses different syntax from \sty{jmlr2e} and
%\sty{jmlrwcp2e} to specify the title information. In particular, it
%doesn't define \cs{jmlrheading} and \cs{ShortHeading}. Instead, the
%following commands should be used:
%
%\begin{definition}[\DescribeMacro{\jmlrvolume}]
%\cs{jmlrvolume}\marg{number}
%\end{definition}
%This specifies the volume number. For example:
%\begin{verbatim}
%\jmlrvolume{2}
%\end{verbatim}
%
%\begin{definition}[\DescribeMacro{\jmlryear}]
%\cs{jmlryear}\marg{year}
%\end{definition}
%This specifies the year. For example:
%\begin{verbatim}
%\jmlryear{2010}
%\end{verbatim}
%
%\begin{definition}[\DescribeMacro{\jmlrsubmitted}]
%\cs{jmlrsubmitted}\marg{date}
%\end{definition}
%This specifies the submission date.
%
%\begin{definition}[\DescribeMacro{\jmlrpublished}]
%\cs{jmlrpublished}\marg{date}
%\end{definition}
%This specifies the publication date.
%
%\begin{definition}[\DescribeMacro{\jmlrworkshop}]
%\cs{jmlrworkshop}\marg{title}
%\end{definition}
%This specifies the workshop title (for use with the \clsopt{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
%\begin{definition}[\DescribeMacro{\maketitle}]
%\cs{maketitle}
%\end{definition}
%This command should go after \verb|\begin{document}|. For example:
%\begin{verbatim}
%\begin{document}
%\maketitle
%\end{verbatim}
%Before \cs{maketitle}, you must specify the title information
%using the following commands:
%
%\begin{definition}[\DescribeMacro{\title}]
%\cs{title}\oarg{short title}\marg{title}
%\end{definition}
%This specifies the article's title. A short title for the page
%header can be supplied via the optional argument \meta{short title}.
%
%\begin{definition}[\DescribeMacro{\editor}]
%\cs{editor}\marg{name}
%\end{definition}
%This specifies the editor's name. If there is more than one
%editor, use:
%\begin{definition}[\DescribeMacro{\editors}]
%\cs{editors}\marg{names}
%\end{definition}
%
%\begin{definition}[\DescribeMacro{\author}]
%\cs{author}\marg{author specs}
%\end{definition}
%This specifies the author. The specifications \meta{author specs}
%are a bit different to \sty{jmlr2e} and \sty{jmlrwcp2e}. Use
%\begin{definition}[\DescribeMacro{\Name}]
%\cs{Name}\marg{author's name}
%\end{definition}
%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. (See below for examples.)
%\begin{definition}[\DescribeMacro{\Email}]
%\cs{Email}\marg{author's email}
%\end{definition}
%This specifies the author's email address. It should only be used
%within the argument to \cs{author}.
%
%\begin{definition}[\DescribeMacro{\and}]
%\cs{and}
%\end{definition}
%This should be used to separate two authors with the same address.
%
%\begin{definition}[\DescribeMacro{\AND}]
%\cs{AND}
%\end{definition}
%This should be used to separate authors with different addresses.
%
%\begin{definition}[\DescribeMacro{\\}]
%\verb|\\|
%\end{definition}
%This should be used before an author's address or between authors
%with the same address where there are more that two authors.
%
%\begin{definition}[\DescribeMacro{\addr}]
%\cs{addr}
%\end{definition}
%This should be used at the start of the address.
%
%\begin{description}
%\item[Example 1] Two authors with the same address:
%\begin{verbatim}
%\author{\Name{Jane Doe} \Email{abc@sample.com}\and
% \Name{John {Basey Fisher}} \Email{xyz@sample.com}\\
% \addr Address}
%\end{verbatim}
%In this example, the second author has a space in his surname
%so the surname needs to be grouped.
%
%\item[Example 2] Three authors with the same address:
%\begin{verbatim}
%\author{\Name{Fred Arnold {de la Cour}} \Email{an1@sample.com}\\
% \Name{Jack Jones} \Email{an3@sample.com}\\
% \Name{{\'E}louise {\'E}abhla Finchley} \Email{an2@sample.com}\\
% \addr Address}
%\end{verbatim}
%In this example, the third author has an accent on her
%forename initials so grouping is required.
%
%\item[Example 3] Authors with a different address:
%\begin{verbatim}
%\author{\Name{John Smith} \Email{abc@sample.com}\\
% \addr Address 1
% \AND
% \Name{May Brown} \Email{xyz@sample.com}\\
% \addr Address 2
% }
%\end{verbatim}
%\end{description}
%
%\subsection{Font Changing Commands}
%
%Use the \LaTeXe\ font changing commands, such as \cs{bfseries} or
%\cs{textbf}\marg{text}, rather than the obsolete \LaTeX2.09
%commands, such as \cs{bf}.
%
%\begin{definition}[\DescribeMacro{\url}]
%\cs{url}\marg{address}
%\end{definition}
%This will typeset \meta{address} in a typewriter font. Special
%characters, such as \verb|~|, are correctly displayed. Example:
%\begin{verbatim}
%\url{http://theoval.cmp.uea.ac.uk/~nlct/}
%\end{verbatim}
%
%\begin{definition}[\DescribeMacro{\mailto}]
%\cs{mailto}\marg{email address}
%\end{definition}
%This will typeset the given email address in a typewriter font.
%Note that this is not the same as \cs{Email}, which should only be
%used in the argument of \cs{author}.
%
%\subsection{Structure}
%
%\begin{definition}[\DescribeEnv{abstract}]
%\cs{begin}\{abstract\}\\
%\meta{text}\\
%\cs{end}\{abstract\}
%\end{definition}
%The abstract text should be displayed using the \envfmt{abstract}
%environment.
%
%\begin{definition}[\DescribeEnv{keywords}]
%\cs{begin}\{keywords\}\meta{keyword list}\cs{end}\{keywords\}
%\end{definition}
%The keywords should be displayed using the \envfmt{keywords}
%environment.
%
%\begin{definition}[\DescribeMacro{\acks}]
%\cs{acks}\marg{text}
%\end{definition}
%This displays the acknowledgements.
%
%\begin{definition}[\DescribeMacro{\section}]
%\cs{section}\marg{title}
%\end{definition}
%Section titles are created using \cs{section}. The heading is
%automatically numbered and can be cross-referenced using
%\cs{label} and \cs{ref}. Unnumbered sections can be produced
%using:
%\begin{definition}[\DescribeMacro{\section*}]
%\cs{section*}\marg{title}
%\end{definition}
%
%\begin{definition}[\DescribeMacro{\subsection}]
%\cs{subsection}\marg{title}
%\end{definition}
%Sub-section titles are created using \cs{subsection}. Unnumbered
%sub-sections can be produced using:
%\begin{definition}[\DescribeMacro{\subsection*}]
%\cs{subsection*}\marg{title}
%\end{definition}
%
%\begin{definition}[\DescribeMacro{\subsubsection}]
%\cs{subsubsection}\marg{title}
%\end{definition}
%Sub-sub-section titles are created using \cs{subsubsection}.
%Unnumbered sub-sub-sections can be produced using:
%\begin{definition}[\DescribeMacro{\subsubsection*}]
%\cs{subsubsection*}\marg{title}
%\end{definition}
%
%Further sectioning levels can be obtained using \cs{paragraph}
%and \cs{subparagraph}, but these are unnumbered with running heads.
%
%\begin{definition}[\DescribeMacro{\appendix}]
%\cs{appendix}
%\end{definition}
%Use \cs{appendix} to switch to the appendices. This changes
%\cs{section} to produce an appendix. Example:
%\begin{verbatim}
%\appendix
%\section{Proof of Theorems}
%\end{verbatim}
%
%\subsection{Citations and Bibliography}
%
%The \clsfmt{jmlr} class automatically loads \sty{natbib} and sets
%the bibliography style to \texttt{plainnat}. References should
%be stored in a \texttt{.bib} file.
%
%\begin{definition}[\DescribeMacro{\bibliography}]
%\cs{bibliography}\marg{bib file}
%\end{definition}
%This displays the bibliography.
%
%\begin{definition}[\DescribeMacro{\citep}]
%\cs{citep}\oarg{pre note}\oarg{post note}\marg{label}
%\end{definition}
%Use \cs{citep} for a parenthetical citation.
%
%\begin{definition}[\DescribeMacro{\citet}]
%\cs{citet}\oarg{note}\marg{label}
%\end{definition}
%Use \cs{citet} for a textual citation.
%
%See the \ctandoc{natbib} for further details.
%
%\subsection{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 \texttt{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, please \emph{don't} try changing the
%format of the caption by doing something like:
%\begin{verbatim}
%\caption{\textit{A Sample Caption.}}
%\end{verbatim}
%or
%\begin{verbatim}
%\caption{\em A Sample Caption.}
%\end{verbatim}
%You can, of course, change the font for individual words or
%phrases. For example:
%\begin{verbatim}
%\caption{A Sample Caption With Some \emph{Emphasized Words}.}
%\end{verbatim}
%
%The \clsfmt{jmlr} class provides the following command for displaying
%the contents of a figure or table:
%\begin{definition}[\DescribeMacro{\floatconts}]
%\cs{floatconts}\marg{label}\marg{caption command}\marg{contents}
%\end{definition}
%This ensures that the caption is correctly positioned and that
%the contents are centered. For example:
%\begin{verbatim}
%\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}
%\end{verbatim}
%
%The \clsfmt{jmlr} class automatically loads \sty{graphicx} which
%defines:
%\begin{definition}[\DescribeMacro{\includegraphics}]
%\cs{includegraphics}\oarg{options}\marg{file name}
%\end{definition}
%where \meta{options} is a comma-separated list of options.
%
%For example, suppose you have an image called
%\texttt{mypic.png} in a subdirectory called \texttt{images}:
%\begin{verbatim}
%\begin{figure}[htbp]
%\floatconts
% {fig:example}% label
% {\caption{An Example Figure}}% caption command
% {\includegraphics[width=0.5\textwidth]{images/mypic}}
%\end{figure}
%\end{verbatim}
%
%Note that you shouldn't specify the file extension when including
%the image. It's helpful if you can also provide a grayscale
%version of color images. This should be labeled as the color
%image but with \texttt{-gray} immediately before the extension.
%(The extension need not be the same as that of the color image.)
%For example, if you have an image called \texttt{mypic.pdf}, the
%grayscale can be called \texttt{mypic-gray.pdf},
%\texttt{mypic-gray.png} or \texttt{mypic-gray.jpg}.
%See \sectionref{sec:color} for further details.
%
%\begin{definition}[\DescribeMacro{\includeteximage}]
%\cs{includeteximage}\oarg{options}\marg{file name}
%\end{definition}
%If your image file is made up of \LaTeX\ code (e.g.\ \sty{tikz}
%commands) the file can be included using \cs{includeteximage}.
%The optional argument is a key=value comma-separated list
%where the keys are a subset of those provided by
%\cs{includegraphics}. The main keys are: \texttt{width},
%\texttt{height}, \texttt{scale} and \texttt{angle}.
%
%\subsubsection{Sub-Figures and Sub-Tables}
%
%The \sty{subfig} package causes a problem for \clsfmt{jmlrbook} so
%the \clsfmt{jmlr} class will give an error if it is used. Therefore
%the \clsfmt{jmlr} class provides its own commands for including
%sub-figures and sub-tables.
%
%\begin{definition}[\DescribeMacro{\subfigure}]
%\cs{subfigure}\oarg{title}\oarg{valign}\marg{contents}
%\end{definition}
%This makes a sub-figure where \meta{contents} denotes the contents
%of the sub-figure. This should also include the \cs{label}.
%The first optional argument \meta{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
%\meta{valign}, which may be one of: \texttt{t} (top), \texttt{c}
%(centred) or \texttt{b} (base).
%
%For example, suppose there are two images files, \texttt{mypic1.png}
%and \texttt{mypic2.png}, in the subdirectory \texttt{images}.
%Then they can be included as sub-figures as follows:
%\begin{verbatim}
%\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}
%\end{verbatim}
%
%\begin{definition}[\DescribeMacro{\subtable}]
%\cs{subtable}\oarg{title}\oarg{valign}\marg{contents}
%\end{definition}
%This is an analogous command for sub-tables. The default value
%for \meta{valign} is \texttt{t}.
%
%\subsection{Algorithms}
%
%\begin{definition}[\DescribeEnv{algorithm}]
%\cs{begin}\{algorithm\}\\
%\meta{contents}\\
%\cs{end}\{algorithm\}
%\end{definition}
%Enumerated textual algorithms can be displayed using the
%\envfmt{algorithm} environment. Within this environment, use
%\ics{caption} to set the caption (and \ics{label} to cross-reference
%it). Within the body of the environment you can use the
%\env{enumerate} environment.
%
%\begin{definition}[\DescribeEnv{enumerate*}]
%\cs{begin}\{enumerate*\}\\
%\cs{item} \meta{text}\\
%\ldots\\
%\cs{end}\{enumerate*\}
%\end{definition}
%If you want to have nested \env{enumerate} environments but you want
%to keep the same numbering throughout the algorithm, you can use the
%\envfmt{enumerate*} environment, provided by the \clsfmt{jmlr}
%class. For example:
%\begin{verbatim}
%\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}
%\end{verbatim}
%
%
%\begin{definition}[\DescribeEnv{algorithm2e}]
%\cs{begin}\{algorithm2e\}\\
%\meta{contents}\\
%\cs{end}\{algorithm2e\}
%\end{definition}
%Pseudo code can be displayed using the \envfmt{algorithm2e} environment,
%provided by the \sty{algorithm2e} package, which is automatically
%loaded. For example:
%\begin{verbatim}
%\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}
%\end{verbatim}
%
%See the \ctandoc{algorithm2e} for more details.
%
%\subsection{Description Lists}
%
%\begin{definition}[\DescribeEnv{altdescription}]
%\cs{begin}\{altdescription\}\marg{widest label}\\
%\cs{item}\oarg{label} \meta{item text}\\
%\cs{end}\{altdescription\}
%\end{definition}
%In addition to the standard \env{description} environment, the
%\clsfmt{jmlr} class also provides the \envfmt{altdescription} environment.
%This has an argument that should be the widest label used in the
%list. For example:
%\begin{verbatim}
%\begin{altdescription}{differentiate}
%\item[add] A method that adds two variables.
%\item[differentiate] A method that differentiates a function.
%\end{altdescription}
%\end{verbatim}
%
%\subsection{Theorems, Lemmas etc}
%
%The \clsfmt{jmlr} class provides the following theorem-like
%environments: \env{theorem}, \env{example}, \env{lemma},
%\env{proposition}, \env{remark}, \env{corollary}, \env{definition},
%\env{conjecture} and \env{axiom}. Within the body of those
%environments, you can use the \env{proof} 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:
%
%\begin{verbatim}
%\begin{theorem}[An Example Theorem]
%\label{thm:example}
%This is the theorem.
%\begin{proof}
%This is the proof.
%\end{proof}
%\end{theorem}
%\end{verbatim}
%
%\subsection{Cross-Referencing}
%\label{sec:crossref}
%
%Always use \ics{label} when cross-referencing, rather than writing
%the number explicitly. The \clsfmt{jmlr} class provides some
%convenience commands to assist referencing. These commands,
%described below, can all take a comma-separated list of labels.
%
%\begin{definition}[\DescribeMacro{\sectionref}]
%\cs{sectionref}\marg{label list}
%\end{definition}
%Used to refer to a section or sections. For example, if you defined
%a section as follows:
%\begin{verbatim}
%\section{Results}\label{sec:results}
%\end{verbatim}
%you can refer to it as follows:
%\begin{verbatim}
%The results are detailed in \sectionref{sec:results}.
%\end{verbatim}
%This command may also be used for sub-sections and sub-sub-sections.
%
%\begin{definition}[\DescribeMacro{\appendixref}]
%\cs{appendixref}\marg{label list}
%\end{definition}
%Used to refer to an appendix or multiple appendices.
%
%\begin{definition}[\DescribeMacro{\equationref}]
%\cs{equationref}\marg{label list}
%\end{definition}
%Used to refer to an equation or multiple equations.
%
%\begin{definition}[\DescribeMacro{\tableref}]
%\cs{tableref}\marg{label list}
%\end{definition}
%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.
%
%\begin{definition}[\DescribeMacro{\subtabref}]
%\cs{subtabref}\marg{label list}
%\end{definition}
%Used to refer to sub-tables without the main table number, e.g.
%(\emph{a}) or (\emph{b}).
%
%\begin{definition}[\DescribeMacro{\figureref}]
%\cs{figureref}\marg{label list}
%\end{definition}
%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(\emph{a}) or 4(\emph{b}).
%
%\begin{definition}[\DescribeMacro{\subfigref}]
%\cs{subfigref}\marg{label list}
%\end{definition}
%Used to refer to sub-figures without the main figure number, e.g.
%(\emph{a}) or (\emph{b}).
%
%\begin{definition}[\DescribeMacro{\algorithmref}]
%\cs{algorithmref}\marg{label list}
%\end{definition}
%Used to refer to an algorithm or multiple algorithms.
%
%\begin{definition}[\DescribeMacro{\theoremref}]
%\cs{theoremref}\marg{label list}
%\end{definition}
%Used to refer to a theorem or multiple theorems.
%
%\begin{definition}[\DescribeMacro{\lemmaref}]
%\cs{lemmaref}\marg{label list}
%\end{definition}
%Used to refer to a lemma or multiple lemmas.
%
%\begin{definition}[\DescribeMacro{\remarkref}]
%\cs{remarkref}\marg{label list}
%\end{definition}
%Used to refer to a remark or multiple remarks.
%
%\begin{definition}[\DescribeMacro{\corollaryref}]
%\cs{corollaryref}\marg{label list}
%\end{definition}
%Used to refer to a corollary or multiple corollaries.
%
%\begin{definition}[\DescribeMacro{\definitionref}]
%\cs{definitionref}\marg{label list}
%\end{definition}
%Used to refer to a definition or multiple definitions.
%
%\begin{definition}[\DescribeMacro{\conjectureref}]
%\cs{conjectureref}\marg{label list}
%\end{definition}
%Used to refer to a conjecture or multiple conjectures.
%
%\begin{definition}[\DescribeMacro{\axiomref}]
%\cs{axiomref}\marg{label list}
%\end{definition}
%Used to refer to an axiom or multiple axioms.
%
%\begin{definition}[\DescribeMacro{\exampleref}]
%\cs{exampleref}\marg{label list}
%\end{definition}
%Used to refer to an example or multiple examples.
%
%\subsection{Mathematics}
%
%The \clsfmt{jmlr} class loads the \sty{amsmath} package so you can use
%any of the commands and environments defined in that package. A
%brief summary of some of the more common commands and environments
%is provided here. See the \ctandoc{amsmath} for further details.
%
%\begin{definition}[\DescribeMacro{\set}]
%\cs{set}\marg{text}
%\end{definition}
%In addition to the commands provided by \sty{amsmath}, the
%\clsfmt{jmlr} class also provides the \cs{set} command which can
%be used to typeset a set. For example:
%\begin{verbatim}
%The universal set is denoted $\set{U}$
%\end{verbatim}
%
%Unnumbered single-line equations should be displayed using
%\cs{[} and \cs{]}. For example:
%\begin{verbatim}
%\[E = m c^2\]
%\end{verbatim}
%Numbered single-line equations should be displayed using the
%\env{equation} environment. For example:
%\begin{verbatim}
%\begin{equation}\label{eq:trigrule}
%\cos^2\theta + \sin^2\theta \equiv 1
%\end{equation}
%\end{verbatim}
%Multi-lined numbered equations should be displayed using the
%\env{align} environment. For example:
%\begin{verbatim}
%\begin{align}
%f(x) &= x^2 + x\label{eq:f}\\
%f'(x) &= 2x + 1\label{eq:df}
%\end{align}
%\end{verbatim}
%Unnumbered multi-lined equations should be displayed using the
%\env{align*} environment. For example:
%\begin{verbatim}
%\begin{align*}
%f(x) &= (x+1)(x-1)\\
%&= x^2 - 1
%\end{align*}
%\end{verbatim}
%If you want to mix numbered with unnumbered lines use the
%\env{align} environment and suppress unwanted line numbers with
%\cs{nonumber}. For example:
%\begin{verbatim}
%\begin{align}
%y &= x^2 + 3x - 2x + 1\nonumber\\
%&= x^2 + x + 1\label{eq:y}
%\end{align}
%\end{verbatim}
%An equation that is too long to fit on a single line can be
%displayed using the \env{split} environment.
%
%Text can be embedded in an equation using \ics{text}\marg{text} or
%you can use \ics{intertext}\marg{text} to interupt a multi-line
%environment such as \env{align}.
%
%Predefined operator names are listed in \tableref{tab:operatornames}.
%For additional operators, either use
%\begin{definition}[\DescribeMacro{\operatorname}]
%\cs{operatorname}\marg{name}
%\end{definition}
%for example
%\begin{verbatim}
%If $X$ and $Y$ are independent,
%$\operatorname{var}(X+Y) =
%\operatorname{var}(X) + \operatorname{var}(Y)$
%\end{verbatim}
%or declare it with
%\begin{definition}[\DescribeMacro{\DeclareMathOperator}]
%\cs{DeclareMathOperator}\marg{command}\marg{name}
%\end{definition}
%for example
%\begin{verbatim}
%\DeclareMathOperator{\var}{var}
%\end{verbatim}
%and then use this new command:
%\begin{verbatim}
%If $X$ and $Y$ are independent,
%$\var(X+Y) = \var(X)+\var(Y)$
%\end{verbatim}
%
%If you want limits that go above and
%below the operator (like \ics{sum}) use the starred versions
%(\ics{operatorname*} or \ics{DeclareMathOperator*}).
%
%\begin{table}[htbp]
%\caption{Predefined Operator Names (taken from
% \sty{amsmath} documentation)}
%\label{tab:operatornames}%
%\vskip\baselineskip
%\centering
%\begin{tabular}{rlrlrlrl}
%\cs{arccos} & $\arccos$ & \cs{deg} & $\deg$ & \cs{lg} & $\lg$ & \cs{projlim} & $\projlim$ \\
%\cs{arcsin} & $\arcsin$ & \cs{det} & $\det$ & \cs{lim} & $\lim$ & \cs{sec} & $\sec$ \\
%\cs{arctan} & $\arctan$ & \cs{dim} & $\dim$ & \cs{liminf} & $\liminf$ & \cs{sin} & $\sin$ \\
%\cs{arg} & $\arg$ & \cs{exp} & $\exp$ & \cs{limsup} & $\limsup$ & \cs{sinh} & $\sinh$ \\
%\cs{cos} & $\cos$ & \cs{gcd} & $\gcd$ & \cs{ln} & $\ln$ & \cs{sup} & $\sup$ \\
%\cs{cosh} & $\cosh$ & \cs{hom} & $\hom$ & \cs{log} & $\log$ & \cs{tan} & $\tan$ \\
%\cs{cot} & $\cot$ & \cs{inf} & $\inf$ & \cs{max} & $\max$ & \cs{tanh} & $\tanh$ \\
%\cs{coth} & $\coth$ & \cs{injlim} & $\injlim$ & \cs{min} & $\min$ \\
%\cs{csc} & $\csc$ & \cs{ker} & $\ker$ & \cs{Pr} & $\Pr$
%\end{tabular}\par
%\begin{tabular}{rlrl}
%\cs{varlimsup} & $\varlimsup$
%& \cs{varinjlim} & $\varinjlim$\\
%\cs{varliminf} & $\varliminf$
%& \cs{varprojlim} & $\varprojlim$
%\end{tabular}
%
%\end{table}
%
%\subsection{Color vs Grayscale}
%\label{sec:color}
%
%It's helpful if authors supply grayscale versions of their
%articles in the event that the article is to be incorporated into
%a black and white printed book. With external PDF, PNG or JPG
%graphic files, you just need to supply a grayscale version of the
%file. For example, if the file is called \texttt{myimage.png},
%then the gray version should be \texttt{myimage-gray.png} or
%\texttt{myimage-gray.pdf} or \texttt{myimage-gray.jpg}. You don't
%need to modify your code. The \clsfmt{jmlr} class checks for
%the existence of the grayscale version if it is print mode
%(provided you have used \ics{includegraphics} and haven't
%specified the file extension).
%
%\begin{definition}[\DescribeMacro{\ifprint}]
%\cs{ifprint}\marg{true part}\marg{false part}
%\end{definition}
%You can use \cs{ifprint} to determine which mode you are in.
%For example:
%\begin{verbatim}
%in \figureref{fig:nodes}, the
%\ifprint{dark gray}{purple}
%ellipse represents an input and the
%\ifprint{light gray}{yellow} ellipse
%represents an output.
%\end{verbatim}
%Another example:
%\begin{verbatim}
%{\ifprint{\bfseries}{\color{red}}important text!}
%\end{verbatim}
%
%You can use the class option \clsopt{gray} to see how the
%document will appear in gray scale mode.
%
%The \sty{xcolor} class is loaded with the \pkgoptfmt{x11names}
%option, so you can use any of the x11 predefined colors (listed
%in the \ctandoc{xcolor}).
%
%\subsection{Where To Go For Help}
%
%If you have a \LaTeX\ query, the first place to go to is the
%\urlfootref{http://www.tex.ac.uk/faq}{UK TUG FAQ}.
%
%If you are unfamiliar or just getting started with \LaTeX, there's
%a list of on-line introductions to \LaTeX\ at:
%\url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=man-latex}
%
%There are also forums, mailing lists and newsgroups. For example,
%the \LaTeX\ Community (\url{http://www.latex-community.org/}),
%the \texttt{texhax} mailing list
%(\url{http://tug.org/mailman/listinfo/texhax}) and
%\texttt{comp.text.tex} (archives available at
%\url{http://groups.google.com/group/comp.text.tex/}).
%
%Documentation for packages or classes can be found using the
%\texttt{texdoc} application. For example:
%\begin{verbatim}
%texdoc natbib
%\end{verbatim}
%Alternatively, you can go to
%\texttt{http://www.ctan.org/pkg/}\meta{name} where
%\meta{name} is the name of the package. For example:
%\url{http://www.ctan.org/pkg/natbib}
%
%For a general guide to preparing papers (regardless of whether you
%are using \LaTeX\ or a word processor), see Kate L.~Turabian, \qt{A
%manual for writers of term papers, theses, and dissertations}, The
%University of Chicago Press, 1996.
%
%\section{Guidelines for Production Editors}
%\label{sec:jmlrbook}
%
%The \clsfmt{jmlrbook} class can be used to combine articles that
%use the \clsfmt{jmlr} document class into a book. The following sample
%files are provided: \texttt{paper1/paper1.tex},
%\texttt{paper2/paper2.tex}, \texttt{paper3/paper3.tex},
%\texttt{jmlr-sample.tex}, \texttt{jmlrwcp-sample.tex} and
%\texttt{jmlrbook-sample.tex}. All but the last named one are
%articles using the \clsfmt{jmlr} class. The last one
%(\texttt{jmlrbook-sample.tex}) uses the \clsfmt{jmlrbook} class file to
%combine the articles into a book. Note that no modifications are
%needed to the files using the \clsfmt{jmlr} class when they are
%imported into the book. They can either be compiled as stand-alone
%articles or with the entire book.
%
%Before you compile the book, make sure that all the articles
%compile as stand-alone documents (and run Bib\TeX\ where
%necessary). You can use the \app{makejmlrbook} Perl script to compile
%the book and create associated HTML files. See
%\sectionref{sec:makejmlrbook} for details.
%
%\subsection{\clsfmt{jmlrbook} Class Options}
%\begin{description}
%\item[\clsopt{nowcp}]The imported pre-published articles were
%published in the Journal of Machine Learning Research (default).
%\item[\clsopt{wcp}] The imported pre-published articles were
%published in the JMLR Workshop and Conference Proceedings.
%
%If the book has a mixture of JMLR and JMLR WCP articles, you
%can switch between them using
%\begin{definition}[\DescribeMacro{\jmlrwcp}]
%\cs{jmlrwcp}
%\end{definition}
%and
%\begin{definition}[\DescribeMacro{\jmlrnowcp}]
%\cs{jmlrnowcp}
%\end{definition}
%Alternatively, you can set the name of the journal or conference
%proceedings using:
%\begin{definition}[\DescribeMacro{\jmlrproceedings}]
%\cs{jmlrproceedings}\marg{short title}\marg{long title}
%\end{definition}
%
%\item[\clsopt{color}] Color version (see \sectionref{sec:color}).
%Use this option for the on-line version with hyperlinks enabled
%(default).
%
%\item[\clsopt{gray}] Grayscale version (see \sectionref{sec:color}).
%Use this option for the print version without hyperlinks.
%
%\item[\clsopt{tablecaptiontop}] in a \env{table} environment,
%\ics{floatconts} puts the caption at the top.
%
%\item[\clsopt{tablecaptionbottom}] in a \env{table} environment,
%\ics{floatconts} puts the caption at the bottom.
%
%\item[\clsopt{letterpaper}] Set the paper size to letter (default).
%
%\item[\clsopt{7x10}] Set the paper size to $7\times10$ inches.
%
%\item[\clsopt{prehyperref}] The \clsfmt{jmlrbook} automatically loads
%the \sty{hyperref} package, but some packages need to be loaded
%before \sty{hyperref}. This information can be specified using
%the \clsopt{prehyperref} option. This is a key=value option. For
%example, to load the packages \styfmt{foo} and \styfmt{bar} before
%\sty{hyperref}, you can do:
%\begin{verbatim}
%\documentclass[prehyperref={\usepackage{foo,bar}}]{jmlrbook}
%\end{verbatim}
%or:
%\begin{verbatim}
%\documentclass[prehyperref={\usepackage{foo}\usepackage{bar}}]{jmlrbook}
%\end{verbatim}
%
%\item[\clsopt{10pt}] Use 10pt as the normal text size.
%\item[\clsopt{11pt}] Use 11pt as the normal text size (default).
%\item[\clsopt{12pt}] Use 12pt as the normal text size.
%
%\end{description}
%
%\subsection{The Preamble}
%
%Any packages that the imported articles load (which aren't
%automatically loaded by \clsfmt{jmlr}) must be loaded in the book's
%preamble. For example, if one or more of the articles load the
%\sty{siunitx} 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
%\ics{gdef} or \ics{global}. Since most authors use \ics{newcommand}
%and \ics{newenvironment} (or \ics{renewcommand} and
%\ics{renewenvironment}) this shouldn't cause a conflict if more
%that one article has defined the same command or environment.
%For example, in the sample files supplied, both
%\texttt{paper1/paper1.tex} and \texttt{paper2/paper2.tex} have
%defined the command \cs{samplecommand} using \cs{newcommand}. As
%long as this command isn't also defined in the book, there won't
%be a conflict.
%
%\begin{definition}[\DescribeMacro{\title}]
%\cs{title}\oarg{PDF title}\marg{book title}
%\end{definition}
%In the book preamble, \cs{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 PDF viewer.
%(Note that in the imported articles, \cs{title} sets the article's
%title and the optional argument sets the short title for the
%page header and table of contents.)
%
%\begin{definition}[\DescribeMacro{\author}]
%\cs{author}\oarg{PDF author(s)}\marg{book author(s)}
%\end{definition}
%In the book preamble, \cs{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 properties in their
%PDF viewer. (Note that in the imported articles, \cs{author} sets
%the article's author and the optional argument sets the short author
%list for the page header.)
%
%\begin{definition}[\DescribeMacro{\volume}]
%\cs{volume}\marg{number}
%\end{definition}
%This command sets the book's volume number. Omit if the book has no
%volume number.
%
%\begin{definition}[\DescribeMacro{\subtitle}]
%\cs{subtitle}\marg{sub-title}
%\end{definition}
%This command sets the book's subtitle. Omit if the book has no
%sub-title.
%
%\begin{definition}[\DescribeMacro{\logo}]
%\cs{logo}\marg{image command}
%\end{definition}
%This sets the book's title image. Use \ics{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 \sectionref{sec:color}
%for further details.)
%
%\begin{definition}[\DescribeMacro{\team}]
%\cs{team}\marg{team title}
%\end{definition}
%This can be used to set the name of the editorial team. This
%command may be omitted if not required.
%
%\begin{definition}[\DescribeMacro{\productioneditor}]
%\cs{productioneditor}\marg{name}
%\end{definition}
%This command may be used to name the production editor. The command
%may be omitted if not required.
%
%See \sectionref{sec:modifytitle} for details on how to modify the
%layout of the title page.
%
%\subsection{Main Book Commands}
%
%All commands that are provided by the \clsfmt{jmlr} class are
%also available with the \clsfmt{jmlrbook} 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:
%\begin{definition}[\DescribeMacro{\maketitle}]
%\cs{maketitle}
%\end{definition}
%This displays the book's title page. Note that \cs{maketitle} has
%a different effect when used in imported articles.
%
%\begin{definition}[\DescribeMacro{\frontmatter}]
%\cs{frontmatter}
%\end{definition}
%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 \cs{chapter} instead of \cs{chapter*}. It also sets the page
%style and sets the page numbering to lower case Roman numerals.
%
%\begin{definition}[\DescribeEnv{authorsignoff}]
%\cs{begin}\{authorsignoff\}\\
%\meta{author list}\\
%\cs{end}\{authorsignoff\}
%\end{definition}
%This environment may be used by the author signing off at the end of a chapter such as the
%foreword. Within the environment use:
%\begin{definition}[\DescribeMacro{\Author}]
%\cs{author}\marg{details}
%\end{definition}
%for the author's details. More than one \cs{Author} should be used
%if there is more than one author. Example:
%\begin{verbatim}
%\begin{authorsignoff}
%\Author{Nicola Talbot\\
%University of East Anglia}
%\Author{Anne Author\\
%University of No Where}
%\end{authorsignoff}
%\end{verbatim}
%
%\begin{definition}[\DescribeEnv{signoff}]
%\cs{begin}\{signoff\}\oarg{team name}\marg{date}\\
%\meta{editor list}\\
%\cs{end}\{signoff\}
%\end{definition}
%This environment may be used by the editorial team when signing off
%a chapter such as the preface. If the optional argument is omitted,
%\qt{The Editorial Team} is used.
%
%Within the environment use:
%\begin{definition}[\DescribeMacro{\Editor}]
%\cs{Editor}\marg{details}
%\end{definition}
%for each editor. Example:
%\begin{verbatim}
%\begin{signoff}{March 2010}
%% First editor:
%\Editor{Nicola Talbot\\
%University of East Anglia\\
%\mailto{N.Talbot@uea.ac.uk}}
%% Second editor:
%\Editor{Anne Editor\\
%University of Nowhere\\
%\mailto{ae@sample.com}}
%\end{signoff}
%\end{verbatim}
%
%\begin{definition}[\DescribeMacro{\tableofcontents}]
%\cs{tableofcontents}
%\end{definition}
%This command displays the book's table of contents. Note that it
%has a different effect if used in an imported article.
%
%\begin{definition}[\DescribeMacro{\mainmatter}]
%\cs{mainmatter}
%\end{definition}
%Use this command to switch to the book's main matter. This will
%switch the chapter numbering back on, reset the page numbering to
%Arabic and set up the main page style.
%
%\begin{definition}[\DescribeMacro{\part}]
%\cs{part}\oarg{short title}\marg{title}
%\end{definition}
%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.
%
%\begin{definition}[\DescribeMacro{\addtocpart}]
%\cs{addtocpart}\marg{title}
%\end{definition}
%This adds \meta{title} to the table of contents, issues a clear
%double page, but doesn't display any text or affect the part
%numbering.
%
%\begin{definition}[\DescribeMacro{\chapter}]
%\cs{chapter}\oarg{short title}\marg{title}
%\end{definition}
%This command may be used in the main body of the book but will
%cause an error if used within an imported article.
%
%\begin{definition}[\DescribeMacro{\section}]
%\cs{section}\oarg{short title}\marg{title}
%\end{definition}
%\begin{definition}[\DescribeMacro{\subsection}]
%\cs{subsection}\oarg{short title}\marg{title}
%\end{definition}
%\begin{definition}[\DescribeMacro{\subsubsection}]
%\cs{subsubsection}\oarg{short title}\marg{title}
%\end{definition}
%\begin{definition}[\DescribeMacro{\paragraph}]
%\cs{paragraph}\oarg{short title}\marg{title}
%\end{definition}
%\begin{definition}[\DescribeMacro{\subparagraph}]
%\cs{subparagraph}\oarg{short title}\marg{title}
%\end{definition}
%These commands may be used in the main body of the book or within
%imported articles. In the main body of the book they need to be
%within a chapter and will be numbered according to the chapter.
%
%\begin{definition}[\DescribeMacro{\appendix}]
%\cs{appendix}
%\end{definition}
%If used in the main body of the book, this will switch to the
%book appendices. Subsequent \cs{chapter} commands will produce the
%appendices. If used within an imported article, it will switch
%to the article appendices and won't affect the main part of
%the book.
%
%\begin{definition}[\DescribeEnv{jmlrpapers}]
%\cs{begin}\{jmlrpapers\}\\
%\meta{imported papers}\\
%\cs{end}\{jmlrpapers\}
%\end{definition}
%This environment must be used when importing articles. Within this
%environment, use the following commands to import articles:
%\begin{definition}[\DescribeMacro{\importpubpaper}]
%\cs{importpubpaper}\oarg{label}\marg{directory}\marg{file}\marg{pages}
%\end{definition}
%This imports an article that has already been published elsewhere.
%The \meta{pages} argument should be the page range from the
%\emph{previously published} version of this article. This may not
%necessarily be the same as the page range of the article in the book.
%The directory the imported file is contained in is is given by
%\meta{directory}. If the file is in the same directory as the
%book, use a dot. The file name is given by \meta{file}. The article
%is also given a label, specified by the optional argument. This
%is \meta{directory}/\meta{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 \sectionref{sec:bkcrossref}).
%
%\begin{definition}[\DescribeMacro{\importpaper}]
%\cs{importpaper}\oarg{label}\marg{directory}\marg{file}
%\end{definition}
%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).
%
%\begin{definition}[\DescribeMacro{\importarticle}]
%\cs{importarticle}\oarg{label}\marg{directory}\marg{file}
%\end{definition}
%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 \cs{importpubpaper}.
%
%Example: to import a previously published paper
%\texttt{paper1/paper1.tex} and an unpublished paper
%\texttt{paper2/paper2.tex}:
%\begin{verbatim}
%\begin{jmlrpapers}
%\importpubpaper{paper1}{paper1}{23--45}
%\importarticle{paper2}{paper2}
%\end{jmlrpapers}
%\end{verbatim}
%
%\subsubsection{Two Column Articles in a One Column Book}
%
%The \clsfmt{jmlrbook} class column style will override the column style
%of the imported articles. You can use the \clsopt{twocolumn} class
%option to \clsfmt{jmlrbook}, but this will make the whole book with
%two columns. If you only want the imported articles to be in two
%columns, then put \ics{twocolumn} in the \env{jmlrpapers}
%environment to switch on two column formatting. The effect will be
%localised to the end of the environment.
%
%\subsubsection{Cross-Referencing}
%\label{sec:bkcrossref}
%
%You can cross-reference other parts of the book using the
%standard \cs{label}/\cs{ref} mechanism, 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 \ics{importpubpaper},
%\ics{importpaper} or \cs{importarticle}). For example, if you
%want to reference a section labeled \texttt{sec:results} in the
%imported paper \texttt{paper1/paper1.tex}, you would need to do:
%\begin{verbatim}
%see Section~\ref{paper1/paper1sec:results}
%\end{verbatim}
%or
%\begin{verbatim}
%see \sectionref{paper1/paper1sec:results}
%\end{verbatim}
%
%In addition to the commands described in \sectionref{sec:crossref},
%the \clsfmt{jmlrbook} class also provides the following
%cross-referencing commands:
%
%\begin{definition}[\DescribeMacro{\chapterref}]
%\cs{chapterref}\marg{label list}
%\end{definition}
%Reference a chapter or chapters. The argument is a comma-separated
%list of labels.
%
%\begin{definition}[\DescribeMacro{\articlepageref}]
%\cs{articlepageref}\marg{label}
%\end{definition}
%This displays the starting page number of the article whose label
%is given by \meta{label}. Note that this must a single label, not
%a list. For example:
%\begin{verbatim}
%An interesting article starts on page~\articlepageref{paper1/paper1}
%\end{verbatim}
%
%\begin{definition}[\DescribeMacro{\articlepagesref}]
%\cs{articlepagesref}\marg{label}
%\end{definition}
%This displays the page range of the article whose label is
%given by \meta{label}. Again, this must be a single label, not a
%list. This page range is unrelated to the \meta{pages} argument of
%\ics{importpubarticle}.
%
%\begin{definition}[\DescribeMacro{\articletitleref}]
%\cs{articletitleref}\marg{label}
%\end{definition}
%This displays the short title for the article whose label is
%given by \meta{label}. Again, this must be a single label, not a
%list.
%
%\begin{definition}[\DescribeMacro{\articleauthorref}]
%\cs{articleauthorref}\marg{label}
%\end{definition}
%This displays the author list for the article whose label is
%given by \meta{label}. Again, this must be a single label, not a
%list.
%
%\subsection{Altering the Layout of the Main Title Page}
%\label{sec:modifytitle}
%
%\begin{definition}[\DescribeMacro{\titlebody}]
%\cs{titlebody}
%\end{definition}
%The main body of the book's title page is given by the command
%\cs{titlebody}. Within the definition of this command, you can
%use:
%\begin{definition}[\DescribeMacro{\SetTitleElement}]
%\cs{SetTitleElement}\marg{element}\marg{pre}\marg{post}
%\end{definition}
%where \meta{element} can be: \texttt{title}, \texttt{volume},
%\texttt{issue}\footnote{The default title page layout doesn't use
%\texttt{issue}, but if required it can be set with \ics{issue}\marg{number}},
%\texttt{subtitle}, \texttt{logo}, \texttt{team}, \texttt{author},
%\texttt{date}, \texttt{productioneditor}. The \meta{pre} and
%\meta{post} arguments specify what to do before and after the
%element. Note that \cs{SetTitleElement} does nothing if that
%element hasn't been set. For example, if \cs{volume} has been
%omitted or \verb|\volume{}| is used, then
%\begin{verbatim}
%\SetTitleElement{volume}{\mainvolumefont}{\postmainvolume}
%\end{verbatim}
%will do nothing (so you don't end up with \textbf{Volume :}).
%
%\begin{definition}[\DescribeMacro{\IfTitleElement}]
%\cs{IfTitleElement}\marg{element}\marg{true part}\marg{false part}
%\end{definition}
%This does \meta{true part} if \meta{element} has been set
%otherwise it does \meta{false part}. For example,
%\cs{postmainvolume} is defined as:
%\begin{verbatim}
%\newcommand{\postmainvolume}{%
% \IfTitleElement{subtitle}{}{:}\par\relax
%}
%\end{verbatim}
%This means that it will only print a colon after the volume
%number if the subtitle has been set.
%
%The default definition of \cs{titlebody} is:
%\begin{verbatim}
%\newcommand{\titlebody}{%
% \SetTitleElement{title}{\maintitlefont}{\postmaintitle}%
% \SetTitleElement{volume}{\mainvolumefont}{\postmainvolume}%
% \SetTitleElement{subtitle}{\mainsubtitlefont}{\postmainsubtitle}%
% \SetTitleElement{logo}{\mainlogofont}{\postmainlogo}%
% \SetTitleElement{team}{\mainteamfont}{\postmainteam}%
% \SetTitleElement{author}{\mainauthorfont}{\postmainauthor}%
% \SetTitleElement{productioneditor}{\mainproductioneditorfont}%
% {\postmainproductioneditor}%
%}
%\end{verbatim}
%
%\subsection{Potential Pitfalls}
%
%The \cls{combine} class and \sty{hyperref} package are
%individually both easily broken by packages that change certain
%internals and they don't ordinarily work together. The
%\clsfmt{jmlrbook} 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 example
%\sty{subfig}, \sty{pdfpages} and \sty{geometry}. This is why the
%\clsfmt{jmlr} 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
%\styfmt{foo} and another uses package \styfmt{bar}. Each article compiles
%okay as a stand-alone article, but when combined \styfmt{foo} and
%\styfmt{bar} conflict. Another problem may occur when articles load the
%same package but with conflicting package options. To reduce the
%chance of this occurring, the \clsfmt{jmlr} class loads some commonly
%used packages. For example, it loads the \sty{algorithm2e}
%package with the \pkgoptfmt{algo2e} and \pkgoptfmt{ruled} options and
%provides the \env{algorithm} environment in addition to
%\sty{algorithm2e}'s \env{algorithm2e} environment.
%
%Articles that use different input encodings can also cause a
%problem. For example, if one article uses \texttt{utf8} and another
%uses \texttt{latin1}. If the authors have directly entered a
%diacritic or ligature, such as \'e or \ae, instead of using a
%\LaTeX\ command, such as \cs{'e} or \cs{ae}, then
%this will cause an error on compiling the book.\footnote{and may also
%cause a problem for the editor's text editor.} The choice then is to
%either change all non-keyboard characters with the appropriate
%\LaTeX\ commands or to use the \cs{inputencoding} command, supplied
%by the \sty{inputenc} package, to switch the encoding at the start
%of each article.
%
%Authors who use \cs{nonumber} within an \env{equation} environment
%can mess up the hyperlinks. Remove \cs{nonumber} and change the
%equation environment to \cs{[} \ldots\ \cs{]} (or just make it a
%numbered equation).
%
%If the article changes the graphics path using \cs{graphicspath},
%\clsfmt{jmlrbook} won't find the graphics if the imported articles
%aren't in the same directory as the book.
%
%\subsection{Creating the Book Using \appfmt{makejmlrbook}}
%\label{sec:makejmlrbook}
%
%The \app{makejmlrbook} Perl script is designed to make it
%easier to produce the print and online versions of the book, as
%well as producing an HTML index of all the imported articles with
%links to the abstracts and PDFs of individual articles. Note that
%for it to work properly, the articles must be imported using
%\cs{importarticle}, \cs{importpaper} or \cs{importpubpaper}, and
%the imported articles must use the \clsfmt{jmlr} class.
%
%On UNIX style systems, the script can be invoked from a terminal
%using:
%\begin{prompt}
%makejmlrbook \oarg{options} \meta{filename}
%\end{prompt}
%If that doesn't work, or you aren't using a UNIX style operating
%system, the script can be invoked from a terminal or command
%prompt using:
%\begin{prompt}
%perl makejmlrbook \oarg{options} \meta{filename}
%\end{prompt}
%The mandatory argument \meta{filename} is the name of the master
%\TeX\ file containing the book. It must use the \clsfmt{jmlrbook}
%class. You may omit the \texttt{.tex} extension. For example, if
%the file is called \texttt{proceedings.tex}, you can call
%\app{makejmlrbook} as follows:
%\begin{verbatim}
%perl makejmlrbook proceedings
%\end{verbatim}
%This will create the files \texttt{proceedings-print.pdf} (the
%print version) and \texttt{proceedings-online.pdf} (the online
%version). It will also create a directory (folder) called
%\texttt{html} in which the HTML files and individual article PDFs
%will be placed.
%
%The options to \app{makejmlrbook} are as follows:
%\begin{description}
%\item[--online] Generate the color on-line version (default).
%\item[--noonline] Don't generate the color on-line version.
%\item[--print] Generate the grayscale print version (default).
%\item[--noprint] Don't generate the grayscale print version.
%\item[--html] Generate the HTML files and the individual article
%PDFs (default).
%\item[--nohtml] Don't generate the HTML files and the individual
%article PDFs.
%\item[--logourl \meta{url}] Make the logo on the HTML index page link
%to \meta{url}.
%\item[--batchtex] Run \TeX\ in batch mode.
%\item[--nobatchtex] Don't run \TeX\ in batch mode (default).
%\item[--quieter] Reduce chatter to STDOUT (doesn't eliminate
%all messages). This also runs \TeX\ in batch mode.
%\item[--noquieter] Don't reduce messages to STDOUT (default).
%\item[--version] Display the version number and exit.
%\item[--help] List all available options.
%\end{description}
%
%There are also some more advanced options, but these haven't been
%fully tested:
%\begin{description}
%\item[--latexapp \meta{name}] Application used to call \LaTeX.
%Defaults to \qt{pdflatex}.
%\item[--latexopt \meta{string}] Options to pass to \LaTeX.
%\item[--format \meta{string}] Output format (defaults to \qt{pdf}).
%This may need to be changed if you change the \LaTeX\ application.
%\item[--bibtexapp \meta{name}] Application use to process the
%bibliography. Defaults to \qt{bibtex}.
%\item[--bibtexopt \meta{string}] Options to pass to Bib\TeX.
%\end{description}
%
%\StopEventually{\clearpage\phantomsection
% \addcontentsline{toc}{section}{Index}\PrintIndex
%}
%
%
%
%\section{jmlr.cls Code}
%\iffalse
% \begin{macrocode}
%<*jmlr.cls>
% \end{macrocode}
%\fi
% This class is based on the \sty{jmlr2e} package but was updated to use
% \cls{scrartcl} instead of \cls{article} and was modified to make sure
% it works with \clsfmt{jmlrbook} which uses both \cls{combine} and
% \sty{hyperref}.
%
% Declare class and required TeX format:
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{jmlr}[2010/07/27 v1.08 (NLCT) Journal of Machine Learning Research]
% \end{macrocode}
% The following conditionals are provided to make this class play nicely
% with combine and aren't required for articles.
% \begin{macrocode}
\newif\if@openright
\newif\if@mainmatter \@mainmattertrue
% \end{macrocode}
%\begin{macro}{\ifgrayscale}
% Determine whether to select grayscale alternatives
% \begin{macrocode}
\@ifundefined{ifgrayscale}{
\newif\ifgrayscale
\grayscalefalse
}{}
\DeclareOption{color}{\grayscalefalse
\PassOptionsToPackage{color}{xcolor}}
\DeclareOption{gray}{\grayscaletrue
\PassOptionsToPackage{gray}{xcolor}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\iftablecaptiontop}
% Determine if the table captions should go at the top.
%\changes{1.07}{2010-06-17}{new}
% \begin{macrocode}
\newif\iftablecaptiontop
\tablecaptiontoptrue
\DeclareOption{tablecaptiontop}{\tablecaptiontoptrue}
\DeclareOption{tablecaptionbottom}{\tablecaptionbottomtrue}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\ifjmlrhtml}
% Determine if we are using \app{TeX4ht}:
% \begin{macrocode}
\newif\ifjmlrhtml
\jmlrhtmlfalse
\DeclareOption{html}{\jmlrhtmltrue}
\DeclareOption{nohtml}{\jmlrhtmlfalse}
% \end{macrocode}
%\end{macro}
% Normal font size (default is 11pt)
% \begin{macrocode}
\def\pt@size{11pt}
\DeclareOption{10pt}{\renewcommand{\pt@size}{10}%
\PassOptionsToClass{\CurrentOption}{article}}
\DeclareOption{11pt}{\renewcommand{\pt@size}{11}%
\PassOptionsToClass{\CurrentOption}{article}}
\DeclareOption{12pt}{\renewcommand{\pt@size}{12}%
\PassOptionsToClass{\CurrentOption}{article}}
% \end{macrocode}
%\begin{macro}{\@jmlrproceedings}
% The name of the proceedings.
% \begin{macrocode}
\newcommand*{\@jmlrproceedings}{Journal of Machine Learning Research}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@jmlrabbrvproceedings}
% The abbreviated name of the proceedings.
% \begin{macrocode}
\newcommand*{\@jmlrabbrvproceedings}{JMLR}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\jmlrproceedings}
% Sets the title and abbreviation of the proceedings
% \begin{macrocode}
\newcommand*{\jmlrproceedings}[2]{%
\renewcommand*{\@jmlrabbrvproceedings}{#1}%
\renewcommand*{\@jmlrproceedings}{#2}%
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\nowcp}
% \begin{macrocode}
\newcommand*{\jmlrnowcp}{%
\jmlrproceedings{JMLR}{Journal of Machine Learning Research}%
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\wcp}
% \begin{macrocode}
\newcommand*{\jmlrwcp}{%
\jmlrproceedings{JMLR WC\&P}{JMLR: Workshop and Conference Proceedings}%
}
% \end{macrocode}
%\end{macro}
% This isn't an article for a workshop:
% \begin{macrocode}
\DeclareOption{nowcp}{\jmlrnowcp}
% \end{macrocode}
% This is an article for a workshop
% \begin{macrocode}
\DeclareOption{wcp}{\jmlrwcp}
% \end{macrocode}
% The default paper size is letter, but provide $7 \times 10$in
% alternative:
% \begin{macrocode}
\newif\ifviiXx
\viiXxfalse
\DeclareOption{7x10}{\viiXxtrue}
\DeclareOption{letterpaper}{\PassOptionsToPackage{letterpaper}{typearea}}
% \end{macrocode}
% Pass all remaining options to \cls{scrartcl} class:
% \begin{macrocode}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{scrartcl}}
% \end{macrocode}
% Execute required options:
% \begin{macrocode}
\ExecuteOptions{twoside,letterpaper}
% \end{macrocode}
% Process options:
% \begin{macrocode}
\ProcessOptions
% \end{macrocode}
% Load \cls{scrartcl} class
% \begin{macrocode}
\LoadClass[pointednumbers,normalheadings]{scrartcl}
% \end{macrocode}
% Can't use \sty{geometry} package because it doesn't play nicely
% with the \cls{combine} class.
% \begin{macrocode}
\ifviiXx
\setlength{\paperwidth}{7in}
\setlength{\paperheight}{10in}
\setlength{\textwidth}{5.25in}
\setlength{\textheight}{8.2in}
\setlength{\topmargin}{0.4in}
\setlength{\headheight}{0.2in}
\setlength{\headsep}{0.2in}
\setlength{\hoffset}{-1in}
\setlength{\voffset}{-1in}
\setlength{\evensidemargin}{0.75in}
\setlength{\oddsidemargin}{1.0in}
\else
\setlength{\oddsidemargin}{0.25in}
\setlength{\evensidemargin}{0.25in}
\setlength{\marginparwidth}{0.07 true in}
\setlength{\topmargin}{-0.5in}
\addtolength{\headsep}{0.25in}
\setlength{\textheight}{8.5 true in}
\setlength{\textwidth}{6.0 true in}
\fi
% \end{macrocode}
% Required packages:
% \begin{macrocode}
\RequirePackage{amsmath}
\RequirePackage{amssymb}
\RequirePackage{natbib}
\RequirePackage{graphicx}
\RequirePackage{url}
\RequirePackage[x11names]{xcolor}
\RequirePackage[algo2e,ruled]{algorithm2e}
% \end{macrocode}
% Float parameters: the following settings were copied from jmlr2e.sty
% \begin{macrocode}
\renewcommand{\topfraction}{0.95} % let figure take up nearly whole page
\renewcommand{\textfraction}{0.05} % let figure take up nearly whole page
% \end{macrocode}
% widows/orphans
% \begin{macrocode}
\widowpenalty=10000\relax
\clubpenalty=10000\relax
% \end{macrocode}
% Set two-sided format
% \begin{macrocode}
\@twosidetrue
% \end{macrocode}
% Put marginal notes on the outside of the page
% \begin{macrocode}
\@mparswitchtrue
% \end{macrocode}
% \begin{macrocode}
\def\ds@draft{\overfullrule 5pt}
% \end{macrocode}
% Use the plainnat bibliography style and set up the required
% punctuation.
% \begin{macrocode}
\bibliographystyle{plainnat}
\bibpunct{(}{)}{;}{a}{,}{,}
% \end{macrocode}
%\subsection{Sections}
% \begin{macrocode}
\addtokomafont{section}{\rmfamily\large}
\addtokomafont{subsection}{\rmfamily\normalsize}
\addtokomafont{subsubsection}{\rmfamily\mdseries\normalsize\scshape}
\addtokomafont{paragraph}{\rmfamily\normalsize}
\addtokomafont{subparagraph}{\rmfamily\itshape\normalsize}
% \end{macrocode}
% Insert possible prefix to section number.
% \begin{macrocode}
\renewcommand*{\othersectionlevelsformat}[1]{%
\csname pre#1num\endcsname\csname the#1\endcsname\autodot\enskip}
% \end{macrocode}
%\subsection{Footnotes}
% This code has been taken from jmlr2e.sty
% \begin{macrocode}
\long\def\@makefntext#1{\@setpar{\@@par\@tempdima \hsize
\advance\@tempdima-15pt\parshape \@ne 15pt \@tempdima}\par
\parindent 2em\noindent \hbox to \z@{\hss{\@thefnmark}. \hfil}#1}
% \end{macrocode}
%\subsection{Article abstract}
% This code has been taken from jmlr2e.sty but with \cs{bf} updated
% to \cs{bfseries}
%\begin{environment}{abstract}
% \begin{macrocode}
\ifjmlrhtml
\renewenvironment{abstract}{\HCode{
}Abstract\HCode{
}}{}%
\else
\renewenvironment{abstract}
{\centerline{\large\bfseries Abstract}\vspace{0.7ex}%
\bgroup
\leftskip 20pt\rightskip 20pt\small\noindent\ignorespaces}%
{\par\egroup\vskip 0.25ex}
\fi
% \end{macrocode}
%\end{environment}
%\subsection{Keywords}
% This code has been taken from jmlr2e.sty but with \cs{bf} updated
% to \cs{bfseries}.
%\begin{environment}{keywords}
% \begin{macrocode}
\newenvironment{keywords}
{\bgroup\leftskip 20pt\rightskip 20pt \small\noindent{\bfseries
Keywords:} \ignorespaces}%
{\par\egroup\vskip 0.25ex}
% \end{macrocode}
%\end{environment}
%\subsection{Title Page Information}
% This code has been taken from jmlr2e.sty.
%
% Title stuff, borrowed in part from aaai92.sty
% \begin{macrocode}
\newlength\aftertitskip \newlength\beforetitskip
\newlength\interauthorskip \newlength\aftermaketitskip
% \end{macrocode}
%% Changeable parameters.
% \begin{macrocode}
\setlength\aftertitskip{0.1in plus 0.2in minus 0.2in}
\setlength\beforetitskip{0.05in plus 0.08in minus 0.08in}
\setlength\interauthorskip{0.08in plus 0.1in minus 0.1in}
\setlength\aftermaketitskip{0.3in plus 0.1in minus 0.1in}
% \end{macrocode}
%
%\begin{macro}{\title}
% Override definition of \cs{title} to allow for an optional
% argument (short title)
% \begin{macrocode}
\renewcommand*{\title}[2][\@title]{%
\def\@shorttitle{#1}%
\def\@title{#2}%
\jmlrtitlehook
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\jmlrtitlehook}
% \begin{macrocode}
\newcommand*{\jmlrtitlehook}{}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\author}
% Override definition of \cs{author} to allow for an optional
% argument (list of authors for page heading)
% \begin{macrocode}
\renewcommand*{\author}[2][]{%
\def\@author{#2}%
\def\@sauthor{#1}%
\ifx\@sauthor\@empty
\else
\let\@shortauthor\@sauthor
\fi
\jmlrauthorhook
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\jmlrauthorhook}
% \begin{macrocode}
\newcommand*{\jmlrauthorhook}{}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\@shortauthor}
% \begin{macrocode}
\newcommand*{\@shortauthor}{}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\@firstauthor}
% \begin{macrocode}
\newcommand*{\@firstauthor}{}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@firstsurname}
% \begin{macrocode}
\newcommand*{\@firstsurname}{}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\jmlrlength}
% \begin{macrocode}
\newlength\jmlrlength
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\@makefntext}
%\changes{1.08}{2010-07-27}{new}
% Redefine \cs{@makefntext} so that the text between the footnote
% symbol and the footnote text can be redefined. (It looks odd
% having a full stop after a symbol.)
% \begin{macrocode}
\renewcommand*{\@makefntext}[1]{%
\@setpar
{%
\@@par
\@tempdima\hsize
\advance \@tempdima -15pt\relax
\parshape \@ne 15pt \@tempdima
}%
\par
\parindent 2em\noindent
\hbox to \z@ {\hss {\@thefnmark }\footnoteseptext\hfil }#1%
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\footnoteseptext}
%\changes{1.08}{2010-07-27}{new}
% The separation text between the footnote symbol and the footnote
% text.
% \begin{macrocode}
\newcommand*{\footnoteseptext}{. }
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\jmlrmaketitle}
% Make the title
% \begin{macrocode}
\def\jmlrmaketitle{%
\jmlrpremaketitlehook
\def\@jmlr@authors@sep{, }%
\par
\begingroup
% \end{macrocode}
%\changes{1.08}{2010-07-27}{modified footnote marker in the footnote
%text so that it is raised and isn't followed by a full stop}
% \begin{macrocode}
\def\footnoteseptext{ }%
\def\thempfn{\textsuperscript{\thefootnote}}%
\def\thefootnote{\fnsymbol{footnote}}%
% \end{macrocode}
%\changes{1.07}{2010-06-30}{added check for two column mode}
% \begin{macrocode}
\if@twocolumn
\twocolumn[\@jmlrmaketitle]%
\else
\@jmlrmaketitle
\fi
\@thanks
\endgroup
\label{jmlrstart}%
\ifx\@sauthor\@empty
\settowidth{\jmlrlength}{\@evenhead}%
\ifdim\jmlrlength>\textwidth
\def\@shortauthor{\@firstsurname\space et al.}%
\fi
\fi
\settowidth{\jmlrlength}{\@titlefoot}%
\ifdim\jmlrlength>\textwidth
\def\@jmlrauthors{\@firstauthor\space \emph{et al}}%
\fi
\jmlrmaketitlehook
\thispagestyle{jmlrtps}%
\setcounter{footnote}{0}%
\let\maketitle\relax \let\@maketitle\relax
\gdef\@thanks{}\gdef\@author{}\let\thanks\relax
\def\@jmlr@authors@sep{ \& }%
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\jmlrmaketitlehook}
% \begin{macrocode}
\newcommand*{\jmlrmaketitlehook}{}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\jmlrpremaketitlehook}
% \begin{macrocode}
\newcommand*{\jmlrpremaketitlehook}{}
% \end{macrocode}
%\end{macro}
%
% Provide a different title layout for HTML
%\begin{macro}{\jmlrhtmlmaketitle}
% \begin{macrocode}
\newcommand{\jmlrhtmlmaketitle}{%
\ifx\@jmlrauthors\@empty
\sbox\jmlrbox{\let\addr\relax\@author}%
\fi
\noindent\HCode{}\@title\HCode{
}
\noindent\@jmlrauthors
}
% \end{macrocode}
%\end{macro}
%%\begin{macro}{\jmlrbox}
% Define a save box
% \begin{macrocode}
\newsavebox\jmlrbox
% \end{macrocode}
%\end{macro}
%\begin{macro}{\maketitle}
% If we're creating HTML, set \cs{maketitle} to
% \cs{jmlrhtmlmaketitle}, otherwise set it to \cs{jmlrmaketitle}
% \begin{macrocode}
\ifjmlrhtml
\let\maketitle\jmlrhtmlmaketitle
\else
\let\maketitle\jmlrmaketitle
\fi
% \end{macrocode}
%\end{macro}
%
% Author and editor information.
% \begin{macrocode}
\def\@startauthor{\noindent \normalsize\bfseries}
\def\@endauthor{}
\def\@starteditor{\noindent \small {\bfseries \@edname:~}}
\def\@endeditor{\normalsize}
% \end{macrocode}
% Provide hooks to make it easier to adapted with \cls{combine}
% class.
%\begin{macro}{\jmlrpretitle}
% \begin{macrocode}
\def\jmlrpretitle{\vskip\beforetitskip\begin{center}\Large\bfseries}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\jmlrposttitle}
% \begin{macrocode}
\def\jmlrposttitle{\par\end{center}\vskip\aftertitskip}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\jmlrpreauthor}
% \begin{macrocode}
\def\jmlrpreauthor{%
\bgroup
\def\and{\unskip\enspace{\normalfont and}\enspace}%
\def\addr{\small\itshape}%
\def\name{\ClassError{jmlr}{Use \string\Name{Author's Name} not \string\name}{}}%
\def\email{\ClassError{jmlr}{Use \string\Email{address} not \string\email}{}}%
\def\AND{\@endauthor\normalfont\hss \vskip \interauthorskip
\@startauthor}%
\@startauthor
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@email}
% \begin{macrocode}
\def\@email{\hfill\small\mdseries\scshape}%
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@name}
% \begin{macrocode}
\def\@name{\normalsize\upshape\bfseries}%
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\@parsename}
% Parse a name. Appends forename to \cs{@forenames} and stores
% surname in \cs{@surname}.
% \begin{macrocode}
\def\@parsename#1 #2\@nil{%
\def\@tmp{#2}%
\ifx\@tmp\@empty
\def\@surname{#1}%
\let\@nextparsename\@parsenamenoop
\else
\@getinitial#1-\relax\relax\end
\ifx\@forenames\@empty
\def\@forenames{#1}%
\protected@edef\@initials{\@initial}%
\else
\expandafter\toks@\expandafter{\@forenames}%
\edef\@forenames{\space\the\toks@}%
\expandafter\toks@\expandafter{\@initials}%
\protected@edef\@initials{\the\toks@\@initial}%
\fi
\let\@nextparsename\@parsename
\fi
\@nextparsename#2\@nil
}
\def\@parsenamenoop#1\@nil{}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\@getinitial}
% \begin{macrocode}
\def\@getinitial#1#2-#3#4\end{%
\def\@jmlr@tmp{#3}%
\if\@jmlr@tmp\relax
\def\@initial{#1.}%
\else
\def\@initial{#1.-#3.}%
\fi
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\Name}
% Get the author's name and add surname to \cs{@shortauthors}.
% (Surnames with \qt{von} parts or with spaces in should be
% enclosed in braces)
% \begin{macrocode}
\newcommand*{\Name}[1]{%
\def\@forenames{}%
\def\@surname{}%
\@parsename#1 \@nil
\ifx\@shortauthor\@empty
\ifx\@sauthor\@empty
\global\let\@shortauthor\@surname
\global\let\@firstsurname\@surname
\fi
\protected@xdef\@jmlrauthors{\@initials\space\@surname}%
\global\let\@firstauthor\@jmlrauthors
\else
\ifx\@sauthor\@empty
\expandafter\toks@\expandafter{\@shortauthor}%
\protected@xdef\@shortauthor{\the\toks@\space\@surname}%
\fi
\protected@xdef\@jmlrauthors{\@jmlrauthors
\noexpand\@jmlr@authors@sep
\@initials\space\@surname}%
\fi
\@name #1%
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\Email}
% \begin{macrocode}
\newcommand*{\Email}[1]{{\@email #1}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\jmlrpostauthor}
% \begin{macrocode}
\def\jmlrpostauthor{\@endauthor\egroup
\par
\vskip \aftermaketitskip
\noindent
\ifx\@editor\@empty
\else
\@starteditor \@editor \@endeditor
\fi
\vskip \aftermaketitskip
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@jmlrmaketitle}
% \begin{macrocode}
\def\@jmlrmaketitle{\vbox{\hsize\textwidth
\linewidth\hsize
\jmlrpretitle \@title \jmlrposttitle
\jmlrpreauthor \@author \jmlrpostauthor
}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\kernelmachines}
% Convenience command
% \begin{macrocode}
\newcommand*\kernelmachines{(for
{\textsc{http://www.kernel-machines.org}})}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\editorname}
% Label for the editor
% \begin{macrocode}
\newcommand*{\editorname}{Editor}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\editorsname}
% Label for the editor
% \begin{macrocode}
\newcommand*{\editorsname}{Editors}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@edname}
% This will either be Editor or Editors depending on whether
% \cs{editor} or \cs{editors} is used. Defaults to \cs{editorname}
% \begin{macrocode}
\let\@edname\editorname
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@editor}
% The editor or editors are stored in \cs{@editor}
% \begin{macrocode}
\def\@editor{}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\editor}
% A single editor
% \begin{macrocode}
\def\editor#1{%
\global\let\@edname\editorname
\gdef\@editor{#1}%
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\editors}
% Multiple editors
% \begin{macrocode}
\def\editors#1{%
\global\let\@edname\editorsname
\gdef\@editor{#1}%
}
% \end{macrocode}
%\end{macro}
%
%\subsection{Pagestyles}
% This is taken from jmlr2e.sty
%
%\begin{macro}{\firstpageno}
% Set the page counter.
% \begin{macrocode}
\def\firstpageno#1{\setcounter{page}{#1}}
% \end{macrocode}
%\end{macro}
%
% Label end page.
% \begin{macrocode}
\AtEndDocument{%
\@ifundefined{phantomsection}{}{\phantomsection}%
\protected@edef\@currentlabelname{end of \@shorttitle}%
\label{jmlrend}%
}
% \end{macrocode}
%
%\begin{macro}{\@titlefoot}
% \begin{macrocode}
\newcommand*{\@titlefoot}{\scriptsize\copyright\space\@jmlryear
\space\@jmlrauthors.\hfill}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\ps@jmlrtps}
% Title page style
% \begin{macrocode}
\newcommand\ps@jmlrtps{%
\let\@mkboth\@gobbletwo
\def\@oddhead{\scriptsize \@jmlrproceedings
\ifx\@jmlrvolume\@empty\else\space\@jmlrvolume\fi
\ifx\@jmlryear\@empty\else\space(\@jmlryear)\fi
\ifx\@jmlrpages\@empty\else\space\@jmlrpages\fi
\hfill
\ifx\@jmlrworkshop\@empty
\ifx\@jmlrsubmitted\@empty
\else
Submitted \@jmlrsubmitted
\ifx\@jmlrpublished\@empty\else;\fi
\fi
\ifx\@jmlrpublished\@empty
\else
\space Published \@jmlrpublished
\fi
\else
\space\@jmlrworkshop
\fi
}%
\let\@evenhead\@oddhead
\def\@oddfoot{\@titlefoot}%
\let\@evenfoot\@oddfoot
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\ps@jmlrps}
% Page style for subsequent pages
% \begin{macrocode}
\def\ps@jmlrps{%
\let\@mkboth\@gobbletwo
\def\@oddhead{\hfill {\small\scshape \@shorttitle} \hfill}%
\def\@oddfoot{\hfill \small\rmfamily \thepage \hfill}%
\def\@evenhead{\hfill {\small\scshape \@shortauthor} \hfill}%
\def\@evenfoot{\hfill \small\rmfamily \thepage \hfill}%
}%
% \end{macrocode}
% Set the page style:
% \begin{macrocode}
\pagestyle{jmlrps}
% \end{macrocode}
%\end{macro}
% Set the heading information:
%\begin{macro}{\@jmlrvolume}
% The volume number:
% \begin{macrocode}
\let\@jmlrvolume\@empty
% \end{macrocode}
%\end{macro}
%\begin{macro}{\jmlrvolume}
% \begin{macrocode}
\newcommand*{\jmlrvolume}[1]{\renewcommand*{\@jmlrvolume}{#1}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@jmlrissue}
% The issue number:
% \begin{macrocode}
\let\@jmlrissue\@empty
% \end{macrocode}
%\end{macro}
%\begin{macro}{\jmlrissue}
% \begin{macrocode}
\newcommand*{\jmlrissue}[1]{\renewcommand*{\@jmlrissue}{#1}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@jmlryear}
% The year of publication:
% \begin{macrocode}
\let\@jmlryear\@empty
% \end{macrocode}
%\end{macro}
%\begin{macro}{\jmlryear}
% \begin{macrocode}
\newcommand*{\jmlryear}[1]{\renewcommand*{\@jmlryear}{#1}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@jmlrpages}
% The page range:
% \begin{macrocode}
\newcommand*\@jmlrpages{\pageref{jmlrstart}--\pageref{jmlrend}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\jmlrpages}
% \begin{macrocode}
\newcommand*{\jmlrpages}[1]{\renewcommand*{\@jmlrpages}{#1}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@jmlrsubmitted}
% The date the article was submitted:
% \begin{macrocode}
\let\@jmlrsubmitted\@empty
% \end{macrocode}
%\end{macro}
%\begin{macro}{\jmlrsubmitted}
% \begin{macrocode}
\newcommand*{\jmlrsubmitted}[1]{\renewcommand*{\@jmlrsubmitted}{#1}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@jmlrpublished}
% The date the article was published:
% \begin{macrocode}
\let\@jmlrpublished\@empty
% \end{macrocode}
%\end{macro}
%\begin{macro}{\jmlrpublished}
% \begin{macrocode}
\newcommand*{\jmlrpublished}[1]{\renewcommand*{\@jmlrpublished}{#1}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@jmlrworkshop}
% The name of the workshop:
% \begin{macrocode}
\let\@jmlrworkshop\@empty
% \end{macrocode}
%\end{macro}
%\begin{macro}{\jmlrworkshop}
% \begin{macrocode}
\newcommand*{\jmlrworkshop}[1]{\renewcommand*{\@jmlrworkshop}{#1}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@jmlrauthors}
% \begin{macrocode}
\newcommand*{\@jmlrauthors}{}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\jmlrauthors}
% This is provided in case \cs{Name} doesn't set \cs{@jmlrauthors}
% correctly.
% \begin{macrocode}
\newcommand*{\jmlrauthors}[1]{\renewcommand*{\@jmlrauthors}{#1}}
% \end{macrocode}
%\end{macro}
%
%
%\subsection{Miscellany}
% This code was taken from jmlr2e.sty.
% Define macros for figure captions and table titles
% \begin{macrocode}
\def\figurecaption#1#2{\noindent\hangindent 40pt
\hbox to 36pt {\small\slshape #1 \hfil}
\ignorespaces {\small #2}}
% \end{macrocode}
% Figurecenter prints the caption title centered.
% \begin{macrocode}
\def\figurecenter#1#2{\centerline{{\slshape #1} #2}}
\def\figurecenter#1#2{\centerline{{\small\slshape #1} {\small #2}}}
% \end{macrocode}
%
% Allow ``hanging indents'' in long captions
%
%\begin{macro}{\@makecaption}
% \begin{macrocode}
\long\def\@makecaption#1#2{%
\vskip 10pt
\setbox\@tempboxa\hbox{#1: #2}%
\ifdim \wd\@tempboxa >\hsize % IF longer than one line:
\begin{list}{#1:}{%
\settowidth{\labelwidth}{#1:}
\setlength{\leftmargin}{\labelwidth}
\addtolength{\leftmargin}{\labelsep}
}\item #2 \end{list}\par % Output in quote mode
\else % ELSE center.
\hbox to\hsize{\hfil\box\@tempboxa\hfil}
\fi}
% \end{macrocode}
%\end{macro}
% Define strut macros for skipping spaces above and below text in a
% tabular environment.
% \begin{macrocode}
\def\abovestrut#1{\rule[0in]{0in}{#1}\ignorespaces}
\def\belowstrut#1{\rule[-#1]{0in}{#1}\ignorespaces}
% \end{macrocode}
%\begin{macro}{\acks}
% Acknowledgments
% \begin{macrocode}
\long\def\acks#1{\section*{Acknowledgments}#1}
% \end{macrocode}
%\end{macro}
% Research Note
%\begin{macro}{\researchnote}
% \begin{macrocode}
\long\def\researchnote#1{\noindent {\LARGE\itshape Research Note} #1}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\set}
% \begin{macrocode}
\newcommand*{\set}[1]{\ensuremath{\mathcal{#1}}}
% \end{macrocode}
%\end{macro}
% Convenient macros for cross-referencing.
% \begin{macrocode}
\newcommand*{\@jmlr@reflistsep}{, }
\newcommand*{\@jmlr@reflistlastsep}{ and }
\newcommand*{\sectionrefname}{Section}
\newcommand*{\sectionsrefname}{Sections}
\newcommand*{\equationrefname}{Equation}
\newcommand*{\equationsrefname}{Equations}
\newcommand*{\tablerefname}{Table}
\newcommand*{\tablesrefname}{Tables}
\newcommand*{\figurerefname}{Figure}
\newcommand*{\figuresrefname}{Figures}
\newcommand*{\algorithmrefname}{Algorithm}
\newcommand*{\algorithmsrefname}{Algorithms}
\newcommand*{\theoremrefname}{Theorem}
\newcommand*{\theoremsrefname}{Theorems}
\newcommand*{\lemmarefname}{Lemma}
\newcommand*{\lemmasrefname}{Lemmas}
\newcommand*{\remarkrefname}{Remark}
\newcommand*{\remarksrefname}{Remarks}
\newcommand*{\corollaryrefname}{Corollary}
\newcommand*{\corollarysrefname}{Corollaries}
\newcommand*{\definitionrefname}{Definition}
\newcommand*{\definitionsrefname}{Definitions}
\newcommand*{\conjecturerefname}{Conjecture}
\newcommand*{\conjecturesrefname}{Conjectures}
\newcommand*{\axiomrefname}{Axiom}
\newcommand*{\axiomsrefname}{Axioms}
\newcommand*{\examplerefname}{Example}
\newcommand*{\examplesrefname}{Examples}
\newcommand*{\appendixrefname}{Appendix}
\newcommand*{\appendixsrefname}{Appendices}
\newcommand*{\partrefname}{Part}
\newcommand*{\partsrefname}{Parts}
% \end{macrocode}
%\begin{macro}{\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 control 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 number, e.g.\ a closing bracket.
% \begin{macrocode}
\newcommand*{\objectref}[5]{%
\let\@objectname\@empty
\def\@objectref{}%
\let\@prevsep\@empty
\@for\@thislabel:=#1\do{%
\toks@{\@prevsep}%
\protected@edef\@objectref{\@objectref\the\toks@
#4\ref{\@thislabel}#5}%
\ifx\@objectname\@empty
\let\@objectname#2% singular tag
\else
\let\@objectname#3% plural tag
\let\@prevsep\@jmlr@reflistsep
\fi
}%
\ifx\@objectname#3% plural tag
\let\@prevsep\@jmlr@reflistlastsep
\fi
\@objectname~\@objectref
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\sectionref}
% \begin{macrocode}
\newcommand*{\sectionref}[1]{%
\objectref{#1}{\sectionrefname}{\sectionsrefname}{}{}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\equationref}
% \begin{macrocode}
\newcommand*{\equationref}[1]{%
\objectref{#1}{\equationrefname}{\equationsrefname}()}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\tableref}
% \begin{macrocode}
\newcommand*{\tableref}[1]{%
\objectref{#1}{\tablerefname}{\tablesrefname}{}{}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\figureref}
% \begin{macrocode}
\newcommand*{\figureref}[1]{%
\objectref{#1}{\figurerefname}{\figuresrefname}{}{}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\algorithmref}
% \begin{macrocode}
\newcommand*{\algorithmref}[1]{%
\objectref{#1}{\algorithmrefname}{\algorithmsrefname}{}{}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\theoremmref}
% \begin{macrocode}
\newcommand*{\theoremref}[1]{%
\objectref{#1}{\theoremrefname}{\theoremsrefname}{}{}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\lemmaref}
% \begin{macrocode}
\newcommand*{\lemmaref}[1]{%
\objectref{#1}{\lemmarefname}{\lemmasrefname}{}{}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\remarkref}
% \begin{macrocode}
\newcommand*{\remarkref}[1]{%
\objectref{#1}{\remarkrefname}{\remarksrefname}{}{}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\corollaryref}
% \begin{macrocode}
\newcommand*{\corollaryref}[1]{%
\objectref{#1}{\corollaryrefname}{\corollarysrefname}{}{}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\definitionref}
% \begin{macrocode}
\newcommand*{\definitionref}[1]{%
\objectref{#1}{\definitionrefname}{\definitionsrefname}{}{}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\conjectureref}
% \begin{macrocode}
\newcommand*{\conjectureref}[1]{%
\objectref{#1}{\conjecturerefname}{\conjecturesrefname}{}{}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\axiomref}
% \begin{macrocode}
\newcommand*{\axiomref}[1]{%
\objectref{#1}{\axiomrefname}{\axiomsrefname}{}{}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\exampleref}
% \begin{macrocode}
\newcommand*{\exampleref}[1]{%
\objectref{#1}{\examplerefname}{\examplesrefname}{}{}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\appendixref}
% \begin{macrocode}
\newcommand*{\appendixref}[1]{%
\objectref{#1}{\appendixrefname}{\appendixsrefname}{}{}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\partref}
% \begin{macrocode}
\newcommand*{\partref}[1]{%
\objectref{#1}{\partrefname}{\partsrefname}{}{}}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\floatconts}
% The first argument is the label, the second argument contains the
% caption (using \cs{caption}) and the third argument is the
% contents of the float
% \begin{macrocode}
\newcommand{\floatconts}[3]{%
\@ifundefined{\@captype conts}{\tableconts{#1}{#2}{#3}}%
{\csname\@captype conts\endcsname{#1}{#2}{#3}}%
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\tableconts}
% \begin{macrocode}
\newcommand{\tableconts}[3]{%
\iftablecaptiontop
#2\label{#1}\vskip\baselineskip
{\centering #3\par}%
\else
{\centering #3\par}%
\vskip\baselineskip
#2\label{#1}%
\fi
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\figureconts}
% \begin{macrocode}
\newcommand{\figureconts}[3]{%
{\centering #3\par}%
\vskip\baselineskip
#2\label{#1}%
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\includeteximage}
% Provide a command like \cs{includegraphics} that includes a
% file containing \LaTeX\ picture code (e.g.\ \sty{pgf}).
% \begin{macrocode}
\newcommand*{\includeteximage}[2][]{%
\def\Gin@req@sizes{%
\Gin@req@height\Gin@nat@height
\Gin@req@width\Gin@nat@width}%
\begingroup
\@tempswafalse
\let\input@path\Ginput@path
\toks@{\InputIfFileExists{#2}{}{\@warning{File `#1' not found}}}%
\setkeys{Gin}{#1}%
\Gin@esetsize
\the\toks@
\endgroup
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\ifprint}
% Provide command to check if this is the printed greyscale
% version or the online colour version.
% \begin{macrocode}
\providecommand{\ifprint}[2]{\ifgrayscale#1\else#2\fi}
% \end{macrocode}
%\end{macro}
%
% Modify \cs{includegraphics} so that it can pick up the greyscale
% version of images if this is the print version.
%% \begin{macrocode}
\ifjmlrhtml
\else
\let\@org@Ginclude@graphics\Ginclude@graphics
\def\Ginclude@graphics#1{%
\begingroup
\let\input@path\Ginput@path
\ifprint{\filename@parse{#1-gray}}{\filename@parse{#1}}%
\ifx\filename@ext\relax
\@for\Gin@temp:=\Gin@extensions\do{%
\ifx\Gin@ext\relax
\Gin@getbase\Gin@temp
\fi}%
\else
\ifprint{\filename@parse{#1}}{}%
\Gin@getbase{\Gin@sepdefault\filename@ext}%
\ifx\Gin@ext\relax
\@warning{File `#1' not found}%
\def\Gin@base{\filename@area\filename@base}%
\edef\Gin@ext{\Gin@sepdefault\filename@ext}%
\fi
\fi
\ifx\Gin@ext\relax
\ifprint{\@org@Ginclude@graphics{#1}}%
{%
\@latex@error{File `#1' not found}%
{I could not locate the file with any of these extensions:^^J%
\Gin@extensions^^J\@ehc}%
}%
\else
\@ifundefined{Gin@rule@\Gin@ext}%
{\ifx\Gin@rule@*\@undefined
\@latex@error{Unknown graphics extension: \Gin@ext}\@ehc
\else
\expandafter\Gin@setfile\Gin@rule@*{\Gin@base\Gin@ext}%
\fi}%
{\expandafter\expandafter\expandafter\Gin@setfile
\csname Gin@rule@\Gin@ext\endcsname{\Gin@base\Gin@ext}}%
\fi
\endgroup}
\fi
% \end{macrocode}
%
% The \env{algorithm} environment should float like a figure or table.
% It should use the same counter as the \env{algorithm2e} environment.
% \begin{macrocode}
\newenvironment{algorithm}[1][htbp]%
{%
\@algocf@init%
\@algocf@init@caption
\begin{algocf}[#1]%
\@algocf@start%
}%
{%
\@algocf@finish%
\@algocf@term@caption
\end{algocf}%
\@algocf@term
}
% \end{macrocode}
%
% Set the algorithm margin to zero.
% \begin{macrocode}
\setlength\algomargin{0pt}
% \end{macrocode}
%
%\begin{macro}{\artappendix}
% Switch to appendices in an article
% \begin{macrocode}
\newcommand{\artappendix}{\par
\setcounter{section}{0}
\setcounter{subsection}{0}
\def\thesection{\Alph{section}}
\def\presectionnum{Appendix~}%
}
% \end{macrocode}
%\end{macro}
% The default assumes a stand-alone article.
%\begin{macro}{\appendix}
% \begin{macrocode}
\let\appendix\artappendix
% \end{macrocode}
%\end{macro}
%
%\subsection{Proofs and Theorems}
% This code is taken from jmlr2e.sty
%\begin{macro}{\BlackBox}
% End of proof marker
% \begin{macrocode}
\newcommand{\BlackBox}{\rule{1.5ex}{1.5ex}}
% \end{macrocode}
%\end{macro}
%\begin{environment}{proof}
% Proof environment
% \begin{macrocode}
\newenvironment{proof}{\par\noindent{\bfseries\upshape
Proof\ }}{\hfill\BlackBox\\[2mm]}
% \end{macrocode}
%\end{environment}
%\begin{environment}{example}
% \begin{macrocode}
\newtheorem{example}{Example}
% \end{macrocode}
%\end{environment}
%\begin{environment}{theorem}
% \begin{macrocode}
\newtheorem{theorem}{Theorem}
% \end{macrocode}
%\end{environment}
%\begin{environment}{lemma}
% \begin{macrocode}
\newtheorem{lemma}[theorem]{Lemma}
% \end{macrocode}
%\end{environment}
%\begin{environment}{proposition}
% \begin{macrocode}
\newtheorem{proposition}[theorem]{Proposition}
% \end{macrocode}
%\end{environment}
%\begin{environment}{remark}
% \begin{macrocode}
\newtheorem{remark}[theorem]{Remark}
% \end{macrocode}
%\end{environment}
%\begin{environment}{corollary}
% \begin{macrocode}
\newtheorem{corollary}[theorem]{Corollary}
% \end{macrocode}
%\end{environment}
%\begin{environment}{definition}
% \begin{macrocode}
\newtheorem{definition}[theorem]{Definition}
% \end{macrocode}
%\end{environment}
%\begin{environment}{conjecture}
% \begin{macrocode}
\newtheorem{conjecture}[theorem]{Conjecture}
% \end{macrocode}
%\end{environment}
%\begin{environment}{axiom}
% \begin{macrocode}
\newtheorem{axiom}[theorem]{Axiom}
% \end{macrocode}
%\end{environment}
%
%\begin{macro}{\vec}
% Redefine \cs{vec} to produce a bold symbol
% \begin{macrocode}
\renewcommand*{\vec}[1]{\boldsymbol{#1}}
% \end{macrocode}
%\end{macro}
%
%\begin{environment}{enumerate*}
% Define an enumerate style environment where the nested environments
% all use the same counter. It uses the enumi counter.
% \begin{macrocode}
\newenvironment{enumerate*}%
{%
\ifnum\@enumdepth=0\relax
\setcounter{enumi}{0}%
\fi
\ifnum\@enumdepth>\thr@@
\@toodeep
\else
\advance\@enumdepth\@ne
\def\@enumctr{enumi}%
\list
{\labelenumi}%
{\@nmbrlisttrue\def\@listctr{enumi}%
\def\makelabel##1{\hss\llap{##1}}}%
\fi
}%
{\endlist}
% \end{macrocode}
%\end{environment}
%
%\begin{environment}{altdescription}
% Define a description like environment where the indent is
% computed from the widest label. The optional argument is
% the widest label.
% \begin{macrocode}
\newenvironment{altdescription}[1]%
{\list{}%
{%
\settowidth{\labelwidth}{\altdescriptionlabel{#1}}%
\setlength{\labelsep}{15pt}%
\setlength{\leftmargin}{2\labelsep}%
\addtolength{\leftmargin}{\labelwidth}%
\setlength{\rightmargin}{\labelsep}%
\let\makelabel\altdescriptionlabel
}%
}%
{\endlist}
\newcommand*{\altdescriptionlabel}[1]{\normalfont\bfseries #1\hfill}
% \end{macrocode}
%\end{environment}
%
%\begin{macro}{\mailto}
% Syntax: \cs{mailto}\marg{address}
% \begin{macrocode}
\newcommand*{\mailto}[1]{\texttt{#1}}
% \end{macrocode}
%\end{macro}
%
% The \sty{subfig} package breaks jmlrbook.cls, so define \ics{subfig}
% here. (This is fairly primitive.)
%\begin{macro}{\c@subfigure}
% Define subfigure counter:
% \begin{macrocode}
\newcounter{subfigure}
\@addtoreset{subfigure}{figure}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\thesubfigure}
% \begin{macrocode}
\renewcommand*{\thesubfigure}{\alph{subfigure}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\p@subfigure}
% \begin{macrocode}
\renewcommand*{\p@subfigure}{\expandafter\@p@subfigure}
\newcommand*{\@p@subfigure}[1]{%
\protect\@subfigurelabel{\thefigure}{\thesubfigure}%
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@subfigurelabel}
% Define how label appears.
% \begin{macrocode}
\newcommand*\@subfigurelabel[2]{#1\subfigurelabel{#2}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\subfigref}
% Reference the sub-figure without including the figure number.
% \begin{macrocode}
\newcommand*\@subfigref[1]{%
{%
\def\@subfigurelabel##1##2{\subfigurelabel{##2}}%
\ref{#1}%
}%
}
\newcommand*{\subfigref}[1]{%
\let\@objectname\@empty
\def\@objectref{}%
\let\@prevsep\@empty
\@for\@thislabel:=#1\do{%
\toks@{\@prevsep}%
\protected@edef\@objectref{\@objectref\the\toks@
\protect\@subfigref{\@thislabel}}%
\ifx\@objectname\@empty
\let\@objectname\@nil
\else
\let\@objectname\relax
\let\@prevsep\@jmlr@reflistsep
\fi
}%
\ifx\@objectname\relax
\let\@prevsep\@jmlr@reflistlastsep
\fi
\@objectref
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\subfigurelabel}
% \begin{macrocode}
\newcommand*{\subfigurelabel}[1]{(\emph{#1})}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\subfigure}
% \begin{macrocode}
\newcommand*{\subfigure}[1][]{%
\bgroup
\def\@subfigcap{#1}%
\@subfigure
}
\newcommand*{\@subfigure}[2][b]{%
\advance\c@figure by 1\relax
\refstepcounter{subfigure}%
\begin{tabular}[#1]{@{}c@{}}%
#2\\
\subfigurelabel{\thesubfigure}%
\ifx\@subfigcap\@empty
\else
\space\@subfigcap
\fi
\end{tabular}
\egroup
}
% \end{macrocode}
%\end{macro}
%
% Sub-tables:
%\begin{macro}{\c@subtable}
% Define subtable counter:
% \begin{macrocode}
\newcounter{subtable}
\@addtoreset{subtable}{table}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\thesubtable}
% \begin{macrocode}
\renewcommand*{\thesubtable}{\alph{subtable}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\p@subtable}
% \begin{macrocode}
\renewcommand*{\p@subtable}{\expandafter\@p@subtable}
\newcommand*{\@p@subtable}[1]{%
\protect\@subtablelabel{\thetable}{\thesubtable}%
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@subtablelabel}
% Define how label appears.
% \begin{macrocode}
\newcommand*\@subtablelabel[2]{#1\subtablelabel{#2}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\subtabref}
% Reference the sub-table without including the table number.
% \begin{macrocode}
\newcommand*\@subtabref[1]{%
{%
\def\@subtablelabel##1##2{\subtablelabel{##2}}%
\ref{#1}%
}%
}
\newcommand*{\subtabref}[1]{%
\let\@objectname\@empty
\def\@objectref{}%
\let\@prevsep\@empty
\@for\@thislabel:=#1\do{%
\toks@{\@prevsep}%
\protected@edef\@objectref{\@objectref\the\toks@
\protect\@subtabref{\@thislabel}}%
\ifx\@objectname\@empty
\let\@objectname\@nil
\else
\let\@objectname\relax
\let\@prevsep\@jmlr@reflistsep
\fi
}%
\ifx\@objectname\relax
\let\@prevsep\@jmlr@reflistlastsep
\fi
\@objectref
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\subtablelabel}
% \begin{macrocode}
\newcommand*{\subtablelabel}[1]{(\emph{#1})}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\subtable}
% \begin{macrocode}
\newcommand*{\subtable}[1][]{%
\def\@subtabcap{#1}%
\@subtable
}
\newcommand*{\@subtable}[2][t]{%
\refstepcounter{subtable}%
\begin{tabular}[#1]{@{}c@{}}%
\subtablelabel{\thesubtable}%
\ifx\@subtabcap\@empty
\else
\space\@subtabcap
\fi
\\#2%
\end{tabular}
}
% \end{macrocode}
%\end{macro}
%
%\subsection{Compatibility with combine.cls}
%
% Define chapters to make this class play nicely with \cls{combine}.
% These definitions are just copied from book.cls
% \begin{macrocode}
\newcounter{chapter}
\renewcommand\thechapter{\@arabic\c@chapter}
\newcommand\@chapapp{\chaptername}
% \end{macrocode}
% Add sections to the chapter reset.
% \begin{macrocode}
\@addtoreset{section}{chapter}
% \end{macrocode}
%\begin{macro}{\chaptermark}
% \begin{macrocode}
\newcommand*\chaptermark[1]{}
% \end{macrocode}
%\end{macro}
% Chapters should only be defined when we're combining documents
% into a book.
%\begin{macro}{\bookchapter}
% \begin{macrocode}
\newcommand\bookchapter{%
\if@openright\cleardoublepage\else\clearpage\fi
\thispagestyle{plain}%
\global\@topnum\z@
\@afterindentfalse
\secdef\@chapter\@schapter}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\artchapter}
% Disable chapters for articles.
% \begin{macrocode}
\newcommand\artchapter{%
\ClassError{jmlrwcp}{Chapters not permitted in articles}{}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\chapter}
% The default assumes a stand-alone document.
% \begin{macrocode}
\let\chapter\artchapter
% \end{macrocode}
%\end{macro}
% Label for the chapter entries in the toc.
% \begin{macrocode}
\def\@chaptoclabel{chapter}
% \end{macrocode}
%\begin{macro}{\@chapter}
% Numbered chapters
% \begin{macrocode}
\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
\refstepcounter{chapter}%
\typeout{\@chapapp\space\thechapter.}%
\addcontentsline{toc}{\@chaptoclabel}%
{\protect\numberline{\thechapter}#1}%
\else
\addcontentsline{toc}{\@chaptoclabel}{#1}%
\fi
\else
\addcontentsline{toc}{\@chaptoclabel}{#1}%
\fi
\chaptermark{#1}%
\addtocontents{lof}{\protect\addvspace{10\p@}}%
\addtocontents{lot}{\protect\addvspace{10\p@}}%
\if@twocolumn
\@topnewpage[\@makechapterhead{#2}]%
\else
\@makechapterhead{#2}%
\@afterheading
\fi}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\chaptertitleformat}
% Formats the chapter title
% \begin{macrocode}
\newcommand{\chaptertitleformat}[1]{%
\Huge\bfseries#1%
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\chapternumberformat}
% Formats the chapter number
% \begin{macrocode}
\newcommand{\chapternumberformat}[1]{%
\huge\bfseries \@chapapp\space#1\par\nobreak
\vskip 20\p@
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\chapterformat}
% Overall format for chapter headings
% \begin{macrocode}
\newcommand*{\chapterformat}{\raggedright}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\postchapterskip}
% Vertical gap after chapter heading
% \begin{macrocode}
\newlength\postchapterskip
\setlength\postchapterskip{40pt}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\prechapterskip}
% Vertical gap before chapter heading
% \begin{macrocode}
\newlength\prechapterskip
\setlength\prechapterskip{50pt}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@makechapterhead}
% Chapter heading for numbered chapters
% \begin{macrocode}
\def\@makechapterhead#1{%
\null\vskip\prechapterskip
{\parindent \z@ \normalfont\chapterformat
\ifnum \c@secnumdepth >\m@ne
\if@mainmatter
\chapternumberformat{\thechapter}%
\fi
\fi
\interlinepenalty\@M
\chaptertitleformat{#1}\par\nobreak
\vskip \postchapterskip
}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@schapter}
% Unnumbered chapters.
% \begin{macrocode}
\def\@schapter#1{\if@twocolumn
\@topnewpage[\@makeschapterhead{#1}]%
\else
\@makeschapterhead{#1}%
\@afterheading
\fi}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@makeschapterhead}
% Layout for unnumbered chapter headings
% \begin{macrocode}
\def\@makeschapterhead#1{%
\vspace*{\prechapterskip}%
{\parindent \z@
\normalfont\chapterformat
\interlinepenalty\@M
\chaptertitleformat{#1}\par\nobreak
\vskip \postchapterskip
}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\l@chapter}
% Format for chapter entry in toc
% \begin{macrocode}
\newcommand*\l@chapter[2]{%
\ifnum \c@tocdepth >\m@ne
\addpenalty{-\@highpenalty}%
\vskip 1.0em \@plus\p@
\setlength\@tempdima{1.5em}%
\begingroup
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode \large\bfseries
\advance\leftskip\@tempdima
\hskip -\leftskip
#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
\penalty\@highpenalty
\endgroup
\fi}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\l@appendix}
% Make appendix entries in the toc the same as that for chapters
% by default
% \begin{macrocode}
\let\l@appendix\l@chapter
% \end{macrocode}
%\end{macro}
%\begin{macro}{\chaptername}
% \begin{macrocode}
\newcommand\chaptername{Chapter}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\frontmatter}
% Start the front matter (in book)
% \begin{macrocode}
\newcommand\frontmatter{%
\cleardoublepage
\@mainmatterfalse
\pagenumbering{roman}%
\morefrontmatter
}
\newcommand\morefrontmatter{}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\mainmatter}
% Start the main matter (in book)
% \begin{macrocode}
\newcommand\mainmatter{%
\cleardoublepage
\@mainmattertrue
\pagenumbering{arabic}%
\moremainmatter
}
\newcommand\moremainmatter{}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\backmatter}
% Start the back matter (in book)
% \begin{macrocode}
\newcommand\backmatter{%
\if@openright
\cleardoublepage
\else
\clearpage
\fi
\@mainmatterfalse}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\booktableofcontents}
% This is for the main table of contents when using
% the combine class file, and is not for use in individual
% articles.
% \begin{macrocode}
\let\booktableofcontents\tableofcontents
% \end{macrocode}
%\end{macro}
%\begin{macro}{\arttableofcontents}
% Table of contents for individual articles.
% \begin{macrocode}
\let\arttableofcontents\tableofcontents
% \end{macrocode}
%\end{macro}
%\begin{macro}{\artpart}
% A part in an article
% \begin{macrocode}
\newcommand{\artpart}{%
\if@noskipsec \leavevmode\fi
\par
\addvspace{4ex}%
\@afterindentfalse
\secdef\@artpart\@sartpart
}
\let\@artpart\@part
\let\@sartpart\@spart
% \end{macrocode}
%\end{macro}
%\begin{macro}{\bookpart}
% A part in a book forming a collection of articles
% \begin{macrocode}
\newcommand\bookpart{%
\if@openright
\cleardoublepage
\else
\clearpage
\fi
\thispagestyle{plain}%
\if@twocolumn
\onecolumn
\@tempswatrue
\else
\@tempswafalse
\fi
\preparthook
\secdef\@bookpart\@sbookpart}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\parttitleformat}
% Format of the title for a part (in a book)
% \begin{macrocode}
\newcommand{\parttitleformat}[1]{%
\Huge\bfseries#1%
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\partnumberformat}
% Format of the part number (in a book)
% \begin{macrocode}
\newcommand{\partnumberformat}[1]{%
\Huge\bfseries \partname\nobreakspace#1\par\nobreak
\vskip 20\p@
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\preparthook}
% Hook at the start of a part (in a book)
% \begin{macrocode}
\newcommand{\preparthook}{\null\vfil}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\partformat}
% Overall format of part
% \begin{macrocode}
\renewcommand*{\partformat}{\centering}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@bookpart}
% Numbered book part format
% \begin{macrocode}
\def\@bookpart[#1]#2{%
\ifnum \c@secnumdepth >-2\relax
\refstepcounter{part}%
\addcontentsline{toc}{part}{\protect\numberline{\thepart}#1}%
\else
\addcontentsline{toc}{part}{#1}%
\fi
\markboth{}{}%
{\interlinepenalty \@M
\normalfont\partformat
\ifnum \c@secnumdepth >-2\relax
\partnumberformat{\thepart}%
\fi
\parttitleformat{#2}\par}%
\postparthook}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@sbookpart}
% Unnumbered book part format
% \begin{macrocode}
\def\@sbookpart#1{%
{\interlinepenalty \@M
\normalfont\partformat
\parttitleformat{#1}\par}%
\postparthook}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\postparthook}
% Hook after part heading
% \begin{macrocode}
\def\postparthook{\vfil\newpage
\if@twoside
\if@openright
\null
\thispagestyle{empty}%
\newpage
\fi
\fi
\if@tempswa
\twocolumn
\fi}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\bookappendix}
% Switch to appendices in book
% \begin{macrocode}
\newcommand\bookappendix{\par
\setcounter{table}{0}%
\setcounter{figure}{0}%
\zeroextracounters
\par
\gdef\theHchapter{\Alph {chapter}}%
\xdef\Hy@chapapp{\Hy@appendixstring}%
\setcounter{chapter}{0}%
\setcounter{section}{0}%
\gdef\@chapapp{\appendixname}%
\gdef\thechapter{\@Alph\c@chapter}%
\csname appendixmore\endcsname
}
% \end{macrocode}
%\end{macro}
% Define commands to switch between book/article modes
%\begin{macro}{\jmlrbookcommands}
% Switch to book commands
% \begin{macrocode}
\newcommand*{\jmlrbookcommands}{%
\let\part\bookpart
\let\chapter\bookchapter
\let\appendix\bookappendix
\let\tableofcontents\booktableofcontents
\def\thesection{\thechapter.\arabic{section}}%
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\jmlarticlecommands}
% Switch to article commands
% \begin{macrocode}
\newcommand*{\jmlrarticlecommands}{%
\let\part\artpart
\let\chapter\artchapter
\let\appendix\artappendix
\let\tableofcontents\arttableofcontents
\def\thesection{\arabic{section}}%
}
% \end{macrocode}
%\end{macro}
% Check for packages that are known to cause problems when
% combining articles into a book.
%\begin{macro}{\@jmlr@check@packages}
% \begin{macrocode}
\newcommand*{\@jmlr@check@packages}{%
\@ifpackageloaded{epsfig}{%
\ClassError{jmlr}{Obsolete package `epsfig' detected.
\MessageBreak
Please use \string\includegraphics\space to include images
instead}{}}{}%
\@ifpackageloaded{psfig}{%
\ClassError{jmlr}{Obsolete package `psfig' detected.
\MessageBreak
Please use \string\includegraphics\space to include images
instead}{}}{}%
\@ifpackageloaded{subfig}{%
\ClassError{jmlr}{Package `subfig' detected.\MessageBreak
This will cause a conflict if the article is incorporated
\MessageBreak
into a book using jmlbook.cls.
\MessageBreak
Please use \string\subfigure\space and
\string\subtable\space instead}{}}{}%
\@ifpackageloaded{theorem}{%
\ClassError{jmlr}{Package `theorem' detected.\MessageBreak
This can cause a conflict with other packages used by jmlr}{}}{}%
\@ifpackageloaded{pdfpages}{Package `pdfpages' detected.\MessageBreak
This can cause a problem for jmlrbook.}{}%
\@ifpackageloaded{geometry}{Package `geometry' detected.\MessageBreak
This can cause a problem for jmlrbook.}{}%
}
\AtBeginDocument{%
\@jmlr@check@packages
\let\@jmlr@check@packages\relax
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\jmlrSuppressPackageChecks}
% Don't check for potentially problematic packages.
% \begin{macrocode}
\newcommand*{\jmlrSuppressPackageChecks}{%
\let\@jmlr@check@packages\relax
}
% \end{macrocode}
%\end{macro}
%\iffalse
% \begin{macrocode}
%
% \end{macrocode}
%\fi
%\iffalse
% \begin{macrocode}
%<*jmlrbook.cls>
% \end{macrocode}
%\fi
%\section{jmlrbook.cls Code}
% Class file for books composed of articles using the \clsfmt{jmlr} class.
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
% \end{macrocode}
% Declare class:
% \begin{macrocode}
\ProvidesClass{jmlrbook}[2010/07/27 v1.07 (NLCT) JMLR Book Style]
% \end{macrocode}
% Need \sty{xkeyval} package to have key=value class options
% \begin{macrocode}
\RequirePackage{xkeyval}
% \end{macrocode}
% Some packages need to be loaded before \sty{hyperref} so provide a
% hook to do this:
% \begin{macrocode}
\newcommand*{\@prehyperref}{}
% \end{macrocode}
% Option to add stuff before \sty{hyperref} is loaded:
% \begin{macrocode}
\define@key{jmlrbook.cls}{prehyperref}{%
\renewcommand*{\@prehyperref}{#1}}
% \end{macrocode}
% Determine whether to select color or grayscale
% \begin{macrocode}
\newif\ifgrayscale
\grayscalefalse
\DeclareOptionX{color}{\grayscalefalse}
\DeclareOptionX{gray}{\grayscaletrue}
% \end{macrocode}
% Pass \clsopt{html} and \clsopt{nohtml} to \clsfmt{jmlr}.
% \begin{macrocode}
\DeclareOptionX{html}{\PassOptionsToClass{\CurrentOption}{jmlr}}
\DeclareOptionX{nohtml}{\PassOptionsToClass{\CurrentOption}{jmlr}}
% \end{macrocode}
% Pass \clsopt{wcp} and \clsopt{nowcp} options to \clsfmt{jmlr}.
% \begin{macrocode}
\DeclareOptionX{wcp}{\PassOptionsToClass{\CurrentOption}{jmlr}}
\DeclareOptionX{nowcp}{\PassOptionsToClass{\CurrentOption}{jmlr}}
% \end{macrocode}
% Pass \clsopt{tablecaptiontop} and \clsopt{tablecaptionbottom} options
% to \clsfmt{jmlr}.
% \begin{macrocode}
\DeclareOptionX{tablecaptiontop}{\PassOptionsToClass{\CurrentOption}{jmlr}}
\DeclareOptionX{tablecaptionbottom}{\PassOptionsToClass{\CurrentOption}{jmlr}}
% \end{macrocode}
% Process options
% \begin{macrocode}
\ProcessOptionsX
% \end{macrocode}
% If \ics{jmlrgrayscale} has been defined, let it override the
% class options. If it is defined, it should be set to 0 for the
% online version and any other number for the grayscale print
% version.
% \begin{macrocode}
\@ifundefined{jmlrgrayscale}{}%
{%
\ifnum\jmlrgrayscale=0\relax
\grayscalefalse
\else
\grayscaletrue
\fi
}
% \end{macrocode}
% Load \cls{combine} class. This requires a little bit of trickery.
% \begin{macrocode}
\let\@org@LoadClass\LoadClass
\def\LoadClass#1{\let\LoadClass\@org@LoadClass\@org@LoadClass{jmlr}}
\@org@LoadClass{combine}
% \end{macrocode}
% Requires \sty{combnat} to work with \sty{natbib}:
% \begin{macrocode}
\RequirePackage{combnat}
% \end{macrocode}
% Need to apply a patch to \sty{combnat} (this has now been fixed
% in \sty{combnat}, but user might be using an old version):
% \begin{macrocode}
\renewcommand\c@laNAT@parse[1]{{%
\let\protect=\@unexpandable@protect\let~\relax
\let\active@prefix=\@gobble
\xdef\NAT@temp{\csname b@#1\@extra@b@citeb\endcsname}}%
\expandafter\NAT@split\NAT@temp?????@@%
\expandafter\NAT@parse@date\NAT@date??????@@%
\ifciteindex\NAT@index\fi}
\renewcommand\c@lbNAT@parse[1]{{%
\let\protect=\@unexpandable@protect\let~\relax
\let\active@prefix=\@gobble
\xdef\NAT@temp{\csname B?\jobname?@#1\@extra@b@citeb\endcsname}}%
\expandafter\NAT@split\NAT@temp?????@@%
\expandafter\NAT@parse@date\NAT@date??????@@%
\ifciteindex\NAT@index\fi}
% \end{macrocode}
% Requires double spacing for the title page
% \begin{macrocode}
\RequirePackage{setspace}
% \end{macrocode}
% Do all the stuff that needs to be done before \sty{hyperref} is
% loaded:
% \begin{macrocode}
\@prehyperref
% \end{macrocode}
% Load \sty{hyperref}:
% \begin{macrocode}
\usepackage[colorlinks,
linkcolor=blue,
citecolor=blue,
urlcolor=magenta,
linktocpage,
plainpages=false]{hyperref}
\usepackage{nameref}
% \end{macrocode}
% If this is the print version, need to disable the hyperlinks
% \begin{macrocode}
\ifgrayscale
\hypersetup{draft}
\fi
% \end{macrocode}
% Switch on two-side mode
% \begin{macrocode}
\@twosidetrue
% \end{macrocode}
% Start new chapters on the right hand page:
% \begin{macrocode}
\newif\if@openright
\@openrighttrue
\newif\if@mainmatter
% \end{macrocode}
% Define commands that affect the formatting:
%\begin{macro}{\pagerule}
% Draw line across the text block.
% \begin{macrocode}
\newcommand*{\pagerule}[1][0pt]{\par\noindent
\rule[#1]{\linewidth}{2pt}\par}
% \end{macrocode}
%\end{macro}
% Cross-reference chapters:
% \begin{macrocode}
\newcommand*{\chapterrefname}{Chapter}
\newcommand*{\chaptersrefname}{Chapters}
% \end{macrocode}
%\begin{macro}{\chapterref}
% \begin{macrocode}
\newcommand*{\chapterref}[1]{%
\objectref{#1}{\chapterrefname}{\chaptersrefname}{}{}}
% \end{macrocode}
%\end{macro}
%
% Cross-referencing imported articles:
%\begin{macro}{\articlepageref}
% Page number of start of article
% \begin{macrocode}
\newcommand*{\articlepageref}[1]{%
\pageref{#1jmlrstart}%
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\articlepagesref}
% Page range of article
% \begin{macrocode}
\newcommand*{\articlepagesref}[1]{%
\pageref{#1jmlrstart}--\pageref{#1jmlrend}%
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@articlepagesref}
% Page range of article for use within the article
% \begin{macrocode}
\newcommand*{\@articlepagesref}{%
\pageref{jmlrstart}--\pageref{jmlrend}%
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\articletitleref}
% Reference the short title of an imported article
% \begin{macrocode}
\newcommand*{\articletitleref}[1]{\nameref{#1jmlrstart}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\articleauthorref}
% Reference the authors of an imported article
% \begin{macrocode}
\newcommand*{\articleauthorref}[1]{%
\@ifundefined{@jmlr@author@#1}%
{%
\ClassWarning{jmlrbook}{Label `#1' undefined}%
}%
{%
\@nameuse{@jmlr@author@#1}%
}%
}
% \end{macrocode}
%\end{macro}
%
% Part labels
% \begin{macrocode}
\newcommand*{\@parttoclabel}{part}
\newcommand*{\@partapp}{\partname}
% \end{macrocode}
%
% Extra title information
% \begin{macrocode}
\renewcommand*\jmlrtitlehook{%
\hypersetup{pdftitle={\@shorttitle}}%
\let\jmlrtitlehook\relax
}
\renewcommand*\jmlrauthorhook{%
\ifx\@sauthor\@empty
\hypersetup{pdfauthor={\@author}}%
\else
\hypersetup{pdfauthor={\@sauthor}}%
\fi
\let\jmlrauthorhook\relax
\let\@shortauthor\@empty
}
% \end{macrocode}
%\begin{macro}{\volume}
% \begin{macrocode}
\newcommand*{\@volume}{\@jmlrvolume}
\newcommand*{\volume}[1]{\renewcommand*{\@volume}{#1}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\issue}
% \begin{macrocode}
\newcommand*{\@issue}{\@jmlrissue}
\newcommand*{\issue}[1]{\renewcommand*{\@issue}{#1}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\thejmlrworkshop}
% Provided in the event that it's required for the title page.
% \begin{macrocode}
\newcommand*{\thejmlrworkshop}{\@jmlrworkshop}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\team}
% \begin{macrocode}
\newcommand*{\@team}{}
\newcommand*{\team}[1]{\renewcommand*{\@team}{#1}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@productioneditorname}
% \begin{macrocode}
\newcommand*{\@productioneditorname}{Production Editor}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\productioneditor}
% \begin{macrocode}
\newcommand*{\@productioneditor}{}
\newcommand*{\productioneditor}[1]{%
\renewcommand*{\@productioneditor}{#1}%
\renewcommand*{\@productioneditorname}{Production Editor}%
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\productioneditors}
% \begin{macrocode}
\newcommand*{\productioneditors}[1]{%
\renewcommand*{\@productioneditor}{#1}%
\renewcommand*{\@productioneditorname}{Production Editors}%
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\logo}
% Title page image
% \begin{macrocode}
\newcommand*{\@logo}{}
\newcommand*{\logo}[1]{\renewcommand*{\@logo}{#1}}
% \end{macrocode}
%\end{macro}
%
% Set article title
% \begin{macrocode}
\def\c@lbmaketitle{\jmlrmaketitle}
% \end{macrocode}
% The book's title:
%\begin{macro}{\maintitle}
% \begin{macrocode}
\newcommand*{\maintitle}{}
% \end{macrocode}
%\end{macro}
%
% Make it easier to modify the book's title page:
%\begin{macro}{\SetTitleElement}
% \begin{macrocode}
\newcommand*{\SetTitleElement}[3]{%
{%
\expandafter\ifx\csname @#1\endcsname\@empty
\else
#2\csname @#1\endcsname#3%
\fi
}%
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\IfTitleElement}
% Determine if the given element has been set:
% \begin{macrocode}
\newcommand{\IfTitleElement}[3]{%
\expandafter\ifx\csname @#1\endcsname\@empty
#2%
\else
#3%
\fi
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\titlebody}
% \begin{macrocode}
\newcommand{\titlebody}{%
\SetTitleElement{title}{\maintitlefont}{\postmaintitle}%
\SetTitleElement{volume}{\mainvolumefont}{\postmainvolume}%
\SetTitleElement{subtitle}{\mainsubtitlefont}{\postmainsubtitle}%
\SetTitleElement{logo}{\mainlogofont}{\postmainlogo}%
\SetTitleElement{team}{\mainteamfont}{\postmainteam}%
\SetTitleElement{author}{\mainauthorfont}{\postmainauthor}%
\SetTitleElement{productioneditor}{\mainproductioneditorfont}%
{\postmainproductioneditor}%
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\c@lamaketitle}
% \begin{macrocode}
\ifjmlrhtml
\renewcommand{\c@lamaketitle}{%
\HCode{}%
\HCode{}%
\HCode{}%
\@title\newline
\ifx\@volume\@empty
\else
Volume \@volume
\ifx\@subtitle\@empty\else: \fi
\fi
\@subtitle
\HCode{}%
\newline
\textbf{Editors: \@author}
\HCode{ | }%
\@logo
\HCode{ |
}%
\let\maintitle\@title
}
\else
\renewcommand{\c@lamaketitle}{%
\pagenumbering{alph}%
\pagestyle{empty}%
\begin{titlepage}%
\let\footnotesize\small
\let\footnoterule\relax
\let\footnote\thanks
\titlebody
\par
\@thanks
\end{titlepage}%
\setcounter{footnote}{0}%
\let\maintitle\@title
\c@lmtitlempty
}
\fi
% \end{macrocode}
%\end{macro}
%\begin{macro}{\maintitlefont}
% \begin{macrocode}
\renewcommand{\maintitlefont}{%
\null\vskip15pt\relax\par
\flushleft\Huge\bfseries\noindent}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\postmaintitle}
% \begin{macrocode}
\renewcommand{\postmaintitle}{%
\par\relax
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\mainvolumefont}
% \begin{macrocode}
\newcommand{\mainvolumefont}{%
\flushleft\noindent\LARGE\bfseries Volume
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\postmainvolume}
% \begin{macrocode}
\newcommand{\postmainvolume}{%
\IfTitleElement{subtitle}{}{:}\par\relax
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\mainissuefont}
% \begin{macrocode}
\newcommand{\mainissuefont}{%
\flushleft\noindent\LARGE\bfseries Issue
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\postmainissue}
% \begin{macrocode}
\newcommand{\postmainissue}{%
\par\relax
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\mainsubtitlefont}
% \begin{macrocode}
\newcommand{\mainsubtitlefont}{%
\flushleft\LARGE\bfseries\noindent}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\postmainsubtitle}
% \begin{macrocode}
\newcommand{\postmainsubtitle}{\par}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\mainlogofont}
% \begin{macrocode}
\newcommand{\mainlogofont}{%
\vfill
\begin{center}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\postmainlogo}
% \begin{macrocode}
\newcommand{\postmainlogo}{\end{center}\vfill\par}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\mainteamfont}
% \begin{macrocode}
\newcommand{\mainteamfont}{\flushleft\bfseries\Large\noindent}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\postmainteam}
% \begin{macrocode}
\newcommand{\postmainteam}{\par}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\mainauthorfont}
% \begin{macrocode}
\renewcommand{\mainauthorfont}{%
\flushleft\Large\itshape\doublespacing\noindent}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\postmainauthor}
% \begin{macrocode}
\renewcommand{\postmainauthor}{%
\par}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\mainproductioneditorfont}
% \begin{macrocode}
\newcommand{\mainproductioneditorfont}{%
\flushleft\Large\noindent \@productioneditorname: \itshape}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\postmainproductioneditor}
% \begin{macrocode}
\newcommand{\postmainproductioneditor}{\par}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\maindatefont}
% \begin{macrocode}
\renewcommand{\maindatefont}{}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\postmaindate}
% \begin{macrocode}
\renewcommand{\postmaindate}{}
% \end{macrocode}
%\end{macro}
%
%\begin{environment}{signoff}
% Editorial team listed at the end of a preface etc. The mandatory
% argument is the date, the optional argument is the team title.
% Each editor should be separated with \ics{Editor}.
% \begin{macrocode}
\newenvironment{signoff}[2][The Editorial Team]{%
\def\Editor##1{\begin{tabular}{@{}l@{}}%
##1%
\end{tabular}%
\par\vskip\baselineskip\noindent\ignorespaces
}%
\def\@editorialteam{#1}%
\def\@signoffdate{#2}%
\par\vskip\baselineskip\noindent
\ifx\@signoffdate\@empty
\else
\emph{\@signoffdate}\par
\vskip\baselineskip\noindent
\fi
\ifx\@editorialteam\@empty
\else
\@editorialteam:\par\vskip\baselineskip
\fi
\noindent\ignorespaces
}{%
}
% \end{macrocode}
%\end{environment}
%\begin{environment}{authorsignoff}
% An author can sign off at the end of a chapter (such as a
% foreword).
% Each author should be separated with \ics{Author}.
% \begin{macrocode}
\newenvironment{authorsignoff}{%
\def\Author##1{\begin{tabular}{@{}l@{}}%
##1%
\end{tabular}%
\par\vskip\baselineskip\noindent\ignorespaces
}%
\par\vskip\baselineskip\noindent\ignorespaces
}{%
}
% \end{macrocode}
%\end{environment}
%
%\begin{macro}{\seroextracounters}
% Reset counters at the start of each imported article
% \begin{macrocode}
\renewcommand{\zeroextracounters}{%
\@ifundefined{c@theorem}{}{\setcounter{theorem}{0}}%
\@ifundefined{c@algorithm}{}{\setcounter{algorithm}{0}}%
\@ifundefined{c@example}{}{\setcounter{example}{0}}%
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\contentsname}
% Redcfine title of the table of contents
% \begin{macrocode}
\renewcommand*{\contentsname}{Table of Contents}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\theHalgorithm}
% \begin{macrocode}
\def\theHalgorithm{\thechapter.\thealgorithm}
% \end{macrocode}
%\end{macro}
\def\theHexample{\thechapter.\theexample}
\def\theHtheorem{\thechapter.\thetheorem}
%\begin{macro}{\theHsection}
% \begin{macrocode}
\def\theHsection{\thechapter.\thesection}
\def\theHsubsection{\thechapter.\thesubsection}
\def\theHsubsubsection{\thechapter.\thesubsubsection}
\def\theHparagraph{\thechapter.\theparagraph}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\theHsubfigure}
% \begin{macrocode}
\def\theHsubfigure{\thechapter.\thefigure.\thesubfigure}
\def\theHsubtable{\thechapter.\thetable.\thesubtable}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\mailto}
% \begin{macrocode}
\renewcommand*{\mailto}[1]{%
\href{mailto:#1}{\nolinkurl{#1}}%
}
% \end{macrocode}
%\end{macro}
% \begin{macrocode}
\c@lhaschapterfalse
\let\c@lthesec\thesection
% \end{macrocode}
% Make sure the hyperlinks work
%\begin{macro}{\doimportchapterHref}
% \begin{macrocode}
\newcommand\doimportchapterHref{%
\edef\@currentHref{chapter.\thechapter}%
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\toclevel@appendix}
% Set the toc level for the main appendices
% \begin{macrocode}
\def\toclevel@appendix{-1}
% \end{macrocode}
%\end{macro}
%
% \sty{hyperref} and \cls{combine} don't play nicely
% need to fudge the cross-referencing a bit.
%\begin{macro}{\Xprefix}
% \begin{macrocode}
\def\Xprefix{}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\Xref}
% \begin{macrocode}
\DeclareRobustCommand\Xref{\@ifstar\@Xrefstar\T@Xref}%
% \end{macrocode}
%\end{macro}
%\begin{macro}{\Xpageref}
% \begin{macrocode}
\DeclareRobustCommand\Xpageref{%
\@ifstar\@Xpagerefstar\T@Xpageref
}%
% \end{macrocode}
%\end{macro}
%\begin{macro}{\HyRef@StarSetXRef}
% \begin{macrocode}
\def\HyRef@StarSetXRef#1{%
\begingroup
\Hy@safe@activestrue
\edef\x{#1}%
\@onelevel@sanitize\x
\edef\x{\endgroup
\noexpand\HyRef@@StarSetRef
\expandafter\noexpand\csname r@\Xprefix\x\endcsname{\x}%
}%
\x
}
% \end{macocode}
%\end{macro}
%
%\begin{macro}{\@Xrefstar}
% \begin{macrocode}
\def\@Xrefstar#1{%
\HyRef@StarSetXRef{#1}\@firstoffive
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@Xpagerefstar}
% \begin{macrocode}
\def\@Xpagerefstar#1{%
\HyRef@StarSetXRef{#1}\@secondoffive
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\T@Xref}
% \begin{macrocode}
\def\T@Xref#1{%
\Hy@safe@activestrue
\expandafter\@setXref\csname r@\Xprefix#1\endcsname\@firstoffive{#1}%
\Hy@safe@activesfalse
}%
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\T@Xpageref}
% \begin{macrocode}
\def\T@Xpageref#1{%
\Hy@safe@activestrue
\expandafter\@setXref\csname r@\Xprefix#1\endcsname\@secondoffive{#1}%
\Hy@safe@activesfalse
}%
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\Xlabel}
% \begin{macrocode}
\def\Xlabel#1{%
\@bsphack
\begingroup
\@onelevel@sanitize\@currentlabelname
\edef\@currentlabelname{%
\expandafter\strip@period\@currentlabelname\relax.\relax\@@@
}%
\protected@write\@mainauxout{}{%
\string\newlabel{\Xprefix#1}{{\@currentlabel}{\thepage}%
{\@currentlabelname}{\@currentHref}{}}%
}%
\endgroup
\@esphack
}
\let\ltx@label\Xlabel
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@setXref}
% \begin{macrocode}
\def\@setXref#1#2#3{% csname, extract group, refname
\ifx#1\relax
\protect\G@refundefinedtrue
\nfss@text{\reset@font\bfseries ??}%
\@latex@warning{%
Reference `#3' on page \thepage \space undefined%
}%
\else
\expandafter\Hy@setref@link#1\@empty\@empty\@nil{#2}%
\fi
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@secondoffive}
% Something's redefining \cs{@secondoffive} incorrectly at the
% start of the document when hyperref's draft mode is on. Need
% to fix it.
% \begin{macrocode}
\AtBeginDocument{\renewcommand\@secondoffive[5]{#2}}
% \end{macrocode}
%\end{macro}
%
% Need to write imported chapter label to main auxfile.
%\begin{macro}{\@setimportlabel}
% \begin{macrocode}
\def\@setimportlabel{%
\let\@mainauxout\@auxout
\let\HRlabel\label
}
% \end{macrocode}
%\end{macro}
% \begin{macrocode}
\AtBeginDocument{%
\@setimportlabel
\gdef\@setimportlabel{\let\ref\Xref \let\pageref\Xpageref}%
\let\ReadBookmarks\relax
}
% \end{macrocode}
% Imported papers modify \ics{InputIfFileExists} so save original
% definition.
% \begin{macrocode}
\let\@org@InputIfFileExists\InputIfFileExists
% \end{macrocode}
%
%\begin{environment}{jmlrpapers}
% \begin{macrocode}
\newenvironment{jmlrpapers}{%
\begin{papers}[]
% \end{macrocode}
%\changes{1.07}{2010-07-30}{Added check for two column style}
% \begin{macrocode}
\if@twocolumn
\def\@jmlr@restore{\twocolumn}%
\else
\def\@jmlr@restore{\onecolumn}%
\fi
\jmlrarticlecommands
\let\importpubpaper\@importpubpaper
\let\importpaper\@importpaper
\let\importarticle\@importarticle
\let\label\Xlabel
\let\ref\Xref
\pagestyle{article}%
}{%
\@jmlr@restore
\end{papers}
}
% \end{macrocode}
%\end{environment}
%
%\begin{macro}{\addtomaincontents}
% \begin{macrocode}
\newcommand{\addtomaincontents}[2]{%
\protected@write\@mainauxout{\let\label\@gobble\let\index\@gobble
\let\glossary\@gobble}{\string\@writefile{#1}{#2}}%
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@write@author}
% \begin{macrocode}
\newcommand*{\@write@author}[2]{%
\def\@jmlr@authors@sep{ and }%
\protected@write\@mainauxout{}{%
\string\@new@articleauthor{#1}{#2}%
}%
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@new@articleauthor}
% \begin{macrocode}
\newcommand*{\@new@articleauthor}[2]{%
\expandafter\gdef\csname @jmlr@author@#1\endcsname{%
\hyperref[#1jmlrstart]{#2}}%
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\@write@jmlr@import}
% The accompanying \app{makejmlrbook} Perl script scans the aux file
% for information. Any articles imported using \ics{importpubpaper},
% \ics{importpaper} or \ics{importarticle} need to write the
% relevant information to the aux file.
% \begin{macrocode}
\newcommand*{\@write@jmlr@import}[3]{%
\protected@write\@mainauxout{}{\string\@jmlr@import{#1}{#2}{#3}}%
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@jmlr@import}
% \LaTeX\ should ignore \cs{@jmlr@import} as it's only needed for
% \app{makejmlrbook}:
% \begin{macrocode}
\newcommand*{\@jmlr@import}[3]{}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\importpubpaper}
% Import a document that has already been published.
% Syntax: \cs{importpubpaper}\oarg{label}\marg{dir}\marg{file}\marg{pages}
% where \meta{dir} is the directory in which the paper is located,
% \meta{file} is the name of the file and \meta{pages} indicates
% the page range \emph{for the original version}. The optional
% argument is a label. This is used to prefix the labels and
% citations in the document so they don't clash with other imported
% articles. If omitted, \meta{dir}/\meta{file} is used instead.
% \begin{macrocode}
\newcommand*{\@importpubpaper}[4][\@importdir\@importfile]{%
\bgroup
\def\@importdir{#2/}%
\def\@importfile{#3}%
\@write@jmlr@import{#1}{#2}{#3}%
\def\@extra@b@citeb{#1}%
\def\@extra@binfo{#1}%
\jmlrpages{#4}%
\graphicspath{{\@importdir}}%
\def\jmlrmaketitlehook{%
\refstepcounter{chapter}%
\addtomaincontents{toc}%
{\protect\contentsline{papertitle}{\@shorttitle}{\thepage}%
{page.\thepage}}%
\pdfbookmark{\@shorttitle}{chapter.\thechapter}%
\def\@jmlr@authors@sep{ \& }%
\tocchapterpubauthor{\@jmlrauthors}%
{%
\@jmlrabbrvproceedings
\ifx\@jmlrvolume\@empty
\ifx\@jmlrpages\@empty\else\space\fi
\else
\space\@jmlrvolume
\ifx\@jmlrpages\@empty\else:\fi
\fi
\ifx\@jmlrpages\@empty
\else
\@jmlrpages
\ifx\@jmlryear\@empty\else,\fi
\fi
\space\@jmlryear
}%
\@write@author{#1}{\@jmlrauthors}%
}%
\def\jmlrpremaketitlehook{%
\cleardoublepage
\phantomsection
\let\@currentlabelname\@shorttitle
}%
\def\InputIfFileExists##1##2##3{%
\IfFileExists{##1}{%
\@org@InputIfFileExists{##1}{##2}{##3}%
}%
{%
\@org@InputIfFileExists{\@importdir##1}{##2}{##3}%
}%
}%
\def\Xprefix{#1}%
\import{\@importdir\@importfile}%
\def\Xprefix{}%
\egroup
\gdef\@shortauthor{}%
\gdef\@shorttitle{}%
\gdef\@firstauthor{}%
\gdef\@jmlrauthors{}%
\gdef\@firstsurname{}%
}
\newcommand{\importpubpaper}[4][]{%
\ClassError{jmlrbook}{\string\importpubpaper\space
not permitted outside `jmlrpapers' environment}{}%
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\importpaper}
% Like \cs{importpubpaper} but sets the pages to the page-range for
% this book.
% \begin{macrocode}
\newcommand{\@importpaper}[3][\@importdir\@importfile]{%
\bgroup
\def\@importdir{#2/}%
\def\@importfile{#3}%
\@write@jmlr@import{#1}{#2}{#3}%
\def\@extra@b@citeb{#1}%
\def\@extra@binfo{#1}%
\jmlrpages{\protect\@articlepagesref}%
\graphicspath{{\@importdir}}%
\def\jmlrmaketitlehook{%
\refstepcounter{chapter}%
\addtomaincontents{toc}%
{\protect\contentsline{papertitle}{\@shorttitle}{\thepage}%
{page.\thepage}}%
\pdfbookmark{\@shorttitle}{chapter.\thechapter}%
\def\@jmlr@authors@sep{ \& }%
\tocchapterpubauthor{\@jmlrauthors}%
{%
\@jmlrabbrvproceedings
\ifx\@jmlrvolume\@empty
\space
\else
\space\@jmlrvolume:%
\fi
\protect\articlepagesref{#1}%
\ifx\@jmlryear\@empty\else,\fi
\space\@jmlryear
}%
\@write@author{#1}{\@jmlrauthors}%
}%
\def\jmlrpremaketitlehook{%
\cleardoublepage
\phantomsection
\let\@currentlabelname\@shorttitle
}%
\def\InputIfFileExists##1##2##3{%
\IfFileExists{##1}{%
\@org@InputIfFileExists{##1}{##2}{##3}%
}%
{%
\@org@InputIfFileExists{\@importdir##1}{##2}{##3}%
}%
}%
\def\Xprefix{#1}%
\import{\@importdir\@importfile}%
\def\Xprefix{}%
\egroup
\gdef\@shortauthor{}%
\gdef\@shorttitle{}%
\gdef\@firstauthor{}%
\gdef\@jmlrauthors{}%
\gdef\@firstsurname{}%
}
\newcommand{\importpaper}[3][]{%
\ClassError{jmlrbook}{\string\importpaper\space
not permitted outside `jmlrpapers' environment}{}%
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\importarticle}
% Import a document that hasn't been published.
% Syntax: \cs{importarticle}\oarg{label}\marg{dir}\marg{file}
% where \meta{dir} is the directory in which the paper is located and
% \meta{file} is the name of the file. The optional
% argument is a label. This is used to prefix the labels and
% citations in the document so they don't clash with other imported
% articles. If omitted, \meta{file} is used instead.
% \begin{macrocode}
\newcommand{\@importarticle}[3][\@importdir\@importfile]{%
\bgroup
\def\@importdir{#2/}%
\def\@importfile{#3}%
\@write@jmlr@import{#1}{#2}{#3}%
\def\@extra@b@citeb{#1}%
\def\@extra@binfo{#1}%
\def\jmlrmaketitlehook{%
\addtomaincontents{toc}%
{\protect\contentsline{papertitle}{\@shorttitle}{\thepage}%
{page.\thepage}}%
\refstepcounter{chapter}%
\pdfbookmark{\@shorttitle}{chapter.\thechapter}%
\def\@jmlr@authors@sep{ \& }%
\tocchapterauthor{\@jmlrauthors}%
\@write@author{#1}{\@jmlrauthors}%
\jmlrpages{}%
\jmlrvolume{}%
\jmlryear{}%
\jmlrsubmitted{}%
\jmlrpublished{}%
\jmlrproceedings{}{}%
}%
\def\jmlrpremaketitlehook{%
\cleardoublepage
\phantomsection
\let\@currentlabelname\@shorttitle
}%
\graphicspath{{\@importdir}}%
\def\InputIfFileExists##1##2##3{%
\IfFileExists{##1}{%
\@org@InputIfFileExists{##1}{##2}{##3}%
}%
{%
\@org@InputIfFileExists{\@importdir##1}{##2}{##3}%
}%
}%
\def\Xprefix{#1}%
\import{\@importdir\@importfile}%
\def\Xprefix{}%
\egroup
\gdef\@shortauthor{}%
\gdef\@shorttitle{}%
\gdef\@firstauthor{}%
\gdef\@jmlrauthors{}%
\gdef\@firstsurname{}%
}
\newcommand{\importarticle}[3][]{%
\ClassError{jmlrbook}{\string\importarticle\space
not permitted outside `jmlrpapers' environment}{}%
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\addtocpart}
% Add a part to the TOC without printing anything in the text
% (but does a \cs{cleardoublepage}).
% \begin{macrocode}
\newcommand{\addtocpart}[1]{%
\cleardoublepage
\refstepcounter{tocpart}%
\addtocontents{toc}{\protect\tocpart{#1}}%
\pdfbookmark[-1]{#1}{part.\thetocpart}%
}
\newcounter{tocpart}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\tocpart}
% Define the appearance of a part in the TOC.
% \begin{macrocode}
\newcommand{\tocpart}[1]{%
\addpenalty{-\@highpenalty}%
\vskip 1.0ex \@plus\p@
\setlength\@tempdima{2.25em}%
\begingroup
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode \large\bfseries
\advance\leftskip\@tempdima
\hskip -\leftskip
#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss \null}\par
\penalty\@highpenalty
\endgroup
}
% \end{macrocode}
%\end{macro}
%
% Set up the layout of the chapter headings
% \begin{macrocode}
\setlength{\prechapterskip}{3em}
\setlength{\postchapterskip}{20pt}
% \end{macrocode}
%
%\begin{macro}{\chapternumberformat}
% \begin{macrocode}
\renewcommand{\chapternumberformat}[1]{%
\Large\bfseries \@chapapp\space#1\par
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\chaptertitleformat}
% \begin{macrocode}
\renewcommand{\chaptertitleformat}[1]{%
\Large\bfseries #1}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\chapterformat}
% \begin{macrocode}
\renewcommand*{\chapterformat}{%
\raggedright
}
% \end{macrocode}
%\end{macro}
% Set up the format of a part in the book (not a part in an
% article).
%\begin{macro}{\preparthook}
% \begin{macrocode}
\renewcommand{\preparthook}{\cleardoublepage\null\vfil}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\partnumberformat}
% \begin{macrocode}
\renewcommand{\partnumberformat}[1]{%
\Huge\bfseries \@partapp\nobreakspace#1\par\nobreak
\vskip 20\p@
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\postparthook}
% \begin{macrocode}
\def\postparthook{%
\thispagestyle{empty}%
\vfil\newpage
\null
\thispagestyle{empty}%
\newpage
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\@curparthead}
% The heading of the current part
% \begin{macrocode}
\newcommand{\@curparthead}{}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\parttitleformat}
% \begin{macrocode}
\renewcommand{\parttitleformat}[1]{#1%
\gdef\@curparthead{\@partapp\space \thepart. #1}%
\@mkboth{\@curparthead}{\@curparthead}%
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\firstpageno}
% Change \cs{firstpageno} to do nothing as the page number will
% be determined by the book.
% \begin{macrocode}
\renewcommand{\firstpageno}[1]{}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\tocchapterauthor}
% Add the author of the current chapter to the table of contents.
% \begin{macrocode}
\newcommand{\tocchapterauthor}[1]{%
\addtomaincontents{toc}{\protect\contentsline{chapterauthor}{%
#1}{}{}}%
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\tocchapterpubauthor}
% Add the author of an imported prepublished paper to the
% table of contents. The first argument is the author (or list
% of authors). The second argument is the reference to the
% published article.
% \begin{macrocode}
\newcommand{\tocchapterpubauthor}[2]{%
\addtomaincontents{toc}{\protect\contentsline{chapterauthor}{%
#1; #2.}{}{}}%
}
% \end{macrocode}
%\end{macro}
%
% Set up the formatting in the TOC
% \begin{macrocode}
\renewcommand*\@pnumwidth{2em}
% \end{macrocode}
%
%\begin{macro}{\l@part}
% Format for book parts
% \begin{macrocode}
\renewcommand*\l@part[2]{%
\ifnum \c@tocdepth >\m@ne
\addpenalty{-\@highpenalty}%
\vskip 1.0em \@plus\p@
\setlength\@tempdima{5em}%
\vbox{%
\pagerule
\begingroup
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode \large\bfseries
\advance\leftskip\@tempdima
\hskip -\leftskip
\renewcommand*\numberline[1]{\hb@xt@ \@tempdima
{\partname\space ##1\hfil }}%
#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss }\par
\penalty\@highpenalty
\endgroup
\pagerule
}%
\fi}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\l@papertitle}
% \begin{macrocode}
\newcommand*{\l@papertitle}[2]{%
\ifnum \c@tocdepth >\m@ne
\addpenalty{-\@highpenalty}%
\vskip 1.0em \@plus\p@
\setlength\@tempdima{3em}%
\begingroup
\leavevmode \raggedright\itshape
#1\nobreak\hfill \nobreak\hb@xt@\@pnumwidth{\hss
\normalfont#2}%
\par
\penalty\@highpenalty
\endgroup
\fi
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\l@chapterauthor}
% \begin{macrocode}
\newcommand*\l@chapterauthor[2]{%
\ifnum \c@tocdepth >\m@ne
\addpenalty{-\@highpenalty}%
\begingroup
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode \raggedright
#1%
\par
\endgroup
\fi}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\l@section}
% \begin{macrocode}
\renewcommand*\l@section[2]{%
\ifnum \c@tocdepth >\m@ne
\addpenalty{-\@highpenalty}%
\vskip 1.0em \@plus\p@
\setlength\@tempdima{3em}%
\begingroup
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode \normalsize\mdseries
\advance\leftskip\@tempdima
\hskip -\leftskip
#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
\penalty\@highpenalty
\endgroup
\fi}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\l@subsection}
% \begin{macrocode}
\renewcommand*\l@subsection[2]{%
\ifnum \c@tocdepth >\m@ne
\addpenalty{-\@highpenalty}%
\vskip 1.0em \@plus\p@
\setlength\@tempdima{3.5em}%
\begingroup
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode \normalsize\mdseries
\advance\leftskip\@tempdima
\hskip -\leftskip
#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
\penalty\@highpenalty
\endgroup
\fi}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\chaptermark}
% \begin{macrocode}
\renewcommand*{\chaptermark}[1]{%
\@mkboth{\@curparthead}{\protect\thechapter. #1}%
}
% \end{macrocode}
%\end{macro}
%
% Set up page styles
%\begin{macro}{\firstpagehead}
% \begin{macrocode}
\newcommand{\firstpagehead}{}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\firstpagefoot}
% \begin{macrocode}
\newcommand{\firstpagefoot}{\hfill\thepage}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\headfont}
% Set the header font
% \begin{macrocode}
\renewcommand*{\headfont}{\reset@font\small\scshape}%
% \end{macrocode}
%\end{macro}
%\begin{macro}{\footfont}
% Set the footer font
% \begin{macrocode}
\renewcommand*{\footfont}{\reset@font\small\itshape}%
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\ps@chplain}
% Page style for first page of a chapter
% \begin{macrocode}
\newcommand*{\ps@chplain}{%
\let\@mkboth\@gobbletwo
\renewcommand*{\@oddhead}{\headfont\firstpagehead}%
\renewcommand*{\@evenhead}{}%
\renewcommand*{\@oddfoot}{\footfont\firstpagefoot}%
\renewcommand*{\@evenfoot}{\footfont\thepage\hfill
}%
}
\let\ps@plain\ps@chplain
% \end{macrocode}
%\end{macro}
%\begin{macro}{\ps@article}
% Page style for the imported articles.
% \begin{macrocode}
\newcommand*{\ps@article}{%
\let\@mkboth\@gobbletwo
\renewcommand*{\@oddhead}{\headfont\hfill\@shorttitle}%
\renewcommand*{\@evenhead}{\headfont\@shortauthor\hfill}%
\renewcommand*{\@oddfoot}{\footfont\hfill\thepage}
\renewcommand*{\@evenfoot}{\footfont\thepage\hfill}
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\ps@jmlrbook}
% Page style for book
% \begin{macrocode}
\newcommand*{\ps@jmlrbook}{%
\ps@headings
\renewcommand*{\sectionmark}[1]{}%
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\morefrontmatter}
% \begin{macrocode}
\renewcommand*{\morefrontmatter}{\pagestyle{jmlrbook}%
\def\chaptermark##1{%
\@mkboth{##1\hfill}{\hfill##1}}%
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\moremainmatter}
% \begin{macrocode}
\renewcommand*{\moremainmatter}{\pagestyle{jmlrbook}%
\def\chaptermark##1{%
\@mkboth{\@curparthead}{\protect\thechapter. ##1}%
}%
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\bibsection}
% Set the bibliography headings in the articles
% \begin{macrocode}
\renewcommand*\bibsection{\section*{\refname}}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\@bookpart}
% Define the layout of a book part
% \begin{macrocode}
\def\@bookpart[#1]#2{%
\ifnum \c@secnumdepth >-2\relax
\refstepcounter{part}%
\addcontentsline{toc}{\@parttoclabel}{%
\protect\numberline{\thepart}#1}%
\else
\addcontentsline{toc}{\@parttoclabel}{#1}%
\fi
\markboth{}{}%
{\interlinepenalty \@M
\normalfont\partformat
\ifnum \c@secnumdepth >-2\relax
\partnumberformat{\thepart}%
\fi
\parttitleformat{#2}\par}%
\postparthook}
% \end{macrocode}
%\end{macro}
%
% Set up the book commands:
% \begin{macrocode}
\jmlrbookcommands
% \end{macrocode}
%\iffalse
% \begin{macrocode}
%
% \end{macrocode}
%\fi
%\Finale
\endinput