%\iffalse
% jmlr.dtx generated using makedtx version 1.1 (c) Nicola Talbot
% Command line args:
% -src "jmlr.cls\Z=>jmlr.cls"
% -src "jmlrbook.cls\Z=>jmlrbook.cls"
% -doc "jmlr-manual.tex"
% -section "chapter"
% -author "Nicola Talbot"
% jmlr
% Created on 2013/10/17 14:36
%\fi
%\iffalse
%<*package>
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%% Digits \0\1\2\3\4\5\6\7\8\9
%% Exclamation \! Double quote \" Hash (number) \#
%% Dollar \$ Percent \% Ampersand \&
%% Acute accent \' Left paren \( Right paren \)
%% Asterisk \* Plus \+ Comma \,
%% Minus \- Point \. Solidus \/
%% Colon \: Semicolon \; Less than \<
%% Equals \= Greater than \> Question mark \?
%% Commercial at \@ Left bracket \[ Backslash \\
%% Right bracket \] Circumflex \^ Underscore \_
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%
%\fi
% \iffalse
% Doc-Source file to use with LaTeX2e
% Copyright (C) 2013 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{4698}
\newcommand*{\appopt}[1]{\texttt{-{}-#1}}
\begin{document}
\DocInput{jmlr.dtx}
\end{document}
%
%\fi
%\MakeShortVerb{"}
%\DeleteShortVerb{\|}
%
% \title{\LaTeXe\ Classes for the Journal of Machine
%Learning Research}
% \author{Nicola L. C. Talbot\\[10pt]
%\url{http://www.dickimaw-books.com/}}
%
% \date{2013-10-17 (version 1.18)}
% \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 the \clsfmt{jmlr} class 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}, \sty{amsthm} and \sty{ntheorem} 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}, \sty{xcolor} 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}
%
%You can define your own numbered theorem-like environment using:
%\begin{definition}[\DescribeMacro{\newtheorem}]
%\cs{newtheorem}\marg{name}\oarg{counter}\marg{title}\oarg{outer
%counter}
%\end{definition}
%or you can define an unnumbered theorem-like environment using:
%\begin{definition}[\DescribeMacro{\newtheorem*}]
%\cs{newtheorem*}\marg{name}\marg{title}
%\end{definition}
%where \meta{name} is the name of the new environment and
%\meta{title} is the title tag at the start of the environment. In
%the case of the numbered theorems, \meta{counter} is a predefined
%counter to use with this theorem. If omitted, a new counter called
%\meta{name} will be defined. The final optional argument \meta{outer
%counter} is the name of a parent counter which, when incremented, should
%reset the theorem counter.
%
%Both \cs{newtheorem} and \cs{newtheorem*} set the new theorem's
%style to the current defined style. The current style is set using
%the following commands:
%\begin{definition}[\DescribeMacro{\theorembodyfont}]
%\cs{theorembodyfont}\marg{declarations}
%\end{definition}
%This sets the font declarations used in the body of the theorem.
%This defaults to \cs{itshape}.
%\begin{definition}[\DescribeMacro{\theoremheaderfont}]
%\cs{theoremheaderfont}\marg{declarations}
%\end{definition}
%This sets the font declarations used for the theorem title.
%This defaults to \cs{bfseries}.
%\begin{definition}[\DescribeMacro{\theorempostheader}]
%\cs{theorempostheader}\marg{text}
%\end{definition}
%This indicates what should occur at the end of the title. This
%defaults to nothing.
%\begin{definition}[\DescribeMacro{\theoremsep}]
%\cs{theoremsep}\marg{text}
%\end{definition}
%This indicates what to put between the header and the body of the
%environment. This defaults to nothing.
%
%For example, to define an unnumbered theorem-like environment called
%\qt{note} with the title \qt{Note} followed by a colon and a new
%line between the title and the body of the \texttt{note}
%environment:
%\begin{verbatim}
% \theorembodyfont{\upshape}
% \theoremheaderfont{\scshape}
% \theorempostheader{:}
% \theoremsep{\newline}
% \newtheorem*{note}{Note}
%\end{verbatim}
%Now it can be used in the document environment:
%\begin{verbatim}
%\begin{note}
%This is an numbered theorem-like environment.
%\end{note}
%\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). \emph{Caveat: TeX4HT no longer works with the
%\clsfmt{jmlr} class.}
%\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}{chapter}{Index}\PrintIndex
%}
%
%
%
%\chapter{The Code}
%\iffalse
% \begin{macrocode}
%<*jmlr.cls>
% \end{macrocode}
%\fi
%\section{jmlr.cls Code}
% 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}[2013/10/17 v1.18 (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}
%\changes{1.18}{2013-10-17}{now requires calc package}
% \begin{macrocode}
\RequirePackage{calc}
% \end{macrocode}
%\changes{1.18}{2013-10-17}{now requires etoolbox package}
% \begin{macrocode}
\RequirePackage{etoolbox}
% \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{option}{draft}
%\changes{1.18}{2013-10-17}{new}
% \begin{macrocode}
\DeclareOptionX{draft}{\setlength\overfullrule{5pt}}
% \end{macrocode}
%\end{option}
%\begin{option}{final}
%\changes{1.18}{2013-10-17}{new}
% \begin{macrocode}
\DeclareOptionX{final}{\setlength\overfullrule{0pt}}
% \end{macrocode}
%\end{option}
%\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}
%\changes{1.18}{2013-10-17}{removed \cs{ds@draft}}
% 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{
}Abstract\HCode{
}}{}%
\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{}\@title\HCode{
}
\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}
%
%\begin{macro}{\booklinebreak}
%\changes{1.18}{2013-10-17}{new}
% Provided for book production editors to fine tune the book
% line breaking. Does nothing in the standalone article.
% \begin{macrocode}
\newcommand{\booklinebreak}[1][]{}
% \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}
%
% Since \sty{theorem}, \sty{ntheorem} and \sty{amsthm} all cause
% problems with this class, provide a simple alternative.
%
%\begin{macro}{\theorembodyfont}
%\changes{1.18}{2013-10-17}{new}
%\begin{definition}
%\cs{theorembodyfont}\marg{font declarations}
%\end{definition}
% \begin{macrocode}
\newcommand*{\theorembodyfont}[1]{%
\renewcommand*{\@theorembodyfont}{#1}%
}
\newcommand*{\@theorembodyfont}{\normalfont\itshape}%
% \end{macrocode}
%\end{macro}
%\begin{macro}{\theoremheaderfont}
%\changes{1.18}{2013-10-17}{new}
%\begin{definition}
%\cs{theoremheaderfont}\marg{font declarations}
%\end{definition}
% \begin{macrocode}
\newcommand*{\theoremheaderfont}[1]{%
\renewcommand*{\@theoremheaderfont}{#1}%
}
\newcommand*{\@theoremheaderfont}{\normalfont\bfseries }%
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\theoremsep}
%\changes{1.18}{2013-10-17}{new}
%\begin{definition}
%\cs{theoremsep}\marg{separation code}
%\end{definition}
% \begin{macrocode}
\newcommand*{\theoremsep}[1]{%
\renewcommand*{\@theoremsep}{#1}%
}
\newcommand*{\@theoremsep}{}%
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\theorempostheader}
%\changes{1.18}{2013-10-17}{new}
%\begin{definition}
%\cs{theorempostheader}\marg{text}
%\end{definition}
% \begin{macrocode}
\newcommand*{\theorempostheader}[1]{%
\renewcommand*{\@theorempostheader}{#1}%
}
\newcommand*{\@theorempostheader}{}%
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\newtheorem}
%\changes{1.18}{2013-10-17}{new}
% \begin{macrocode}
\let\jmlr@org@newtheorem\newtheorem
\renewcommand*{\newtheorem}{\@ifstar\jmlr@snewtheorem\jmlr@newtheorem}
% \end{macrocode}
% Define starred version:
%\begin{definition}
%\cs{newtheorem*}\marg{env-name}\marg{title tag}
%\end{definition}
% \begin{macrocode}
\newcommand*{\jmlr@snewtheorem}[2]{%
\cslet{jmlr@thm@#1@body@font}{\@theorembodyfont}%
\cslet{jmlr@thm@#1@header@font}{\@theoremheaderfont}%
\cslet{jmlr@thm@#1@sep}{\@theoremsep}%
\cslet{jmlr@thm@#1@postheader}{\@theorempostheader}%
\newenvironment{#1}%
{%
\trivlist
\item
[%
\hskip\labelsep{\csuse{jmlr@thm@#1@header@font}#2%
\csuse{jmlr@thm@#1@postheader}%
}%
]%
\mbox{}\csuse{jmlr@thm@#1@sep}%
\csuse{jmlr@thm@#1@body@font}%
}%
{%
\endtrivlist
}%
}
% \end{macrocode}
%\end{macro}
% Unstarred version needs adjusting to take the style into account:
%\begin{macro}{\@othm}
%\changes{1.18}{2013-10-17}{new}
% \begin{macrocode}
\newcommand{\jmlr@newtheorem}[1]{%
\cslet{jmlr@thm@#1@body@font}{\@theorembodyfont}%
\cslet{jmlr@thm@#1@header@font}{\@theoremheaderfont}%
\cslet{jmlr@thm@#1@sep}{\@theoremsep}%
\cslet{jmlr@thm@#1@postheader}{\@theorempostheader}%
\jmlr@org@newtheorem{#1}%
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@xthm}
%\changes{1.18}{2013-10-17}{new}
% \begin{macrocode}
\renewcommand*{\@xthm}[2]{%
\def\@jmlr@currentthm{#1}%
\@begintheorem{#2}{\csname the#1\endcsname}%
\ignorespaces
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@ythm}
%\changes{1.18}{2013-10-17}{new}
% \begin{macrocode}
\def\@ythm#1#2[#3]{%
\def\@jmlr@currentthm{#1}%
\@opargbegintheorem{#2}{\csname the#1\endcsname}{#3}%
\ignorespaces
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@begintheorem}
%\changes{1.18}{2013-10-17}{new}
% \begin{macrocode}
\renewcommand*{\@begintheorem}[2]{%
\ifdef{\@jmlr@currentthm}%
{%
\letcs{\jmlr@this@theoremheader}{jmlr@thm@\@jmlr@currentthm @header@font}%
\letcs{\jmlr@this@theorembody}{jmlr@thm@\@jmlr@currentthm @body@font}%
\letcs{\jmlr@this@theoremsep}{jmlr@thm@\@jmlr@currentthm @sep}%
\letcs{\jmlr@this@theorempostheader}%
{jmlr@thm@\@jmlr@currentthm @postheader}%
}%
{%
\let\jmlr@this@theorembody\@theorembodyfont
\let\jmlr@this@theoremheader\@theoremheaderfont
\let\jmlr@this@theoremsep\@theoremsep
\let\jmlr@this@theorempostheader\@theorempostheader
}%
\trivlist
\item
[%
\hskip\labelsep{\jmlr@this@theoremheader #1\ #2%
\jmlr@this@theorempostheader}%
]%
\mbox{}\jmlr@this@theoremsep
\jmlr@this@theorembody
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\@opargbegintheorem}
%\changes{1.18}{2013-10-17}{new}
% \begin{macrocode}
\renewcommand*{\@opargbegintheorem}[3]{%
\ifdef{\@jmlr@currentthm}%
{%
\letcs{\jmlr@this@theoremheader}{jmlr@thm@\@jmlr@currentthm @header@font}%
\letcs{\jmlr@this@theorembody}{jmlr@thm@\@jmlr@currentthm @body@font}%
\letcs{\jmlr@this@theoremsep}{jmlr@thm@\@jmlr@currentthm @sep}%
\letcs{\jmlr@this@theorempostheader}%
{jmlr@thm@\@jmlr@currentthm @postheader}%
}%
{%
\let\jmlr@this@theorembody\@theorembodyfont
\let\jmlr@this@theoremheader\@theoremheaderfont
\let\jmlr@this@theoremsep\@theoremsep
\let\jmlr@this@theorempostheader\@theorempostheader
}%
\trivlist
\item[\hskip\labelsep{\jmlr@this@theoremheader #1\ #2\ (#3)%
\jmlr@this@theorempostheader}]%
\mbox{}\jmlr@this@theoremsep
\jmlr@this@theorembody
}
% \end{macrocode}
%\end{macro}
%
%\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{ntheorem}{%
\ClassError{jmlr}{Package `ntheorem' detected.\MessageBreak
This can cause a conflict with other packages used by jmlr}{}}{}%
\@ifpackageloaded{amsthm}{%
\ClassError{jmlr}{Package `amsthm' detected.\MessageBreak
This package conflicts with the jmlr class}{}}{}%
\@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}
%
% \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}[2013/10/17 v1.18 (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}{draft}
%\changes{1.18}{2013-10-17}{new}
% \begin{macrocode}
\DeclareOptionX{draft}{\setlength\overfullrule{5pt}}
% \end{macrocode}
%\end{option}
%\begin{option}{final}
%\changes{1.18}{2013-10-17}{new}
% \begin{macrocode}
\DeclareOptionX{final}{\setlength\overfullrule{0pt}}
% \end{macrocode}
%\end{option}
%\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{}
\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{\prefacename
}%
}%
{%
}
\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{}#2\HCode{}}%
\fi
\else
\renewcommand*{\@logo}{#2}%
\fi
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\booklinebreak}
%\changes{1.18}{2013-10-17}{new}
% Provided for book production editors to fine tune the book
% line breaking.
% \begin{macrocode}
\renewcommand*{\booklinebreak}[1][4]{\linebreak[#1]}
% \end{macrocode}
%\end{macro}
%
% Set article title
% \begin{macrocode}
\def\c@lbmaketitle{\jmlrmaketitle}
% \end{macrocode}
% The book's title:
%\begin{macro}{\maintitle}
% \begin{macrocode}
\newcommand*{\maintitle}{}
% \end{macrocode}
%\end{macro}
%
% Make it easier to modify the book's title page:
%\begin{macro}{\SetTitleElement}
% \begin{macrocode}
\newcommand*{\SetTitleElement}[3]{%
{%
\expandafter\ifx\csname @#1\endcsname\@empty
\else
#2\csname @#1\endcsname#3%
\fi
}%
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\IfTitleElement}
% Determine if the given element has been set:
% \begin{macrocode}
\newcommand{\IfTitleElement}[3]{%
\expandafter\ifx\csname @#1\endcsname\@empty
#2%
\else
#3%
\fi
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\titlebody}
% \begin{macrocode}
\newcommand{\titlebody}{%
\SetTitleElement{title}{\maintitlefont}{\postmaintitle}%
\SetTitleElement{volume}{\mainvolumefont}{\postmainvolume}%
\SetTitleElement{subtitle}{\mainsubtitlefont}{\postmainsubtitle}%
\SetTitleElement{logo}{\mainlogofont}{\postmainlogo}%
\SetTitleElement{team}{\mainteamfont}{\postmainteam}%
\SetTitleElement{author}{\mainauthorfont}{\postmainauthor}%
\SetTitleElement{productioneditor}{\mainproductioneditorfont}%
{\postmainproductioneditor}%
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\c@lamaketitle}
% \begin{macrocode}
\ifjmlrhtml
\renewcommand{\c@lamaketitle}{%
\HCode{}%
\HCode{}%
\HCode{}%
\@title\newline
\ifx\@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{}%
\newline
\textbf{Editors: \@author}
\HCode{ | }%
\@logo
\HCode{ |
}%
\let\maintitle\@title
}
\else
\renewcommand{\c@lamaketitle}{%
\pagenumbering{alph}%
\pagestyle{empty}%
\begin{titlepage}%
\let\footnotesize\small
\let\footnoterule\relax
\let\footnote\thanks
\titlebody
\par
\@thanks
\end{titlepage}%
\setcounter{footnote}{0}%
\let\maintitle\@title
\c@lmtitlempty
}
\fi
% \end{macrocode}
%\end{macro}
%\begin{macro}{\maintitlefont}
% \begin{macrocode}
\renewcommand{\maintitlefont}{%
\null\vskip15pt\relax\par
\flushleft\Huge\bfseries\noindent}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\postmaintitle}
% \begin{macrocode}
\renewcommand{\postmaintitle}{%
\par\relax
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\mainvolumefont}
% \begin{macrocode}
\newcommand{\mainvolumefont}{%
\flushleft\noindent\LARGE\bfseries Volume
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\postmainvolume}
% \begin{macrocode}
\newcommand{\postmainvolume}{%
\IfTitleElement{subtitle}{}{:}\par\relax
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\mainissuefont}
% \begin{macrocode}
\newcommand{\mainissuefont}{%
\flushleft\noindent\LARGE\bfseries Issue
}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\postmainissue}
% \begin{macrocode}
\newcommand{\postmainissue}{%
\par\relax
}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\mainsubtitlefont}
% \begin{macrocode}
\newcommand{\mainsubtitlefont}{%
\flushleft\LARGE\bfseries\noindent}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\postmainsubtitle}
% \begin{macrocode}
\newcommand{\postmainsubtitle}{\par}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\mainlogofont}
% \begin{macrocode}
\newcommand{\mainlogofont}{%
\vfill
\begin{center}}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\postmainlogo}
% \begin{macrocode}
\newcommand{\postmainlogo}{\end{center}\vfill\par}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\mainteamfont}
% \begin{macrocode}
\newcommand{\mainteamfont}{\flushleft\bfseries\Large\noindent}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\postmainteam}
% \begin{macrocode}
\newcommand{\postmainteam}{\par}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\mainauthorfont}
% \begin{macrocode}
\renewcommand{\mainauthorfont}{%
\flushleft\Large\itshape\doublespacing\noindent}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\postmainauthor}
% \begin{macrocode}
\renewcommand{\postmainauthor}{%
\par}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\mainproductioneditorfont}
% \begin{macrocode}
\newcommand{\mainproductioneditorfont}{%
\flushleft\Large\noindent \@productioneditorname: \itshape}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\postmainproductioneditor}
% \begin{macrocode}
\newcommand{\postmainproductioneditor}{\par}
% \end{macrocode}
%\end{macro}
%
%\begin{macro}{\maindatefont}
% \begin{macrocode}
\renewcommand{\maindatefont}{}
% \end{macrocode}
%\end{macro}
%\begin{macro}{\postmaindate}
% \begin{macrocode}
\renewcommand{\postmaindate}{}
% \end{macrocode}
%\end{macro}
%
%\begin{environment}{signoff}
% Editorial team listed at the end of a preface etc. The mandatory
% argument is the date, the optional argument is the team title.
% Each editor should be separated with \ics{Editor}.
% \begin{macrocode}
\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}{@{}p{\linewidth}@{}}%
##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}
% Patch to work with \sty{auxhook} if loaded
%\changes{1.18}{2013-10-17}{patched to work with auxhook}
% \begin{macrocode}
\@ifundefined{@beginmainauxhook}{}{\@beginmainauxhook}%
}
% \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
\parbox{\linewidth-\@pnumwidth}{\raggedright#1\par}%
\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}
%
% \end{macrocode}
%\fi
%\Finale
\endinput