|
|
- %\iffalse
- % jmlr.dtx generated using makedtx version 1.2 (c) Nicola Talbot
- % Command line args:
- % -doc "jmlr-manual.tex"
- % -src "jmlrutils.sty\Z=>jmlrutils.sty"
- % -src "jmlr.cls\Z=>jmlr.cls"
- % -src "jmlrbook.cls\Z=>jmlrbook.cls"
- % -author "Nicola Talbot"
- % -section "chapter"
- % jmlr
- % Created on 2017/8/1 16:57
- %\fi
- %\iffalse
- %<*package>
- %% \CharacterTable
- %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
- %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
- %% Digits \0\1\2\3\4\5\6\7\8\9
- %% Exclamation \! Double quote \" Hash (number) \#
- %% Dollar \$ Percent \% Ampersand \&
- %% Acute accent \' Left paren \( Right paren \)
- %% Asterisk \* Plus \+ Comma \,
- %% Minus \- Point \. Solidus \/
- %% Colon \: Semicolon \; Less than \<
- %% Equals \= Greater than \> Question mark \?
- %% Commercial at \@ Left bracket \[ Backslash \\
- %% Right bracket \] Circumflex \^ Underscore \_
- %% Grave accent \` Left brace \{ Vertical bar \|
- %% Right brace \} Tilde \~}
- %</package>
- %\fi
- % \iffalse
- % Doc-Source file to use with LaTeX2e
- % Copyright (C) 2017 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{5030}
-
- \newcommand*{\appopt}[1]{\texttt{-{}-#1}}
-
- \begin{document}
- \DocInput{jmlr.dtx}
- \end{document}
- %</driver>
- %\fi
- %\MakeShortVerb{"}
- %\DeleteShortVerb{\|}
- %
- % \title{\LaTeXe\ Classes for the Journal of Machine
- %Learning Research (JMLR) and
- %Proceedings of Machine Learning Research (PMLR)}
- % \author{Nicola L. C. Talbot\\[10pt]
- %\url{http://www.dickimaw-books.com/}}
- %
- % \date{2017-08-01 (version 1.24)}
- % \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}.
- %
- %There is also a Perl script called \app{makejmlrbook}, which is
- %distributed with the \clsfmt{jmlr} and \clsfmt{jmlrbook} bundle,
- %however it is now deprecated and 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 and may be
- %dropped from future versions of this bundle.
- %
- %\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.
- %
- %\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 keys are a subset of those provided by
- %\linebreak\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{http://www.tex.ac.uk/faq}{UK TUG FAQ}.
- %
- %If you are unfamiliar or just getting started with \LaTeX, there's
- %a list of on-line introductions to \LaTeX\ at
- %\url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=man-latex}
- %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{http://tex.stackexchange.com/}),
- %the \LaTeX\ Community (\url{http://www.latex-community.org/}),
- %the \texttt{texhax} mailing list
- %(\url{http://tug.org/mailman/listinfo/texhax}) and
- %\texttt{comp.text.tex} (archives available at
- %\url{http://groups.google.com/group/comp.text.tex/}).
- %
- %Documentation for packages or classes can be found using the
- %\texttt{texdoc} application. For example:
- %\begin{verbatim}
- %texdoc natbib
- %\end{verbatim}
- %Alternatively, you can go to
- %\texttt{http://www.ctan.org/pkg/}\meta{name} where
- %\meta{name} is the name of the package. For example:
- %\url{http://www.ctan.org/pkg/natbib}
- %
- %For a general guide to preparing papers (regardless of whether you
- %are using \LaTeX\ or a word processor), see Kate L.~Turabian, \qt{A
- %manual for writers of term papers, theses, and dissertations}, The
- %University of Chicago Press, 1996.
- %
- %\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
- % \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}[2017/08/01]
- % \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}
- %\begin{macro}{\@subfigurelabel}
- % Define how label appears.
- % \begin{macrocode}
- \newcommand*\@subfigurelabel[2]{#1\subfigurelabel{#2}}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\subfigref}
- % Reference the sub-figure without including the figure number.
- % \begin{macrocode}
- \newcommand*\@subfigref[1]{%
- {%
- \def\@subfigurelabel##1##2{\subfigurelabel{##2}}%
- \ref{#1}%
- }%
- }
- \newcommand*{\subfigref}[1]{%
- \let\@objectname\@empty
- \def\@objectref{}%
- \let\@prevsep\@empty
- \@for\@thislabel:=#1\do{%
- \toks@{\@prevsep}%
- \protected@edef\@objectref{\@objectref\the\toks@
- \protect\@subfigref{\@thislabel}}%
- \ifx\@objectname\@empty
- \let\@objectname\@nil
- \else
- \let\@objectname\relax
- \let\@prevsep\@jmlr@reflistsep
- \fi
- }%
- \ifx\@objectname\relax
- \let\@prevsep\@jmlr@reflistlastsep
- \fi
- \@objectref
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\subfigurelabel}
- % \begin{macrocode}
- \newcommand*{\subfigurelabel}[1]{(\emph{#1})}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\@subfloatcapbox}
- % Box to store subfloat caption.
- % \begin{macrocode}
- \newsavebox\@subfloatcapbox
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@subfloatcontsbox}
- % Box to store subfloat contents.
- % \begin{macrocode}
- \newsavebox\@subfloatcontsbox
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\subfigure}
- % \begin{macrocode}
- \newcommand*{\subfigure}[1][]{%
- \bgroup
- \def\@subfigcap{#1}%
- \@subfigure
- }
- % \end{macrocode}
- %\changes{1.09}{2010/12/01}{Added check to determine whether the
- %subfigure caption is wider than the subfigure}
- % \begin{macrocode}
- \newcommand*{\@subfigure}[2][b]{%
- \advance\c@figure by 1\relax
- \refstepcounter{subfigure}%
- \sbox\@subfloatcapbox{\subfigurelabel{\thesubfigure}%
- \ifx\@subfigcap\@empty
- \else
- \space\@subfigcap
- \fi}%
- \sbox\@subfloatcontsbox{#2}%
- \settowidth{\@tempdima}{\usebox\@subfloatcontsbox}%
- \settowidth{\@tempdimb}{\usebox\@subfloatcapbox}%
- \ifdim\@tempdimb>\@tempdima
- \settowidth\@tempdimb{\subfigurelabel{\thesubfigure}\space}%
- \addtolength{\@tempdima}{-\@tempdimb}%
- \sbox\@subfloatcapbox{\subfigurelabel{\thesubfigure}\space
- \parbox[t]{\@tempdima}{\@subfigcap}}%
- \fi
- \begin{tabular}[#1]{@{}c@{}}%
- \usebox\@subfloatcontsbox\\\usebox\@subfloatcapbox
- \end{tabular}%
- \egroup
- }
- % \end{macrocode}
- %\end{macro}
- %
- % Sub-tables:
- %\begin{macro}{\c@subtable}
- % Define subtable counter:
- % \begin{macrocode}
- \newcounter{subtable}
- \@addtoreset{subtable}{table}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\thesubtable}
- % \begin{macrocode}
- \renewcommand*{\thesubtable}{\alph{subtable}}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\p@subtable}
- % \begin{macrocode}
- \renewcommand*{\p@subtable}{\expandafter\@p@subtable}
- \newcommand*{\@p@subtable}[1]{%
- \protect\@subtablelabel{\thetable}{\thesubtable}%
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@subtablelabel}
- % Define how label appears.
- % \begin{macrocode}
- \newcommand*\@subtablelabel[2]{#1\subtablelabel{#2}}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\subtabref}
- % Reference the sub-table without including the table number.
- % \begin{macrocode}
- \newcommand*\@subtabref[1]{%
- {%
- \def\@subtablelabel##1##2{\subtablelabel{##2}}%
- \ref{#1}%
- }%
- }
- \newcommand*{\subtabref}[1]{%
- \let\@objectname\@empty
- \def\@objectref{}%
- \let\@prevsep\@empty
- \@for\@thislabel:=#1\do{%
- \toks@{\@prevsep}%
- \protected@edef\@objectref{\@objectref\the\toks@
- \protect\@subtabref{\@thislabel}}%
- \ifx\@objectname\@empty
- \let\@objectname\@nil
- \else
- \let\@objectname\relax
- \let\@prevsep\@jmlr@reflistsep
- \fi
- }%
- \ifx\@objectname\relax
- \let\@prevsep\@jmlr@reflistlastsep
- \fi
- \@objectref
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\subtablelabel}
- % \begin{macrocode}
- \newcommand*{\subtablelabel}[1]{(\emph{#1})}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\subtable}
- % \begin{macrocode}
- \newcommand*{\subtable}[1][]{%
- \def\@subtabcap{#1}%
- \@subtable
- }
- % \end{macrocode}
- %\changes{1.09}{2010/12/01}{Added check to determine whether the
- %subtable caption is wider than the subtable}
- % \begin{macrocode}
- \newcommand*{\@subtable}[2][t]{%
- \refstepcounter{subtable}%
- \sbox\@subfloatcapbox{\subtablelabel{\thesubtable}%
- \ifx\@subtabcap\@empty
- \else
- \space\@subtabcap
- \fi}%
- \sbox\@subfloatcontsbox{#2}%
- \settowidth{\@tempdima}{\usebox\@subfloatcontsbox}%
- \settowidth{\@tempdimb}{\usebox\@subfloatcapbox}%
- \ifdim\@tempdimb>\@tempdima
- \settowidth\@tempdimb{\subtablelabel{\thesubtable}\space}%
- \addtolength{\@tempdima}{-\@tempdimb}%
- \sbox\@subfloatcapbox{\subtablelabel{\thesubtable}\space
- \parbox[t]{\@tempdima}{\@subtabcap}}%
- \fi
- \begin{tabular}[#1]{@{}c@{}}%
- \usebox\@subfloatcapbox\\\usebox\@subfloatcontsbox
- \end{tabular}
- }
- % \end{macrocode}
- %\end{macro}
- %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{environment}{proof}
- % Proof environment
- % \begin{macrocode}
- \newenvironment{proof}%
- {%
- \par\noindent{\bfseries\upshape Proof\ }%
- }%
- {\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}
- %</jmlrutils.sty>
- % \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}[2017/08/01 v1.24 (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.07}{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}
- % 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}{??}{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}{??}{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}.
- % \begin{macrocode}
- \renewcommand*{\thanks}[1]{%
- \footnotemark
- \protected@xdef\@thanks{\@thanks
- \protect\footnotetext[\arabic{footnote}]{#1}}%
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\subsection{Article abstract}
- % This code has been taken from jmlr2e.sty but with \cs{bf} updated
- % to \cs{bfseries}
- %\begin{environment}{abstract}
- % \begin{macrocode}
- \ifjmlrhtml
- \renewenvironment{abstract}{\HCode{<h3>}Abstract\HCode{</h3>}}{}%
- \else
- \renewenvironment{abstract}
- % \end{macrocode}
- %\changes{1.09}{2010/12/01}{changed \cs{centerline} to
- %\cs{centering}\ldots\cs{par}}
- % \begin{macrocode}
- {{\centering\large\bfseries Abstract\par}\vspace{0.7ex}%
- \bgroup
- \leftskip 20pt\rightskip 20pt\small\noindent\ignorespaces}%
- {\par\egroup\vskip 0.25ex}
- \fi
- % \end{macrocode}
- %\end{environment}
- %\subsection{Keywords}
- % This code has been taken from jmlr2e.sty but with \cs{bf} updated
- % to \cs{bfseries}.
- %\begin{environment}{keywords}
- % \begin{macrocode}
- \newenvironment{keywords}
- {\bgroup\leftskip 20pt\rightskip 20pt \small\noindent{\bfseries
- Keywords:} \ignorespaces}%
- {\par\egroup\vskip 0.25ex}
- % \end{macrocode}
- %\end{environment}
- %\subsection{Title Page Information}
- % This code has been taken from jmlr2e.sty.
- %
- % Title stuff, borrowed in part from aaai92.sty
- % \begin{macrocode}
- \newlength\aftertitskip \newlength\beforetitskip
- \newlength\interauthorskip \newlength\aftermaketitskip
- % \end{macrocode}
- %% Changeable parameters.
- % \begin{macrocode}
- \setlength\aftertitskip{0.1in plus 0.2in minus 0.2in}
- \setlength\beforetitskip{0.05in plus 0.08in minus 0.08in}
- \setlength\interauthorskip{0.08in plus 0.1in minus 0.1in}
- \setlength\aftermaketitskip{0.3in plus 0.1in minus 0.1in}
- % \end{macrocode}
- %
- %\begin{macro}{\titlebreak}
- %\changes{1.12}{2012/01/05}{new}
- % Acts like new line in the paper title, but with jmlrbook acts like a space in
- % the table of contents and bookmarks.
- % \begin{macrocode}
- \newcommand*{\titlebreak}{\newline}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\titletag}
- %\changes{1.17}{2012/05/30}{new}
- % \begin{macrocode}
- \newcommand*{\titletag}[1]{}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\title}
- % Override definition of \cs{title} to allow for an optional
- % argument (short title)
- % \begin{macrocode}
- \renewcommand*{\title}[2][\@title]{%
- \def\@shorttitle{#1}%
- \def\@title{#2}%
- \protected@write\@auxout{}{\string\jmlr@title{#1}{#2}}%
- \jmlrtitlehook
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@shorttitle}
- %\changes{1.12}{2012/01/05}{provided default value}
- % The short title of the document is initialised to \cs{jobname} to
- % ensure a basic document will compile even if no title is set.
- % \begin{macrocode}
- \newcommand*{\@shorttitle}{\jobname}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\jmlrtitlehook}
- % \begin{macrocode}
- \newcommand*{\jmlrtitlehook}{}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\jmlr@title}
- %\changes{1.20}{2014/10/15}{new}
- % AUX command provided for MakeJmlrBookGUI
- % \begin{macrocode}
- \newcommand*{\jmlr@title}[2]{}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\author}
- % Override definition of \cs{author} to allow for an optional
- % argument (list of authors for page heading)
- % \begin{macrocode}
- \renewcommand*{\author}[2][]{%
- \def\@author{#2}%
- \def\@sauthor{#1}%
- \def\@jmlr@aux@author{#2}\@onelevel@sanitize\@jmlr@aux@author
- \ifx\@sauthor\@empty
- \let\@jmlr@aux@sauthor\@jmlr@aux@author
- \else
- \let\@shortauthor\@sauthor
- \def\@jmlr@aux@sauthor{#1}\@onelevel@sanitize\@jmlr@aux@sauthor
- \fi
- \jmlrauthorhook
- \protected@write\@auxout
- {}{\string\jmlr@author{\@jmlr@aux@sauthor}{\@jmlr@aux@author}}%
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\jmlrauthorhook}
- % \begin{macrocode}
- \newcommand*{\jmlrauthorhook}{}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\jmlr@author}
- %\changes{1.20}{2014/10/15}{new}
- % AUX command provided for MakeJmlrBookGUI
- % \begin{macrocode}
- \newcommand*{\jmlr@author}[2]{}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\@shortauthor}
- % \begin{macrocode}
- \newcommand*{\@shortauthor}{}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\@firstauthor}
- % \begin{macrocode}
- \newcommand*{\@firstauthor}{}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@firstsurname}
- % \begin{macrocode}
- \newcommand*{\@firstsurname}{}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\jmlrlength}
- % \begin{macrocode}
- \newlength\jmlrlength
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\jmlrmaketitle}
- % Make the title
- % \begin{macrocode}
- \def\jmlrmaketitle{%
- \jmlrpremaketitlehook
- \def\@jmlr@authors@sep{, }%
- \par
- \begingroup
- % \end{macrocode}
- %\changes{1.08}{2010-07-27}{modified footnote marker in the footnote
- %text so that it is raised and isn't followed by a full stop}
- % \begin{macrocode}
- \def\footnoteseptext{ }%
- \def\thempfn{\textsuperscript{\thefootnote}}%
- \def\thefootnote{\fnsymbol{footnote}}%
- % \end{macrocode}
- %\changes{1.07}{2010-06-30}{added check for two column mode}
- % \begin{macrocode}
- \if@twocolumn
- \twocolumn[\@jmlrmaketitle]%
- \else
- \@jmlrmaketitle
- \fi
- \@thanks
- \endgroup
- \label{jmlrstart}%
- \ifx\@sauthor\@empty
- \settowidth{\jmlrlength}{\@evenhead}%
- \ifdim\jmlrlength>\textwidth
- \def\@shortauthor{\@firstsurname\space et al.}%
- \fi
- \fi
- \settowidth{\jmlrlength}{\@titlefoot}%
- \ifdim\jmlrlength>\textwidth
- \def\@jmlrauthors{\@firstauthor\space \emph{et al}}%
- \fi
- \jmlrmaketitlehook
- \thispagestyle{jmlrtps}%
- \setcounter{footnote}{0}%
- \let\maketitle\relax \let\@maketitle\relax
- \gdef\@thanks{}\gdef\@author{}\let\thanks\@gobble
- \def\@jmlr@authors@sep{ \& }%
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\jmlrmaketitlehook}
- % \begin{macrocode}
- \newcommand*{\jmlrmaketitlehook}{}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\jmlrpremaketitlehook}
- % \begin{macrocode}
- \newcommand*{\jmlrpremaketitlehook}{}
- % \end{macrocode}
- %\end{macro}
- %
- % Provide a different title layout for HTML
- %\begin{macro}{\jmlrhtmlmaketitle}
- % \begin{macrocode}
- \newcommand{\jmlrhtmlmaketitle}{%
- \ifx\@jmlr@authors\@empty
- \sbox\jmlrbox{\let\addr\relax\@author}%
- \fi
- \noindent\HCode{<h2>}\@title\HCode{</h2>}
- \noindent\@jmlr@authors
- }
- % \end{macrocode}
- %\end{macro}
- %%\begin{macro}{\jmlrbox}
- % Define a save box
- % \begin{macrocode}
- \newsavebox\jmlrbox
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\maketitle}
- % If we're creating HTML, set \cs{maketitle} to
- % \cs{jmlrhtmlmaketitle}, otherwise set it to \cs{jmlrmaketitle}
- % \begin{macrocode}
- \ifjmlrhtml
- \let\maketitle\jmlrhtmlmaketitle
- \else
- \let\maketitle\jmlrmaketitle
- \fi
- % \end{macrocode}
- %\end{macro}
- %
- % Author and editor information.
- % \begin{macrocode}
- \def\@startauthor{\noindent \normalsize\bfseries}
- \def\@endauthor{}
- \def\@starteditor{\noindent \small {\bfseries \@edname:~}}
- \def\@endeditor{\normalsize}
- % \end{macrocode}
- % Provide hooks to make it easier to adapted with \cls{combine}
- % class.
- %\begin{macro}{\jmlrpretitle}
- % \begin{macrocode}
- \def\jmlrpretitle{\vskip\beforetitskip\begin{center}\Large\bfseries}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\jmlrposttitle}
- % \begin{macrocode}
- \def\jmlrposttitle{\par\end{center}\vskip\aftertitskip}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\nametag}
- %\changes{1.09}{2010/12/01}{new}
- % \begin{macrocode}
- \newcommand*{\nametag}[1]{}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\jmlrpreauthor}
- %\changes{1.09}{2010/12/01}{added \cs{nametag}}
- % \begin{macrocode}
- \def\jmlrpreauthor{%
- \bgroup
- \def\nametag##1{##1}%
- \def\and{\unskip\enspace{\normalfont and}\enspace}%
- % \end{macrocode}
- %\changes{1.10}{2011-01-05}{added \cs{mdseries} to \cs{addr}}
- % \begin{macrocode}
- \def\addr{\mdseries\small\itshape}%
- \def\name{\ClassError{jmlr}{Use \string\Name{Author's Name} not \string\name}{}}%
- \def\email{\ClassError{jmlr}{Use \string\Email{address} not \string\email}{}}%
- \def\AND{\@endauthor\normalfont\hss \vskip \interauthorskip
- \@startauthor}%
- \@startauthor
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\addr}
- %\changes{1.20}{2014/10/15}{initialised to nothing}
- % Initialise to do nothing if used outside of \cs{author}
- % \begin{macrocode}
- \newcommand{\addr}{}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@email}
- % \begin{macrocode}
- \def\@email{\hfill\small\mdseries\scshape}%
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@name}
- % \begin{macrocode}
- \def\@name{\normalsize\upshape\bfseries}%
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\@parsename}
- % Parse a name. Appends forename to \cs{@forenames} and stores
- % surname in \cs{@surname}.
- % \begin{macrocode}
- \def\@parsename#1 #2\end@parsename{%
- \def\@tmp{#2}%
- \ifx\@tmp\@nnil
- \def\@surname{#1}%
- \let\@nextparsename\@parsenamenoop
- \else
- \@getinitial#1-\relax\relax\end@getinitial
- \ifx\@forenames\@empty
- \def\@forenames{#1}%
- \protected@edef\@initials{\@initial}%
- \else
- \expandafter\toks@\expandafter{\@forenames}%
- \edef\@forenames{\space\the\toks@}%
- \expandafter\toks@\expandafter{\@initials}%
- \protected@edef\@initials{\the\toks@\@initial}%
- \fi
- \let\@nextparsename\@parsename
- \fi
- \@nextparsename#2\end@parsename
- }
- \def\@parsenamenoop#1\end@parsename{}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\@getinitial}
- % \begin{macrocode}
- \def\@getinitial#1#2-#3#4\end@getinitial{%
- \def\@jmlr@tmp{#3}%
- \if\@jmlr@tmp\relax
- \def\@initial{#1.}%
- \else
- \def\@initial{#1.-#3.}%
- \fi
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\Name}
- % Get the author's name and add surname to \cs{@shortauthors}.
- % (Surnames with \qt{von} parts or with spaces in should be
- % enclosed in braces)
- %\changes{1.12}{2012/01/05}{added optional argument}
- % \begin{macrocode}
- \newcommand*{\Name}[2][]{%
- \def\@authorlist{#1}%
- \def\@forenames{}%
- \def\@surname{}%
- \def\nametag##1{}%
- \@parsename#2 \@nil\end@parsename
- \ifx\@shortauthor\@empty
- \ifx\@sauthor\@empty
- \global\let\@shortauthor\@surname
- \global\let\@firstsurname\@surname
- \fi
- \ifx\@authorlist\@empty
- \protected@xdef\@jmlrauthors{\@initials\space\@surname}%
- \else
- \protected@xdef\@jmlrauthors{\@authorlist}%
- \fi
- \global\let\@firstauthor\@jmlrauthors
- \else
- \ifx\@sauthor\@empty
- \expandafter\toks@\expandafter{\@shortauthor}%
- \protected@xdef\@shortauthor{\the\toks@\space\@surname}%
- \fi
- \ifx\@authorlist\@empty
- \ifx\@jmlrauthors\@empty
- \protected@xdef\@jmlrauthors{\@initials\space\@surname}%
- \else
- \protected@xdef\@jmlrauthors{\@jmlrauthors
- \noexpand\@jmlr@authors@sep
- \@initials\space\@surname}%
- \fi
- \else
- \ifx\@jmlrauthors\@empty
- \protected@xdef\@jmlrauthors{\@authorlist}%
- \else
- \protected@xdef\@jmlrauthors{\@jmlrauthors
- \noexpand\@jmlr@authors@sep
- \@authorlist
- }%
- \fi
- \fi
- \fi
- \def\nametag##1{##1}%
- \@name #2%
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\jmlrabbrnamelist}
- %\changes{1.11}{2011-03-24}{new}
- % Display list of names in abbreviated form. (Mainly designed for use with
- % makejmlrbook for the preface authors.) The author should be
- % grouped if the name contains a comma.
- % \begin{macrocode}
- \newcommand*{\jmlrabbrnamelist}[1]{%
- \def\nametag##1{}%
- \def\@jmlr@authors@sep{, }%
- \def\@jmlr@namelist{}%
- \@for\@thisname:=#1\do{%
- \expandafter\@jmlrabbrname\expandafter{\@thisname}%
- \ifx\@jmlr@namelist\@empty
- \protected@edef\@jmlr@namelist{%
- \@initials\space\@surname
- }%
- \else
- \protected@edef\@jmlr@namelist{%
- \@jmlr@namelist
- \noexpand\@jmlr@authors@sep
- \@initials\space\@surname
- }%
- \fi
- }%
- \def\@jmlr@authors@sep{ \& }%
- \@jmlr@namelist
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@jmlrabbrname}
- % \begin{macrocode}
- \newcommand*{\@jmlrabbrname}[1]{%
- \def\@initials{}%
- \def\@surname{}%
- \def\@forenames{}%
- \@parsename#1 \@nil\end@parsename
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\Email}
- % \begin{macrocode}
- \newcommand*{\Email}[1]{{\@email #1}}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\jmlrpostauthor}
- % \begin{macrocode}
- \def\jmlrpostauthor{\@endauthor\egroup
- \par
- \vskip \aftermaketitskip
- \noindent
- \ifx\@editor\@empty
- \else
- \@starteditor \@editor \@endeditor
- \fi
- \vskip \aftermaketitskip
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@jmlrmaketitle}
- % \begin{macrocode}
- \def\@jmlrmaketitle{\vbox{\hsize\textwidth
- \linewidth\hsize
- \jmlrpretitle
- {%
- \def\titletag##1{##1}%
- \@title
- }%
- \jmlrposttitle
- \jmlrpreauthor \@author \jmlrpostauthor
- }}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\kernelmachines}
- % Convenience command
- % \begin{macrocode}
- \newcommand*\kernelmachines{(for
- {\textsc{http://www.kernel-machines.org}})}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\editorname}
- % Label for the editor
- % \begin{macrocode}
- \newcommand*{\editorname}{Editor}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\editorsname}
- % Label for the editor
- % \begin{macrocode}
- \newcommand*{\editorsname}{Editors}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@edname}
- % This will either be Editor or Editors depending on whether
- % \cs{editor} or \cs{editors} is used. Defaults to \cs{editorname}
- % \begin{macrocode}
- \let\@edname\editorname
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@editor}
- % The editor or editors are stored in \cs{@editor}
- % \begin{macrocode}
- \def\@editor{}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\editor}
- % A single editor
- % \begin{macrocode}
- \def\editor#1{%
- \global\let\@edname\editorname
- \gdef\@editor{#1}%
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\editors}
- % Multiple editors
- % \begin{macrocode}
- \def\editors#1{%
- \global\let\@edname\editorsname
- \gdef\@editor{#1}%
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\subsection{Pagestyles}
- % This is taken from jmlr2e.sty
- %
- %\begin{macro}{\firstpageno}
- % Set the page counter.
- % \begin{macrocode}
- \def\firstpageno#1{\setcounter{page}{#1}}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\startpage}
- %\changes{1.10}{2011-01-05}{new}
- % If \cs{startpage} has been defined, use its value for the first
- % page.
- % \begin{macrocode}
- \@ifundefined{startpage}{}{\firstpageno{\startpage}}
- % \end{macrocode}
- %\end{macro}
- %
- % Label end page.
- %\begin{macro}{\@jmlrenddoc}
- % Label end page
- % \begin{macrocode}
- \newcommand*{\@jmlrenddoc}{%
- \phantomsection
- \protected@edef\@currentlabelname{end of \@shorttitle}%
- \label{jmlrend}\null
- \global\let\@reprint\@empty
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\@titlefoot}
- %\changes{1.09}{2010/12/01}{added \cs{@reprint}}
- % \begin{macrocode}
- \newcommand*{\@titlefoot}{\scriptsize\copyright\space\@jmlryear
- \space\@jmlr@authors.\hfill
- \@reprint
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\reprint}
- %\changes{1.09}{2010/12/01}{new}
- % \begin{macrocode}
- \let\@reprint\@empty
- \newcommand{\reprint}[1]{%
- \gdef\@reprint{Reprinted with permission for JMLR#1}}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\ps@jmlrtps}
- % Title page style
- % \begin{macrocode}
- \newcommand\ps@jmlrtps{%
- \let\@mkboth\@gobbletwo
- \def\@oddhead{\scriptsize \@jmlrproceedings
- \ifx\@jmlrvolume\@empty
- \else
- \space\@jmlrvolume
- \ifx\@jmlrissue\@empty\else(\@jmlrissue)\fi
- \ifx\@jmlrpages\@empty
- \ifx\@jmlryear\@empty
- \else
- \if\@jmlrissue\@empty,\fi
- \fi
- \else
- :%
- \fi
- \fi
- \ifx\@jmlrpages\@empty
- \else
- \ifx\@jmlrvolume\@empty\space\fi
- \@jmlrpages
- \ifx\@jmlryear\@empty\else,\fi
- \fi
- \ifx\@jmlryear\@empty\else\space\@jmlryear\fi
- \hfill
- \ifx\@jmlrworkshop\@empty
- \ifx\@jmlrsubmitted\@empty
- \else
- Submitted \@jmlrsubmitted
- \ifx\@jmlrpublished\@empty\else;\fi
- \fi
- \ifx\@jmlrpublished\@empty
- \else
- \space Published \@jmlrpublished
- \fi
- \else
- \space\@jmlrworkshop
- \fi
- }%
- \let\@evenhead\@oddhead
- \def\@oddfoot{\@titlefoot}%
- \let\@evenfoot\@oddfoot
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\ps@jmlrps}
- % Page style for subsequent pages
- % \begin{macrocode}
- \def\ps@jmlrps{%
- \let\@mkboth\@gobbletwo
- \def\@oddhead{\hfill {\small\scshape \@shorttitle} \hfill}%
- \def\@oddfoot{\hfill \small\rmfamily \thepage \hfill}%
- \def\@evenhead{\hfill {\small\scshape \@shortauthor} \hfill}%
- \def\@evenfoot{\hfill \small\rmfamily \thepage \hfill}%
- }%
- % \end{macrocode}
- % Set the page style:
- % \begin{macrocode}
- \pagestyle{jmlrps}
- % \end{macrocode}
- %\end{macro}
- % Set the heading information:
- %\begin{macro}{\@jmlrvolume}
- % The volume number:
- %\changes{1.17}{2012/05/30}{changed initial definition to use
- %\cs{providecommand}}
- % \begin{macrocode}
- \providecommand*{\@jmlrvolume}{}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\jmlrvolume}
- % \begin{macrocode}
- \newcommand*{\jmlrvolume}[1]{\renewcommand*{\@jmlrvolume}{#1}}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@jmlrissue}
- % The issue number:
- % \begin{macrocode}
- \providecommand*{\@jmlrissue}{}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\jmlrissue}
- % \begin{macrocode}
- \newcommand*{\jmlrissue}[1]{\renewcommand*{\@jmlrissue}{#1}}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@jmlryear}
- % The year of publication:
- %\changes{1.17}{2012/05/30}{changed initial definition to use
- %\cs{providecommand}}
- % \begin{macrocode}
- \providecommand*{\@jmlryear}{}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\jmlryear}
- % \begin{macrocode}
- \newcommand*{\jmlryear}[1]{\renewcommand*{\@jmlryear}{#1}}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@jmlrpages}
- % The page range:
- %\changes{1.17}{2012/05/30}{changed initial definition to use
- %\cs{providecommand}}
- % \begin{macrocode}
- \providecommand*\@jmlrpages{\pageref{jmlrstart}--\pageref{jmlrend}}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\jmlrpages}
- % \begin{macrocode}
- \newcommand*{\jmlrpages}[1]{\renewcommand*{\@jmlrpages}{#1}}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@jmlrsubmitted}
- % The date the article was submitted:
- %\changes{1.17}{2012/05/30}{changed initial definition to use
- %\cs{providecommand}}
- % \begin{macrocode}
- \providecommand*\@jmlrsubmitted{}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\jmlrsubmitted}
- % \begin{macrocode}
- \newcommand*{\jmlrsubmitted}[1]{\renewcommand*{\@jmlrsubmitted}{#1}}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@jmlrpublished}
- % The date the article was published:
- %\changes{1.17}{2012/05/30}{changed initial definition to use
- %\cs{providecommand}}
- % \begin{macrocode}
- \providecommand*\@jmlrpublished{}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\jmlrpublished}
- % \begin{macrocode}
- \newcommand*{\jmlrpublished}[1]{\renewcommand*{\@jmlrpublished}{#1}}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@jmlrworkshop}
- % The name of the workshop:
- %\changes{1.17}{2012/05/30}{changed initial definition to use
- %\cs{providecommand}}
- % \begin{macrocode}
- \providecommand*\@jmlrworkshop{}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\jmlrworkshop}
- % \begin{macrocode}
- \newcommand*{\jmlrworkshop}[1]{%
- \renewcommand*{\@jmlrworkshop}{#1}%
- \protected@write\@auxout{}{\string\jmlr@workshop{#1}}%
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\jmlr@workshop}
- %\changes{1.20}{2014/10/15}{new}
- % \begin{macrocode}
- \newcommand*{\jmlr@workshop}[1]{}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\date}
- % \begin{macrocode}
- \renewcommand*{\date}[1]{%
- \renewcommand*{\@date}{#1}%
- \protected@write\@auxout{}{\string\jmlr@date{#1}}%
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\jmlr@date}
- %\changes{1.20}{2014/10/15}{new}
- % \begin{macrocode}
- \newcommand*{\jmlr@date}[1]{}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@jmlrauthors}
- % \begin{macrocode}
- \newcommand*{\@jmlrauthors}{}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@jmlr@authors}
- %\changes{1.12}{2012/01/05}{new}
- % \begin{macrocode}
- \newcommand*{\@jmlr@authors}{\@jmlrauthors}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\jmlrauthors}
- % This is provided in case \cs{Name} doesn't set \cs{@jmlrauthors}
- % correctly.
- %\changes{1.12}{2012/01/05}{\cs{jmlrauthors} now redefines
- %\cs{@jmlr@authors} instead of \cs{@jmlrauthors}}
- % \begin{macrocode}
- \newcommand*{\jmlrauthors}[1]{\global\def\@jmlr@authors{#1}}
- % \end{macrocode}
- %\end{macro}
- %
- %
- %\subsection{Miscellany}
- % This code was taken from jmlr2e.sty.
-
- % Define macros for figure captions and table titles
- % \begin{macrocode}
- \def\figurecaption#1#2{\noindent\hangindent 40pt
- \hbox to 36pt {\small\slshape #1 \hfil}
- \ignorespaces {\small #2}}
- % \end{macrocode}
- % Figurecenter prints the caption title centered.
- % \begin{macrocode}
- \def\figurecenter#1#2{\centerline{{\slshape #1} #2}}
- \def\figurecenter#1#2{\centerline{{\small\slshape #1} {\small #2}}}
- % \end{macrocode}
- %
- % Allow ``hanging indents'' in long captions
- %
- %\begin{macro}{\@makecaption}
- % \begin{macrocode}
- \long\def\@makecaption#1#2{%
- \vskip 10pt
- \setbox\@tempboxa\hbox{#1: #2}%
- \ifdim \wd\@tempboxa >\hsize % IF longer than one line:
- \begin{list}{#1:}{%
- \settowidth{\labelwidth}{#1:}
- \setlength{\leftmargin}{\labelwidth}
- \addtolength{\leftmargin}{\labelsep}
- }\item #2 \end{list}\par % Output in quote mode
- \else % ELSE center.
- \hbox to\hsize{\hfil\box\@tempboxa\hfil}
- \fi}
- % \end{macrocode}
- %\end{macro}
- % Define strut macros for skipping spaces above and below text in a
- % tabular environment.
- % \begin{macrocode}
- \def\abovestrut#1{\rule[0in]{0in}{#1}\ignorespaces}
- \def\belowstrut#1{\rule[-#1]{0in}{#1}\ignorespaces}
- % \end{macrocode}
- %\begin{macro}{\acks}
- % Acknowledgements
- % \begin{macrocode}
- \newcommand{\acks}[1]{\section*{Acknowledgments}#1}
- % \end{macrocode}
- %\end{macro}
- % Research Note
- %\begin{macro}{\researchnote}
- % \begin{macrocode}
- \newcommand{\researchnote}[1]{\noindent {\LARGE\itshape Research Note} #1}
- % \end{macrocode}
- %\end{macro}
- %
- %Other macros now moved to \sty{jmlrutils}.
- %
- %\begin{macro}{\ifprint}
- % Provide command to check if this is the printed greyscale
- % version or the online colour version.
- % \begin{macrocode}
- \providecommand{\ifprint}[2]{\ifgrayscale#1\else#2\fi}
- % \end{macrocode}
- %\end{macro}
- %
- % Modify \cs{includegraphics} so that it can pick up the greyscale
- % version of images if this is the print version.
- %% \begin{macrocode}
- \ifjmlrhtml
- \else
- \let\@org@Ginclude@graphics\Ginclude@graphics
- \def\Ginclude@graphics#1{%
- \begingroup
- \let\input@path\Ginput@path
- \ifprint{\filename@parse{#1-gray}}{\filename@parse{#1}}%
- \ifx\filename@ext\relax
- \@for\Gin@temp:=\Gin@extensions\do{%
- \ifx\Gin@ext\relax
- \Gin@getbase\Gin@temp
- \fi}%
- \else
- \ifprint{\filename@parse{#1}}{}%
- \Gin@getbase{\Gin@sepdefault\filename@ext}%
- \ifx\Gin@ext\relax
- \@warning{File `#1' not found}%
- \def\Gin@base{\filename@area\filename@base}%
- \edef\Gin@ext{\Gin@sepdefault\filename@ext}%
- \fi
- \fi
- \ifx\Gin@ext\relax
- \ifprint{\@org@Ginclude@graphics{#1}}%
- {%
- \@latex@error{File `#1' not found}%
- {I could not locate the file with any of these extensions:^^J%
- \Gin@extensions^^J\@ehc}%
- }%
- \else
- \@ifundefined{Gin@rule@\Gin@ext}%
- {\ifx\Gin@rule@*\@undefined
- \@latex@error{Unknown graphics extension: \Gin@ext}\@ehc
- \else
- \expandafter\Gin@setfile\Gin@rule@*{\Gin@base\Gin@ext}%
- \fi}%
- {\expandafter\expandafter\expandafter\Gin@setfile
- \csname Gin@rule@\Gin@ext\endcsname{\Gin@base\Gin@ext}}%
- \fi
- \endgroup}
- \fi
- % \end{macrocode}
- %
- %\begin{macro}{\artappendix}
- % Switch to appendices in an article
- % \begin{macrocode}
- \newcommand{\artappendix}{\par
- \setcounter{section}{0}
- \setcounter{subsection}{0}
- \def\thesection{\Alph{section}}
- % \end{macrocode}
- %\changes{1.12}{2012/01/05}{added chapter to \cs{theHsection} to ensure unique
- %hyperlink names in book}
- % \begin{macrocode}
- \def\theHsection{\theHchapter.\Alph{section}}
- \def\presectionnum{Appendix~}%
- }
- % \end{macrocode}
- %\end{macro}
- % The default assumes a stand-alone article.
- %\begin{macro}{\appendix}
- % \begin{macrocode}
- \let\appendix\artappendix
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\booklinebreak}
- %\changes{1.18}{2013-10-17}{new}
- % Provided for book production editors to fine tune the book
- % line breaking. Does nothing in the standalone article.
- % \begin{macrocode}
- \newcommand{\booklinebreak}[1][]{}
- % \end{macrocode}
- %\end{macro}
- %
- %\subsection{Compatibility with combine.cls}
- %
- % Define chapters to make this class play nicely with \cls{combine}.
- % These definitions are just copied from book.cls
- % \begin{macrocode}
- \newcounter{chapter}
- \renewcommand\thechapter{\@arabic\c@chapter}
- \newcommand\@chapapp{\chaptername}
- % \end{macrocode}
- % Add sections to the chapter reset.
- % \begin{macrocode}
- \@addtoreset{section}{chapter}
- % \end{macrocode}
- %\begin{macro}{\chaptermark}
- % \begin{macrocode}
- \newcommand*\chaptermark[1]{}
- % \end{macrocode}
- %\end{macro}
- % Chapters should only be defined when we're combining documents
- % into a book.
- %\begin{macro}{\bookchapter}
- % \begin{macrocode}
- \newcommand\bookchapter{%
- \if@openright\cleardoublepage\else\clearpage\fi
- \thispagestyle{plain}%
- \global\@topnum\z@
- \@afterindentfalse
- \secdef\@chapter\@schapter}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\artchapter}
- % Disable chapters for articles.
- % \begin{macrocode}
- \newcommand\artchapter{%
- \ClassError{jmlr}{Chapters not permitted in articles}{}}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\chapter}
- % The default assumes a stand-alone document.
- % \begin{macrocode}
- \let\chapter\artchapter
- % \end{macrocode}
- %\end{macro}
- % Label for the chapter entries in the toc.
- % \begin{macrocode}
- \def\@chaptoclabel{chapter}
- % \end{macrocode}
- %\begin{macro}{\@chapter}
- % Numbered chapters
- % \begin{macrocode}
- \def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
- \refstepcounter{chapter}%
- \if@mainmatter
- \typeout{\@chapapp\space\thechapter.}%
- \addcontentsline{toc}{\@chaptoclabel}%
- {\protect\numberline{\thechapter}#1}%
- \else
- \addcontentsline{toc}{\@chaptoclabel}{#1}%
- \fi
- \else
- \addcontentsline{toc}{\@chaptoclabel}{#1}%
- \fi
- \chaptermark{#1}%
- \addtocontents{lof}{\protect\addvspace{10\p@}}%
- \addtocontents{lot}{\protect\addvspace{10\p@}}%
- \if@twocolumn
- \@topnewpage[\@makechapterhead{#2}]%
- \else
- \@makechapterhead{#2}%
- \@afterheading
- \fi}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\chaptertitleformat}
- % Formats the chapter title
- % \begin{macrocode}
- \newcommand{\chaptertitleformat}[1]{%
- \Huge\bfseries#1%
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\chapternumberformat}
- % Formats the chapter number
- % \begin{macrocode}
- \newcommand{\chapternumberformat}[1]{%
- \huge\bfseries \@chapapp\space#1\par\nobreak
- \vskip 20\p@
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\chapterformat}
- % Overall format for chapter headings
- % \begin{macrocode}
- \newcommand*{\chapterformat}{\raggedright}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\postchapterskip}
- % Vertical gap after chapter heading
- % \begin{macrocode}
- \newlength\postchapterskip
- \setlength\postchapterskip{40pt}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\prechapterskip}
- % Vertical gap before chapter heading
- % \begin{macrocode}
- \newlength\prechapterskip
- \setlength\prechapterskip{50pt}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@makechapterhead}
- % Chapter heading for numbered chapters
- % \begin{macrocode}
- \def\@makechapterhead#1{%
- \null\vskip\prechapterskip
- {\parindent \z@ \normalfont\chapterformat
- \ifnum \c@secnumdepth >\m@ne
- \if@mainmatter
- \chapternumberformat{\thechapter}%
- \fi
- \fi
- \interlinepenalty\@M
- \chaptertitleformat{#1}\par\nobreak
- \vskip \postchapterskip
- }}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@schapter}
- % Unnumbered chapters.
- % \begin{macrocode}
- \def\@schapter#1{\if@twocolumn
- \@topnewpage[\@makeschapterhead{#1}]%
- \else
- \@makeschapterhead{#1}%
- \@afterheading
- \fi}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@makeschapterhead}
- % Layout for unnumbered chapter headings
- % \begin{macrocode}
- \def\@makeschapterhead#1{%
- \vspace*{\prechapterskip}%
- {\parindent \z@
- \normalfont\chapterformat
- \interlinepenalty\@M
- \chaptertitleformat{#1}\par\nobreak
- \vskip \postchapterskip
- }}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\l@chapter}
- % Format for chapter entry in toc
- % \begin{macrocode}
- \newcommand*\l@chapter[2]{%
- \ifnum \c@tocdepth >\m@ne
- \addpenalty{-\@highpenalty}%
- \vskip 1.0em \@plus\p@
- \setlength\@tempdima{1.5em}%
- \begingroup
- \parindent \z@ \rightskip \@pnumwidth
- \parfillskip -\@pnumwidth
- \leavevmode \large\bfseries
- \advance\leftskip\@tempdima
- \hskip -\leftskip
- #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
- \penalty\@highpenalty
- \endgroup
- \fi}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\l@appendix}
- % Make appendix entries in the toc the same as that for chapters
- % by default
- % \begin{macrocode}
- \let\l@appendix\l@chapter
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\chaptername}
- % \begin{macrocode}
- \newcommand\chaptername{Chapter}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\frontmatter}
- % Start the front matter (in book)
- % \begin{macrocode}
- \newcommand\frontmatter{%
- \cleardoublepage
- \@mainmatterfalse
- \renewcommand*{\theHchapter}{front-\thechapter}%
- \pagenumbering{roman}%
- \morefrontmatter
- }
- \newcommand\morefrontmatter{}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\mainmatter}
- % Start the main matter (in book)
- % \begin{macrocode}
- \newcommand\mainmatter{%
- \cleardoublepage
- \@mainmattertrue
- \setcounter{chapter}{0}%
- \renewcommand*{\theHchapter}{\thechapter}%
- \pagenumbering{arabic}%
- \moremainmatter
- }
- \newcommand\moremainmatter{}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\backmatter}
- % Start the back matter (in book)
- % \begin{macrocode}
- \newcommand\backmatter{%
- \if@openright
- \cleardoublepage
- \else
- \clearpage
- \fi
- \@mainmatterfalse}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\booktocpreamble}
- %\changes{1.09}{2010/12/01}{new}
- % \begin{macrocode}
- \newcommand*{\booktocpreamble}{}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\booktocpostamble}
- %\changes{1.14}{2012-04-24}{new}
- % \begin{macrocode}
- \newcommand*{\booktocpostamble}{}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\booktableofcontents}
- % This is for the main table of contents when using
- % the combine class file, and is not for use in individual
- % articles.
- %\changes{1.14}{2012-04-24}{reset page headers at end of toc}
- % \begin{macrocode}
- \newcommand\booktableofcontents{%
- \if@twocolumn
- \@restonecoltrue\onecolumn
- \else
- \@restonecolfalse
- \fi
- \chapter*{\contentsname
- \@mkboth{\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
- \booktocpreamble
- \@starttoc{toc}%
- \booktocpostamble
- \if@restonecol
- \twocolumn
- \else
- \clearpage
- \fi
- \@mkboth{}{}%
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\arttableofcontents}
- % Table of contents for individual articles.
- % \begin{macrocode}
- \let\arttableofcontents\tableofcontents
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\artpart}
- % A part in an article
- % \begin{macrocode}
- \newcommand{\artpart}{%
- % \end{macrocode}
- %\changes{1.10}{2011-01-05}{set \cs{toclevel@part}}
- % \begin{macrocode}
- \def\toclevel@part{0}%
- \if@noskipsec \leavevmode\fi
- \par
- \addvspace{4ex}%
- \@afterindentfalse
- \secdef\@artpart\@sartpart
- }
- \let\@artpart\@part
- \let\@sartpart\@spart
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\bookpart}
- % A part in a book forming a collection of articles
- % \begin{macrocode}
- \newcommand\bookpart{%
- % \end{macrocode}
- %\changes{1.10}{2011-01-05}{set \cs{toclevel@part}}
- % \begin{macrocode}
- \def\toclevel@part{-1}%
- \if@openright
- \cleardoublepage
- \else
- \clearpage
- \fi
- \thispagestyle{plain}%
- \if@twocolumn
- \onecolumn
- \@tempswatrue
- \else
- \@tempswafalse
- \fi
- \preparthook
- \secdef\@bookpart\@sbookpart}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\parttitleformat}
- % Format of the title for a part (in a book)
- % \begin{macrocode}
- \newcommand{\parttitleformat}[1]{%
- \Huge\bfseries#1%
- }
- % \end{macrocode}
- %\end{macro}
- %
- % Part labels
- % \begin{macrocode}
- \newcommand*{\@parttoclabel}{part}
- % \end{macrocode}
- %
- %\begin{macro}{\@partapp}
- %\changes{1.09}{2010/12/01}{new}
- % \begin{macrocode}
- \def\@partapp{\partname}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\partnumberformat}
- % Format of the part number (in a book)
- % \begin{macrocode}
- \newcommand{\partnumberformat}[1]{%
- \Huge\bfseries \@partapp\nobreakspace#1\par\nobreak
- \vskip 20\p@
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\preparthook}
- % Hook at the start of a part (in a book)
- % \begin{macrocode}
- \newcommand{\preparthook}{\null\vfil}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\partformat}
- % Overall format of part
- % \begin{macrocode}
- \newcommand*{\partformat}{\centering}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\@bookpart}
- % Numbered book part format
- % \begin{macrocode}
- \def\@bookpart[#1]#2{%
- \ifnum \c@secnumdepth >-2\relax
- \refstepcounter{part}%
- \addcontentsline{toc}{\@parttoclabel}{\protect\numberline{\thepart}#1}%
- \else
- \addcontentsline{toc}{\@parttoclabel}{#1}%
- \fi
- \markboth{}{}%
- {\interlinepenalty \@M
- \normalfont\partformat
- \ifnum \c@secnumdepth >-2\relax
- \partnumberformat{\thepart}%
- \fi
- \parttitleformat{#2}\par}%
- \postparthook}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@sbookpart}
- % Unnumbered book part format
- % \begin{macrocode}
- \def\@sbookpart#1{%
- {\interlinepenalty \@M
- \normalfont\partformat
- \parttitleformat{#1}\par}%
- \postparthook}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\postparthook}
- % Hook after part heading
- % \begin{macrocode}
- \def\postparthook{\vfil\newpage
- \if@twoside
- \if@openright
- \null
- \thispagestyle{empty}%
- \newpage
- \fi
- \fi
- \if@tempswa
- \twocolumn
- \fi}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\bookappendix}
- % Switch to appendices in book
- %\changes{1.17}{2012/05/30}{added def \cs{@write@jmlr@import}}
- % \begin{macrocode}
- \newcommand\bookappendix{\par
- \setcounter{table}{0}%
- \setcounter{figure}{0}%
- \zeroextracounters
- \par
- \gdef\theHchapter{\Alph {chapter}}%
- \xdef\Hy@chapapp{\Hy@appendixstring}%
- \setcounter{chapter}{0}%
- \setcounter{section}{0}%
- \gdef\@chapapp{\appendixname}%
- \gdef\thechapter{\@Alph\c@chapter}%
- \def\@write@jmlr@import{\@@write@jmlr@apdimport}%
- \csname appendixmore\endcsname
- }
- % \end{macrocode}
- %\end{macro}
- % Define commands to switch between book/article modes
- %\begin{macro}{\jmlrbookcommands}
- % Switch to book commands
- % \begin{macrocode}
- \newcommand*{\jmlrbookcommands}{%
- \let\part\bookpart
- \let\chapter\bookchapter
- \let\appendix\bookappendix
- \let\tableofcontents\booktableofcontents
- \def\thesection{\thechapter.\arabic{section}}%
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\jmlarticlecommands}
- % Switch to article commands
- % \begin{macrocode}
- \newcommand*{\jmlrarticlecommands}{%
- \let\part\artpart
- \let\chapter\artchapter
- \let\appendix\artappendix
- \let\tableofcontents\arttableofcontents
- \def\thesection{\arabic{section}}%
- }
- % \end{macrocode}
- %\end{macro}
- % Check for packages that are known to cause problems when
- % combining articles into a book.
- %\begin{macro}{\@jmlr@check@packages}
- % \begin{macrocode}
- \newcommand*{\@jmlr@check@packages}{%
- \@ifpackageloaded{epsfig}{%
- \ClassError{jmlr}{Obsolete package `epsfig' detected.
- \MessageBreak
- Please use \string\includegraphics\space to include images
- instead}{}}{}%
- \@ifpackageloaded{psfig}{%
- \ClassError{jmlr}{Obsolete package `psfig' detected.
- \MessageBreak
- Please use \string\includegraphics\space to include images
- instead}{}}{}%
- \@ifpackageloaded{subfig}{%
- \ClassError{jmlr}{Package `subfig' detected.\MessageBreak
- This will cause a conflict if the article is incorporated
- \MessageBreak
- into a book using jmlbook.cls.
- \MessageBreak
- Please use \string\subfigure\space and
- \string\subtable\space instead}{}}{}%
- \@ifpackageloaded{theorem}{%
- \ClassError{jmlr}{Package `theorem' detected.\MessageBreak
- This can cause a conflict with other packages used by jmlr}{}}{}%
- \@ifpackageloaded{ntheorem}{%
- \ClassError{jmlr}{Package `ntheorem' detected.\MessageBreak
- This can cause a conflict with other packages used by jmlr}{}}{}%
- \@ifpackageloaded{amsthm}{%
- \ClassError{jmlr}{Package `amsthm' detected.\MessageBreak
- This package conflicts with the jmlr class}{}}{}%
- \@ifpackageloaded{pdfpages}{Package `pdfpages' detected.\MessageBreak
- This can cause a problem for jmlrbook}{}%
- \@ifpackageloaded{geometry}{Package `geometry' detected.\MessageBreak
- This can cause a problem for jmlrbook}{}%
- \@ifpackageloaded{tabularx}{%
- \ClassError{jmlr}{Package `tabularx' detected.\MessageBreak
- This will break footnote links}{}}{}%
- % \end{macrocode}
- %\changes{1.21}{2015-02-24}{Added check for jmlr2e package}
- % \begin{macrocode}
- \@ifpackageloaded{jmlr2e}{%
- \ClassError{jmlr}{Package `jmlr2e' detected.\MessageBreak
- This can't be used with the jmlr class}{}}{}%
- }
- \AtBeginDocument{%
- \@jmlr@check@packages
- \let\@jmlr@check@packages\relax
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\jmlrSuppressPackageChecks}
- % Don't check for potentially problematic packages.
- % (If I find this in any paper sent to me for inclusion in a book,
- % it will annoy me.)
- % \begin{macrocode}
- \newcommand*{\jmlrSuppressPackageChecks}{%
- \let\@jmlr@check@packages\relax
- }
- % \end{macrocode}
- %\end{macro}
- % Discourage authors from using obsolete commands:
- %\begin{macro}{\obsoletefontcs}
- % \begin{macrocode}
- \DeclareRobustCommand*{\obsoletefontcs}[1]{%
- \ClassWarning{jmlr}{Obsolete command
- \expandafter\string\csname#1\endcsname\space detected}%
- \csname #1 \endcsname
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\bf}
- %\changes{1.17}{2012/05/30}{added redefinition to produce obsolete warning}
- % \begin{macrocode}
- \renewcommand*{\bf}{%
- \obsoletefontcs{bf}%
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\it}
- %\changes{1.17}{2012/05/30}{added redefinition to produce obsolete warning}
- % \begin{macrocode}
- \renewcommand*{\it}{%
- \obsoletefontcs{it}%
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\sc}
- %\changes{1.17}{2012/05/30}{added redefinition to produce obsolete warning}
- % \begin{macrocode}
- \renewcommand*{\sc}{%
- \obsoletefontcs{sc}%
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\rm}
- %\changes{1.17}{2012/05/30}{added redefinition to produce obsolete warning}
- % \begin{macrocode}
- \renewcommand*{\rm}{%
- \obsoletefontcs{rm}%
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\sf}
- %\changes{1.17}{2012/05/30}{added redefinition to produce obsolete warning}
- % \begin{macrocode}
- \renewcommand*{\sf}{%
- \obsoletefontcs{sf}%
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\tt}
- %\changes{1.17}{2012/05/30}{added redefinition to produce obsolete warning}
- % \begin{macrocode}
- \renewcommand*{\tt}{%
- \obsoletefontcs{tt}%
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\jmlrcheckforpseudocode}
- %\changes{1.21}{2015-02-24}{Added check for pseudocode package}
- % Check for \sty{pseudocode} package since it conflicts with
- % the \sty{algorithm} package and quite often both packages
- % are used in the same book or proceedings.
- % \begin{macrocode}
- \providecommand*{\jmlrcheckforpseudocode}{%
- \@ifpackageloaded{pseudocode}%
- {%
- \let\pseudoRETURN\RETURN
- \let\pseudoTRUE\TRUE
- \let\pseudoFALSE\FALSE
- \let\pseudoAND\AND
- \let\pseudoOR\OR
- \let\pseudoNOT\NOT
- \let\pseudoTO\TO
- \let\pseudoCOMMENT\COMMENT
- \let\pseudoIF\IF
- \let\pseudoELSE\ELSE
- \let\pseudoFOR\FOR
- \let\pseudoFORALL\FORALL
- \let\pseudoWHILE\WHILE
- \let\pseudoREPEAT\REPEAT
- \let\pseudoUNTIL\UNTIL
- \let\pseudoENDFOR\ENDFOR
- \let\RETURN\undefined
- \let\TRUE\undefined
- \let\FALSE\undefined
- \let\AND\undefined
- \let\OR\undefined
- \let\NOT\undefined
- \let\TO\undefined
- \let\COMMENT\undefined
- \let\IF\undefined
- \let\ELSE\undefined
- \let\FOR\undefined
- \let\FORALL\undefined
- \let\WHILE\undefined
- \let\REPEAT\undefined
- \let\UNTIL\undefined
- \let\ENDFOR\undefined
- \preto\pseudocode{%
- \let\RETURN\pseudoRETURN
- \let\TRUE\pseudoTRUE
- \let\FALSE\pseudoFALSE
- \let\AND\pseudoAND
- \let\OR\pseudoOR
- \let\NOT\pseudoNOT
- \let\TO\pseudoTO
- \let\COMMENT\pseudoCOMMENT
- \let\IF\pseudoIF
- \let\ELSE\pseudoELSE
- \let\FOR\pseudoFOR
- \let\FORALL\pseudoFORALL
- \let\WHILE\pseudoWHILE
- \let\REPEAT\pseudoREPEAT
- \let\UNTIL\pseudoUNTIL
- \let\ENDFOR\pseudoENDFOR
- }%
- }%
- {}%
- }
- \jmlrcheckforpseudocode
- % \end{macrocode}
- %\end{macro}
- %\iffalse
- % \begin{macrocode}
- %</jmlr.cls>
- % \end{macrocode}
- %\fi
- %\iffalse
- % \begin{macrocode}
- %<*jmlrbook.cls>
- % \end{macrocode}
- %\fi
- %\section{jmlrbook.cls Code}
- % Class file for books composed of articles using the \clsfmt{jmlr} class.
- % \begin{macrocode}
- \NeedsTeXFormat{LaTeX2e}
- % \end{macrocode}
- % Declare class:
- % \begin{macrocode}
- \ProvidesClass{jmlrbook}[2017/08/01 v1.24 (NLCT) JMLR Book Style]
- % \end{macrocode}
- % Need \sty{xkeyval} package to have key=value class options
- % \begin{macrocode}
- \RequirePackage{xkeyval}
- % \end{macrocode}
- % Requires double spacing for the title page
- % \begin{macrocode}
- \RequirePackage{setspace}
- % \end{macrocode}
- %
- % Path used to determine if the preface is in the main
- % document or in a separate file.
- %\begin{macro}{\jmlrprefacefile}
- %\changes{1.20}{2014/10/15}{new}
- % \begin{macrocode}
- \newcommand*\jmlrprefacepath{}
- % \end{macrocode}
- %\end{macro}
- % The \sty{fink} package is now deprecated, so only use it if
- % \sty{currfile} isn't installed.
- % \begin{macrocode}
- \IfFileExists{currfile.sty}%
- {
- \RequirePackage{currfile}
- \renewcommand*\jmlrprefacepath{\currfilepath}
- }%
- {%
- % \end{macrocode}
- %\changes{1.11}{2011-03-24}{fink package now required}
- % \begin{macrocode}
- \RequirePackage{fink}
- \ifdef\finkpath
- {%
- \renewcommand*\jmlrprefacepath{\finkpath}%
- }
- {%
- % \end{macrocode}
- % \sty{fink} version too old.
- % \begin{macrocode}
- \ClassWarning{jmlrbook}{Install `currfile' package or update
- `fink' package}
- }
- }
- % \end{macrocode}
- % Some packages need to be loaded before \sty{hyperref} so provide a
- % hook to do this:
- %\changes{1.12}{2012/01/05}{changed \cs{newcommand} to \cs{providecommand}}
- % \begin{macrocode}
- \providecommand*{\jmlrprehyperref}{}
- % \end{macrocode}
- %\begin{macro}{\ifgrayscale}
- % Determine whether to select color or grayscale
- % \begin{macrocode}
- \newif\ifgrayscale
- \grayscalefalse
- % \end{macrocode}
- %\end{macro}
- %\begin{option}{draft}
- %\changes{1.18}{2013-10-17}{new}
- % \begin{macrocode}
- \DeclareOptionX{draft}{\setlength\overfullrule{5pt}}
- % \end{macrocode}
- %\end{option}
- %\begin{option}{final}
- %\changes{1.18}{2013-10-17}{new}
- % \begin{macrocode}
- \DeclareOptionX{final}{\setlength\overfullrule{0pt}}
- % \end{macrocode}
- %\end{option}
- %\begin{option}{color}
- % \begin{macrocode}
- \DeclareOptionX{color}{\grayscalefalse}
- % \end{macrocode}
- %\end{option}
- %\begin{option}{gray}
- % \begin{macrocode}
- \DeclareOptionX{gray}{\grayscaletrue}
- % \end{macrocode}
- %\end{option}
- % Pass \clsopt{letterpaper} and \clsopt{7x10} to \clsfmt{jmlr}.
- %\begin{option}{letterpaper}
- % \begin{macrocode}
- \DeclareOptionX{letterpaper}{\PassOptionsToClass{\CurrentOption}{jmlr}}
- % \end{macrocode}
- %\end{option}
- %\begin{option}{7x10}
- % \begin{macrocode}
- \DeclareOptionX{7x10}{\PassOptionsToClass{\CurrentOption}{jmlr}}
- % \end{macrocode}
- %\end{option}
- % Pass \clsopt{html} and \clsopt{nohtml} to \clsfmt{jmlr}.
- % (Used by \app{makejmlrbookgui})
- %\begin{option}{html}
- % \begin{macrocode}
- \DeclareOptionX{html}{\PassOptionsToClass{\CurrentOption}{jmlr}}
- % \end{macrocode}
- %\end{option}
- %\begin{option}{nohtml}
- % \begin{macrocode}
- \DeclareOptionX{nohtml}{\PassOptionsToClass{\CurrentOption}{jmlr}}
- % \end{macrocode}
- %\end{option}
- %\begin{macro}{\jmlrprefaceheader}
- %\changes{1.20}{2014/10/15}{new}
- % \begin{macrocode}
- \newcommand*{\jmlrprefaceheader}{%
- \phantomsection
- \chapter*{\prefacename}%
- \addcontentsline{toc}{chapter}{\prefacename}%
- \markboth{\prefacename}{\prefacename}%
- }
- % \end{macrocode}
- %\end{macro}
- % Pass \clsopt{wcp}, \clsopt{pmlr} and \clsopt{nowcp} options to \clsfmt{jmlr} and
- % set preface header.
- %\begin{option}{wcp}
- %\changes{1.21}{2015-02-24}{No longer changes preface header}
- % \begin{macrocode}
- \DeclareOptionX{wcp}{%
- \PassOptionsToClass{\CurrentOption}{jmlr}%
- }
- % \end{macrocode}
- %\end{option}
- %\begin{option}{pmlr}
- %\changes{1.23}{2017-03-09}{new}
- % \begin{macrocode}
- \DeclareOptionX{pmlr}{%
- \PassOptionsToClass{\CurrentOption}{jmlr}%
- }
- % \end{macrocode}
- %\end{option}
- %\begin{option}{nowcp}
- %\changes{1.21}{2015-02-24}{No longer changes preface header}
- % \begin{macrocode}
- \DeclareOptionX{nowcp}{%
- \PassOptionsToClass{\CurrentOption}{jmlr}%
- }
- % \end{macrocode}
- %\end{option}
- % Pass \clsopt{tablecaptiontop} and \clsopt{tablecaptionbottom} options
- % to \clsfmt{jmlr}.
- %\begin{option}{tablecaptiontop}
- % \begin{macrocode}
- \DeclareOptionX{tablecaptiontop}{\PassOptionsToClass{\CurrentOption}{jmlr}}
- % \end{macrocode}
- %\end{option}
- %\begin{option}{tablecaptionbottom}
- % \begin{macrocode}
- \DeclareOptionX{tablecaptionbottom}{\PassOptionsToClass{\CurrentOption}{jmlr}}
- % \end{macrocode}
- %\end{option}
- %
- % Pass font size commands to \clsfmt{jmlr}
- %\changes{1.10}{2011-01-05}{Added 10pt, 11pt and 12pt options to
- %jmlrbook}
- %\begin{option}{10pt}
- % \begin{macrocode}
- \DeclareOptionX{10pt}{\PassOptionsToClass{\CurrentOption}{jmlr}}
- % \end{macrocode}
- %\end{option}
- %\begin{option}{11pt}
- % \begin{macrocode}
- \DeclareOptionX{11pt}{\PassOptionsToClass{\CurrentOption}{jmlr}}
- % \end{macrocode}
- %\end{option}
- %\begin{option}{12pt}
- % \begin{macrocode}
- \DeclareOptionX{12pt}{\PassOptionsToClass{\CurrentOption}{jmlr}}
- % \end{macrocode}
- %\end{option}
- %
- % Switch on two-side mode by default
- % \begin{macrocode}
- \@twosidetrue
- % \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}
- %
- %\begin{option}{pdfxa}
- %\changes{1.13}{2012/02/25}{new}
- % \begin{macrocode}
- \define@boolkey{jmlrbook.cls}[jmlr]{pdfxa}[true]{}
- \jmlrpdfxafalse
- % \end{macrocode}
- %\end{option}
- % Process options
- % \begin{macrocode}
- \ProcessOptionsX
- % \end{macrocode}
- % If \ics{jmlrgrayscale} has been defined, let it override the
- % class options. If it is defined, it should be set to 0 for the
- % online version and any other number for the grayscale print
- % version.
- % \begin{macrocode}
- \@ifundefined{jmlrgrayscale}{}%
- {%
- \ifnum\jmlrgrayscale=0\relax
- \grayscalefalse
- \else
- \grayscaletrue
- \fi
- }
- % \end{macrocode}
- %
- % This next bit is a modification of \sty{pdfx}. It's only used for
- % the print version when the \clsopt{pdfxa} option is used.
- %\changes{1.13}{2012/02/25}{added support for pdfx-1a}
- % \begin{macrocode}
- \ifgrayscale
- \newcommand*{\jmlrwritepdfinfo}{%
- \protected@write\@auxout{}{\string\jmlrbook@info{\xmpAuthor}{\xmpTitle}}%
- }
- \ifjmlrpdfxa
- \def\convertDate{\getYear}
- {\catcode`\D=12
- \gdef\getYear D:#1#2#3#4{\edef\xYear{#1#2#3#4}\getMonth}
- }
- \def\getMonth#1#2{\edef\xMonth{#1#2}\getDay}
- \def\getDay#1#2{\edef\xDay{#1#2}\getHour}
- \def\getHour#1#2{\edef\xHour{#1#2}\getMin}
- \def\getMin#1#2{\edef\xMin{#1#2}\getSec}
- \def\getSec#1#2{\edef\xSec{#1#2}\getTZh}
- {%
- \catcode`\Z=12
- \gdef\tmpz{Z}
- }
- \def\hash{\expandafter\@gobble\string\#}%
- \def\amp{\expandafter\@gobble\string\&}%
- \def\xmpAmp{\amp\hash x0026;}%
- \def\sep{</rdf:li><rdf:li>}
- \def\TextCopyright{\amp\hash x00A9;}
- \def\Title#1{\gdef\xmpTitle{#1}}
- \def\Author#1{\gdef\xmpAuthor{#1}}
- \def\Keywords#1{\gdef\xmpKeywords{#1}}
- \let\xmpKeywords\@empty
- \let\xmpSubject\xmpKeywords
- \def\Creator#1{\gdef\xmpCreator{#1}}
- \def\xmpCreator{\@pdfcreator}
- \def\Producer#1{\gdef\xmpProducer{#1}}
- \def\xmpProducer{pdfTeX}
- \def\Volume#1{\gdef\xmpVolume{#1}}
- \let\xmpVolume\@empty
- \def\Issue#1{\gdef\xmpIssue{#1}}
- \let\xmpIssue\@empty
- \def\CoverDisplayDate#1{\gdef\xmpCoverDisplayDate{#1}}
- \let\xmpCoverDisplayDate\@empty
- \def\CoverDate#1{\gdef\xmpCoverDate{#1}}
- \let\xmpCoverDate\@empty
- \def\Copyright#1{\gdef\xmpCopyright{#1}}
- \let\xmpCopyright\@empty
- \def\Doi#1{\gdef\xmpDoi{#1}}
- \let\xmpDoi\@empty
- \def\Lastpage#1{\gdef\xmpLastpage{#1}}
- \let\xmpLastpage\@empty
- \def\Firstpage#1{\gdef\xmpFirstpage{#1}}
- \let\xmpFirstpage\@empty
- \def\Journaltitle#1{\gdef\xmpJournaltitle{#1}}
- \let\xmpJournaltitle\@empty
- \def\Journalnumber#1{\gdef\xmpJournalnumber{#1}}
- \let\xmpJournalnumber\@empty
- \def\Org#1{\gdef\xmpOrg{#1}}
- \let\xmpOrg\@empty
- \def\CreatorTool#1{\gdef\xmpCreatorTool{#1}}
- \def\xmpCreatorTool{\xmpProducer}
- \def\AuthoritativeDomain#1{\gdef\xmpAuthoritativeDomain{#1}}
- \let\xmpAuthoritativeDomain\@empty
- \def\findUUID#1{\edef\tmpstring{\pdfmdfivesum{#1}}
- \expandafter\eightofnine\tmpstring\end}
- \def\eightofnine#1#2#3#4#5#6#7#8#9\end{%
- \xdef\eightchars{#1#2#3#4#5#6#7#8}
- \fouroffive#9\end}
- \def\fouroffive#1#2#3#4#5\end{\xdef\ffourchars{#1#2#3#4}
- \sfouroffive#5\end}
- \def\sfouroffive#1#2#3#4#5\end{\xdef\sfourchars{#1#2#3#4}
- \tfouroffive#5\end}
- \def\tfouroffive#1#2#3#4#5\end{\xdef\tfourchars{#1#2#3#4}
- \xdef\laststring{#5}}
- \def\uuid{\eightchars-%
- \ffourchars-%
- \sfourchars-%
- \tfourchars-%
- \laststring}
- % \end{macrocode}
- %
- %\begin{macro}{\getTZh}
- %\changes{1.14}{2012-04-24}{fixed for times zones other than Z}
- % This is a modification of the command from \sty{pdfx} that also
- % works for zero and negative hours.
- % \begin{macrocode}
- \def\getTZh#1{%
- \def\TZprefix{#1}%
- \ifx\TZprefix\tmpz
- \def\xTZsign{+}%
- \def\xTZh{00}%
- \def\xTZm{00}%
- \let\getTZnext\doConvDate
- \else
- \let\xTZsign\TZprefix
- \let\getTZnext\getTZhm
- \fi
- \getTZnext
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\getTZm}
- % This is a modified version of the command from \sty{pdfx}.
- % \begin{macrocode}
- \def\getTZhm#1#2'#3#4'{%
- \edef\xTZh{#1#2}%
- \edef\xTZm{#3#4}%
- \doConvDate
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\doConvDate}
- % Defines the date using information derived from parsing
- % \ics{pdfcreationdate}
- % \begin{macrocode}
- \def\doConvDate{%
- \edef\convDate{\xYear-\xMonth-\xDay
- T\xHour:\xMin:\xSec\xTZsign\xTZh:\xTZm}%
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@pre@hyperref}
- % This macro contains a trimmed down version of \sty{pdfx}.
- % \begin{macrocode}
- \newcommand{\@pre@hyperref}{%
- \IfFileExists{FOGRA39L.icc}%
- {%
- \pdfminorversion=3
- \pdfpageattr{/MediaBox[0 0 595 793]
- /BleedBox[0 0 595 793]
- /TrimBox[25 20 570 773]}%
- \findUUID{\jobname.pdf}%
- \edef\xmpdocid{\uuid}%
- \findUUID{\pdfcreationdate}%
- \edef\xmpinstid{\uuid}%
- \InputIfFileExists{\jobname.xmpdata}{}{}%
- \RequirePackage{xmpincl}%
- \expandafter\convertDate\pdfcreationdate
- \def\@pctchar{\expandafter\@gobble\string\%}
- \def\@bchar{\expandafter\@gobble\string\\}
- \immediate\pdfobj stream attr{/N 4} file{FOGRA39L.icc}
- \edef\OBJ@CVR{\the\pdflastobj}
- \pdfcatalog{/OutputIntents [ <<
- /Type/OutputIntent
- /S/GTS_PDFX
- /OutputCondition (FOGRA39)
- /OutputConditionIdentifier (FOGRA39 \@bchar(ISO Coated v2
- 300\@pctchar\space \@bchar(ECI\@bchar)\@bchar))
- /DestOutputProfile \OBJ@CVR\space 0 R
- /RegistryName(http://www.color.org)
- >> ]}
- \input glyphtounicode.tex
- \input glyphtounicode-cmr.tex
- \pdfgentounicode=1
- \RequirePackage[draft,pdftex,pdfpagemode=UseNone,bookmarks=false]{hyperref}%
- }%
- {%
- \ClassError{jmlrbook}{Can't find `FOGRA39L.icc'}%
- {Download ISOcoated\string_v2\string_330\string_bas.icc from
- http://www.colormanagement.org/en/isoprofile.html
- Rename it FOGRA39L.icc and put it in the pdfx folder}%
- }%
- }
- \renewcommand*{\jmlrwritepdfinfo}{%
- \begingroup
- \let\&=\xmpAmp
- \IfFileExists{pdfx-1a.xmp}{%
- \pdfcompresslevel=0
- \immediate\pdfobj stream attr {/Type /Metadata /Subtype /XML}
- file{pdfx-1a.xmpi}
- \pdfcatalog{/Metadata \the\pdflastobj\space 0 R}
- }%
- {}%
- \endgroup
- \protected@write\@auxout{}{\string\jmlrbook@info{\xmpAuthor}{\xmpTitle}}%
- \pdfinfo{
- /Author(\xmpAuthor)%
- /Title(\xmpTitle)%
- /Creator(\xmpProducer)%
- /CreationDate(\convDate)%
- /ModDate(\convDate)%
- /Producer(\xmpProducer)%
- /Trapped /False
- /GTS_PDFXVersion (PDF/X-1:2001)%
- /GTS_PDFXConformance (PDF/X-1a:2001)%
- }%
- }
- % \end{macrocode}
- %\end{macro}
- % \begin{macrocode}
- \fi
- \else
- \newcommand*{\jmlrwritepdfinfo}{}
- \fi
- % \end{macrocode}
- %
- %\begin{macro}{\jmlrbook@info}
- %\changes{1.14}{2012-04-24}{new}
- % Not needed (information provided for MakeJmlrBookGUI)
- % \begin{macrocode}
- \newcommand*{\jmlrbook@info}[2]{}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\jmlrbook@location}
- %\changes{1.20}{2014/10/15}{new}
- % Not needed (information provided for MakeJmlrBookGUI)
- % \begin{macrocode}
- \newcommand*{\jmlrbook@location}[1]{}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@post@hyperref}
- %\changes{1.16}{2012/05/15}{new}
- % \begin{macrocode}
- \newcommand*{\@post@hyperref}{%
- \let\@org@c@lenddoca\c@lenddoca
- \let\c@lenddoca\undefined
- }
- % \end{macrocode}
- %\end{macro}
- %
- % Load \cls{combine} class. This requires a little bit of trickery.
- % \begin{macrocode}
- \let\@org@LoadClass\LoadClass
- \def\LoadClass#1{\let\LoadClass\@org@LoadClass\@org@LoadClass{jmlr}}
- \@org@LoadClass{combine}
- \let\c@lenddoca\@org@c@lenddoca
- % \end{macrocode}
- % Requires \sty{combnat} to work with \sty{natbib}:
- % \begin{macrocode}
- \RequirePackage{combnat}
- % \end{macrocode}
- % Need to apply a patch to \sty{combnat} (this has now been fixed
- % in \sty{combnat}, but user might be using an old version):
- % \begin{macrocode}
- \renewcommand\c@laNAT@parse[1]{{%
- \let\protect=\@unexpandable@protect\let~\relax
- \let\active@prefix=\@gobble
- \xdef\NAT@temp{\csname b@#1\@extra@b@citeb\endcsname}}%
- \expandafter\NAT@split\NAT@temp?????@@%
- \expandafter\NAT@parse@date\NAT@date??????@@%
- \ifciteindex\NAT@index\fi}
-
- \renewcommand\c@lbNAT@parse[1]{{%
- \let\protect=\@unexpandable@protect\let~\relax
- \let\active@prefix=\@gobble
- \xdef\NAT@temp{\csname B?\jobname?@#1\@extra@b@citeb\endcsname}}%
- \expandafter\NAT@split\NAT@temp?????@@%
- \expandafter\NAT@parse@date\NAT@date??????@@%
- \ifciteindex\NAT@index\fi}
- % \end{macrocode}
- % Start new chapters on the right hand page:
- % \begin{macrocode}
- \newif\if@openright
- \@openrighttrue
- \newif\if@mainmatter
- % \end{macrocode}
- % Define commands that affect the formatting:
- %\begin{macro}{\pagerule}
- % Draw line across the text block.
- % \begin{macrocode}
- \newcommand*{\pagerule}[1][0pt]{\par\noindent
- \rule[#1]{\linewidth}{2pt}\par}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{environment}{preface}
- % The preface environment starts a new chapter but also writes
- % information to the main aux file for \app{makejmlrbook}. The
- % optional argument is the file name for the extracted preface.
- %\changes{1.11}{2011-03-24}{new}
- %\changes{1.13}{2012/02/25}{changed the chapter to an unnumbered one}
- % \begin{macrocode}
- \ifjmlrhtml
- \newenvironment{preface}[1][preface]%
- {%
- \noindent\HCode{<h2>\prefacename</h2>}%
- }%
- {%
- }
- \else
- \newenvironment{preface}[1][preface]%
- {%
- % \end{macrocode}
- %\changes{1.19}{2014/09/29}{changed to unstarred chapter}
- % \begin{macrocode}
- \jmlrprefaceheader
- \protected@write\@mainauxout
- {}{\string\@prefacestart{\thepage}{\arabic{page}}}%
- \protected@write\@mainauxout{}{\string\@prefacefile{\jmlrprefacepath}{#1}}%
- }%
- {%
- \protected@write\@mainauxout{}{\string\@prefaceend{\thepage}}%
- }
- \fi
- % \end{macrocode}
- %\end{environment}
- %\begin{macro}{\prefacename}
- %\changes{1.11}{2011-03-24}{new}
- % \begin{macrocode}
- \newcommand*{\prefacename}{Preface}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@prefacefile}
- % \begin{macrocode}
- \newcommand*{\@prefacefile}[2]{}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@prefacestart}
- % \begin{macrocode}
- \newcommand*{\@prefacestart}[2]{}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@prefaceend}
- % \begin{macrocode}
- \newcommand*{\@prefaceend}[1]{}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@prefaceeditor}
- % \begin{macrocode}
- \newcommand*{\@prefaceeditor}[1]{}
- % \end{macrocode}
- %\end{macro}
- %
- % Cross-reference chapters:
- % \begin{macrocode}
- \newcommand*{\chapterrefname}{Chapter}
- \newcommand*{\chaptersrefname}{Chapters}
- % \end{macrocode}
- %\begin{macro}{\chapterref}
- % \begin{macrocode}
- \newcommand*{\chapterref}[1]{%
- \objectref{#1}{\chapterrefname}{\chaptersrefname}{}{}}
- % \end{macrocode}
- %\end{macro}
- %
- % Cross-referencing imported articles:
- %\begin{macro}{\articlepageref}
- % Page number of start of article
- % \begin{macrocode}
- \newcommand*{\articlepageref}[1]{%
- \pageref{#1jmlrstart}%
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\articlepagesref}
- % Page range of article
- % \begin{macrocode}
- \newcommand*{\articlepagesref}[1]{%
- \pageref{#1jmlrstart}--\pageref{#1jmlrend}%
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@articlepagesref}
- % Page range of article for use within the article
- % \begin{macrocode}
- \newcommand*{\@articlepagesref}{%
- \pageref{jmlrstart}--\pageref{jmlrend}%
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\articletitleref}
- % Reference the short title of an imported article
- % \begin{macrocode}
- \newcommand*{\articletitleref}[1]{\nameref{#1jmlrstart}}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\articleauthorref}
- % Reference the authors of an imported article
- % \begin{macrocode}
- \newcommand*{\articleauthorref}[1]{%
- \@ifundefined{@jmlr@author@#1}%
- {%
- \ClassWarning{jmlrbook}{Label `#1' undefined}%
- }%
- {%
- \@nameuse{@jmlr@author@#1}%
- }%
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\jmlrtitlehook}
- %\changes{1.20}{2014/10/15}{changed \cs{let} to \cs{def}}
- % Extra title information
- % \begin{macrocode}
- \renewcommand*\jmlrtitlehook{%
- \hypersetup{pdftitle={\@shorttitle}}%
- \def\xmpTitle{\@shorttitle}%
- \let\jmlrtitlehook\relax
- }
- \providecommand*{\xmpTitle}{\@title}%
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\jmlrauthorhook}
- %\changes{1.20}{2014/10/15}{changed \cs{let} to \cs{def}}
- % \begin{macrocode}
- \renewcommand*\jmlrauthorhook{%
- \ifx\@sauthor\@empty
- \hypersetup{pdfauthor={\@author}}%
- \else
- \hypersetup{pdfauthor={\@sauthor}}%
- \fi
- \def\xmpAuthor{\@sauthor}%
- \let\jmlrauthorhook\relax
- \let\@shortauthor\@empty
- }
- \providecommand*\xmpAuthor{\@author}%
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\subtitle}
- % \begin{macrocode}
- \newcommand*{\@subtitle}{}
- \newcommand*{\subtitle}[1]{\renewcommand*{\@subtitle}{#1}}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\volume}
- % \begin{macrocode}
- \newcommand*{\@volume}{\@jmlrvolume}
- \newcommand*{\volume}[1]{%
- \renewcommand*{\@volume}{#1}%
- \ifjmlrpdfxa
- \let\xmpVolume\@volume
- \fi
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\jmlrissue}
- % \begin{macrocode}
- \newcommand*{\@issue}{\@jmlrissue}
- \newcommand*{\issue}[1]{%
- \renewcommand*{\@issue}{#1}%
- \ifjmlrpdfxa
- \let\xmpIssue\@issue
- \fi
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\thejmlrworkshop}
- % Provided in the event that it's required for the title page.
- % \begin{macrocode}
- \newcommand*{\thejmlrworkshop}{\@jmlrworkshop}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\team}
- % \begin{macrocode}
- \newcommand*{\@team}{}
- \newcommand*{\team}[1]{\renewcommand*{\@team}{#1}}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\jmlrlocation}
- %\changes{1.20}{2014/10/15}{new}
- % \begin{macrocode}
- \newcommand*{\@jmlrlocation}{}
- \newcommand*{\jmlrlocation}[1]{%
- \renewcommand*{\@jmlrlocation}{#1}%
- \protected@write\@auxout{}{\string\jmlrbook@location{#1}}%
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@productioneditorname}
- % \begin{macrocode}
- \newcommand*{\@productioneditorname}{Production Editor}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\productioneditor}
- % \begin{macrocode}
- \newcommand*{\@productioneditor}{}
- \newcommand*{\productioneditor}[1]{%
- \renewcommand*{\@productioneditor}{#1}%
- \renewcommand*{\@productioneditorname}{Production Editor}%
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\productioneditors}
- % \begin{macrocode}
- \newcommand*{\productioneditors}[1]{%
- \renewcommand*{\@productioneditor}{#1}%
- \renewcommand*{\@productioneditorname}{Production Editors}%
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\logo}
- % Title page image
- %\changes{1.17}{2012/05/30}{added optional argument}
- % \begin{macrocode}
- \newcommand*{\@logo}{}
- \newcommand*{\logo}[2][]{%
- \ifjmlrhtml
- \def\@logo@tmp{#1}%
- \ifx\@logo@tmp\@empty
- \renewcommand*{\@logo}{#2}%
- \else
- \renewcommand*{\@logo}{\HCode{<a href="#1">}#2\HCode{</a>}}%
- \fi
- \else
- \renewcommand*{\@logo}{#2}%
- \fi
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\booklinebreak}
- %\changes{1.18}{2013-10-17}{new}
- % Provided for book production editors to fine tune the book
- % line breaking.
- % \begin{macrocode}
- \renewcommand*{\booklinebreak}[1][4]{\linebreak[#1]}
- % \end{macrocode}
- %\end{macro}
- %
- % Set article title
- % \begin{macrocode}
- \def\c@lbmaketitle{\jmlrmaketitle}
- % \end{macrocode}
- % The book's title:
- %\begin{macro}{\maintitle}
- % \begin{macrocode}
- \newcommand*{\maintitle}{}
- % \end{macrocode}
- %\end{macro}
- %
- % Make it easier to modify the book's title page:
- %\begin{macro}{\SetTitleElement}
- % \begin{macrocode}
- \newcommand*{\SetTitleElement}[3]{%
- {%
- \expandafter\ifx\csname @#1\endcsname\@empty
- \else
- #2\csname @#1\endcsname#3%
- \fi
- }%
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\IfTitleElement}
- % Determine if the given element has been set:
- % \begin{macrocode}
- \newcommand{\IfTitleElement}[3]{%
- \expandafter\ifx\csname @#1\endcsname\@empty
- #2%
- \else
- #3%
- \fi
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\titlebody}
- % \begin{macrocode}
- \newcommand{\titlebody}{%
- \SetTitleElement{title}{\maintitlefont}{\postmaintitle}%
- \SetTitleElement{volume}{\mainvolumefont}{\postmainvolume}%
- \SetTitleElement{subtitle}{\mainsubtitlefont}{\postmainsubtitle}%
- \SetTitleElement{logo}{\mainlogofont}{\postmainlogo}%
- \SetTitleElement{team}{\mainteamfont}{\postmainteam}%
- \SetTitleElement{author}{\mainauthorfont}{\postmainauthor}%
- \SetTitleElement{productioneditor}{\mainproductioneditorfont}%
- {\postmainproductioneditor}%
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\c@lamaketitle}
- % \begin{macrocode}
- \ifjmlrhtml
- \renewcommand{\c@lamaketitle}{%
- \HCode{<table cellpadding="2" cellspacing="2" border="0" width="100\%">}%
- \HCode{<tbody><tr><td valign="top">}%
- \HCode{<h1>}%
- \@title\newline
- \ifx\@jmlrvolume\@empty
- \ifx\@volume\@empty
- \else
- Volume \@volume
- \ifx\@subtitle\@empty\else: \fi
- \fi
- \else
- Volume \@jmlrvolume
- \ifx\@subtitle\@empty\else: \fi
- \fi
- \@subtitle
- \HCode{</h1>}%
- \newline
- \textbf{Editors: \@author}
- \HCode{</td><td valign="top">}%
- \@logo
- \HCode{</td></tr></tbody></table>}%
- \let\maintitle\@title
- }
- \else
- \renewcommand{\c@lamaketitle}{%
- \pagenumbering{alph}%
- \pagestyle{empty}%
- \begin{titlepage}%
- \let\footnotesize\small
- \let\footnoterule\relax
- \let\footnote\thanks
- \titlebody
- \par
- \@thanks
- \end{titlepage}%
- \setcounter{footnote}{0}%
- \let\maintitle\@title
- \c@lmtitlempty
- }
- \fi
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\maintitlefont}
- % \begin{macrocode}
- \renewcommand{\maintitlefont}{%
- \null\vskip15pt\relax\par
- \flushleft\Huge\bfseries\noindent}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\postmaintitle}
- % \begin{macrocode}
- \renewcommand{\postmaintitle}{%
- \par\relax
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\mainvolumefont}
- % \begin{macrocode}
- \newcommand{\mainvolumefont}{%
- \flushleft\noindent\LARGE\bfseries Volume
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\postmainvolume}
- % \begin{macrocode}
- \newcommand{\postmainvolume}{%
- \IfTitleElement{subtitle}{}{:}\par\relax
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\mainissuefont}
- % \begin{macrocode}
- \newcommand{\mainissuefont}{%
- \flushleft\noindent\LARGE\bfseries Issue
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\postmainissue}
- % \begin{macrocode}
- \newcommand{\postmainissue}{%
- \par\relax
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\mainsubtitlefont}
- % \begin{macrocode}
- \newcommand{\mainsubtitlefont}{%
- \flushleft\LARGE\bfseries\noindent}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\postmainsubtitle}
- % \begin{macrocode}
- \newcommand{\postmainsubtitle}{\par}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\mainlogofont}
- % \begin{macrocode}
- \newcommand{\mainlogofont}{%
- \vfill
- \begin{center}}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\postmainlogo}
- % \begin{macrocode}
- \newcommand{\postmainlogo}{\end{center}\vfill\par}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\mainteamfont}
- % \begin{macrocode}
- \newcommand{\mainteamfont}{\flushleft\bfseries\Large\noindent}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\postmainteam}
- % \begin{macrocode}
- \newcommand{\postmainteam}{\par}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\mainauthorfont}
- % \begin{macrocode}
- \renewcommand{\mainauthorfont}{%
- \flushleft\Large\itshape\doublespacing\noindent}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\postmainauthor}
- % \begin{macrocode}
- \renewcommand{\postmainauthor}{%
- \par}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\mainproductioneditorfont}
- % \begin{macrocode}
- \newcommand{\mainproductioneditorfont}{%
- \flushleft\Large\noindent \@productioneditorname: \itshape}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\postmainproductioneditor}
- % \begin{macrocode}
- \newcommand{\postmainproductioneditor}{\par}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\maindatefont}
- % \begin{macrocode}
- \renewcommand{\maindatefont}{}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\postmaindate}
- % \begin{macrocode}
- \renewcommand{\postmaindate}{}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{environment}{signoff}
- % Editorial team listed at the end of a preface etc. The mandatory
- % argument is the date, the optional argument is the team title.
- % Each editor should be separated with \ics{Editor}.
- %\changes{1.19}{2014/09/29}{added \cs{nopagebreak}}
- % \begin{macrocode}
- \ifjmlrhtml
- \newenvironment{signoff}[2][The Editorial Team]{%
- \def\Editor##1{##1\par\vskip\baselineskip\noindent\ignorespaces}%
- \def\@editorialteam{#1}%
- \def\@signoffdate{#2}%
- \par\vskip\baselineskip\noindent
- \ifx\@signoffdate\@empty
- \else
- \emph{\@signoffdate}\nopagebreak\par
- \nopagebreak\vskip\baselineskip\noindent
- \fi
- \ifx\@editorialteam\@empty
- \else
- \@editorialteam:\nopagebreak\par\nopagebreak\vskip\baselineskip
- \fi
- \nopagebreak\noindent\ignorespaces
- }%
- {%
- }%
- \else
- \newenvironment{signoff}[2][The Editorial Team]{%
- \def\Editor##1{%
- \protected@write\@mainauxout{}{\string\@prefaceeditor{##1}}%
- \begin{tabular}{@{}l@{}}%
- ##1%
- \end{tabular}%
- \par\vskip\baselineskip\noindent\ignorespaces
- }%
- \def\@editorialteam{#1}%
- \def\@signoffdate{#2}%
- \par\vskip\baselineskip\noindent
- \ifx\@signoffdate\@empty
- \else
- \emph{\@signoffdate}\par
- \vskip\baselineskip\noindent
- \fi
- \ifx\@editorialteam\@empty
- \else
- % \end{macrocode}
- %\changes{1.21}{2015-02-24}{added \cs{nopagebreak}}
- % \begin{macrocode}
- \@editorialteam:\nopagebreak\par\vskip\baselineskip
- \fi
- \nopagebreak\noindent\ignorespaces
- }%
- {%
- }
- \fi
- % \end{macrocode}
- %\end{environment}
- %\begin{environment}{authorsignoff}
- % An author can sign off at the end of a chapter (such as a
- % foreword).
- % Each author should be separated with \ics{Author}.
- % \begin{macrocode}
- \newenvironment{authorsignoff}{%
- \def\Author##1{\begin{tabular}{@{}p{\linewidth}@{}}%
- ##1%
- \end{tabular}%
- \par\vskip\baselineskip\noindent\ignorespaces
- }%
- \par\vskip\baselineskip\noindent\ignorespaces
- }{%
- }
- % \end{macrocode}
- %\end{environment}
- %
- %\begin{macro}{\zeroextracounters}
- % Reset counters at the start of each imported article
- %\changes{1.15}{2012/05/12}{added algocf and definition to reset}
- % \begin{macrocode}
- \renewcommand{\zeroextracounters}{%
- \@ifundefined{c@theorem}{}{\setcounter{theorem}{0}}%
- \@ifundefined{c@algorithm}{}{\setcounter{algorithm}{0}}%
- \@ifundefined{c@algocf}{}{\setcounter{algocf}{0}}%
- \@ifundefined{c@example}{}{\setcounter{example}{0}}%
- \@ifundefined{c@definition}{}{\setcounter{definition}{0}}%
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\contentsname}
- % Redcfine title of the table of contents
- % \begin{macrocode}
- \renewcommand*{\contentsname}{Table of Contents}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\theHalgorithm}
- %\changes{1.12}{2012/01/05}{in definition, changed \cs{thechapter}
- %to \cs{theHchapter}}
- % \begin{macrocode}
- \def\theHalgorithm{\theHchapter.\thealgorithm}
- % \end{macrocode}
- %\end{macro}
- \def\theHexample{\theHchapter.\theexample}
- \def\theHtheorem{\theHchapter.\thetheorem}
- %\begin{macro}{\theHsection}
- % \begin{macrocode}
- \def\theHsection{\theHchapter.\thesection}
- \def\theHsubsection{\theHchapter.\thesubsection}
- \def\theHsubsubsection{\theHchapter.\thesubsubsection}
- \def\theHparagraph{\theHchapter.\theparagraph}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\theHsubfigure}
- % \begin{macrocode}
- \def\theHsubfigure{\theHfigure.\arabic{subfigure}}
- \def\theHsubtable{\theHtable.\arabic{subtable}}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\theHfootnote}
- %\changes{1.12}{2012/01/05}{new}
- % \begin{macrocode}
- \def\theHfootnote{\theHchapter.\alpha{footnote}}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\theHtable}
- %\changes{1.12}{2012/01/05}{new}
- % \begin{macrocode}
- \def\theHtable{\theHchapter.\arabic{table}}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\theHfigure}
- %\changes{1.12}{2012/01/05}{new}
- % \begin{macrocode}
- \def\theHfigure{\theHchapter.\arabic{figure}}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\theHalgocf}
- %\changes{1.15}{2012/05/12}{new}
- % \begin{macrocode}
- \def\theHalgocf{\theHchapter.\thealgocf}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\mailto}
- % \begin{macrocode}
- \renewcommand*{\mailto}[1]{%
- \href{mailto:#1}{\nolinkurl{#1}}%
- }
- % \end{macrocode}
- %\end{macro}
- % \begin{macrocode}
- \c@lhaschapterfalse
- \let\c@lthesec\thesection
- % \end{macrocode}
- % Make sure the hyperlinks work
- %\begin{macro}{\doimportchapterHref}
- % \begin{macrocode}
- \newcommand\doimportchapterHref{%
- \edef\@currentHref{chapter.\thechapter}%
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\toclevel@appendix}
- % Set the toc level for the main appendices
- % \begin{macrocode}
- \def\toclevel@appendix{-1}
- % \end{macrocode}
- %\end{macro}
- %
- % \sty{hyperref} and \cls{combine} don't play nicely
- % need to fudge the cross-referencing a bit.
- %\begin{macro}{\Xprefix}
- % \begin{macrocode}
- \def\Xprefix{}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\Xref}
- % \begin{macrocode}
- \DeclareRobustCommand\Xref{\@ifstar\@Xrefstar\T@Xref}%
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\Xpageref}
- % \begin{macrocode}
- \DeclareRobustCommand\Xpageref{%
- \@ifstar\@Xpagerefstar\T@Xpageref
- }%
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\HyRef@StarSetXRef}
- % \begin{macrocode}
- \def\HyRef@StarSetXRef#1{%
- \begingroup
- \Hy@safe@activestrue
- \edef\x{#1}%
- \@onelevel@sanitize\x
- \edef\x{\endgroup
- \noexpand\HyRef@@StarSetRef
- \expandafter\noexpand\csname r@\Xprefix\x\endcsname{\x}%
- }%
- \x
- }
- % \end{macocode}
- %\end{macro}
- %
- %\begin{macro}{\@Xrefstar}
- % \begin{macrocode}
- \def\@Xrefstar#1{%
- \HyRef@StarSetXRef{#1}\@firstoffive
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@Xpagerefstar}
- % \begin{macrocode}
- \def\@Xpagerefstar#1{%
- \HyRef@StarSetXRef{#1}\@secondoffive
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\T@Xref}
- % \begin{macrocode}
- \def\T@Xref#1{%
- \Hy@safe@activestrue
- \expandafter\@setXref\csname r@\Xprefix#1\endcsname\@firstoffive{#1}%
- \Hy@safe@activesfalse
- }%
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\T@Xpageref}
- % \begin{macrocode}
- \def\T@Xpageref#1{%
- \Hy@safe@activestrue
- \expandafter\@setXref\csname r@\Xprefix#1\endcsname\@secondoffive{#1}%
- \Hy@safe@activesfalse
- }%
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\Xlabel}
- % \begin{macrocode}
- \def\Xlabel#1{%
- \@bsphack
- \begingroup
- \@onelevel@sanitize\@currentlabelname
- \edef\@currentlabelname{%
- \expandafter\strip@period\@currentlabelname\relax.\relax\@@@
- }%
- \protected@write\@mainauxout{}{%
- \string\newlabel{\Xprefix#1}{{\@currentlabel}{\thepage}%
- {\@currentlabelname}{\@currentHref}{}}%
- }%
- \endgroup
- \@esphack
- }
- \let\ltx@label\Xlabel
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@setXref}
- % \begin{macrocode}
- \def\@setXref#1#2#3{% csname, extract group, refname
- \ifx#1\relax
- \protect\G@refundefinedtrue
- \nfss@text{\reset@font\bfseries ??}%
- \@latex@warning{%
- Reference `#3' on page \thepage \space undefined%
- }%
- \else
- \expandafter\Hy@setref@link#1\@empty\@empty\@nil{#2}%
- \fi
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@secondoffive}
- % Something's redefining \cs{@secondoffive} incorrectly at the
- % start of the document when hyperref's draft mode is on. Need
- % to fix it.
- % \begin{macrocode}
- \AtBeginDocument{%
- \renewcommand\@secondoffive[5]{#2}%
- \jmlrwritepdfinfo
- \let\jmlrwritepdfinfo\relax
- }
- % \end{macrocode}
- %\end{macro}
- %
- % Need to write imported chapter label to main auxfile.
- %\begin{macro}{\@setimportlabel}
- % \begin{macrocode}
- \def\@setimportlabel{%
- \let\@mainauxout\@auxout
- \let\HRlabel\label
- }
- % \end{macrocode}
- %\end{macro}
- % \begin{macrocode}
- \AtBeginDocument{\@jmlrbegindoc}
- % \end{macrocode}
- %\begin{macro}{\@jmlrbegindoc}
- % \begin{macrocode}
- \newcommand*\@jmlrbegindoc{
- \@setimportlabel
- \gdef\@setimportlabel{\let\ref\Xref \let\pageref\Xpageref}%
- \let\ReadBookmarks\relax
- % \end{macrocode}
- % Patch to work with \sty{auxhook} if loaded
- %\changes{1.18}{2013-10-17}{patched to work with auxhook}
- % \begin{macrocode}
- \@ifundefined{@beginmainauxhook}{}{\@beginmainauxhook}%
- }
- % \end{macrocode}
- %\end{macro}
- % Imported papers modify \ics{InputIfFileExists} so save original
- % definition.
- % \begin{macrocode}
- \let\@org@InputIfFileExists\InputIfFileExists
- % \end{macrocode}
- %
- %\begin{environment}{jmlrpapers}
- % \begin{macrocode}
- \newenvironment{jmlrpapers}{%
- % \end{macrocode}
- %\changes{1.09}{2010/12/01}{reset start and end document hook to avoid
- %problems caused by packages defining duplicate commands etc}
- % \begin{macrocode}
- \def\@begindocumenthook{%
- \@jmlrbegindoc
- \let\bibcite\c@lbNATbibcite
- }
- \def\@enddocumenthook{%
- \@jmlrenddoc
- \let\bibcite\c@lbNAT@testdef
- }
- \begin{papers}[]
- % \end{macrocode}
- %\changes{1.07}{2010-07-30}{Added check for two column style}
- % \begin{macrocode}
- \if@twocolumn
- \def\@jmlr@restore{\twocolumn}%
- \else
- \def\@jmlr@restore{\onecolumn}%
- \fi
- \jmlrarticlecommands
- \let\importpubpaper\@importpubpaper
- \let\importpaper\@importpaper
- \let\importarticle\@importarticle
- \let\label\Xlabel
- \let\ref\Xref
- \pagestyle{article}%
- }{%
- \@jmlr@restore
- \end{papers}
- }
- % \end{macrocode}
- %\end{environment}
- %
- %\begin{macro}{\addtomaincontents}
- % \begin{macrocode}
- \newcommand{\addtomaincontents}[2]{%
- \protected@write\@mainauxout{\let\label\@gobble\let\index\@gobble
- \let\glossary\@gobble}{\string\@writefile{#1}{#2}}%
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@write@author}
- % \begin{macrocode}
- \newcommand*{\@write@author}[2]{%
- \def\@jmlr@authors@sep{ and }%
- \protected@write\@mainauxout{}{%
- \string\@new@articleauthor{#1}{#2}%
- }%
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@new@articleauthor}
- % \begin{macrocode}
- \newcommand*{\@new@articleauthor}[2]{%
- \expandafter\gdef\csname @jmlr@author@#1\endcsname{%
- \hyperref[#1jmlrstart]{#2}}%
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\@@write@jmlr@import}
- % The accompanying \app{makejmlrbook} Perl script scans the aux file
- % for information. Any articles imported using \ics{importpubpaper},
- % \ics{importpaper} or \ics{importarticle} need to write the
- % relevant information to the aux file.
- % \begin{macrocode}
- \newcommand*{\@@write@jmlr@import}[3]{%
- \protected@write\@mainauxout{}{\string\@jmlr@import{#1}{#2}{#3}}%
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@jmlr@import}
- % \LaTeX\ should ignore \cs{@jmlr@import} as it's only needed for
- % \app{makejmlrbook}:
- % \begin{macrocode}
- \newcommand*{\@jmlr@import}[3]{}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@@write@jmlr@apdimport}
- %\changes{1.17}{2012/05/30}{new}
- % As above but for files imported in the appendix.
- % \begin{macrocode}
- \newcommand*{\@@write@jmlr@apdimport}[3]{%
- \protected@write\@mainauxout{}{\string\@jmlr@apdimport{#1}{#2}{#3}}%
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@jmlr@apdimport}
- %\changes{1.17}{2012/05/30}{new}
- % As above but for files imported in the appendix.
- % \LaTeX\ should ignore \cs{@jmlr@apdimport} as it's only needed for
- % \app{makejmlrbookgui}:
- % \begin{macrocode}
- \newcommand*{\@jmlr@apdimport}[3]{}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\@write@jmlr@import}
- % Initialise to \cs{@@write@jmlr@import} and switch to
- % \cs{@@write@jmlr@apdimport} in the appendices.
- % \begin{macrocode}
- \def\@write@jmlr@import{\@@write@jmlr@import}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\jmlrpremaketitlehook}
- %\changes{1.09}{2010/12/01}{Moved redefinition outside of import
- %macros}
- % Redefine \cs{jmlrpremaketitlehook}
- % \begin{macrocode}
- \def\jmlrpremaketitlehook{%
- \cleardoublepage
- \phantomsection
- \let\@currentlabelname\@shorttitle
- % \end{macrocode}
- %\changes{1.09}{2010/12/01}{Moved \cs{refstepcounter} from
- %\cs{jmlrmaketitlehook} to \cs{jmlrpremaketitlehook}}
- % \begin{macrocode}
- \refstepcounter{chapter}%
- }%
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\jmlrimporthook}
- % Hook just before document is imported.
- %\changes{1.09}{2010/12/01}{new}
- % \begin{macrocode}
- \newcommand*{\jmlrimporthook}{}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\importpubpaper}
- % Import a document that has already been published.
- % Syntax: \cs{importpubpaper}\oarg{label}\marg{dir}\marg{file}\marg{pages}
- % where \meta{dir} is the directory in which the paper is located,
- % \meta{file} is the name of the file and \meta{pages} indicates
- % the page range \emph{for the original version}. The optional
- % argument is a label. This is used to prefix the labels and
- % citations in the document so they don't clash with other imported
- % articles. If omitted, \meta{dir}/\meta{file} is used instead.
- % \begin{macrocode}
- \newcommand*{\@importpubpaper}[4][\@importdir\@importfile]{%
- \bgroup
- \def\@importdir{#2/}%
- \def\@importfile{#3}%
- \@write@jmlr@import{#1}{#2}{#3}%
- \def\@extra@b@citeb{#1}%
- \def\@extra@binfo{#1}%
- \jmlrpages{#4}%
- \graphicspath{{\@importdir}}%
- \def\jmlrmaketitlehook{%
- % \end{macrocode}
- %\changes{1.09}{2010/12/01}{Added \cs{label} to \cs{jmlrmaketitlehook}}
- % \begin{macrocode}
- \label{}%
- \def\titlebreak{ }%
- \addtomaincontents{toc}%
- % \end{macrocode}
- %\changes{1.12}{2012/01/05}{changed \cs{@shorttitle} to \cs{@title}}
- % \begin{macrocode}
- {%
- \protect\contentsline{papertitle}{\@title}{\thepage}%
- {page.\thepage}}%
- \pdfbookmark{\@shorttitle}{chapter.\theHchapter}%
- \def\@jmlr@authors@sep{ \& }%
- % \end{macrocode}
- %\changes{1.12}{2012/01/05}{changed \cs{@jmlrauthors} to \cs{@jmlr@authors}}
- % \begin{macrocode}
- \tocchapterpubauthor{\@jmlr@authors}%
- {%
- \@jmlrabbrvproceedings
- \ifx\@jmlrvolume\@empty
- \ifx\@jmlrpages\@empty\else\space\fi
- \else
- \space\@jmlrvolume
- \ifx\@jmlrissue\@empty
- \else
- (\@jmlrissue)%
- \fi
- \ifx\@jmlrpages\@empty\else:\fi
- \fi
- \ifx\@jmlrpages\@empty
- \else
- \@jmlrpages
- \ifx\@jmlryear\@empty\else,\fi
- \fi
- \space\@jmlryear
- }%
- % \end{macrocode}
- %\changes{1.12}{2012/01/05}{changed \cs{@jmlrauthors} to \cs{@jmlr@authors}}
- % \begin{macrocode}
- \@write@author{#1}{\@jmlr@authors}%
- }%
- \def\InputIfFileExists##1##2##3{%
- \IfFileExists{##1}{%
- \@org@InputIfFileExists{##1}{##2}{##3}%
- }%
- {%
- \@org@InputIfFileExists{\@importdir##1}{##2}{##3}%
- }%
- }%
- \def\Xprefix{#1}%
- \jmlrimporthook
- \import{\@importdir\@importfile}%
- \def\Xprefix{}%
- \egroup
- \gdef\@shortauthor{}%
- \gdef\@shorttitle{}%
- \gdef\@firstauthor{}%
- \gdef\@jmlr@authors{\@jmlrauthors}%
- \gdef\@jmlrauthors{}%
- \gdef\@firstsurname{}%
- }
- \newcommand{\importpubpaper}[4][]{%
- \ClassError{jmlrbook}{\string\importpubpaper\space
- not permitted outside `jmlrpapers' environment}{}%
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\importpaper}
- % Like \cs{importpubpaper} but sets the pages to the page-range for
- % this book.
- % \begin{macrocode}
- \newcommand{\@importpaper}[3][\@importdir\@importfile]{%
- \bgroup
- \def\@importdir{#2/}%
- \def\@importfile{#3}%
- \@write@jmlr@import{#1}{#2}{#3}%
- \def\@extra@b@citeb{#1}%
- \def\@extra@binfo{#1}%
- \jmlrpages{\protect\@articlepagesref}%
- \graphicspath{{\@importdir}}%
- \def\jmlrmaketitlehook{%
- % \end{macrocode}
- %\changes{1.09}{2010/12/01}{Added \cs{label} to \cs{jmlrmaketitlehook}}
- % \begin{macrocode}
- \label{}%
- \def\titlebreak{ }%
- \addtomaincontents{toc}%
- % \end{macrocode}
- %\changes{1.12}{2012/01/05}{changed \cs{@shorttitle} to \cs{@title}}
- % \begin{macrocode}
- {%
- \protect\contentsline{papertitle}{\@title}{\thepage}%
- {page.\thepage}}%
- \pdfbookmark{\@shorttitle}{chapter.\theHchapter}%
- \def\@jmlr@authors@sep{ \& }%
- % \end{macrocode}
- %\changes{1.12}{2012/01/05}{changed \cs{@jmlrauthors} to \cs{@jmlr@authors}}
- % \begin{macrocode}
- \tocchapterpubauthor{\@jmlr@authors}%
- {%
- \@jmlrabbrvproceedings
- \ifx\@jmlrvolume\@empty
- \space
- \else
- \space\@jmlrvolume
- \ifx\@jmlrissue\@empty
- \else
- (\@jmlrissue)%
- \fi
- :%
- \fi
- \protect\articlepagesref{#1}%
- \ifx\@jmlryear\@empty\else,\fi
- \space\@jmlryear
- }%
- % \end{macrocode}
- %\changes{1.12}{2012/01/05}{changed \cs{@jmlrauthors} to \cs{@jmlr@authors}}
- % \begin{macrocode}
- \@write@author{#1}{\@jmlr@authors}%
- }%
- \def\InputIfFileExists##1##2##3{%
- \IfFileExists{##1}{%
- \@org@InputIfFileExists{##1}{##2}{##3}%
- }%
- {%
- \@org@InputIfFileExists{\@importdir##1}{##2}{##3}%
- }%
- }%
- \def\Xprefix{#1}%
- % \end{macrocode}
- % Disable \ics{jmlrvolume}, \ics{jmlryear}, \ics{jmlrworkshop} etc
- % (since the imported papers belong to the same volume as the
- % book---use \ics{importpubpaper} for papers pre-published in
- %\changes{1.17}{2012/05/30}{disable \cs{jmlrvolume}, \cs{jmlryear}
- %and \cs{jmlrworkshop} in imported papers}
- % another volume).
- % \begin{macrocode}
- \let\jmlrvolume\@gobble
- \let\jmlryear\@gobble
- \let\jmlrworkshop\@gobble
- \let\jmlrissue\@gobble
- \let\jmlrpages\@gobble
- \jmlrimporthook
- \import{\@importdir\@importfile}%
- \def\Xprefix{}%
- \egroup
- \gdef\@shortauthor{}%
- \gdef\@shorttitle{}%
- \gdef\@firstauthor{}%
- \gdef\@jmlr@authors{\@jmlrauthors}%
- \gdef\@jmlrauthors{}%
- \gdef\@firstsurname{}%
- }
-
- \newcommand{\importpaper}[3][]{%
- \ClassError{jmlrbook}{\string\importpaper\space
- not permitted outside `jmlrpapers' environment}{}%
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\importarticle}
- % Import a document that hasn't been published.
- % Syntax: \cs{importarticle}\oarg{label}\marg{dir}\marg{file}
- % where \meta{dir} is the directory in which the paper is located and
- % \meta{file} is the name of the file. The optional
- % argument is a label. This is used to prefix the labels and
- % citations in the document so they don't clash with other imported
- % articles. If omitted, \meta{file} is used instead.
- % \begin{macrocode}
- \newcommand{\@importarticle}[3][\@importdir\@importfile]{%
- \bgroup
- \def\@importdir{#2/}%
- \def\@importfile{#3}%
- \@write@jmlr@import{#1}{#2}{#3}%
- \def\@extra@b@citeb{#1}%
- \def\@extra@binfo{#1}%
- \def\jmlrmaketitlehook{%
- \def\titlebreak{ }%
- \addtomaincontents{toc}%
- % \end{macrocode}
- %\changes{1.12}{2012/01/05}{changed \cs{@shorttitle} to \cs{@title}}
- % \begin{macrocode}
- {%
- \protect\contentsline{papertitle}{\@title}{\thepage}%
- {page.\thepage}}%
- % \end{macrocode}
- %\changes{1.09}{2010/12/01}{Added \cs{label} to \cs{jmlrmaketitlehook}}
- % \begin{macrocode}
- \label{}%
- \pdfbookmark{\@shorttitle}{chapter.\theHchapter}%
- \def\@jmlr@authors@sep{ \& }%
- % \end{macrocode}
- %\changes{1.12}{2012/01/05}{changed \cs{@jmlrauthors} to \cs{@jmlr@authors}}
- % \begin{macrocode}
- \tocchapterauthor{\@jmlr@authors}%
- \@write@author{#1}{\@jmlr@authors}%
- \jmlrpages{}%
- \jmlrvolume{}%
- \jmlryear{}%
- \jmlrsubmitted{}%
- \jmlrpublished{}%
- \jmlrproceedings{}{}%
- }%
- \graphicspath{{\@importdir}}%
- \def\InputIfFileExists##1##2##3{%
- \IfFileExists{##1}{%
- \@org@InputIfFileExists{##1}{##2}{##3}%
- }%
- {%
- \@org@InputIfFileExists{\@importdir##1}{##2}{##3}%
- }%
- }%
- \def\Xprefix{#1}%
- \jmlrimporthook
- % \end{macrocode}
- %\changes{1.17}{2012/15/28}{set title page style for imported
- %articles to articlet style}
- % \begin{macrocode}
- \let\ps@jmlrtps\ps@articlet
- \import{\@importdir\@importfile}%
- \def\Xprefix{}%
- \egroup
- \gdef\@shortauthor{}%
- \gdef\@shorttitle{}%
- \gdef\@firstauthor{}%
- \gdef\@jmlr@authors{\@jmlrauthors}%
- \gdef\@jmlrauthors{}%
- \gdef\@firstsurname{}%
- }
- \newcommand{\importarticle}[3][]{%
- \ClassError{jmlrbook}{\string\importarticle\space
- not permitted outside `jmlrpapers' environment}{}%
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\addtocpart}
- % Add a part to the TOC without printing anything in the text
- % (but does a \cs{cleardoublepage}).
- % \begin{macrocode}
- \newcommand{\addtocpart}[1]{%
- \cleardoublepage
- \refstepcounter{tocpart}%
- \addtocontents{toc}{\protect\tocpart{#1}}%
- \pdfbookmark[-1]{#1}{part.\thetocpart}%
- }
- \newcounter{tocpart}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\tocpart}
- % Define the appearance of a part in the TOC.
- % \begin{macrocode}
- \newcommand{\tocpart}[1]{%
- \addpenalty{-\@highpenalty}%
- \vskip 1.0ex \@plus\p@
- \setlength\@tempdima{2.25em}%
- \begingroup
- \parindent \z@ \rightskip \@pnumwidth
- \parfillskip -\@pnumwidth
- \leavevmode \large\bfseries
- \advance\leftskip\@tempdima
- \hskip -\leftskip
- #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss \null}\par
- \penalty\@highpenalty
- \endgroup
- }
- % \end{macrocode}
- %\end{macro}
- %
- % Set up the layout of the chapter headings
- % \begin{macrocode}
- \setlength{\prechapterskip}{3em}
- \setlength{\postchapterskip}{20pt}
- % \end{macrocode}
- %
- %\begin{macro}{\chapternumberformat}
- % \begin{macrocode}
- \renewcommand{\chapternumberformat}[1]{%
- \Large\bfseries \@chapapp\space#1\par
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\chaptertitleformat}
- % \begin{macrocode}
- \renewcommand{\chaptertitleformat}[1]{%
- \Large\bfseries #1}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\chapterformat}
- % \begin{macrocode}
- \renewcommand*{\chapterformat}{%
- \raggedright
- }
- % \end{macrocode}
- %\end{macro}
- % Set up the format of a part in the book (not a part in an
- % article).
- %\begin{macro}{\preparthook}
- % \begin{macrocode}
- \renewcommand{\preparthook}{\cleardoublepage\null\vfil}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\partnumberformat}
- % \begin{macrocode}
- \renewcommand{\partnumberformat}[1]{%
- \Huge\bfseries \@partapp\nobreakspace#1\par\nobreak
- \vskip 20\p@
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\postparthook}
- % \begin{macrocode}
- \def\postparthook{%
- \thispagestyle{empty}%
- \vfil\newpage
- \null
- \thispagestyle{empty}%
- \newpage
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\@curparthead}
- % The heading of the current part
- % \begin{macrocode}
- \newcommand{\@curparthead}{}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\parttitleformat}
- % \begin{macrocode}
- \renewcommand{\parttitleformat}[1]{#1%
- \gdef\@curparthead{\@partapp\space \thepart. #1}%
- \@mkboth{\@curparthead}{\@curparthead}%
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\firstpageno}
- % Change \cs{firstpageno} to do nothing as the page number will
- % be determined by the book.
- % \begin{macrocode}
- \renewcommand{\firstpageno}[1]{}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\tocchapterauthor}
- % Add the author of the current chapter to the table of contents.
- % \begin{macrocode}
- \newcommand{\tocchapterauthor}[1]{%
- \addtomaincontents{toc}{\protect\contentsline{chapterauthor}{%
- #1}{}{}}%
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\tocchapterpubauthor}
- % Add the author of an imported prepublished paper to the
- % table of contents. The first argument is the author (or list
- % of authors). The second argument is the reference to the
- % published article.
- % \begin{macrocode}
- \newcommand{\tocchapterpubauthor}[2]{%
- \addtomaincontents{toc}{\protect\contentsline{chapterauthor}{%
- #1; #2.}{}{}}%
- }
- % \end{macrocode}
- %\end{macro}
- %
- % Set up the formatting in the TOC
- % \begin{macrocode}
- \renewcommand*\@pnumwidth{2em}
- % \end{macrocode}
- %
- %\begin{macro}{\l@part}
- % Format for book parts
- % \begin{macrocode}
- \renewcommand*\l@part[2]{%
- \ifnum \c@tocdepth >\m@ne
- \addpenalty{-\@highpenalty}%
- \vskip 1.0em \@plus\p@
- %\setlength\@tempdima{5em}%
- \settowidth\@tempdima{\large\bfseries \@partapp\space MM}%
- \vbox{%
- \pagerule
- \begingroup
- \parindent \z@ \rightskip \@pnumwidth
- \parfillskip -\@pnumwidth
- \leavevmode \large\bfseries
- \advance\leftskip\@tempdima
- \hskip -\leftskip
- \renewcommand*\numberline[1]{\hb@xt@ \@tempdima
- {\@partapp\space ##1\hfil }}%
- #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss
- \normalfont\normalsize #2}\par
- \penalty\@highpenalty
- \endgroup
- \pagerule
- }%
- \fi}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\l@chapter}
- % \begin{macrocode}
- \renewcommand{\l@chapter}[2]{%
- \ifnum\c@tocdepth>\m@ne
- \addpenalty{-\@highpenalty}%
- \vskip 1.0em \@plus \p@
- \setlength\@tempdima{2em}%
- \begingroup
- \parindent \z@
- \rightskip \@pnumwidth
- \parfillskip -\@pnumwidth
- \leavevmode \large \bfseries
- \advance \leftskip \@tempdima
- \hskip -\leftskip
- \renewcommand*\numberline[1]{\hb@xt@ \@tempdima
- {##1\hfil }}%
- #1\nobreak \hfil \nobreak \hb@xt@ \@pnumwidth {\hss
- \normalfont\normalsize #2}\par
- \penalty \@highpenalty
- \endgroup
- \fi
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\l@papertitle}
- % \begin{macrocode}
- \newcommand*{\l@papertitle}[2]{%
- \ifnum \c@tocdepth >\m@ne
- \addpenalty{-\@highpenalty}%
- \vskip 1.0em \@plus\p@
- \setlength\@tempdima{3em}%
- \begingroup
- \leavevmode \raggedright\itshape
- #1\nobreak\hfill \nobreak\hb@xt@\@pnumwidth{\hss
- \normalfont#2}%
- \par
- \penalty\@highpenalty
- \endgroup
- \fi
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\l@chapterauthor}
- % \begin{macrocode}
- \newcommand*\l@chapterauthor[2]{%
- \ifnum \c@tocdepth >\m@ne
- % \end{macrocode}
- %\changes{1.11}{2011/01/06}{removed penalty}
- % \begin{macrocode}
- \begingroup
- \parindent \z@
- \rightskip \@pnumwidth
- \parfillskip -\@pnumwidth
- \leavevmode \raggedright
- \parbox{\linewidth-\@pnumwidth}{\raggedright#1\par}%
- \par
- \endgroup
- \fi}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\l@section}
- % \begin{macrocode}
- \renewcommand*\l@section[2]{%
- \ifnum \c@tocdepth >\m@ne
- \addpenalty{-\@highpenalty}%
- \vskip 1.0em \@plus\p@
- \setlength\@tempdima{3em}%
- \begingroup
- \parindent \z@ \rightskip \@pnumwidth
- \parfillskip -\@pnumwidth
- \leavevmode \normalsize\mdseries
- \advance\leftskip\@tempdima
- \hskip -\leftskip
- #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
- \penalty\@highpenalty
- \endgroup
- \fi}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\l@subsection}
- % \begin{macrocode}
- \renewcommand*\l@subsection[2]{%
- \ifnum \c@tocdepth >\m@ne
- \addpenalty{-\@highpenalty}%
- \vskip 1.0em \@plus\p@
- \setlength\@tempdima{3.5em}%
- \begingroup
- \parindent \z@ \rightskip \@pnumwidth
- \parfillskip -\@pnumwidth
- \leavevmode \normalsize\mdseries
- \advance\leftskip\@tempdima
- \hskip -\leftskip
- #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
- \penalty\@highpenalty
- \endgroup
- \fi}
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\chaptermark}
- % \begin{macrocode}
- \renewcommand*{\chaptermark}[1]{%
- \@mkboth{\@curparthead}{\protect\thechapter. #1}%
- }
- % \end{macrocode}
- %\end{macro}
- %
- % Set up page styles
- %\begin{macro}{\firstpagehead}
- % \begin{macrocode}
- \newcommand{\firstpagehead}{}
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\firstpagefoot}
- %\changes{1.09}{2010/12/01}{added \cs{@reprint}}
- % \begin{macrocode}
- \newcommand{\firstpagefoot}{%
- \@reprint\hfill\thepage
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\headfont}
- % Set the header font
- % \begin{macrocode}
- \newcommand*{\headfont}{\reset@font\small\scshape}%
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\footfont}
- % Set the footer font
- % \begin{macrocode}
- \newcommand*{\footfont}{\reset@font\small\itshape}%
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\ps@chplain}
- % Page style for first page of a chapter
- % \begin{macrocode}
- \newcommand*{\ps@chplain}{%
- \let\@mkboth\@gobbletwo
- \renewcommand*{\@oddhead}{\headfont\firstpagehead}%
- \renewcommand*{\@evenhead}{}%
- \renewcommand*{\@oddfoot}{\footfont\firstpagefoot}%
- \renewcommand*{\@evenfoot}{\footfont\thepage\hfill
- }%
- }
- \let\ps@plain\ps@chplain
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\ps@article}
- % Page style for the imported articles.
- % \begin{macrocode}
- \newcommand*{\ps@article}{%
- \let\@mkboth\@gobbletwo
- \renewcommand*{\@oddhead}{\headfont\hfill\@shorttitle}%
- \renewcommand*{\@evenhead}{\headfont\@shortauthor\hfill}%
- \renewcommand*{\@oddfoot}{\footfont\hfill\thepage}
- \renewcommand*{\@evenfoot}{\footfont\thepage\hfill}
- }
- % \end{macrocode}
- %\end{macro}
- %\begin{macro}{\ps@articlet}
- % Title page style for imported articles (imported using
- % \cs{importarticle})
- % \begin{macrocode}
- \newcommand*{\ps@articlet}{%
- \let\@mkboth\@gobbletwo
- \renewcommand*{\@oddhead}{}%
- \renewcommand*{\@evenhead}{}%
- \renewcommand*{\@oddfoot}{\footfont\hfill\thepage}
- \renewcommand*{\@evenfoot}{\footfont\thepage\hfill}
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\ps@jmlrbook}
- % Page style for book
- %\changes{1.15}{2012/05/12}{removed dependence on \cs{ps@headings}
- %(made consistent with article page style)}
- % \begin{macrocode}
- \newcommand*{\ps@jmlrbook}{%
- \renewcommand*{\@oddfoot}{\footfont\hfill\thepage}
- \renewcommand*{\@evenfoot}{\footfont\thepage\hfill}
- \def\@evenhead{\headfont\leftmark\hfill}%
- \def\@oddhead{\hfill\headfont\rightmark}%
- \let\@mkboth\markboth
- \renewcommand*{\sectionmark}[1]{}%
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\markleft}
- %\changes{1.15}{2012/05/12}{new}
- % Provide a command to set just the left header mark.
- % \begin{macrocode}
- \newcommand*{\markleft}[1]{%
- \begingroup
- \let\label\relax
- \let\index\relax
- \let\glossary\relax
- \expandafter\@markleft\@themark{#1}%
- \@temptokena
- \expandafter{\@themark}%
- \mark{\the\@temptokena}
- \endgroup
- \if@nobreak
- \ifvmode
- \nobreak
- \fi
- \fi
- }
- \newcommand*{\@markleft}[3]{%
- \@temptokena{#2}%
- \unrestored@protected@xdef\@themark{{#3}{\the\@temptokena}}
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\morefrontmatter}
- % \begin{macrocode}
- \renewcommand*{\morefrontmatter}{\pagestyle{jmlrbook}%
- \def\chaptermark##1{%
- \@mkboth{##1\hfill}{\hfill##1}}%
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\moremainmatter}
- % \begin{macrocode}
- \renewcommand*{\moremainmatter}{\pagestyle{jmlrbook}%
- \def\chaptermark##1{%
- \@mkboth{\@curparthead}{\protect\thechapter. ##1}%
- }%
- }
- % \end{macrocode}
- %\end{macro}
- %
- %\begin{macro}{\bibsection}
- % Set the bibliography headings in the articles
- % \begin{macrocode}
- \renewcommand*\bibsection{\section*{\refname}}
- % \end{macrocode}
- %\end{macro}
- %\changes{1.10}{2011-01-05}{Removed redundant redefinition of
- %\cs{@bookpart}}
- %
- % Set up the book commands:
- % \begin{macrocode}
- \jmlrbookcommands
- % \end{macrocode}
- %
- % In the event that authors have used different versions of
- % \sty{algorithm2e}, define old command names.
- %\changes{1.11}{2011-03-24}{added old algorithm2e commands}
- % \begin{macrocode}
- \providecommand*{\SetNoLine}{\SetAlgoNoLine}
- \providecommand*{\SetVline}{\SetAlgoVlined}
- \providecommand*{\Setvlineskip}{\SetVlineSkip}
- \providecommand*{\SetLine}{\SetAlgoLined}
- \providecommand*{\dontprintsemicolon}{\DontPrintSemicolon}
- \providecommand*{\printsemicolon}{\PrintSemicolon}
- \providecommand*{\incmargin}{\IncMargin}
- \providecommand*{\decmargin}[1]{\DecMargin{-#1}}
- \providecommand*{\setnlskip}{\SetNlSkip}
- \providecommand*{\Setnlskip}{\SetNlSkip}
- \providecommand*{\setalcapskip}{\SetAlCapSkip}
- \providecommand*{\setalcaphskip}{\SetAlCapHSkip}
- \providecommand*{\nlSty}{\NlSty}
- \providecommand*{\Setnlsty}{\SetNlSty}
- \providecommand*{\linesnumbered}{\LinesNumbered}
- \providecommand*{\linesnotnumbered}{\LinesNotNumbered}
- \providecommand*{\linesnumberedhidden}{\LinesNumberedHidden}
- \providecommand*{\showln}{\ShowLn}
- \providecommand*{\showlnlabel}{\ShowLnLabel}
- \providecommand*{\nocaptionofalgo}{\NoCaptionOfAlgo}
- \providecommand*{\restorecaptionofalgo}{\RestoreCaptionOfAlgo}
- \providecommand*{\restylealgo}{\RestyleAlgo}
- \providecommand*{\Titleofalgo}{\TitleOfAlgo}
- % \end{macrocode}
- %\iffalse
- % \begin{macrocode}
- %</jmlrbook.cls>
- % \end{macrocode}
- %\fi
- %\Finale
- \endinput
|