%\iffalse % jmlr.dtx generated using makedtx version 1.2 (c) Nicola Talbot % Command line args: % -section "chapter" % -doc "jmlr-manual.tex" % -author "Nicola Talbot" % -src "jmlrutils.sty\Z=>jmlrutils.sty" % -src "jmlr.cls\Z=>jmlr.cls" % -src "jmlrbook.cls\Z=>jmlrbook.cls" % jmlr % Created on 2020/9/21 16: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) 2020 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: Classes for the Journal of Machine Learning Research (JMLR) and Proceedings of Machine Learning Research (PMLR)}, pdfkeywords={LaTeX,jmlr}]{hyperref} \doxitem{Option}{option}{package options} \CheckSum{5265} \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 (JMLR) and %Proceedings of Machine Learning Research (PMLR)} % \author{Nicola L. C. Talbot\\[10pt] %\url{http://www.dickimaw-books.com/}} % % \date{2020-09-21 (version 1.28)} % \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. %Note that JMLR W\&CP (JMLR: Workshop and Conference Proceedings) %has been renamed PMLR (Proceedings of Machine Learning %Research). Articles for new proceedings should use the \clsopt{pmlr} %class option. % %The \clsfmt{jmlrbook} class is for combining articles that use the %\clsfmt{jmlr} class into a %book. The \clsfmt{jmlrbook} 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. % %As from v1.24, some non-class dependent commands and environments %have been moved to a new package \sty{jmlrutils} (see %\sectionref{sec:jmlrutils}). This package is automatically loaded by %\clsfmt{jmlr}, but may be used with other classes. (Note that you %will need to explicitly load \sty{algorithm2e} if you want to use %the \env{algorithm} environment.) % %\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 %bib file for the proceedings (according to the PMLR specifications). 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/software/makejmlrbookgui/} where %there is also a %\href{http://www.dickimaw-books.com/software/makejmlrbookgui/manual/troubleshooting.html}{troubleshooting %section}. % %The Perl script \app{makejmlrbook} is now deprecated and will be %removed in future releases. It has been superseded by %\app{makejmlrbookgui}. Note that PMLR (formerly JMLR W\&CP) has new %format guidelines that are followed by new versions of %\app{makejmlrbookgui} but not by the Perl script \app{makejmlrbook}, %so that script is no longer documented or supported. %The PMLR submission requirements for production editors are now much simpler %and can be followed without the assistance of \cls{jmlrbook} or %\app{makejmlrbookgui}. % %\section{Required Packages} % %The \clsfmt{jmlr} class is based on the \cls{article} class and loads %the following packages: \sty{jmlrutils} (see \sectionref{sec:jmlrutils}), %\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 and \TeX. %(GhostScript is also required for the print-ready version of the %book.) % %\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{pmlr}] The article is for the Proceedings of Machine %Learning Research (PMLR). %\item[\clsopt{wcp}] The article is for JMLR Workshop and Conference %Proceedings (JMLR W\&CP). % %\item[\clsopt{twocolumn}] Use two-column style. The title and author %information will span both columns through the use of the optional %argument of \cs{twocolumn}. This means that no page break can occur %in the title and author list. % %\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} %This command is provided by the \sty{url} package which is %automatically loaded. % %\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}. This command is provided by the %supplementary package \sty{jmlrutils}. Other commands are described %in \sectionref{sec:jmlrutils}. % %\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{\styfmt{jmlrutils} supplementary package} %\label{sec:jmlrutils} % %The \sty{jmlrutils} package is automatically loaded by the %\clsfmt{jmlr} class but may be used with other classes. % %\subsection{Package Options} % %The following options may be passed to the \styfmt{jmlrutils} %package if it is to be used without the \clsfmt{jmlr} class. %\begin{description} %\item[\pkgopt{maths}] Define the commands \cs{set} and \cs{oldvec} %and redefine \cs{vec}. This will also automatically load the %\sty{amsmath} package. (Default.) %\item[\pkgopt{nomaths}] Don't define \cs{set} and \cs{oldvec} %and don't redefine \cs{vec}. %\item[\pkgopt{theorems}] Define the theorem commands and %environments listed in \sectionref{sec:theorems}. (Default.) %\item[\pkgopt{notheorems}] Don't define the theorem commands and %environments. %\item[\pkgopt{subfloats}] Define the sub-figure and sub-table %commands listed in \sectionref{sec:subfloats}. (Default.) %\item[\pkgopt{nosubfloats}] Don't define the sub-figure and %sub-table commands. %\end{description} %The non-default options are provided when \styfmt{jmlrutils} is %loaded without the \clsfmt{jmlr} class. %Don't try passing the non-default options to \styfmt{jmlrutils} if %you are using the \clsfmt{jmlr} class as this could interfere with %the build process for the proceedings or book. % %The \styfmt{jmlrutils} package doesn't recognise any of the %\clsfmt{jmlr} class options (such as \pkgopt{tablecaption}). % %\subsection{Figures and Tables} %\label{sec:floats} % %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 \styfmt{jmlrutils} package 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 centred. 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} %If the \clsfmt{jmlr} class is used, the table caption (when used %with \cs{floatconts}) will obey the \clsopt{tablecaption} class option, %otherwise it will be placed above the table contents. Within the %\env{figure} environment, \cs{floatconts} will put the caption below %the contents. This command may be used within other floats. % %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. %If you are using \styfmt{jmlrutils} with another class you need to load %\sty{graphicx} in order to use this command. See the documentation %for the \sty{graphicx} package for further details of this command %and other provided commands. % %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 when using the \clsfmt{jmlr} class. It's helpful if you %can also provide a grayscale version of colour images. This should be %labelled as the colour image but with \texttt{-gray} immediately %before the extension. (The extension need not be the same as that %of the colour image.) For example, if you have an image called %\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 available keys are a subset of those provided by %\sty{graphicx}'s \cs{includegraphics}. The main keys are: \texttt{width}, %\texttt{height}, \texttt{scale} and \texttt{angle}. Some %of the keys specific to image files (such as the bounding box %and type keys) do nothing with \cs{includeteximage}. % %\subsubsection{Sub-Figures and Sub-Tables} %\label{sec:subfloats} % %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. If you aren't using the \clsfmt{jmlr} %class, you can prevent \styfmt{jmlrutils} from defining these %commands with the \pkgopt{nosubfloats} package option. % %\begin{definition}[\DescribeMacro{\subfigure}] %\cs{subfigure}\oarg{title}\oarg{valign}\marg{contents} %\end{definition} %This makes a sub-figure where \meta{contents} denotes the contents %of the sub-figure. This should also include the \cs{label}. %The first optional argument \meta{title} indicates a caption for %the sub-figure. By default, the sub-figures are aligned at the %base. This can be changed with the second optional argument %\meta{valign}, which may be one of: \texttt{t} (top), \texttt{c} %(centred) or \texttt{b} (base). % %For example, suppose there are two images files, \texttt{mypic1.png} %and \texttt{mypic2.png}, in the subdirectory \texttt{images}. %Then they can be included as sub-figures as follows: %\begin{verbatim} %\begin{figure}[htbp] %\floatconts % {fig:example2}% label for whole figure % {\caption{An Example Figure.}}% caption for whole figure % {% % \subfigure{% % \label{fig:pic1}% label for this sub-figure % \includegraphics{images/mypic1} % }\qquad % space out the images a bit % \subfigure{% % \label{fig:pic2}% label for this sub-figure % \includegraphics{images/mypic2} % } % } %\end{figure} %\end{verbatim} % %\begin{definition}[\DescribeMacro{\subtable}] %\cs{subtable}\oarg{title}\oarg{valign}\marg{contents} %\end{definition} %This is an analogous command for sub-tables. The default value %for \meta{valign} is \texttt{t}. % %\subsection{Algorithms} %The \clsfmt{jmlr} class automatically loads the \sty{algorithm2e} %package. If you are using \styfmt{jmlrutils} with another class, you %will need to load \sty{algorithm2e} if you want to use the %\env{algorithm} and \env{algorithm2e} environments described below. % %\begin{definition}[\DescribeEnv{algorithm}] %\cs{begin}\{algorithm\}\oarg{placement}\\ %\meta{contents}\\ %\cs{end}\{algorithm\} %\end{definition} %Enumerated textual algorithms can be displayed using the %\envfmt{algorithm} environment. %The optional argument is as for \env{figure} and \env{table}. % %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 \styfmt{jmlrutils} %package. For example: %\begin{verbatim} %\begin{algorithm} %\floatconts{alg:path}%label %{\caption{Shortest Path}}% caption %{% contents %\begin{enumerate*} % \item Set the label of vertex $s$ to 0 % \item Set $i=0$ % \begin{enumerate*} % \item \label{step:locate}Locate all unlabelled vertices % adjacent to a vertex labelled $i$ and label them $i+1$ % \item If vertex $t$ has been labelled, % \begin{enumerate*} % \item[] the shortest path can be found by backtracking, and % the length is given by the label of $t$. % \end{enumerate*} % otherwise % \begin{enumerate*} % \item[] increment $i$ and return to step~\ref{step:locate} % \end{enumerate*} % \end{enumerate*} %\end{enumerate*} %} %\end{algorithm} %\end{verbatim} % % %\begin{definition}[\DescribeEnv{algorithm2e}] %\cs{begin}\{algorithm2e\}\\ %\meta{contents}\\ %\cs{end}\{algorithm2e\} %\end{definition} %Pseudo code can be displayed using the \envfmt{algorithm2e} environment, %provided by the \sty{algorithm2e} package, which is automatically %loaded. For example: %\begin{verbatim} %\begin{algorithm2e} %\caption{Computing Net Activation} %\label{alg:net} %\DontPrintSemicolon %\LinesNumbered %\KwIn{$x_1, \ldots, x_n, w_1, \ldots, w_n$} %\KwOut{$y$, the net activation} %$y\leftarrow 0$\; %\For{$i\leftarrow 1$ \KwTo $n$}{ % $y \leftarrow y + w_i*x_i$\; %} %\end{algorithm2e} %\end{verbatim} % %See the \ctandoc{algorithm2e} for more details. % %\subsection{Description Lists} % %\begin{definition}[\DescribeEnv{altdescription}] %\cs{begin}\{altdescription\}\marg{widest label}\\ %\cs{item}\oarg{label} \meta{item text}\\ %\cs{end}\{altdescription\} %\end{definition} %In addition to the standard \env{description} environment, the %\clsfmt{jmlr} class also provides the \envfmt{altdescription} environment. %This has an argument that should be the widest label used in the %list. For example: %\begin{verbatim} %\begin{altdescription}{differentiate} %\item[add] A method that adds two variables. %\item[differentiate] A method that differentiates a function. %\end{altdescription} %\end{verbatim} % %\subsection{Theorems, Lemmas etc} %\label{sec:theorems} % %The \clsfmt{jmlrbook} class doesn't work well with common theorem %packages, so \styfmt{jmlrutils} provides theorem code that won't %conflict with \clsfmt{jmlrbook}. If you're using \styfmt{jmlrutils} %without the \clsfmt{jmlr} class, you can prevent the definition of %these commands with the \pkgopt{notheorems} package option. % %The \styfmt{jmlrutils} package 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} % %\subsection{Cross-Referencing} %\label{sec:crossref} % %Always use \ics{label} when cross-referencing, rather than writing %the number explicitly. The \styfmt{jmlrutils} package 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. % %\subsection{Mathematics} % %The \clsfmt{jmlr} class loads the \sty{amsmath} package so you can %use any of the commands and environments defined in that package. %The \styfmt{jmlrutils} package will load \sty{amsmath} if the %default \pkgopt{maths} package option is used but won't load %\sty{amsmath} if the \pkgopt{nomaths} option is used. 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{maths} %\end{definition} %In addition to the commands provided by \sty{amsmath}, the %\styfmt{jmlrutils} package 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} %This command won't be provided if the \pkgopt{nomaths} option is %used. % %\begin{definition}[\DescribeMacro{\vec}] %\cs{vec}\marg{maths} %\end{definition} %The \cs{vec} command is redefined by \styfmt{jmlrutils} to use %\cs{boldsymbol}, which is provided by \sty{amsmath}. %(This command won't be redefined if the \pkgopt{nomaths} option is %used.) If you require %the original \cs{vec}, you can access it with: %\begin{definition}[\DescribeMacro{\orgvec}] %\cs{orgvec}\marg{maths} %\end{definition} %This command won't be provided if the \pkgopt{nomaths} option is %used. % %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} %The above are provided by the \LaTeX\ kernel but may be adjusted by %packages such as \sty{amsmath}. The commands and environments below %are provided by \sty{amsmath}. % %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). This check is performed by code %provided by the \clsfmt{jmlr} class not the \styfmt{jmlrutils} package. % %\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{https://texfaq.org/}{\TeX\ FAQ}. % %If you are unfamiliar or just getting started with \LaTeX, there's %a list of on-line introductions to \LaTeX\ at %\url{https://texfaq.org/FAQ-man-latex} %or have a look at %\href{http://www.dickimaw-books.com/latex/novices}{\LaTeX\ for Complete Novices}. % %There are also forums, mailing lists and newsgroups. For example, %\TeX\ on StackExchange (\url{https://tex.stackexchange.com/}), %the \LaTeX\ Community (\url{https://latex.org/forum/}), %the \texttt{texhax} mailing list %(\url{http://tug.org/mailman/listinfo/texhax}) and %\texttt{comp.text.tex} (archives available at %\url{http://groups.google.com/group/comp.text.tex/}). % %Documentation for packages or classes can be found using the %\texttt{texdoc} application. For example: %\begin{verbatim} %texdoc natbib %\end{verbatim} %Alternatively, you can go to %\texttt{http://www.ctan.org/pkg/}\meta{name} where %\meta{name} is the name of the package. For example: %\url{http://www.ctan.org/pkg/natbib} % %For a general guide to preparing papers (regardless of whether you %are using \LaTeX\ or a word processor), see Kate L.~Turabian, \qt{A %manual for writers of term papers, theses, and dissertations}, The %University of Chicago Press, 1996. % %\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. See %\url{http://www.dickimaw-books.com/software/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{pmlr}] The imported pre-published articles were %published in the Proceedings of Machine Learning Research (PMLR). %\item[\clsopt{wcp}] The imported pre-published articles were %published in the JMLR Workshop and Conference Proceedings (JMLR %W\&CP). % %If the book has a mixture of JMLR, JMLR W\&CP or PMLR articles, you %can switch between them using %\begin{definition}[\DescribeMacro{\jmlrnowcp}] %\cs{jmlrnowcp} %\end{definition} %(for JMLR) or %\begin{definition}[\DescribeMacro{\jmlrwcp}] %\cs{jmlrwcp} %\end{definition} %(for JMLR W\&CP) or %\begin{definition}[\DescribeMacro{\jmlrpmlr}] %\cs{jmlrpmlr} %\end{definition} %(for PMLR). %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, was %formerly used by \app{makejmlrbookgui} to make the logo a link to %\meta{url} on the index HTML page. (The HTML pages are no longer %generated by the application as PMLR now generate the HTML from %the .bib file for the proceedings.) % %\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 PMLR guidelines, should be changed to the surname of %the first author (editor) followed by the final two digits of the %year. See the PMLR website for further details of the guidelines. % %\begin{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/software/makejmlrbookgui/manual/troubleshooting.html}{troubleshooting %section}. % %\StopEventually{\clearpage\phantomsection % \PrintChanges % \PrintIndex %} % % % %\chapter{The Code} %\iffalse % \begin{macrocode} %<*jmlrutils.sty> % \end{macrocode} %\fi %\section{jmlrutils.sty Code} %Non-class dependent code. This package is automatically loaded by %\cls{jmlr} but may be used with other classes. % \begin{macrocode} \ProvidesPackage{jmlrutils}[2020/09/21 v1.28 (NLCT)] % \end{macrocode} % Package options: %\begin{macro}{\ifjmlrutilsmaths} %Determine if the maths commands should be provided. % \begin{macrocode} \newif\ifjmlrutilsmaths \jmlrutilsmathstrue % \end{macrocode} %\end{macro} % \begin{macrocode} \DeclareOption{maths}{\jmlrutilsmathstrue} \DeclareOption{nomaths}{\jmlrutilsmathsfalse} % \end{macrocode} % %\begin{macro}{\ifjmlrutilstheorems} %Determine if the theorem environments should be provided. % \begin{macrocode} \newif\ifjmlrutilstheorems \jmlrutilstheoremstrue % \end{macrocode} %\end{macro} % \begin{macrocode} \DeclareOption{theorems}{\jmlrutilstheoremstrue} \DeclareOption{notheorems}{\jmlrutilstheoremsfalse} % \end{macrocode} % %\begin{macro}{\ifjmlrutilssubfloats} %Determine if the sub-floats should be provided. % \begin{macrocode} \newif\ifjmlrutilssubfloats \jmlrutilssubfloatstrue % \end{macrocode} %\end{macro} % \begin{macrocode} \DeclareOption{subfloats}{\jmlrutilssubfloatstrue} \DeclareOption{nosubfloats}{\jmlrutilssubfloatsfalse} % \end{macrocode} % % \begin{macrocode} \ProcessOptions % \end{macrocode} % Requires \sty{etoolbox}: % \begin{macrocode} \RequirePackage{etoolbox} % \end{macrocode} %If the maths commands are needed, load \sty{amsmath}. % \begin{macrocode} \ifjmlrutilsmaths \RequirePackage{amsmath} \fi % \end{macrocode} % The conditional \cs{iftablecaptiontop} will already have been % defined by the \cls{jmlr} class, so only needs to be defined % if not already done. %\begin{macro}{\iftablecaptiontop} % \begin{macrocode} \@ifundefined{iftablecaptiontop} {\newif\iftablecaptiontop \tablecaptiontoptrue} {} % \end{macrocode} %\end{macro} % %\subsection{Cross-Referencing} % 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. %\changes{1.24}{2017-08-01}{changed \cs{DeclareRobustCommand} %to \cs{newrobustcmd}} % \begin{macrocode} \newrobustcmd*{\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} % %\subsection{Figures, Tables and Algorithms} % %\begin{macro}{\floatconts} % The first argument is the label, the second argument contains the % caption (using \cs{caption}) and the third argument contains 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} %This will already have been defined if the \clsfmt{jmlr} class was %loaded. % \begin{macrocode} \providecommand{\tableconts}[3]{% #2\label{#1}\vskip\baselineskip {\centering #3\par}% } % \end{macrocode} %\end{macro} %\begin{macro}{\figureconts} % \begin{macrocode} \newcommand{\figureconts}[3]{% {\centering #3\par}% \vskip\baselineskip #2\label{#1}% } % \end{macrocode} %\end{macro} % %The following macro and environment assume that \sty{algorithm2e} %has been loaded (which is done by the \cls{jmlr} class). If the %\styfmt{jmlrutils} package is loaded without the \cls{jmlr} class, %the \sty{algorithm2e} package will have to be explicitly loaded. %\begin{macro}{\algocfconts} %\changes{1.09}{2010/12/01}{new} %Command used by \cs{floatconts} to display the caption contents. % \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} % % 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]% {% \ifundef{\algocf}% {`algorithm2e' package is required if you want to use the algorithm environment}% {}% \begin{algocf}[#1]% \renewcommand\@makecaption[2]{% \hskip\AlCapHSkip \parbox[t]{\hsize}{\algocf@captiontext{##1}{##2}}% }% }% {% \end{algocf}% } % \end{macrocode} % %\begin{macro}{\@jmlr@ifgraphicxloaded} % \begin{macrocode} \AtBeginDocument{% \@ifpackageloaded{graphicx}% {\let\@jmlr@ifgraphicxloaded\@firstoftwo}% {\let\@jmlr@ifgraphicxloaded\@secondoftwo}% } % \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][]{% \@jmlr@ifgraphicxloaded {% \def\Gin@req@sizes{% \Gin@req@height\Gin@nat@height \Gin@req@width\Gin@nat@width}% \begingroup \let\input@path\Ginput@path \IfFileExists{#2}% {% \toks@{\input{#2}}% \ifstrempty{#1} {}% {% \@tempswatrue \setkeys{Gin}{#1}% \Gin@esetsize }% \the\toks@ }% {\@warning{File `#2' not found}}% \endgroup }% {\PackageError{jmlrutils}{`graphicx' package is required if you want to use \string\includeteximage}{}}% } % \end{macrocode} %\end{macro} % %Sub floats. % \begin{macrocode} \ifjmlrutilssubfloats % \end{macrocode} % 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} % The LaTeX kernel changed the definition of \cs{refstepcounter} to % allow \cs{p@\ldots} to have an argument. This means we need to % check the kernel version and pick up that extra argument if % present. %\changes{1.27}{2020-03-26}{added check for \LaTeX\ kernel version} % \begin{macrocode} \@ifl@t@r\fmtversion{2019/08/22}% { % \end{macrocode} % Newer kernel versions. %\begin{macro}{\@subfigurelabel} % Define how label appears. % \begin{macrocode} \newcommand*\@subfigurelabel[3]{#1\subfigurelabel{#2}} % \end{macrocode} %\end{macro} %\begin{macro}{\@subfigref} % \begin{macrocode} \newcommand*\@subfigref[1]{% {% \def\@subfigurelabel##1##2##3{\subfigurelabel{##2}}% \ref{#1}% }% } % \end{macrocode} %\end{macro} % \begin{macrocode} }% { % \end{macrocode} % Older kernel versions. %\begin{macro}{\@subfigurelabel} % Define how label appears. % \begin{macrocode} \newcommand*\@subfigurelabel[2]{#1\subfigurelabel{#2}} % \end{macrocode} %\end{macro} %\begin{macro}{\@subfigref} % \begin{macrocode} \newcommand*\@subfigref[1]{% {% \def\@subfigurelabel##1##2{\subfigurelabel{##2}}% \ref{#1}% }% } % \end{macrocode} %\end{macro} % \begin{macrocode} } % \end{macrocode} %\begin{macro}{\subfigref} % Reference the sub-figure without including the figure number. % \begin{macrocode} \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} %As with \cs{@subfigure} we again need to check \LaTeX\ kernel version. %\changes{1.27}{2020-03-26}{added check for \LaTeX\ kernel version} % \begin{macrocode} \@ifl@t@r\fmtversion{2019/08/22}% { % \end{macrocode} % Newer kernel versions. %\begin{macro}{\@subtablelabel} % Define how label appears. % \begin{macrocode} \newcommand*\@subtablelabel[3]{#1\subtablelabel{#2}} % \end{macrocode} %\end{macro} %\begin{macro}{\@subtabref} % \begin{macrocode} \newcommand*\@subtabref[1]{% {% \def\@subtablelabel##1##2##3{\subtablelabel{##2}}% \ref{#1}% }% } % \end{macrocode} %\end{macro} % \begin{macrocode} }% { % \end{macrocode} % Older kernel versions. %\begin{macro}{\@subtablelabel} % Define how label appears. % \begin{macrocode} \newcommand*\@subtablelabel[2]{#1\subtablelabel{#2}} % \end{macrocode} %\end{macro} %\begin{macro}{\@subtabref} % \begin{macrocode} \newcommand*\@subtabref[1]{% {% \def\@subtablelabel##1##2{\subtablelabel{##2}}% \ref{#1}% }% } % \end{macrocode} %\end{macro} % \begin{macrocode} }% % \end{macrocode} %\begin{macro}{\subtabref} % Reference the sub-table without including the table number. % \begin{macrocode} \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} %End of sub-floats. % \begin{macrocode} \fi % \end{macrocode} % %\subsection{General Markup} %Provide maths command if required. % \begin{macrocode} \ifjmlrutilsmaths % \end{macrocode} %\begin{macro}{\set} % \begin{macrocode} \newcommand*{\set}[1]{\ensuremath{\mathcal{#1}}} % \end{macrocode} %\end{macro} % %\begin{macro}{\orgvec} %\changes{1.21}{2015-02-24}{new} %Keep a copy of original \cs{vec} in case it's wanted. % \begin{macrocode} \let\orgvec\vec % \end{macrocode} %\end{macro} %\begin{macro}{\vec} % Redefine \cs{vec} to produce a bold symbol. The \sty{amsmath} %package is required for this. % \begin{macrocode} \renewcommand*{\vec}[1]{\boldsymbol{#1}} % \end{macrocode} %\end{macro} %End of maths commands. % \begin{macrocode} \fi % \end{macrocode} % %\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} % %\subsection{Proofs and Theorems} % \begin{macrocode} \ifjmlrutilstheorems % \end{macrocode} % This code is taken from jmlr2e.sty %\begin{macro}{\jmlrBlackBox} % End of proof marker. %\changes{1.24}{2017-08-01}{new} %This command was formerly called \cs{BlackBox} but has been renamed %in case of a clash with symbol packages. % \begin{macrocode} \newcommand{\jmlrBlackBox}{\rule{1.5ex}{1.5ex}} % \end{macrocode} %\end{macro} %\begin{macro}{\BlackBox} % Backward compatibility in case it was used explicitly. % \begin{macrocode} \providecommand{\BlackBox}{\jmlrBlackBox} % \end{macrocode} %\end{macro} %\begin{macro}{\jmlrQED} %\changes{1.21}{2015-02-24}{new} %\changes{1.24}{2017-08-01}{changed to use \cs{par}} % \begin{macrocode} \newcommand{\jmlrQED}{\hfill\jmlrBlackBox\par\bigskip} % \end{macrocode} %\end{macro} %\begin{macro}{\proofname} %\changes{1.25}{2020-01-17}{new} % \begin{macrocode} \providecommand{\proofname}{Proof} % \end{macrocode} %\end{macro} %\begin{environment}{proof} % Proof environment % \begin{macrocode} \newenvironment{proof}% {% \par\noindent{\bfseries\upshape \proofname\ }% }% {\jmlrQED} % \end{macrocode} %\end{environment} % % Since \sty{theorem}, \sty{ntheorem} and \sty{amsthm} all cause % problems with the \cls{jmlr} and \cls{jmlrbook} classes, % this package provides 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} % End of theorem definitions. % \begin{macrocode} \fi % \end{macrocode} %\iffalse % \begin{macrocode} % % \end{macrocode} %\fi %\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}[2020/09/21 v1.28 (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} % Can't load \sty{jmlrutils} here but need the \cs{iftablecaptiontop} % conditional for the class options. %\begin{macro}{\iftablecaptiontop} %\changes{1.06}{2010-06-17}{new} % \begin{macrocode} \newif\iftablecaptiontop \tablecaptiontoptrue % \end{macrocode} %\end{macro} % Provide table contents command that uses this conditional. % (The \sty{jmlrutils} package doesn't use it.) %\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} % Determine if the table captions should go at the top. %\begin{option}{tablecaptiontop} % \begin{macrocode} \DeclareOptionX{tablecaptiontop}{\tablecaptiontoptrue} % \end{macrocode} %\end{option} %\begin{option}{tablecaptiontop} % \begin{macrocode} \DeclareOptionX{tablecaptionbottom}{\tablecaptiontopfalse} % \end{macrocode} %\end{option} %\begin{option}{tablecaption} %Key=value interface. % \begin{macrocode} \define@choicekey{jmlr.cls}{tablecaption}[\val\nr]{top,bottom}{% \ifcase\nr\relax \tablecaptiontoptrue \or \tablecaptiontopfalse \fi } % \end{macrocode} %\end{option} %\begin{macro}{\ifjmlrhtml} % Determine if we are using \app{TeX4ht}. (Deprecated.) %This option should no longer be used. The PMLR have changed %the submission guidelines and the production editor should %no longer supply HTML files. % \begin{macrocode} \newif\ifjmlrhtml \jmlrhtmlfalse \DeclareOptionX{html}{% \ClassWarning{jmlr}{html option is now deprecated}% \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}{\jmlrnowcp} % \begin{macrocode} \newcommand*{\jmlrnowcp}{% \jmlrproceedings{JMLR}{Journal of Machine Learning Research}% } % \end{macrocode} %\end{macro} %\begin{macro}{\jmlrwcp} %\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} %\begin{macro}{\jmlrpmlr} %\changes{1.23}{2017-03-09}{new} %The JMLR W\&CP has been renamed PMLR, so provide code to switch to %this instead, % \begin{macrocode} \newcommand*{\jmlrpmlr}{% \jmlrproceedings{PMLR}{Proceedings of Machine Learning Research}% } % \end{macrocode} %\end{macro} % This is a journal (non JMLR W\&CP\slash PMLR) article: % \begin{macrocode} \DeclareOptionX{nowcp}{\jmlrnowcp} % \end{macrocode} % This is an article for JMLR W\&CP % \begin{macrocode} \DeclareOptionX{wcp}{\jmlrwcp} % \end{macrocode} % This is an article for PMLR % \begin{macrocode} \DeclareOptionX{pmlr}{\jmlrpmlr} % \end{macrocode} %\begin{option}{oneside} %\changes{1.22}{2015/04/11}{new} % \begin{macrocode} \DeclareOptionX{oneside}{\@twosidefalse \@mparswitchfalse} % \end{macrocode} %\end{option} %\begin{option}{twoside} %\changes{1.22}{2015/04/11}{new} % \begin{macrocode} \DeclareOptionX{twoside}{\@twosidetrue \@mparswitchtrue} % \end{macrocode} %\end{option} % Set two-sided format % \begin{macrocode} \@twosidetrue % \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{letterpaper} % \end{macrocode} % Process options: % \begin{macrocode} \ProcessOptionsX % \end{macrocode} % If two-sided, pass that to \cls{article} as well: %\changes{1.28}{2020-09-21}{pass twoside to article.cls} % \begin{macrocode} \if@twoside \PassOptionsToClass{twoside}{article} \fi % \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} \PassOptionsToPackage{x11names}{xcolor} \RequirePackage{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.) For some reason, % loading \sty{algorithm2e} causes the message %\begin{verbatim} %(\end occurred inside a group at level 1) %\end{verbatim} % I don't know why, but it's outside the control of this class. % \begin{macrocode} \PassOptionsToPackage{algo2e,ruled}{algorithm2e} \RequirePackage{algorithm2e} % \end{macrocode} % Set the algorithm margin to zero. % \begin{macrocode} \setlength\algomargin{0pt} % \end{macrocode} %Load \sty{jmlrutils} before \sty{hyperref}. %\changes{1.24}{2017-08-01}{added \styfmt{jmlrutils}} % \begin{macrocode} \RequirePackage{jmlrutils} % \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}{2014-09-29}{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} % 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.21}{2015-02-24}{added optional argument to \cs{footnotetext}} %\changes{1.10}{2011-01-05}{Modified definition of \cs{thanks}} %Added optional argument to \cs{footnotetext} as per %\url{http://tex.stackexchange.com/questions/229295}. %\changes{1.28}{2020-09-21}{switched to using mpfootnote to avoid clashing %with document footnotes} % \begin{macrocode} \renewcommand*{\thanks}[1]{% \refstepcounter{mpfootnote}% \footnotemark[\number\value{mpfootnote}]% \xappto\@thanks{\noexpand\footnotetext[\number\value{mpfootnote}]{#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{
}%
\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{ |