%\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 2012/5/30 13:49
%\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         \~}
%</package>
%\fi
% \iffalse
% Doc-Source file to use with LaTeX2e
% Copyright (C) 2012 Nicola Talbot, all rights reserved.
% \fi
% \iffalse
%<*driver>
\documentclass[report]{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}

\doxitem{Option}{option}{package options}

\CheckSum{4533}
\OnlyDescription

\newcommand*{\appopt}[1]{\texttt{-{}-#1}}

\begin{document}
\DocInput{jmlr.dtx}
\end{document}
%</driver>
%\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{2012-05-30 (version 1.17)}
% \maketitle
%\tableofcontents
%
%\chapter{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}, \sty{theorem},
%\sty{tabularx} 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.
%
%\begin{important}
%Note that the \clsfmt{jmlr} (and therefore \clsfmt{jmlrbook}) class automatically loads
%the \sty{hyperref} package, but some packages need to be loaded
%before \sty{hyperref}.
%\end{important}
%
%Anything that needs to be done before \sty{hyperref} is loaded can be specified 
%by defining the command
%\begin{definition}[\DescribeMacro{\jmlrprehyperref}]
%\cs{jmlrprehyperref}
%\end{definition}
%\emph{before} the class is loaded. For
%example, to load the packages \styfmt{foo} and \styfmt{bar} before 
%\sty{hyperref}, you can do:
%\begin{verbatim}
%\newcommand{\jmlrprehyperref}{\usepackage{foo,bar}}
%\documentclass{jmlr}
%\end{verbatim}
%
%There is a Java application called \app{makejmlrbookgui} that can
%compile all the individual papers from the book and generate the
%accompanying HTML files for the JMLR proceedings page. It can also
%create a grey nonhyperlinked PDF/X compliant print version of the
%book. The application can be downloaded from
%\url{http://www.dickimaw-books.com/apps/makejmlrbookgui/} where
%there is also a
%\href{http://www.dickimaw-books.com/apps/makejmlrbookgui/manual/troubleshooting.html}{troubleshooting
%section}.
%
%There is also a Perl script called \app{makejmlrbook}, which is
%distributed with the \clsfmt{jmlr} and \clsfmt{jmlrbook} bundle,
%however it has been superseded by \app{makejmlrbookgui}. For those who
%still want to use it, \app{makejmlrbook} is described in
%\sectionref{sec:makejmlrbook}.
%
%
%\section{Required Packages}
%
%The \clsfmt{jmlr} class is based on the \cls{article} class and loads
%the following packages: \sty{amsmath}, \sty{amssymb},
%\sty{natbib}, \sty{url}, \sty{graphicx} and \sty{algorithm2e},
%\sty{hyperref}, \sty{nameref} and \sty{xkeyval}.
%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{combnat}, \sty{setspace} and \sty{fink}.
%
%The \app{makejmlrbookgui} application requires Java (at least
%JRE~7), \TeX, \TeX4HT and Ghostscript.
%The \app{makejmlrbook} script requires Perl, \TeX\ and \TeX4ht.
%
%\chapter{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[top]{tablecaption}}] in a \env{table} environment,
%\ics{floatconts} puts the caption at the top.
%
%\item[{\clsopt[bottom]{tablecaption}}] in a \env{table} environment,
%\ics{floatconts} puts the caption at the bottom.
%
%\end{description}
%
%\section{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}.
%If you want to force a line break in the title, use
%\begin{definition}[\DescribeMacro{\titlebreak}]
%\cs{titlebreak}
%\end{definition}
%instead of \cs{newline} or \verb|\\| as this will ensure that the
%line break doesn't also end up in the table of contents or bookmarks
%when the article is included in a book. If there is content within
%the title that should not appear in the page headings or table of
%contents (for example, a footnote) use
%\begin{definition}[\DescribeMacro{\titletag}]
%\cs{titletag}\marg{title only stuff}
%\end{definition}
%For example:
%\begin{verbatim}
%\title{An Interesting Paper\titlebreak
%With a Line Break\titletag{\thanks{and an
%acknowledgement}}}
%\end{verbatim}
%
%
%\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}\oarg{abbreviated 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. If the abbreviation of the name doesn't get parsed
%properly you can override the default using the optional argument. (See below for examples.)
%
%If there is any content within \meta{author's name} that shouldn't
%get copied to the header, footer or table of contents, it should be
%enclosed within the argument of
%\begin{definition}[\DescribeMacro{\nametag}]
%\cs{nametag}\marg{title only stuff}
%\end{definition}
%For example:
%\begin{verbatim}
%\Name{Ann Other\nametag{\thanks{formerly with some other
%institute}}}
%\end{verbatim}
%
%\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}
%
%\item[Example 4] The author is actually a company so there's no
%first name and surname:
%\begin{verbatim}
%\author{\Name[Some Company, Ltd]{Some Company, Ltd}\Email{xyz:some.com}\\
%  \addr Address
%}
%\end{verbatim}
%\end{description}
%
%\section{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}. (The obsolete font changing commands
%will produce a warning if used.)
%
%\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}.
%
%\section{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
%\chapter{Proof of Theorems}
%\end{verbatim}
%
%\section{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.
%
%\section{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{\bfseries 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 
%\linebreak\cs{includegraphics}. The main keys are: \texttt{width},
%\texttt{height}, \texttt{scale} and \texttt{angle}.
%
%\subsection{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}.
%
%\section{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.
%
%\section{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}
%
%\section{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}
%
%\section{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}
%\chapter{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.
%
%\section{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}
%
%\section{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}).
%
%\section{Where To Go For Help}
%
%If you have a general \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/}).
%The best place for queries about the \clsfmt{jmlr} class is the
%\qt{Document Classes} section of the \LaTeX\ Community Forum, as
%there's a high chance I'll see it there and help if I can. (Emails
%directly to me tend to get lost in my overcrowded inbox.)
%
%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.
%
%\chapter{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},
%\texttt{jmlrbook-sample.tex} and \texttt{proceedings-sample.tex}.
%All but the last two are articles using the \clsfmt{jmlr} class. The
%last two (\texttt{jmlrbook-sample.tex} and
%\texttt{proceedings-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{makejmlrbookgui} application to compile
%the book and create associated HTML files. See 
%\url{http://www.dickimaw-books.com/apps/makejmlrbookgui/} for details.
%
%\section{\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[top]{tablecaption}}] in a \env{table} environment,
%\ics{floatconts} puts the caption at the top.
%
%\item[{\clsopt[bottom]{tablecaption}}] 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{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}
%
%\section{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}\oarg{url}\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.) The optional argument, if present, is used by
%\app{makejmlrbookgui} to make the logo a link to \meta{url} on the
%index HTML page, otherwise it's ignored.
%
%\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.
%
%\section{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{preface}]
%\cs{begin}\{preface\}\oarg{filename}
%\end{definition}
%This environment may be used to typeset the preface. This starts a
%new chapter using
%\begin{verbatim}
%\chapter{\prefacename}
%\end{verbatim}
%\DescribeMacro{\prefacename}where \cs{prefacename} defaults to 
%``Preface''. This environment should typically go in the front
%matter and is provided to allow \app{makejmlrbookgui} create a
%standalone document for the preface. The optional argument is the
%filename (without any extension or path) that will be used by
%\app{makejmlrbookgui}. This defaults to \texttt{preface} but, to
%conform with JMLR guidelines, should be changed to the surname of
%the first author (editor) followed by the final two digits of the
%year. See the JMLR website for further details of the guidelines.
%
%\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. If you are using the \env{preface}
%environment described above, the \env{signoff} environment must go
%inside the \env{preface} environment.
%
%Within the \env{signoff} 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 (or inside the
%\env{jmlrpapers} environment).
%
%\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 (or inside the
%\env{jmlrpapers} environment).
%
%\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 (outside of the
%\env{jmlrpapers} environment) 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 (\emph{outside} of the
%\env{jmlrpapers} environment) this will switch to the book
%appendices. Subsequent \cs{chapter} commands will produce the
%appendices. (Any imported articles in the appendix will be
%identified by \app{makejmlrbookgui} as supplemental material.) If
%used within an imported article (or within the \env{jmlrpapers}
%environment) \cs{appendix} 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 and may be
%used as often as required. Take care not to include book sectioning
%commands, such as \ics{chapter}, in this environment. Within the
%\envfmt{jmlrpapers} 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 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}
%
%\subsection{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.
%
%\subsection{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 labelled \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.
%
%\section{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}
%
%\section{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. Different
%versions of the same package can also be a problem. To help
%counteract the problem caused by different papers using different
%versions of the \sty{algorithm2e} package, \sty{jmlrbook} defines
%most of the old style commands if they don't exist.
%
%Articles that use different input encodings can also cause a
%problem. For example, if one article uses \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. One thing to watch out for are bib files that contain a
%mixture of encodings caused by copying and pasting from different
%sources. Version~0.4.2b of \app{makejmlrbookgui} provides a function
%to search for characters outside the range 0x20 (space) and 0x7E
%(tilde).
%
%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.
%
%The \app{makejmlrbookgui} application provides some diagnostic
%tools, which can help detect some common problems. It's manual also
%has a
%\href{http://www.dickimaw-books.com/apps/makejmlrbookgui/manual/troubleshooting.html}{troubleshooting
%section}.
%
%\section{Creating the Book Using \appfmt{makejmlrbook}}
%\label{sec:makejmlrbook}
%
%\begin{important}
%The \app{makejmlrbook} script has been superseded by the 
%\app{makejmlrbookgui} application, which can be downloaded
%from \url{http://www.dickimaw-books.com/apps/makejmlrbookgui/}.
%\end{important}
%
%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.
%Note that I have only tested \app{makejmlrbook} on Linux.
%
%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[\appopt{online}] Generate the color on-line version (default).
%\item[\appopt{noonline}] Don't generate the color on-line version.
%\item[\appopt{print}] Generate the grayscale print version (default).
%\item[\appopt{noprint}] Don't generate the grayscale print version.
%\item[\appopt{html}] Generate the HTML files and the individual article
%PDFs (default).
%\item[\appopt{nohtml}] Don't generate the HTML files and the individual
%article PDFs.
%\item[\appopt{logourl} \meta{url}] Make the logo on the HTML index page link
%to \meta{url}.
%\item[\appopt{extractpreface}] Extract the preface as a standalone document
%with links in the HTML index. (Only has an effect if combined with
%\appopt{html} option.) This will only work if the preface has been put
%inside the \env{preface} environment with the \env{signoff}
%environment that each editor with \ics{Editor}.
%\item[\appopt{noextractpreface}] Don't try extracting the preface.
%(Default.)
%\item[\appopt{batchtex}] Run \TeX\ in batch mode.
%\item[\appopt{nobatchtex}] Don't run \TeX\ in batch mode (default).
%\item[\appopt{quieter}] Reduce chatter to STDOUT (doesn't eliminate
%all messages). This also runs \TeX\ in batch mode.
%\item[\appopt{noquieter}] Don't reduce messages to STDOUT (default).
%\item[\appopt{version}] Display the version number and exit.
%\item[\appopt{help}] List all available options.
%\end{description}
%
%There are also some more advanced options, but these haven't been
%fully tested:
%\begin{description}
%\item[\appopt{latexapp} \meta{name}] Application used to call \LaTeX.
%Defaults to \qt{pdflatex}.
%\item[\appopt{latexopt} \meta{string}] Options to pass to \LaTeX.
%\item[\appopt{format} \meta{string}] Output format (defaults to \qt{pdf}).
%This may need to be changed if you change the \LaTeX\ application.
%\item[\appopt{bibtexapp} \meta{name}] Application use to process the
%bibliography. Defaults to \qt{bibtex}.
%\item[\appopt{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 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}[2012/05/30 v1.17 (NLCT) Journal of Machine Learning Research]
%    \end{macrocode}
%\changes{1.10}{2011-01-05}{hyperref now loaded by jmlr instead of
%jmlrbook}
% 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{macro}{\jmlrprehyperref}
%\changes{1.12}{2012/01/05}{removed @ from name so it can be defined
%by user}
%    \begin{macrocode}
\providecommand*{\jmlrprehyperref}{}
%    \end{macrocode}
%\end{macro}
%\changes{1.12}{2012/01/05}{removed class option prehyperref}
% 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
}{}
\DeclareOptionX{color}{\grayscalefalse
  \PassOptionsToPackage{color}{xcolor}}
\DeclareOptionX{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
\DeclareOptionX{tablecaptiontop}{\tablecaptiontoptrue}
\DeclareOptionX{tablecaptionbottom}{\tablecaptiontopfalse}

\define@choicekey{jmlr.cls}{tablecaption}[\val\nr]{top,bottom}{%
  \ifcase\nr\relax
    \tablecaptiontoptrue
  \or
    \tablecaptiontopfalse
  \fi
}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\ifjmlrhtml}
% Determine if we are using \app{TeX4ht}:
%    \begin{macrocode}
\newif\ifjmlrhtml
\jmlrhtmlfalse
\DeclareOptionX{html}{\jmlrhtmltrue}
\DeclareOptionX{nohtml}{\jmlrhtmlfalse}
%    \end{macrocode}
%\end{macro}
% Normal font size (default is 11pt).
%\changes{1.10}{2011-01-05}{font size options don't pass option to
%class}
%    \begin{macrocode}
\def\pt@size{11pt}
\DeclareOptionX{10pt}{\renewcommand{\pt@size}{10pt}}
\DeclareOptionX{11pt}{\renewcommand{\pt@size}{11pt}}
\DeclareOptionX{12pt}{\renewcommand{\pt@size}{12pt}}
%    \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}
%\changes{1.11}{2011-03-24}{Fixed typo}
%    \begin{macrocode}
\newcommand*{\jmlrwcp}{%
  \jmlrproceedings{JMLR W\&CP}{JMLR: Workshop and Conference Proceedings}%
}
%    \end{macrocode}
%\end{macro}
% This isn't an article for a workshop:
%    \begin{macrocode}
\DeclareOptionX{nowcp}{\jmlrnowcp}
%    \end{macrocode}
% This is an article for a workshop
%    \begin{macrocode}
\DeclareOptionX{wcp}{\jmlrwcp}
%    \end{macrocode}
% The default paper size is letter, but provide $7 \times 10$in
% alternative:
%    \begin{macrocode}
\newif\ifviiXx
\viiXxfalse
\DeclareOptionX{7x10}{\viiXxtrue}
\DeclareOptionX{letterpaper}{\PassOptionsToPackage{letterpaper}{typearea}}
%    \end{macrocode}
% Pass all remaining options to \cls{article} class:
%    \begin{macrocode}
\DeclareOptionX*{\PassOptionsToClass{\CurrentOption}{article}}
%    \end{macrocode}
% Execute required options:
%    \begin{macrocode}
\ExecuteOptions{twoside,letterpaper}
%    \end{macrocode}
% Process options:
%    \begin{macrocode}
\ProcessOptionsX
%    \end{macrocode}
% Load \cls{article} class.
%\changes{1.10}{2011-01-05}{passed \cs{pt@size} when loading article
%class}
%    \begin{macrocode}
\LoadClass[\pt@size]{article}
%    \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}
% Need to add jmlr end document hook before natbib adds a
% \cs{clearpage} to it.
%    \begin{macrocode}
\AtEndDocument{\@jmlrenddoc}
%    \end{macrocode}
% Required packages:
%    \begin{macrocode}
\RequirePackage{amsmath}
\RequirePackage{amssymb}
\RequirePackage{natbib}
\RequirePackage{graphicx}
\RequirePackage{url}
\RequirePackage[x11names]{xcolor}
%    \end{macrocode}
% Allow old command names in the event that the proceedings contains
% a mixture of papers that use old and new versions. (This means
% that editors need to install the newer version.)
%    \begin{macrocode}
\RequirePackage[algo2e,ruled]{algorithm2e}
%    \end{macrocode}
% Do all the stuff that needs to be done before \sty{hyperref} is
% loaded:
%    \begin{macrocode}
\jmlrprehyperref
%    \end{macrocode}
% Do stuff that has to come immediately before \sty{hyperref} is
% loaded:
%\changes{1.13}{2012/02/25}{added \cs{@pre@hyperref}}
%    \begin{macrocode}
\@ifundefined{@pre@hyperref}{}{\@pre@hyperref}
%    \end{macrocode}
% Load \sty{hyperref}:
%    \begin{macrocode}
\usepackage{hyperref}
\usepackage{nameref}
%    \end{macrocode}
%    \begin{macrocode}
% Do stuff that has to come immediately after \sty{hyperref} and
% \sty{nameref} are loaded:
%\changes{1.16}{2012/05/15}{added \cs{@post@hyperref}}
\@ifundefined{@post@hyperref}{}{\@post@hyperref}
%    \end{macrocode}
% Set up hyperref options:
%    \begin{macrocode}
\hypersetup{colorlinks,
            linkcolor=blue,
            citecolor=blue,
            urlcolor=magenta,
            linktocpage,
            plainpages=false}
%    \end{macrocode}
%
% If this is the print version, need to disable the hyperlinks:
%    \begin{macrocode}
\ifgrayscale
  \hypersetup{draft}
\fi
%    \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{macro}{\section}
%    \begin{macrocode}
\renewcommand{\section}{\@startsection{section}{1}{\z@}%
   {-0.24in \@plus -1ex \@minus -.2ex}%
   {0.10in \@plus.2ex}%
   {\normalfont\rmfamily\bfseries\large\raggedright}%
}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\subsection}
%    \begin{macrocode}
\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
   {-0.20in \@plus -1ex \@minus -.2ex}%
   {0.08in \@plus .2ex}%
   {\normalfont\rmfamily\bfseries\normalsize\raggedright}%
}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\subsubsection}
%    \begin{macrocode}
\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
   {-0.18in \@plus -1ex \@minus -.2ex}%
   {0.08in \@plus .2ex}%
   {\normalfont\normalsize\rmfamily\mdseries\scshape\raggedright}%
}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\paragraph}
%    \begin{macrocode}
\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
   {1.5ex plus 0.5ex minus .2ex}%
   {-1em}%
   {\normalfont\normalsize\rmfamily\bfseries}%
}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\subparagraph}
%    \begin{macrocode}
\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\z@}%
   {1.5ex plus 0.5ex minus .2ex}%
   {-1em}%
   {\normalfont\normalsize\rmfamily\bfseries\itshape}}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\@seccntformat}
% Redefine the way the section number appears in the section
% heading.
%    \begin{macrocode}
\renewcommand*\@seccntformat[1]{%
  \csname pre#1num\endcsname
  \csname the#1\endcsname.\enskip
}
%    \end{macrocode}
%\end{macro}
%
%\subsection{Footnotes}
%\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}{\thanks}
%\changes{1.10}{2011-01-05}{Modified definition of \cs{thanks}}
%    \begin{macrocode}
\renewcommand*{\thanks}[1]{%
  \footnotemark
  \protected@xdef\@thanks{\@thanks 
    \protect\footnotetext{#1}}%
}
%    \end{macrocode}
%\end{macro}
%
%\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{<h3>}Abstract\HCode{</h3>}}{}%
\else
  \renewenvironment{abstract}
%    \end{macrocode}
%\changes{1.09}{2010/12/01}{changed \cs{centerline} to
%\cs{centering}\ldots\cs{par}}
%    \begin{macrocode}
  {{\centering\large\bfseries Abstract\par}\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}{\titlebreak}
%\changes{1.12}{2012/01/05}{new}
% Acts like new line in the paper title, but with jmlrbook acts like a space in
% the table of contents and bookmarks.
%    \begin{macrocode}
\newcommand*{\titlebreak}{\newline}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\titletag}
%\changes{1.17}{2012/05/30}{new}
%    \begin{macrocode}
\newcommand*{\titletag}[1]{}
%    \end{macrocode}
%\end{macro}
%
%\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}{\@shorttitle}
%\changes{1.12}{2012/01/05}{provided default value}
% The short title of the document is initialised to \cs{jobname} to
% ensure a basic document will compile even if no title is set.
%    \begin{macrocode}
\newcommand*{\@shorttitle}{\jobname}
%    \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}{\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\@gobble
\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\@jmlr@authors\@empty
    \sbox\jmlrbox{\let\addr\relax\@author}%
  \fi
  \noindent\HCode{<h2>}\@title\HCode{</h2>}
  \noindent\@jmlr@authors
}
%    \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}{\nametag}
%\changes{1.09}{2010/12/01}{new}
%    \begin{macrocode}
\newcommand*{\nametag}[1]{}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\jmlrpreauthor}
%\changes{1.09}{2010/12/01}{added \cs{nametag}}
%    \begin{macrocode}
\def\jmlrpreauthor{%
\bgroup
  \def\nametag##1{##1}%
  \def\and{\unskip\enspace{\normalfont and}\enspace}%
%    \end{macrocode}
%\changes{1.10}{2011-01-05}{added \cs{mdseries} to \cs{addr}}
%    \begin{macrocode}
  \def\addr{\mdseries\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\end@parsename{%
  \def\@tmp{#2}%
  \ifx\@tmp\@nnil
    \def\@surname{#1}%
    \let\@nextparsename\@parsenamenoop
  \else
    \@getinitial#1-\relax\relax\end@getinitial
    \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\end@parsename
}
\def\@parsenamenoop#1\end@parsename{}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\@getinitial}
%    \begin{macrocode}
\def\@getinitial#1#2-#3#4\end@getinitial{%
  \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)
%\changes{1.12}{2012/01/05}{added optional argument}
%    \begin{macrocode}
\newcommand*{\Name}[2][]{%
  \def\@authorlist{#1}%
  \def\@forenames{}%
  \def\@surname{}%
  \def\nametag##1{}%
  \@parsename#2 \@nil\end@parsename
  \ifx\@shortauthor\@empty
    \ifx\@sauthor\@empty
      \global\let\@shortauthor\@surname
      \global\let\@firstsurname\@surname
    \fi
    \ifx\@authorlist\@empty
      \protected@xdef\@jmlrauthors{\@initials\space\@surname}%
    \else
      \protected@xdef\@jmlrauthors{\@authorlist}%
    \fi
    \global\let\@firstauthor\@jmlrauthors
  \else
    \ifx\@sauthor\@empty
      \expandafter\toks@\expandafter{\@shortauthor}%
      \protected@xdef\@shortauthor{\the\toks@\space\@surname}%
    \fi
    \ifx\@authorlist\@empty
      \ifx\@jmlrauthors\@empty
        \protected@xdef\@jmlrauthors{\@initials\space\@surname}%
      \else
        \protected@xdef\@jmlrauthors{\@jmlrauthors
          \noexpand\@jmlr@authors@sep 
          \@initials\space\@surname}%
      \fi
    \else
      \ifx\@jmlrauthors\@empty
        \protected@xdef\@jmlrauthors{\@authorlist}%
      \else
        \protected@xdef\@jmlrauthors{\@jmlrauthors
          \noexpand\@jmlr@authors@sep 
          \@authorlist
        }%
      \fi
    \fi
  \fi
  \def\nametag##1{##1}%
  \@name #2%
}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\jmlrabbrnamelist}
%\changes{1.11}{2011-03-24}{new}
% Display list of names in abbreviated form. (Mainly designed for use with
% makejmlrbook for the preface authors.) The author should be
% grouped if the name contains a comma.
%    \begin{macrocode}
\newcommand*{\jmlrabbrnamelist}[1]{%
  \def\nametag##1{}%
  \def\@jmlr@authors@sep{, }%
  \def\@jmlr@namelist{}%
  \@for\@thisname:=#1\do{%
    \expandafter\@jmlrabbrname\expandafter{\@thisname}%
    \ifx\@jmlr@namelist\@empty
       \protected@edef\@jmlr@namelist{%
          \@initials\space\@surname
       }%
    \else
       \protected@edef\@jmlr@namelist{%
          \@jmlr@namelist
          \noexpand\@jmlr@authors@sep
          \@initials\space\@surname
       }%
    \fi
  }%
  \def\@jmlr@authors@sep{ \& }%
  \@jmlr@namelist
}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\@jmlrabbrname}
%    \begin{macrocode}
\newcommand*{\@jmlrabbrname}[1]{%
  \def\@initials{}%
  \def\@surname{}%
  \def\@forenames{}%
  \@parsename#1 \@nil\end@parsename
}
%    \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
  {%
    \def\titletag##1{##1}%
    \@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}
%\begin{macro}{\startpage}
%\changes{1.10}{2011-01-05}{new}
% If \cs{startpage} has been defined, use its value for the first
% page.
%    \begin{macrocode}
\@ifundefined{startpage}{}{\firstpageno{\startpage}}
%    \end{macrocode}
%\end{macro}
%
% Label end page.
%\begin{macro}{\@jmlrenddoc}
% Label end page
%    \begin{macrocode}
\newcommand*{\@jmlrenddoc}{%
  \phantomsection
  \protected@edef\@currentlabelname{end of \@shorttitle}%
  \label{jmlrend}\null
  \global\let\@reprint\@empty
}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\@titlefoot}
%\changes{1.09}{2010/12/01}{added \cs{@reprint}}
%    \begin{macrocode}
\newcommand*{\@titlefoot}{\scriptsize\copyright\space\@jmlryear
    \space\@jmlr@authors.\hfill
    \@reprint
}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\reprint}
%\changes{1.09}{2010/12/01}{new}
%    \begin{macrocode}
\let\@reprint\@empty
\newcommand{\reprint}[1]{%
  \gdef\@reprint{Reprinted with permission for JMLR#1}}
%    \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
       \ifx\@jmlrissue\@empty\else(\@jmlrissue)\fi
       \ifx\@jmlrpages\@empty
          \ifx\@jmlryear\@empty
          \else
             \if\@jmlrissue\@empty,\fi
          \fi
       \else
          :%
       \fi
    \fi
    \ifx\@jmlrpages\@empty
    \else
       \ifx\@jmlrvolume\@empty\space\fi
       \@jmlrpages
       \ifx\@jmlryear\@empty\else,\fi
    \fi
    \ifx\@jmlryear\@empty\else\space\@jmlryear\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:
%\changes{1.17}{2012/05/30}{changed initial definition to use
%\cs{providecommand}}
%    \begin{macrocode}
\providecommand*{\@jmlrvolume}{}
%    \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}
\providecommand*{\@jmlrissue}{}
%    \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:
%\changes{1.17}{2012/05/30}{changed initial definition to use
%\cs{providecommand}}
%    \begin{macrocode}
\providecommand*{\@jmlryear}{}
%    \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:
%\changes{1.17}{2012/05/30}{changed initial definition to use
%\cs{providecommand}}
%    \begin{macrocode}
\providecommand*\@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:
%\changes{1.17}{2012/05/30}{changed initial definition to use
%\cs{providecommand}}
%    \begin{macrocode}
\providecommand*\@jmlrsubmitted{}
%    \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:
%\changes{1.17}{2012/05/30}{changed initial definition to use
%\cs{providecommand}}
%    \begin{macrocode}
\providecommand*\@jmlrpublished{}
%    \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:
%\changes{1.17}{2012/05/30}{changed initial definition to use
%\cs{providecommand}}
%    \begin{macrocode}
\providecommand*\@jmlrworkshop{}
%    \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}{\@jmlr@authors}
%\changes{1.12}{2012/01/05}{new}
%    \begin{macrocode}
\newcommand*{\@jmlr@authors}{\@jmlrauthors}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\jmlrauthors}
% This is provided in case \cs{Name} doesn't set \cs{@jmlrauthors}
% correctly.
%\changes{1.12}{2012/01/05}{\cs{jmlrauthors} now redefines
%\cs{@jmlr@authors} instead of \cs{@jmlrauthors}}
%    \begin{macrocode}
\newcommand*{\jmlrauthors}[1]{\global\def\@jmlr@authors{#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}
\DeclareRobustCommand*{\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}{\algocfconts}
%\changes{1.09}{2010/12/01}{new}
%    \begin{macrocode}
\newcommand{\algocfconts}[3]{%
  \@algocf@pre@ruled
  #2\label{#1}\kern2pt\hrule height.8pt depth0pt\kern2pt%
  #3\@algocf@pre@ruled
}
%    \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.
%\changes{1.09}{2010/12/01}{caption set up so that it doesn't use a
%box}
%    \begin{macrocode}
\newenvironment{algorithm}[1][htbp]%
{%
  \begin{algocf}[#1]%
  \renewcommand\@makecaption[2]{%
    \hskip\AlCapHSkip
    \parbox[t]{\hsize}{\algocf@captiontext{##1}{##2}}%
  }%
}%
{%
  \end{algocf}%
}
%    \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}}
%    \end{macrocode}
%\changes{1.12}{2012/01/05}{added chapter to \cs{theHsection} to ensure unique
%hyperlink names in book}
%    \begin{macrocode}
  \def\theHsection{\theHchapter.\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}{\@subfloatcapbox}
% Box to store subfloat caption.
%    \begin{macrocode}
\newsavebox\@subfloatcapbox
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\@subfloatcontsbox}
% Box to store subfloat contents.
%    \begin{macrocode}
\newsavebox\@subfloatcontsbox
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\subfigure}
%    \begin{macrocode}
\newcommand*{\subfigure}[1][]{%
  \bgroup
  \def\@subfigcap{#1}%
  \@subfigure
}
%    \end{macrocode}
%\changes{1.09}{2010/12/01}{Added check to determine whether the
%subfigure caption is wider than the subfigure}
%    \begin{macrocode}
\newcommand*{\@subfigure}[2][b]{%
  \advance\c@figure by 1\relax
  \refstepcounter{subfigure}%
  \sbox\@subfloatcapbox{\subfigurelabel{\thesubfigure}%
  \ifx\@subfigcap\@empty
  \else
    \space\@subfigcap
  \fi}%
  \sbox\@subfloatcontsbox{#2}%
  \settowidth{\@tempdima}{\usebox\@subfloatcontsbox}%
  \settowidth{\@tempdimb}{\usebox\@subfloatcapbox}%
  \ifdim\@tempdimb>\@tempdima
    \settowidth\@tempdimb{\subfigurelabel{\thesubfigure}\space}%
    \addtolength{\@tempdima}{-\@tempdimb}%
    \sbox\@subfloatcapbox{\subfigurelabel{\thesubfigure}\space
      \parbox[t]{\@tempdima}{\@subfigcap}}%
  \fi
  \begin{tabular}[#1]{@{}c@{}}%
  \usebox\@subfloatcontsbox\\\usebox\@subfloatcapbox
  \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
}
%    \end{macrocode}
%\changes{1.09}{2010/12/01}{Added check to determine whether the
%subtable caption is wider than the subtable}
%    \begin{macrocode}
\newcommand*{\@subtable}[2][t]{%
  \refstepcounter{subtable}%
  \sbox\@subfloatcapbox{\subtablelabel{\thesubtable}%
  \ifx\@subtabcap\@empty
  \else
    \space\@subtabcap
  \fi}%
  \sbox\@subfloatcontsbox{#2}%
  \settowidth{\@tempdima}{\usebox\@subfloatcontsbox}%
  \settowidth{\@tempdimb}{\usebox\@subfloatcapbox}%
  \ifdim\@tempdimb>\@tempdima
    \settowidth\@tempdimb{\subtablelabel{\thesubtable}\space}%
    \addtolength{\@tempdima}{-\@tempdimb}%
    \sbox\@subfloatcapbox{\subtablelabel{\thesubtable}\space
      \parbox[t]{\@tempdima}{\@subtabcap}}%
  \fi
  \begin{tabular}[#1]{@{}c@{}}%
  \usebox\@subfloatcapbox\\\usebox\@subfloatcontsbox
  \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{jmlr}{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
                       \refstepcounter{chapter}%
                       \if@mainmatter
                         \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
  \renewcommand*{\theHchapter}{front-\thechapter}%
  \pagenumbering{roman}%
  \morefrontmatter
}
\newcommand\morefrontmatter{}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\mainmatter}
% Start the main matter (in book)
%    \begin{macrocode}
\newcommand\mainmatter{%
  \cleardoublepage
  \@mainmattertrue
  \setcounter{chapter}{0}%
  \renewcommand*{\theHchapter}{\thechapter}%
  \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}{\booktocpreamble}
%\changes{1.09}{2010/12/01}{new}
%    \begin{macrocode}
\newcommand*{\booktocpreamble}{}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\booktocpostamble}
%\changes{1.14}{2012-04-24}{new}
%    \begin{macrocode}
\newcommand*{\booktocpostamble}{}
%    \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.
%\changes{1.14}{2012-04-24}{reset page headers at end of toc}
%    \begin{macrocode}
\newcommand\booktableofcontents{%
  \if@twocolumn
    \@restonecoltrue\onecolumn
  \else
    \@restonecolfalse
  \fi
  \chapter*{\contentsname
    \@mkboth{\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
  \booktocpreamble
  \@starttoc{toc}%
  \booktocpostamble
  \if@restonecol
    \twocolumn
  \else
    \clearpage
  \fi
  \@mkboth{}{}%
}
%    \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}{%
%    \end{macrocode}
%\changes{1.10}{2011-01-05}{set \cs{toclevel@part}}
%    \begin{macrocode}
  \def\toclevel@part{0}%
  \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{%
%    \end{macrocode}
%\changes{1.10}{2011-01-05}{set \cs{toclevel@part}}
%    \begin{macrocode}
  \def\toclevel@part{-1}%
  \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}
%
% Part labels
%    \begin{macrocode}
\newcommand*{\@parttoclabel}{part}
%    \end{macrocode}
%
%\begin{macro}{\@partapp}
%\changes{1.09}{2010/12/01}{new}
%    \begin{macrocode}
\def\@partapp{\partname}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\partnumberformat}
% Format of the part number (in a book)
%    \begin{macrocode}
\newcommand{\partnumberformat}[1]{%
  \Huge\bfseries \@partapp\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}
\newcommand*{\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}{\@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}
%\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
%\changes{1.17}{2012/05/30}{added def \cs{@write@jmlr@import}}
%    \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}%
  \def\@write@jmlr@import{\@@write@jmlr@apdimport}%
  \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.}{}%
  \@ifpackageloaded{tabularx}{%
   \ClassError{jmlr}{Package `tabularx' detected.\MessageBreak
    This will break footnote links.}{}}{}%
}
\AtBeginDocument{%
\@jmlr@check@packages
\let\@jmlr@check@packages\relax
}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\jmlrSuppressPackageChecks}
% Don't check for potentially problematic packages.
% (If I find this in any paper sent to me for inclusion in a book,
% it will annoy me.)
%    \begin{macrocode}
\newcommand*{\jmlrSuppressPackageChecks}{%
  \let\@jmlr@check@packages\relax
}
%    \end{macrocode}
%\end{macro}
% Discourage authors from using obsolete commands:
%\begin{macro}{\obsoletefontcs}
%    \begin{macrocode}
\DeclareRobustCommand*{\obsoletefontcs}[1]{%
  \ClassWarning{jmlr}{Obsolete command 
    \expandafter\string\csname#1\endcsname\space detected.}%
  \csname #1 \endcsname
}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\bf}
%\changes{1.17}{2012/05/30}{added redefinition to produce obsolete warning}
%    \begin{macrocode}
\renewcommand*{\bf}{%
  \obsoletefontcs{bf}%
}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\it}
%\changes{1.17}{2012/05/30}{added redefinition to produce obsolete warning}
%    \begin{macrocode}
\renewcommand*{\it}{%
  \obsoletefontcs{it}%
}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\sc}
%\changes{1.17}{2012/05/30}{added redefinition to produce obsolete warning}
%    \begin{macrocode}
\renewcommand*{\sc}{%
  \obsoletefontcs{sc}%
}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\rm}
%\changes{1.17}{2012/05/30}{added redefinition to produce obsolete warning}
%    \begin{macrocode}
\renewcommand*{\rm}{%
  \obsoletefontcs{rm}%
}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\sf}
%\changes{1.17}{2012/05/30}{added redefinition to produce obsolete warning}
%    \begin{macrocode}
\renewcommand*{\sf}{%
  \obsoletefontcs{sf}%
}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\tt}
%\changes{1.17}{2012/05/30}{added redefinition to produce obsolete warning}
%    \begin{macrocode}
\renewcommand*{\tt}{%
  \obsoletefontcs{tt}%
}
%    \end{macrocode}
%\end{macro}
%\iffalse
%    \begin{macrocode}
%</jmlr.cls>
%    \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}[2012/05/30 v1.17 (NLCT) JMLR Book Style]
%    \end{macrocode}
% Need \sty{xkeyval} package to have key=value class options
%    \begin{macrocode}
\RequirePackage{xkeyval}
%    \end{macrocode}
% Requires double spacing for the title page
%    \begin{macrocode}
\RequirePackage{setspace}
%    \end{macrocode}
%
% Requires fink package to determine if the preface is in the main
% document or in a separate file.
%\changes{1.11}{2011-03-24}{fink package now required}
%    \begin{macrocode}
\RequirePackage{fink}
%    \end{macrocode}
% Some packages need to be loaded before \sty{hyperref} so provide a
% hook to do this:
%\changes{1.12}{2012/01/05}{changed \cs{newcommand} to \cs{providecommand}}
%    \begin{macrocode}
\providecommand*{\jmlrprehyperref}{}
%    \end{macrocode}
%\begin{macro}{\ifgrayscale}
% Determine whether to select color or grayscale
%    \begin{macrocode}
\newif\ifgrayscale
\grayscalefalse
%    \end{macrocode}
%\end{macro}
%\begin{option}{color}
%    \begin{macrocode}
\DeclareOptionX{color}{\grayscalefalse}
%    \end{macrocode}
%\end{option}
%\begin{option}{gray}
%    \begin{macrocode}
\DeclareOptionX{gray}{\grayscaletrue}
%    \end{macrocode}
%\end{option}
% Pass \clsopt{letterpaper} and \clsopt{7x10} to \clsfmt{jmlr}.
%\begin{option}{letterpaper}
%    \begin{macrocode}
\DeclareOptionX{letterpaper}{\PassOptionsToClass{\CurrentOption}{jmlr}}
%    \end{macrocode}
%\end{option}
%\begin{option}{7x10}
%    \begin{macrocode}
\DeclareOptionX{7x10}{\PassOptionsToClass{\CurrentOption}{jmlr}}
%    \end{macrocode}
%\end{option}
% Pass \clsopt{html} and \clsopt{nohtml} to \clsfmt{jmlr}.
% (Used by \app{makejmlrbookgui})
%\begin{option}{html}
%    \begin{macrocode}
\DeclareOptionX{html}{\PassOptionsToClass{\CurrentOption}{jmlr}}
%    \end{macrocode}
%\end{option}
%\begin{option}{nohtml}
%    \begin{macrocode}
\DeclareOptionX{nohtml}{\PassOptionsToClass{\CurrentOption}{jmlr}}
%    \end{macrocode}
%\end{option}
% Pass \clsopt{wcp} and \clsopt{nowcp} options to \clsfmt{jmlr}.
%\begin{option}{wcp}
%    \begin{macrocode}
\DeclareOptionX{wcp}{\PassOptionsToClass{\CurrentOption}{jmlr}}
%    \end{macrocode}
%\end{option}
%\begin{option}{nowcp}
%    \begin{macrocode}
\DeclareOptionX{nowcp}{\PassOptionsToClass{\CurrentOption}{jmlr}}
%    \end{macrocode}
%\end{option}
% Pass \clsopt{tablecaptiontop} and \clsopt{tablecaptionbottom} options
% to \clsfmt{jmlr}.
%\begin{option}{tablecaptiontop}
%    \begin{macrocode}
\DeclareOptionX{tablecaptiontop}{\PassOptionsToClass{\CurrentOption}{jmlr}}
%    \end{macrocode}
%\end{option}
%\begin{option}{tablecaptionbottom}
%    \begin{macrocode}
\DeclareOptionX{tablecaptionbottom}{\PassOptionsToClass{\CurrentOption}{jmlr}}
%    \end{macrocode}
%\end{option}
%
% Pass font size commands to \clsfmt{jmlr}
%\changes{1.10}{2011-01-05}{Added 10pt, 11pt and 12pt options to
%jmlrbook}
%\begin{option}{10pt}
%    \begin{macrocode}
\DeclareOptionX{10pt}{\PassOptionsToClass{\CurrentOption}{jmlr}}
%    \end{macrocode}
%\end{option}
%\begin{option}{11pt}
%    \begin{macrocode}
\DeclareOptionX{11pt}{\PassOptionsToClass{\CurrentOption}{jmlr}}
%    \end{macrocode}
%\end{option}
%\begin{option}{12pt}
%    \begin{macrocode}
\DeclareOptionX{12pt}{\PassOptionsToClass{\CurrentOption}{jmlr}}
%    \end{macrocode}
%\end{option}
%
%\begin{option}{pdfxa}
%\changes{1.13}{2012/02/25}{new}
%    \begin{macrocode}
\define@boolkey{jmlrbook.cls}[jmlr]{pdfxa}[true]{}
\jmlrpdfxafalse
%    \end{macrocode}
%\end{option}
% 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}
%
% This next bit is a modification of \sty{pdfx}. It's only used for
% the print version when the \clsopt{pdfxa} option is used.
%\changes{1.13}{2012/02/25}{added support for pdfx-1a}
%    \begin{macrocode}
\newcommand*{\jmlrwritepdfinfo}{%
   \protected@write\@auxout{}{\string\jmlrbook@info{\xmpAuthor}{\xmpTitle}}%
}
\ifgrayscale
  \ifjmlrpdfxa
   \def\convertDate{\getYear}
   {\catcode`\D=12
    \gdef\getYear D:#1#2#3#4{\edef\xYear{#1#2#3#4}\getMonth}
   }
   \def\getMonth#1#2{\edef\xMonth{#1#2}\getDay}
   \def\getDay#1#2{\edef\xDay{#1#2}\getHour}
   \def\getHour#1#2{\edef\xHour{#1#2}\getMin}
   \def\getMin#1#2{\edef\xMin{#1#2}\getSec}
   \def\getSec#1#2{\edef\xSec{#1#2}\getTZh}
   {%
     \catcode`\Z=12
     \gdef\tmpz{Z}
   }
  \def\hash{\expandafter\@gobble\string\#}%
  \def\amp{\expandafter\@gobble\string\&}%
  \def\xmpAmp{\amp\hash x0026;}%
  \def\sep{</rdf:li><rdf:li>}
  \def\TextCopyright{\amp\hash x00A9;}
  \def\Title#1{\gdef\xmpTitle{#1}}
   \let\xmpTitle\@empty
  \def\Author#1{\gdef\xmpAuthor{#1}}
   \let\xmpAuthor\@empty
  \def\Keywords#1{\gdef\xmpKeywords{#1}}
   \let\xmpKeywords\@empty
   \let\xmpSubject\xmpKeywords
  \def\Creator#1{\gdef\xmpCreator{#1}}
   \def\xmpCreator{\@pdfcreator}
  \def\Producer#1{\gdef\xmpProducer{#1}}
   \def\xmpProducer{pdfTeX}
  \def\Volume#1{\gdef\xmpVolume{#1}}
   \let\xmpVolume\@empty
  \def\Issue#1{\gdef\xmpIssue{#1}}
   \let\xmpIssue\@empty
  \def\CoverDisplayDate#1{\gdef\xmpCoverDisplayDate{#1}}
   \let\xmpCoverDisplayDate\@empty
  \def\CoverDate#1{\gdef\xmpCoverDate{#1}}
   \let\xmpCoverDate\@empty
  \def\Copyright#1{\gdef\xmpCopyright{#1}}
   \let\xmpCopyright\@empty
  \def\Doi#1{\gdef\xmpDoi{#1}}
   \let\xmpDoi\@empty
  \def\Lastpage#1{\gdef\xmpLastpage{#1}}
   \let\xmpLastpage\@empty
  \def\Firstpage#1{\gdef\xmpFirstpage{#1}}
   \let\xmpFirstpage\@empty
  \def\Journaltitle#1{\gdef\xmpJournaltitle{#1}}
   \let\xmpJournaltitle\@empty
  \def\Journalnumber#1{\gdef\xmpJournalnumber{#1}}
   \let\xmpJournalnumber\@empty
  \def\Org#1{\gdef\xmpOrg{#1}}
   \let\xmpOrg\@empty
  \def\CreatorTool#1{\gdef\xmpCreatorTool{#1}}
   \def\xmpCreatorTool{\xmpProducer}
  \def\AuthoritativeDomain#1{\gdef\xmpAuthoritativeDomain{#1}}
   \let\xmpAuthoritativeDomain\@empty
  \def\findUUID#1{\edef\tmpstring{\pdfmdfivesum{#1}}
       \expandafter\eightofnine\tmpstring\end}
  \def\eightofnine#1#2#3#4#5#6#7#8#9\end{%
       \xdef\eightchars{#1#2#3#4#5#6#7#8}
       \fouroffive#9\end}
  \def\fouroffive#1#2#3#4#5\end{\xdef\ffourchars{#1#2#3#4}
       \sfouroffive#5\end}
  \def\sfouroffive#1#2#3#4#5\end{\xdef\sfourchars{#1#2#3#4}
       \tfouroffive#5\end}
  \def\tfouroffive#1#2#3#4#5\end{\xdef\tfourchars{#1#2#3#4}
       \xdef\laststring{#5}}
  \def\uuid{\eightchars-%
            \ffourchars-%
            \sfourchars-%
            \tfourchars-%
            \laststring}
%    \end{macrocode}
%
%\begin{macro}{\getTZh}
%\changes{1.14}{2012-04-24}{fixed for times zones other than Z}
% This is a modification of the command from \sty{pdfx} that also
% works for zero and negative hours.
%    \begin{macrocode}
  \def\getTZh#1{%
    \def\TZprefix{#1}%
    \ifx\TZprefix\tmpz
      \def\xTZsign{+}%
      \def\xTZh{00}%
      \def\xTZm{00}%
      \let\getTZnext\doConvDate
    \else
      \let\xTZsign\TZprefix
      \let\getTZnext\getTZhm
    \fi
    \getTZnext
  }
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\getTZm}
% This is a modified version of the command from \sty{pdfx}.
%    \begin{macrocode}
  \def\getTZhm#1#2'#3#4'{%
      \edef\xTZh{#1#2}%
      \edef\xTZm{#3#4}%
    \doConvDate
  }
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\doConvDate}
% Defines the date using information derived from parsing
% \ics{pdfcreationdate}
%    \begin{macrocode}
  \def\doConvDate{%
      \edef\convDate{\xYear-\xMonth-\xDay
        T\xHour:\xMin:\xSec\xTZsign\xTZh:\xTZm}%
  }
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\@pre@hyperref}
% This macro contains a trimmed down version of \sty{pdfx}.
%    \begin{macrocode}
  \newcommand{\@pre@hyperref}{%
   \IfFileExists{FOGRA39L.icc}%
   {%
     \pdfminorversion=3
     \pdfpageattr{/MediaBox[0 0 595 793]
                  /BleedBox[0 0 595 793]
                  /TrimBox[25 20 570 773]}%
      \findUUID{\jobname.pdf}%
      \edef\xmpdocid{\uuid}%
      \findUUID{\pdfcreationdate}%
      \edef\xmpinstid{\uuid}%
      \InputIfFileExists{\jobname.xmpdata}{}{}%
      \RequirePackage{xmpincl}%
      \expandafter\convertDate\pdfcreationdate
      \def\@pctchar{\expandafter\@gobble\string\%}
      \def\@bchar{\expandafter\@gobble\string\\}
      \immediate\pdfobj stream attr{/N 4}  file{FOGRA39L.icc}
      \edef\OBJ@CVR{\the\pdflastobj}
      \pdfcatalog{/OutputIntents [ <<
       /Type/OutputIntent
       /S/GTS_PDFX
       /OutputCondition (FOGRA39)
       /OutputConditionIdentifier (FOGRA39 \@bchar(ISO Coated v2
        300\@pctchar\space \@bchar(ECI\@bchar)\@bchar))
       /DestOutputProfile \OBJ@CVR\space 0 R
       /RegistryName(http://www.color.org)
      >> ]}
      \input glyphtounicode.tex
      \input glyphtounicode-cmr.tex
      \pdfgentounicode=1
      \RequirePackage[draft,pdftex,pdfpagemode=UseNone,bookmarks=false]{hyperref}%
    }%
    {%
       \ClassError{jmlrbook}{Can't find `FOGRA39L.icc'}%
         {Download ISOcoated\string_v2\string_330\string_bas.icc from
         http://www.colormanagement.org/en/isoprofile.html
         Rename it FOGRA39L.icc and put it in the pdfx folder}%
    }%
  }
  \renewcommand*{\jmlrwritepdfinfo}{%
      \begingroup
        \let\&=\xmpAmp
        \IfFileExists{pdfx-1a.xmp}{%
           \pdfcompresslevel=0
         \immediate\pdfobj stream attr {/Type /Metadata /Subtype /XML}
         file{pdfx-1a.xmpi}
         \pdfcatalog{/Metadata \the\pdflastobj\space 0 R}
        }%
        {}%
      \endgroup
      \protected@write\@auxout{}{\string\jmlrbook@info{\xmpAuthor}{\xmpTitle}}%
      \pdfinfo{
          /Author(\xmpAuthor)%
          /Title(\xmpTitle)%
          /Creator(\xmpProducer)%
          /CreationDate(\convDate)%
          /ModDate(\convDate)%
          /Producer(\xmpProducer)%
          /Trapped /False
          /GTS_PDFXVersion (PDF/X-1:2001)%
          /GTS_PDFXConformance (PDF/X-1a:2001)%
      }%
  }
%    \end{macrocode}
%\end{macro}
%    \begin{macrocode}
  \fi
\fi
%    \end{macrocode}
%
%\begin{macro}{\jmlrbook@info}
%\changes{1.14}{2012-04-24}{new}
% Not needed (information provided for MakeJmlrBookGUI)
%    \begin{macrocode}
\newcommand*{\jmlrbook@info}[2]{}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\@post@hyperref}
%\changes{1.16}{2012/05/15}{new}
%    \begin{macrocode}
\newcommand*{\@post@hyperref}{%
  \let\@org@c@lenddoca\c@lenddoca
  \let\c@lenddoca\undefined
}
%    \end{macrocode}
%\end{macro}
%
% 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}
\let\c@lenddoca\@org@c@lenddoca
%    \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}
% 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}
%
%\begin{environment}{preface}
% The preface environment starts a new chapter but also writes
% information to the main aux file for \app{makejmlrbook}. The
% optional argument is the file name for the extracted preface.
%\changes{1.11}{2011-03-24}{new}
%\changes{1.13}{2012/02/25}{changed the chapter to an unnumbered one}
%    \begin{macrocode}
\ifjmlrhtml
  \newenvironment{preface}[1][preface]%
  {%
    \noindent\HCode{<h2>\prefacename</h2>}%
  }%
  {%
  }
\else
  \newenvironment{preface}[1][preface]%
  {%
    \chapter*{\prefacename}
    \protected@write\@mainauxout
      {}{\string\@prefacestart{\thepage}{\arabic{page}}}%
    \protected@write\@mainauxout{}{\string\@prefacefile{\finkpath}{#1}}%
  }%
  {%
    \protected@write\@mainauxout{}{\string\@prefaceend{\thepage}}%
  }
\fi
%    \end{macrocode}
%\end{environment}
%\begin{macro}{\prefacename}
%\changes{1.11}{2011-03-24}{new}
%    \begin{macrocode}
\newcommand*{\prefacename}{Preface}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\@prefacefile}
%    \begin{macrocode}
\newcommand*{\@prefacefile}[2]{}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\@prefacestart}
%    \begin{macrocode}
\newcommand*{\@prefacestart}[2]{}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\@prefaceend}
%    \begin{macrocode}
\newcommand*{\@prefaceend}[1]{}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\@prefaceeditor}
%    \begin{macrocode}
\newcommand*{\@prefaceeditor}[1]{}
%    \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}
%
% Extra title information
%    \begin{macrocode}
\renewcommand*\jmlrtitlehook{%
  \hypersetup{pdftitle={\@shorttitle}}%
  \let\xmpTitle\@shorttitle
  \let\jmlrtitlehook\relax
}
\renewcommand*\jmlrauthorhook{%
  \ifx\@sauthor\@empty
    \hypersetup{pdfauthor={\@author}}%
  \else
    \hypersetup{pdfauthor={\@sauthor}}%
  \fi
  \let\xmpAuthor\@sauthor
  \let\jmlrauthorhook\relax
  \let\@shortauthor\@empty
}
%    \end{macrocode}
%\begin{macro}{\subtitle}
%    \begin{macrocode}
\newcommand*{\@subtitle}{}
\newcommand*{\subtitle}[1]{\renewcommand*{\@subtitle}{#1}}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\volume}
%    \begin{macrocode}
\newcommand*{\@volume}{\@jmlrvolume}
\newcommand*{\volume}[1]{%
  \renewcommand*{\@volume}{#1}%
  \ifjmlrpdfxa
    \let\xmpVolume\@volume
  \fi
}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\jmlrissue}
%    \begin{macrocode}
\newcommand*{\@issue}{\@jmlrissue}
\newcommand*{\issue}[1]{%
  \renewcommand*{\@issue}{#1}%
  \ifjmlrpdfxa
    \let\xmpIssue\@issue
  \fi
}
%    \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
%\changes{1.17}{2012/05/30}{added optional argument}
%    \begin{macrocode}
\newcommand*{\@logo}{}
\newcommand*{\logo}[2][]{%
\ifjmlrhtml
  \def\@logo@tmp{#1}%
  \ifx\@logo@tmp\@empty
    \renewcommand*{\@logo}{#2}%
  \else
    \renewcommand*{\@logo}{\HCode{<a href="#1">}#2\HCode{</a>}}%
  \fi
\else
  \renewcommand*{\@logo}{#2}%
\fi
}
%    \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{<table cellpadding="2" cellspacing="2" border="0" width="100\%">}%
    \HCode{<tbody><tr><td valign="top">}%
    \HCode{<h1>}%
    \@title\newline
    \ifx\@jmlrvolume\@empty
      \ifx\@volume\@empty
      \else
        Volume \@volume
        \ifx\@subtitle\@empty\else: \fi
      \fi
    \else
        Volume \@jmlrvolume
        \ifx\@subtitle\@empty\else: \fi
    \fi
    \@subtitle
    \HCode{</h1>}%
    \newline
    \textbf{Editors: \@author}
    \HCode{</td><td valign="top">}%
    \@logo
    \HCode{</td></tr></tbody></table>}%
    \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}
\ifjmlrhtml
  \newenvironment{signoff}[2][The Editorial Team]{%
    \def\Editor##1{##1\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
  }%
  {%
  }%
\else
  \newenvironment{signoff}[2][The Editorial Team]{%
    \def\Editor##1{%
      \protected@write\@mainauxout{}{\string\@prefaceeditor{##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
  }%
  {%
  }
\fi
%    \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}{\zeroextracounters}
% Reset counters at the start of each imported article
%\changes{1.15}{2012/05/12}{added algocf and definition to reset}
%    \begin{macrocode}
\renewcommand{\zeroextracounters}{%
  \@ifundefined{c@theorem}{}{\setcounter{theorem}{0}}%
  \@ifundefined{c@algorithm}{}{\setcounter{algorithm}{0}}%
  \@ifundefined{c@algocf}{}{\setcounter{algocf}{0}}%
  \@ifundefined{c@example}{}{\setcounter{example}{0}}%
  \@ifundefined{c@definition}{}{\setcounter{definition}{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}
%\changes{1.12}{2012/01/05}{in definition, changed \cs{thechapter}
%to \cs{theHchapter}}
%    \begin{macrocode}
\def\theHalgorithm{\theHchapter.\thealgorithm}
%    \end{macrocode}
%\end{macro}
\def\theHexample{\theHchapter.\theexample}
\def\theHtheorem{\theHchapter.\thetheorem}
%\begin{macro}{\theHsection}
%    \begin{macrocode}
\def\theHsection{\theHchapter.\thesection}
\def\theHsubsection{\theHchapter.\thesubsection}
\def\theHsubsubsection{\theHchapter.\thesubsubsection}
\def\theHparagraph{\theHchapter.\theparagraph}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\theHsubfigure}
%    \begin{macrocode}
\def\theHsubfigure{\theHfigure.\arabic{subfigure}}
\def\theHsubtable{\theHtable.\arabic{subtable}}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\theHfootnote}
%\changes{1.12}{2012/01/05}{new}
%    \begin{macrocode}
\def\theHfootnote{\theHchapter.\alpha{footnote}}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\theHtable}
%\changes{1.12}{2012/01/05}{new}
%    \begin{macrocode}
\def\theHtable{\theHchapter.\arabic{table}}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\theHfigure}
%\changes{1.12}{2012/01/05}{new}
%    \begin{macrocode}
\def\theHfigure{\theHchapter.\arabic{figure}}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\theHalgocf}
%\changes{1.15}{2012/05/12}{new}
%    \begin{macrocode}
\def\theHalgocf{\theHchapter.\thealgocf}
%    \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}%
  \jmlrwritepdfinfo
  \let\jmlrwritepdfinfo\relax
}
%    \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{\@jmlrbegindoc}
%    \end{macrocode}
%\begin{macro}{\@jmlrbegindoc}
%    \begin{macrocode}
\newcommand*\@jmlrbegindoc{
  \@setimportlabel
  \gdef\@setimportlabel{\let\ref\Xref \let\pageref\Xpageref}%
  \let\ReadBookmarks\relax
}
%    \end{macrocode}
%\end{macro}
% Imported papers modify \ics{InputIfFileExists} so save original
% definition.
%    \begin{macrocode}
\let\@org@InputIfFileExists\InputIfFileExists
%    \end{macrocode}
%
%\begin{environment}{jmlrpapers}
%    \begin{macrocode}
\newenvironment{jmlrpapers}{%
%    \end{macrocode}
%\changes{1.09}{2010/12/01}{reset start and end document hook to avoid
%problems caused by packages defining duplicate commands etc}
%    \begin{macrocode}
\def\@begindocumenthook{%
  \@jmlrbegindoc
  \let\bibcite\c@lbNATbibcite
}
\def\@enddocumenthook{%
  \@jmlrenddoc
  \let\bibcite\c@lbNAT@testdef
}
  \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}{\@@write@jmlr@apdimport}
%\changes{1.17}{2012/05/30}{new}
% As above but for files imported in the appendix.
%    \begin{macrocode}
\newcommand*{\@@write@jmlr@apdimport}[3]{%
  \protected@write\@mainauxout{}{\string\@jmlr@apdimport{#1}{#2}{#3}}%
}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\@jmlr@apdimport}
%\changes{1.17}{2012/05/30}{new}
% As above but for files imported in the appendix.
% \LaTeX\ should ignore \cs{@jmlr@apdimport} as it's only needed for
% \app{makejmlrbookgui}:
%    \begin{macrocode}
\newcommand*{\@jmlr@apdimport}[3]{}
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\@write@jmlr@import}
% Initialise to \cs{@@write@jmlr@import} and switch to
% \cs{@@write@jmlr@apdimport} in the appendices.
%    \begin{macrocode}
\def\@write@jmlr@import{\@@write@jmlr@import}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\jmlrpremaketitlehook}
%\changes{1.09}{2010/12/01}{Moved redefinition outside of import
%macros}
% Redefine \cs{jmlrpremaketitlehook}
%    \begin{macrocode}
\def\jmlrpremaketitlehook{%
  \cleardoublepage
  \phantomsection
  \let\@currentlabelname\@shorttitle
%    \end{macrocode}
%\changes{1.09}{2010/12/01}{Moved \cs{refstepcounter} from
%\cs{jmlrmaketitlehook} to \cs{jmlrpremaketitlehook}}
%    \begin{macrocode}
  \refstepcounter{chapter}%
}%
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\jmlrimporthook}
% Hook just before document is imported.
%\changes{1.09}{2010/12/01}{new}
%    \begin{macrocode}
\newcommand*{\jmlrimporthook}{}
%    \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{%
%    \end{macrocode}
%\changes{1.09}{2010/12/01}{Added \cs{label} to \cs{jmlrmaketitlehook}}
%    \begin{macrocode}
      \label{}%
      \def\titlebreak{ }%
      \addtomaincontents{toc}%
%    \end{macrocode}
%\changes{1.12}{2012/01/05}{changed \cs{@shorttitle} to \cs{@title}}
%    \begin{macrocode}
        {%
          \protect\contentsline{papertitle}{\@title}{\thepage}%
	   {page.\thepage}}%
      \pdfbookmark{\@shorttitle}{chapter.\theHchapter}%
      \def\@jmlr@authors@sep{ \& }%
%    \end{macrocode}
%\changes{1.12}{2012/01/05}{changed \cs{@jmlrauthors} to \cs{@jmlr@authors}}
%    \begin{macrocode}
      \tocchapterpubauthor{\@jmlr@authors}%
      {%
        \@jmlrabbrvproceedings
        \ifx\@jmlrvolume\@empty
           \ifx\@jmlrpages\@empty\else\space\fi
        \else
           \space\@jmlrvolume
           \ifx\@jmlrissue\@empty
           \else
              (\@jmlrissue)%
           \fi
           \ifx\@jmlrpages\@empty\else:\fi
        \fi
        \ifx\@jmlrpages\@empty
        \else
           \@jmlrpages
           \ifx\@jmlryear\@empty\else,\fi
        \fi
        \space\@jmlryear
      }%
%    \end{macrocode}
%\changes{1.12}{2012/01/05}{changed \cs{@jmlrauthors} to \cs{@jmlr@authors}}
%    \begin{macrocode}
      \@write@author{#1}{\@jmlr@authors}%
    }%
    \def\InputIfFileExists##1##2##3{%
       \IfFileExists{##1}{%
          \@org@InputIfFileExists{##1}{##2}{##3}%
       }%
       {%
          \@org@InputIfFileExists{\@importdir##1}{##2}{##3}%
       }%
     }%
    \def\Xprefix{#1}%
    \jmlrimporthook
    \import{\@importdir\@importfile}%
    \def\Xprefix{}%
  \egroup
  \gdef\@shortauthor{}%
  \gdef\@shorttitle{}%
  \gdef\@firstauthor{}%
  \gdef\@jmlr@authors{\@jmlrauthors}%
  \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{%
%    \end{macrocode}
%\changes{1.09}{2010/12/01}{Added \cs{label} to \cs{jmlrmaketitlehook}}
%    \begin{macrocode}
      \label{}%
      \def\titlebreak{ }%
      \addtomaincontents{toc}%
%    \end{macrocode}
%\changes{1.12}{2012/01/05}{changed \cs{@shorttitle} to \cs{@title}}
%    \begin{macrocode}
        {%
          \protect\contentsline{papertitle}{\@title}{\thepage}%
	   {page.\thepage}}%
      \pdfbookmark{\@shorttitle}{chapter.\theHchapter}%
      \def\@jmlr@authors@sep{ \& }%
%    \end{macrocode}
%\changes{1.12}{2012/01/05}{changed \cs{@jmlrauthors} to \cs{@jmlr@authors}}
%    \begin{macrocode}
      \tocchapterpubauthor{\@jmlr@authors}%
      {%
        \@jmlrabbrvproceedings
        \ifx\@jmlrvolume\@empty
           \space
        \else
           \space\@jmlrvolume
           \ifx\@jmlrissue\@empty
           \else
              (\@jmlrissue)%
           \fi
           :%
        \fi
        \protect\articlepagesref{#1}%
        \ifx\@jmlryear\@empty\else,\fi
        \space\@jmlryear
      }%
%    \end{macrocode}
%\changes{1.12}{2012/01/05}{changed \cs{@jmlrauthors} to \cs{@jmlr@authors}}
%    \begin{macrocode}
      \@write@author{#1}{\@jmlr@authors}%
    }%
    \def\InputIfFileExists##1##2##3{%
       \IfFileExists{##1}{%
          \@org@InputIfFileExists{##1}{##2}{##3}%
       }%
       {%
          \@org@InputIfFileExists{\@importdir##1}{##2}{##3}%
       }%
     }%
    \def\Xprefix{#1}%
%    \end{macrocode}
% Disable \ics{jmlrvolume}, \ics{jmlryear}, \ics{jmlrworkshop} etc
% (since the imported papers belong to the same volume as the
% book---use \ics{importpubpaper} for papers pre-published in
%\changes{1.17}{2012/05/30}{disable \cs{jmlrvolume}, \cs{jmlryear}
%and \cs{jmlrworkshop} in imported papers}
% another volume).
%    \begin{macrocode}
    \let\jmlrvolume\@gobble
    \let\jmlryear\@gobble
    \let\jmlrworkshop\@gobble
    \let\jmlrissue\@gobble
    \let\jmlrpages\@gobble
    \jmlrimporthook
    \import{\@importdir\@importfile}%
    \def\Xprefix{}%
  \egroup
  \gdef\@shortauthor{}%
  \gdef\@shorttitle{}%
  \gdef\@firstauthor{}%
  \gdef\@jmlr@authors{\@jmlrauthors}%
  \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{%
    \def\titlebreak{ }%
      \addtomaincontents{toc}%
%    \end{macrocode}
%\changes{1.12}{2012/01/05}{changed \cs{@shorttitle} to \cs{@title}}
%    \begin{macrocode}
        {%
          \protect\contentsline{papertitle}{\@title}{\thepage}%
	   {page.\thepage}}%
%    \end{macrocode}
%\changes{1.09}{2010/12/01}{Added \cs{label} to \cs{jmlrmaketitlehook}}
%    \begin{macrocode}
      \label{}%
      \pdfbookmark{\@shorttitle}{chapter.\theHchapter}%
      \def\@jmlr@authors@sep{ \& }%
%    \end{macrocode}
%\changes{1.12}{2012/01/05}{changed \cs{@jmlrauthors} to \cs{@jmlr@authors}}
%    \begin{macrocode}
      \tocchapterauthor{\@jmlr@authors}%
      \@write@author{#1}{\@jmlr@authors}%
      \jmlrpages{}%
      \jmlrvolume{}%
      \jmlryear{}%
      \jmlrsubmitted{}%
      \jmlrpublished{}%
      \jmlrproceedings{}{}%
    }%
    \graphicspath{{\@importdir}}%
    \def\InputIfFileExists##1##2##3{%
       \IfFileExists{##1}{%
          \@org@InputIfFileExists{##1}{##2}{##3}%
       }%
       {%
          \@org@InputIfFileExists{\@importdir##1}{##2}{##3}%
       }%
     }%
    \def\Xprefix{#1}%
    \jmlrimporthook
%    \end{macrocode}
%\changes{1.17}{2012/15/28}{set title page style for imported
%articles to articlet style}
%    \begin{macrocode}
    \let\ps@jmlrtps\ps@articlet
    \import{\@importdir\@importfile}%
    \def\Xprefix{}%
  \egroup
  \gdef\@shortauthor{}%
  \gdef\@shorttitle{}%
  \gdef\@firstauthor{}%
  \gdef\@jmlr@authors{\@jmlrauthors}%
  \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}%
    \settowidth\@tempdima{\large\bfseries \@partapp\space MM}%
    \vbox{%
      \pagerule
      \begingroup
        \parindent \z@ \rightskip \@pnumwidth
        \parfillskip -\@pnumwidth
        \leavevmode \large\bfseries
        \advance\leftskip\@tempdima
        \hskip -\leftskip
        \renewcommand*\numberline[1]{\hb@xt@ \@tempdima
          {\@partapp\space ##1\hfil }}%
        #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss 
           \normalfont\normalsize #2}\par
        \penalty\@highpenalty
      \endgroup
      \pagerule
    }%
  \fi}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\l@chapter}
%    \begin{macrocode}
\renewcommand{\l@chapter}[2]{%
  \ifnum\c@tocdepth>\m@ne
    \addpenalty{-\@highpenalty}%
    \vskip 1.0em \@plus \p@
    \setlength\@tempdima{2em}%
    \begingroup
      \parindent \z@
      \rightskip \@pnumwidth
      \parfillskip -\@pnumwidth
      \leavevmode \large \bfseries
      \advance \leftskip \@tempdima
      \hskip -\leftskip
        \renewcommand*\numberline[1]{\hb@xt@ \@tempdima
          {##1\hfil }}%
      #1\nobreak \hfil \nobreak \hb@xt@ \@pnumwidth {\hss
       \normalfont\normalsize #2}\par
      \penalty \@highpenalty
    \endgroup
  \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
%    \end{macrocode}
%\changes{1.11}{2011/01/06}{removed penalty}
%    \begin{macrocode}
    \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}
%\changes{1.09}{2010/12/01}{added \cs{@reprint}}
%    \begin{macrocode}
\newcommand{\firstpagefoot}{%
  \@reprint\hfill\thepage
}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\headfont}
% Set the header font
%    \begin{macrocode}
\newcommand*{\headfont}{\reset@font\small\scshape}%
%    \end{macrocode}
%\end{macro}
%\begin{macro}{\footfont}
% Set the footer font
%    \begin{macrocode}
\newcommand*{\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@articlet}
% Title page style for imported articles (imported using
% \cs{importarticle})
%    \begin{macrocode}
\newcommand*{\ps@articlet}{%
  \let\@mkboth\@gobbletwo
  \renewcommand*{\@oddhead}{}%
  \renewcommand*{\@evenhead}{}%
  \renewcommand*{\@oddfoot}{\footfont\hfill\thepage}
  \renewcommand*{\@evenfoot}{\footfont\thepage\hfill}
}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\ps@jmlrbook}
% Page style for book
%\changes{1.15}{2012/05/12}{removed dependence on \cs{ps@headings}
%(made consistent with article page style)}
%    \begin{macrocode}
\newcommand*{\ps@jmlrbook}{%
  \renewcommand*{\@oddfoot}{\footfont\hfill\thepage}
  \renewcommand*{\@evenfoot}{\footfont\thepage\hfill}
  \def\@evenhead{\headfont\leftmark\hfill}%
  \def\@oddhead{\hfill\headfont\rightmark}%
  \let\@mkboth\markboth
  \renewcommand*{\sectionmark}[1]{}%
}
%    \end{macrocode}
%\end{macro}
%
%\begin{macro}{\markleft}
%\changes{1.15}{2012/05/12}{new}
% Provide a command to set just the left header mark.
%    \begin{macrocode}
\newcommand*{\markleft}[1]{%
  \begingroup
    \let\label\relax
    \let\index\relax
    \let\glossary\relax
    \expandafter\@markleft\@themark{#1}%
    \@temptokena 
    \expandafter{\@themark}%
    \mark{\the\@temptokena}
  \endgroup
  \if@nobreak 
    \ifvmode 
      \nobreak
    \fi
  \fi 
}
\newcommand*{\@markleft}[3]{%
  \@temptokena{#2}%
  \unrestored@protected@xdef\@themark{{#3}{\the\@temptokena}}
}
%    \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}
%\changes{1.10}{2011-01-05}{Removed redundant redefinition of
%\cs{@bookpart}}
%
% Set up the book commands:
%    \begin{macrocode}
\jmlrbookcommands
%    \end{macrocode}
%
% In the event that authors have used different versions of
% \sty{algorithm2e}, define old command names.
%\changes{1.11}{2011-03-24}{added old algorithm2e commands}
%    \begin{macrocode}
\providecommand*{\SetNoLine}{\SetAlgoNoLine}
\providecommand*{\SetVline}{\SetAlgoVlined}
\providecommand*{\Setvlineskip}{\SetVlineSkip}
\providecommand*{\SetLine}{\SetAlgoLined}
\providecommand*{\dontprintsemicolon}{\DontPrintSemicolon}
\providecommand*{\printsemicolon}{\PrintSemicolon}
\providecommand*{\incmargin}{\IncMargin}
\providecommand*{\decmargin}[1]{\DecMargin{-#1}}
\providecommand*{\setnlskip}{\SetNlSkip}
\providecommand*{\Setnlskip}{\SetNlSkip}
\providecommand*{\setalcapskip}{\SetAlCapSkip}
\providecommand*{\setalcaphskip}{\SetAlCapHSkip}
\providecommand*{\nlSty}{\NlSty}
\providecommand*{\Setnlsty}{\SetNlSty}
\providecommand*{\linesnumbered}{\LinesNumbered}
\providecommand*{\linesnotnumbered}{\LinesNotNumbered}
\providecommand*{\linesnumberedhidden}{\LinesNumberedHidden}
\providecommand*{\showln}{\ShowLn}
\providecommand*{\showlnlabel}{\ShowLnLabel}
\providecommand*{\nocaptionofalgo}{\NoCaptionOfAlgo}
\providecommand*{\restorecaptionofalgo}{\RestoreCaptionOfAlgo}
\providecommand*{\restylealgo}{\RestyleAlgo}
\providecommand*{\Titleofalgo}{\TitleOfAlgo}
%    \end{macrocode}
%\iffalse
%    \begin{macrocode}
%</jmlrbook.cls>
%    \end{macrocode}
%\fi
%\Finale
\endinput
