%\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 2014/10/17 14:27 %\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) 2014 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{4791} \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{2014-10-15 (version 1.20)} % \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. % %\begin{definition}[\DescribeMacro{\jmlrlocation}] %\cs{jmlrlocation}\marg{location} %\end{definition} %This specifies the workshop location. By default this doesn't appear %on the title page. 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}[2014/10/15 v1.20 (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}: %\changes{1.19}{??}{replaced \cs{usepackage} with \cs{RequirePackage}} % \begin{macrocode} \RequirePackage{hyperref} \RequirePackage{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} % % \begin{macrocode} \ifgrayscale % \end{macrocode} % If this is the print version, need to disable the hyperlinks: % \begin{macrocode} \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}% \protected@write\@auxout{}{\string\jmlr@title{#1}{#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}{\jmlr@title} %\changes{1.20}{2014/10/15}{new} % AUX command provided for MakeJmlrBookGUI % \begin{macrocode} \newcommand*{\jmlr@title}[2]{} % \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}% \def\@jmlr@aux@author{#2}\@onelevel@sanitize\@jmlr@aux@author \ifx\@sauthor\@empty \let\@jmlr@aux@sauthor\@jmlr@aux@author \else \let\@shortauthor\@sauthor \def\@jmlr@aux@sauthor{#1}\@onelevel@sanitize\@jmlr@aux@sauthor \fi \jmlrauthorhook \protected@write\@auxout {}{\string\jmlr@author{\@jmlr@aux@sauthor}{\@jmlr@aux@author}}% } % \end{macrocode} %\end{macro} %\begin{macro}{\jmlrauthorhook} % \begin{macrocode} \newcommand*{\jmlrauthorhook}{} % \end{macrocode} %\end{macro} %\begin{macro}{\jmlr@author} %\changes{1.20}{2014/10/15}{new} % AUX command provided for MakeJmlrBookGUI % \begin{macrocode} \newcommand*{\jmlr@author}[2]{} % \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}{\addr} %\changes{1.20}{2014/10/15}{initialised to nothing} % Initialise to do nothing if used outside of \cs{author} % \begin{macrocode} \newcommand{\addr}{} % \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}% \protected@write\@auxout{}{\string\jmlr@workshop{#1}}% } % \end{macrocode} %\end{macro} %\begin{macro}{\jmlr@workshop} %\changes{1.20}{2014/10/15}{new} % \begin{macrocode} \newcommand*{\jmlr@workshop}[1]{} % \end{macrocode} %\end{macro} %\begin{macro}{\date} % \begin{macrocode} \renewcommand*{\date}[1]{% \renewcommand*{\@date}{#1}% \protected@write\@auxout{}{\string\jmlr@date{#1}}% } % \end{macrocode} %\end{macro} %\begin{macro}{\jmlr@date} %\changes{1.20}{2014/10/15}{new} % \begin{macrocode} \newcommand*{\jmlr@date}[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}[2014/10/15 v1.20 (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} % % Path used to determine if the preface is in the main % document or in a separate file. %\begin{macro}{\jmlrprefacefile} %\changes{1.20}{2014/10/15}{new} % \begin{macrocode} \newcommand*\jmlrprefacepath{} % \end{macrocode} %\end{macro} % The \sty{fink} package is now deprecated, so only use it if % \sty{currfile} isn't installed. % \begin{macrocode} \IfFileExists{currfile.sty}% { \RequirePackage{currfile} \renewcommand*\jmlrprefacepath{\currfilepath} }% {% % \end{macrocode} %\changes{1.11}{2011-03-24}{fink package now required} % \begin{macrocode} \RequirePackage{fink} \ifdef\finkpath {% \renewcommand*\jmlrprefacepath{\finkpath}% } {% % \end{macrocode} % \sty{fink} version too old. % \begin{macrocode} \ClassWarning{jmlrbook}{Install `currfile' package or update `fink' package} } } % \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} %\begin{macro}{\jmlrprefaceheader} %\changes{1.20}{2014/10/15}{new} % \begin{macrocode} \newcommand*{\jmlrprefaceheader}{% \phantomsection \chapter*{\prefacename}% \addcontentsline{toc}{chapter}{\prefacename}% \markboth{\prefacename}{\prefacename}% } % \end{macrocode} %\end{macro} % Pass \clsopt{wcp} and \clsopt{nowcp} options to \clsfmt{jmlr} and % set preface header. %\begin{option}{wcp} % \begin{macrocode} \DeclareOptionX{wcp}{% \PassOptionsToClass{\CurrentOption}{jmlr}% \renewcommand*{\jmlrprefaceheader}{\chapter*{\prefacename}} } % \end{macrocode} %\end{option} %\begin{option}{nowcp} % \begin{macrocode} \DeclareOptionX{nowcp}{% \PassOptionsToClass{\CurrentOption}{jmlr}% \renewcommand*{\jmlrprefaceheader}{\chapter{\prefacename}} } % \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} \ifgrayscale \newcommand*{\jmlrwritepdfinfo}{% \protected@write\@auxout{}{\string\jmlrbook@info{\xmpAuthor}{\xmpTitle}}% } \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}} \def\Author#1{\gdef\xmpAuthor{#1}} \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 \else \newcommand*{\jmlrwritepdfinfo}{} \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}{\jmlrbook@location} %\changes{1.20}{2014/10/15}{new} % Not needed (information provided for MakeJmlrBookGUI) % \begin{macrocode} \newcommand*{\jmlrbook@location}[1]{} % \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]% {% % \end{macrocode} % The preface should be in the front matter, so the chapter % numbering should automatically be suppressed. %\changes{1.19}{2014/09/29}{changed to unstarred chapter} % \begin{macrocode} \jmlrprefaceheader \protected@write\@mainauxout {}{\string\@prefacestart{\thepage}{\arabic{page}}}% \protected@write\@mainauxout{}{\string\@prefacefile{\jmlrprefacepath}{#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} % %\begin{macro}{\jmlrtitlehook} %\changes{1.20}{2014/10/15}{changed \cs{let} to \cs{def}} % Extra title information % \begin{macrocode} \renewcommand*\jmlrtitlehook{% \hypersetup{pdftitle={\@shorttitle}}% \def\xmpTitle{\@shorttitle}% \let\jmlrtitlehook\relax } \providecommand*{\xmpTitle}{\@title}% % \end{macrocode} %\end{macro} % %\begin{macro}{\jmlrauthorhook} %\changes{1.20}{2014/10/15}{changed \cs{let} to \cs{def}} % \begin{macrocode} \renewcommand*\jmlrauthorhook{% \ifx\@sauthor\@empty \hypersetup{pdfauthor={\@author}}% \else \hypersetup{pdfauthor={\@sauthor}}% \fi \def\xmpAuthor{\@sauthor}% \let\jmlrauthorhook\relax \let\@shortauthor\@empty } \providecommand*\xmpAuthor{\@author}% % \end{macrocode} %\end{macro} %\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}{\jmlrlocation} %\changes{1.20}{2014/10/15}{new} % \begin{macrocode} \newcommand*{\@jmlrlocation}{} \newcommand*{\jmlrlocation}[1]{% \renewcommand*{\@jmlrlocation}{#1}% \protected@write\@auxout{}{\string\jmlrbook@location{#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}. %\changes{1.19}{2014/09/29}{added \cs{nopagebreak}} % \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}\nopagebreak\par \nopagebreak\vskip\baselineskip\noindent \fi \ifx\@editorialteam\@empty \else \@editorialteam:\nopagebreak\par\nopagebreak\vskip\baselineskip \fi \nopagebreak\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