From 0dfdf5c49b160d464b74a9cae8882ea81cc47878 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 18 Jun 2010 23:21:28 +0000 Subject: new latex package jmlr 1.06 (18jun10) git-svn-id: svn://tug.org/texlive/trunk@19046 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/source/latex/jmlr/jmlr.dtx | 4698 ++++++++++++++++++++++++++ Master/texmf-dist/source/latex/jmlr/jmlr.ins | 33 + 2 files changed, 4731 insertions(+) create mode 100644 Master/texmf-dist/source/latex/jmlr/jmlr.dtx create mode 100644 Master/texmf-dist/source/latex/jmlr/jmlr.ins (limited to 'Master/texmf-dist/source') diff --git a/Master/texmf-dist/source/latex/jmlr/jmlr.dtx b/Master/texmf-dist/source/latex/jmlr/jmlr.dtx new file mode 100644 index 00000000000..bf62a97e559 --- /dev/null +++ b/Master/texmf-dist/source/latex/jmlr/jmlr.dtx @@ -0,0 +1,4698 @@ +%\iffalse +% jmlr.dtx generated using makedtx version 0.94b (c) Nicola Talbot +% Command line args: +% -src "jmlr.cls\Z=>jmlr.cls" +% -src "jmlrbook.cls\Z=>jmlrbook.cls" +% -doc "jmlr-manual.tex" +% -author "Nicola Talbot" +% -codetitle "jmlr.cls Code" +% jmlr +% Created on 2010/6/17 20:52 +%\fi +%\iffalse +%<*package> +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +% +%\fi +% \iffalse +% Doc-Source file to use with LaTeX2e +% Copyright (C) 2010 Nicola Talbot, all rights reserved. +% \fi +% \iffalse +%<*driver> +\documentclass{nlctdoc} + +\usepackage{amsmath} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{ifthen} +\usepackage[colorlinks, + bookmarks, + hyperindex=false, + pdfauthor={Nicola L.C. Talbot}, + pdftitle={jmlr: LaTeX2e Classes for the Journal of Machine Learning Research}, + pdfkeywords={LaTeX,jmlr}]{hyperref} + +\CheckSum{3333} +\OnlyDescription + +\begin{document} +\DocInput{jmlr.dtx} +\end{document} +% +%\fi +%\MakeShortVerb{"} +%\DeleteShortVerb{\|} +% +% \title{\LaTeXe\ Classes for the Journal of Machine +%Learning Research} +% \author{Nicola L. C. Talbot\\[10pt] +%\url{http://theoval.cmp.uea.ac.uk/~nlct/}} +% +% \date{2010-06-17 (version 1.06)} +% \maketitle +%\tableofcontents +% +%\section{Introduction} +% +%The \clsfmt{jmlr} class is for articles that need to be formatted +%according to the Journal of Machine Learning Research style. This +%class is based on the \sty{jmlr2e} and \sty{jmlrwcp2e} packages +%but has been adapted to enable it to work better with the +%\cls{combine} class to collate the articles into a book. +%\sectionref{sec:jmlr} describes how to use the \clsfmt{jmlr} class. +% +%The \clsfmt{jmlrbook} class is for combining JMLR articles into a book. +%This class uses \cls{combine} and \sty{hyperref}, which are +%troublesome enough on their own but together are quite fragile. The +%\clsfmt{jmlrbook} class redefines some internals to get \clsfmt{combine} +%and \clsfmt{hyperref} to work together but some packages (e.g.\ +%\sty{subfig} and \sty{pdfpages}) are likely to mess everything up +%and cause errors. This is why the guidelines to authors are fairly +%stringent and why \clsfmt{jmlr} will give an error message if certain +%packages are loaded.\footnote{Currently \clsfmt{jmlr} will check if +%\sty{subfig}, \sty{pdfpages}, \sty{geometry}, \sty{psfig}, +%\sty{epsfig} and \sty{theorem} are loaded and will throw an error. +%If other packages are found to be a problem, they will be added to +%the list.} The \clsfmt{jmlrbook} class works best with PDF\LaTeX\ so +%authors should ensure that their articles can compile with +%PDF\LaTeX. \sectionref{sec:jmlrbook} describes how to use the +%\clsfmt{jmlrbook} class. +% +%The \app{makejmlrbook} Perl script can be used to make a book that +%uses the \clsfmt{jmlrbook} class. In addition to creating the print +%and online versions of the book, it will compile the individual +%articles, running Bib\TeX\ where necessary, and create a set of +%HTML files containing a list of all the articles imported into the +%book along with links to the abstracts and PDFs of the individual +%articles. \sectionref{sec:makejmlrbook} describes how +%to use the \app{makejmlrbook} application. +% +%\section{Required Packages} +% +%The \clsfmt{jmlr} class is based on the \cls{scrartcl} class and loads +%the following packages: \sty{amsmath}, \sty{amssymb}, +%\sty{natbib}, \sty{url}, \sty{graphicx} and \sty{algorithm2e}. +%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{hyperref}, \sty{xkeyval}, +%\sty{combnat} and \sty{setspace}. +% +%The \app{makejmlrbook} script requires Perl, \TeX\ and \TeX4ht. +% +%\section{Guidelines for Article Authors} +%\label{sec:jmlr} +% +%Article authors should use the \clsfmt{jmlr} class. This class +%comes with example files \texttt{jmlr-sample.tex} and +%\texttt{jmlrwcp-sample.tex}, which can be used as templates. +% +%The following class options are available: +%\begin{description} +%\item[\clsopt{nowcp}]The article is for the Journal of Machine +%Learning Research (default). +%\item[\clsopt{wcp}] The article is for JMLR Workshop and Conference +%Proceedings. +%\item[\clsopt{color}] Color version (see \sectionref{sec:color}). +% +%\item[\clsopt{gray}] Grayscale version (see \sectionref{sec:color}). +% +%\item[\clsopt{tablecaptiontop}] in a \env{table} environment, +%\ics{floatconts} puts the caption at the top. +% +%\item[\clsopt{tablecaptionbottom}] in a \env{table} environment, +%\ics{floatconts} puts the caption at the bottom. +%\end{description} +% +%\subsection{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}. +% +%\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}\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. (See below for examples.) +%\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} +%\end{description} +% +%\subsection{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}. +% +%\begin{definition}[\DescribeMacro{\url}] +%\cs{url}\marg{address} +%\end{definition} +%This will typeset \meta{address} in a typewriter font. Special +%characters, such as \verb|~|, are correctly displayed. Example: +%\begin{verbatim} +%\url{http://theoval.cmp.uea.ac.uk/~nlct/} +%\end{verbatim} +% +%\begin{definition}[\DescribeMacro{\mailto}] +%\cs{mailto}\marg{email address} +%\end{definition} +%This will typeset the given email address in a typewriter font. +%Note that this is not the same as \cs{Email}, which should only be +%used in the argument of \cs{author}. +% +%\subsection{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 +%\section{Proof of Theorems} +%\end{verbatim} +% +%\subsection{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. +% +%\subsection{Figures and Tables} +% +%Floats, such as figures, tables and algorithms, are moving objects +%and are supposed to float to the nearest convenient location. +%Please don't force them to go in a particular place. In general +%it's best to use the \texttt{htbp} specifier and don't put +%the float in the middle of a paragraph (that is, make sure there's +%a paragraph break above and below the float). Floats are supposed +%to have a little extra space above and below them to make them +%stand out from the rest of the text. This extra space is put in +%automatically and shouldn't need modifying. +% +%To ensure consistency, please \emph{don't} try changing the +%format of the caption by doing something like: +%\begin{verbatim} +%\caption{\textit{A Sample Caption.}} +%\end{verbatim} +%or +%\begin{verbatim} +%\caption{\em A Sample Caption.} +%\end{verbatim} +%You can, of course, change the font for individual words or +%phrases. For example: +%\begin{verbatim} +%\caption{A Sample Caption With Some \emph{Emphasized Words}.} +%\end{verbatim} +% +%The \clsfmt{jmlr} class provides the following command for displaying +%the contents of a figure or table: +%\begin{definition}[\DescribeMacro{\floatconts}] +%\cs{floatconts}\marg{label}\marg{caption command}\marg{contents} +%\end{definition} +%This ensures that the caption is correctly positioned and that +%the contents are centered. For example: +%\begin{verbatim} +%\begin{table}[htbp] +%\floatconts +% {tab:example}% label +% {\caption{An Example Table}}% caption command +% {% +% \begin{tabular}{ll} +% \bfseries Dataset & \bfseries Result\\ +% Data1 & 0.123456 +% \end{tabular} +% } +%\end{table} +%\end{verbatim} +% +%The \clsfmt{jmlr} class automatically loads \sty{graphicx} which +%defines: +%\begin{definition}[\DescribeMacro{\includegraphics}] +%\cs{includegraphics}\oarg{options}\marg{file name} +%\end{definition} +%where \meta{options} is a comma-separated list of options. +% +%For example, suppose you have an image called +%\texttt{mypic.png} in a subdirectory called \texttt{images}: +%\begin{verbatim} +%\begin{figure}[htbp] +%\floatconts +% {fig:example}% label +% {\caption{An Example Figure}}% caption command +% {\includegraphics[width=0.5\textwidth]{images/mypic}} +%\end{figure} +%\end{verbatim} +% +%Note that you shouldn't specify the file extension when including +%the image. It's helpful if you can also provide a grayscale +%version of color images. This should be labeled as the color +%image but with \texttt{-gray} immediately before the extension. +%(The extension need not be the same as that of the color image.) +%For example, if you have an image called \texttt{mypic.pdf}, the +%grayscale can be called \texttt{mypic-gray.pdf}, +%\texttt{mypic-gray.png} or \texttt{mypic-gray.jpg}. +%See \sectionref{sec:color} for further details. +% +%\begin{definition}[\DescribeMacro{\includeteximage}] +%\cs{includeteximage}\oarg{options}\marg{file name} +%\end{definition} +%If your image file is made up of \LaTeX\ code (e.g.\ \sty{tikz} +%commands) the file can be included using \cs{includeteximage}. +%The optional argument is a key=value comma-separated list +%where the keys are a subset of those provided by +%\cs{includegraphics}. The main keys are: \texttt{width}, +%\texttt{height}, \texttt{scale} and \texttt{angle}. +% +%\subsubsection{Sub-Figures and Sub-Tables} +% +%The \sty{subfig} package causes a problem for \clsfmt{jmlrbook} so +%the \clsfmt{jmlr} class will give an error if it is used. Therefore +%the \clsfmt{jmlr} class provides its own commands for including +%sub-figures and sub-tables. +% +%\begin{definition}[\DescribeMacro{\subfigure}] +%\cs{subfigure}\oarg{title}\oarg{valign}\marg{contents} +%\end{definition} +%This makes a sub-figure where \meta{contents} denotes the contents +%of the sub-figure. This should also include the \cs{label}. +%The first optional argument \meta{title} indicates a caption for +%the sub-figure. By default, the sub-figures are aligned at the +%base. This can be changed with the second optional argument +%\meta{valign}, which may be one of: \texttt{t} (top), \texttt{c} +%(centred) or \texttt{b} (base). +% +%For example, suppose there are two images files, \texttt{mypic1.png} +%and \texttt{mypic2.png}, in the subdirectory \texttt{images}. +%Then they can be included as sub-figures as follows: +%\begin{verbatim} +%\begin{figure}[htbp] +%\floatconts +% {fig:example2}% label for whole figure +% {\caption{An Example Figure.}}% caption for whole figure +% {% +% \subfigure{% +% \label{fig:pic1}% label for this sub-figure +% \includegraphics{images/mypic1} +% }\qquad % space out the images a bit +% \subfigure{% +% \label{fig:pic2}% label for this sub-figure +% \includegraphics{images/mypic2} +% } +% } +%\end{figure} +%\end{verbatim} +% +%\begin{definition}[\DescribeMacro{\subtable}] +%\cs{subtable}\oarg{title}\oarg{valign}\marg{contents} +%\end{definition} +%This is an analogous command for sub-tables. The default value +%for \meta{valign} is \texttt{t}. +% +%\subsection{Algorithms} +% +%\begin{definition}[\DescribeEnv{algorithm}] +%\cs{begin}\{algorithm\}\\ +%\meta{contents}\\ +%\cs{end}\{algorithm\} +%\end{definition} +%Enumerated textual algorithms can be displayed using the +%\envfmt{algorithm} environment. Within this environment, use +%\ics{caption} to set the caption (and \ics{label} to cross-reference +%it). Within the body of the environment you can use the +%\env{enumerate} environment. +% +%\begin{definition}[\DescribeEnv{enumerate*}] +%\cs{begin}\{enumerate*\}\\ +%\cs{item} \meta{text}\\ +%\ldots\\ +%\cs{end}\{enumerate*\} +%\end{definition} +%If you want to have nested \env{enumerate} environments but you want +%to keep the same numbering throughout the algorithm, you can use the +%\envfmt{enumerate*} environment, provided by the \clsfmt{jmlr} +%class. For example: +%\begin{verbatim} +%\begin{enumerate*} +% \item Set the label of vertex $s$ to 0 +% \item Set $i=0$ +% \begin{enumerate*} +% \item \label{step:locate}Locate all unlabelled vertices +% adjacent to a vertex labelled $i$ and label them $i+1$ +% \item If vertex $t$ has been labelled, +% \begin{enumerate*} +% \item[] the shortest path can be found by backtracking, and +% the length is given by the label of $t$. +% \end{enumerate*} +% otherwise +% \begin{enumerate*} +% \item[] increment $i$ and return to step~\ref{step:locate} +% \end{enumerate*} +% \end{enumerate*} +%\end{enumerate*} +%\end{algorithm} +%\end{verbatim} +% +% +%\begin{definition}[\DescribeEnv{algorithm2e}] +%\cs{begin}\{algorithm2e\}\\ +%\meta{contents}\\ +%\cs{end}\{algorithm2e\} +%\end{definition} +%Pseudo code can be displayed using the \envfmt{algorithm2e} environment, +%provided by the \sty{algorithm2e} package, which is automatically +%loaded. For example: +%\begin{verbatim} +%\begin{algorithm2e} +%\caption{Computing Net Activation} +%\label{alg:net} +%\dontprintsemicolon +%\linesnumbered +%\KwIn{$x_1, \ldots, x_n, w_1, \ldots, w_n$} +%\KwOut{$y$, the net activation} +%$y\leftarrow 0$\; +%\For{$i\leftarrow 1$ \KwTo $n$}{ +% $y \leftarrow y + w_i*x_i$\; +%} +%\end{algorithm2e} +%\end{verbatim} +% +%See the \ctandoc{algorithm2e} for more details. +% +%\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} +% +%The \clsfmt{jmlr} class provides the following theorem-like +%environments: \env{theorem}, \env{example}, \env{lemma}, +%\env{proposition}, \env{remark}, \env{corollary}, \env{definition}, +%\env{conjecture} and \env{axiom}. Within the body of those +%environments, you can use the \env{proof} environment to display the +%proof if need be. The theorem-like environments all take an +%optional argument, which gives the environment a title. For example: +% +%\begin{verbatim} +%\begin{theorem}[An Example Theorem] +%\label{thm:example} +%This is the theorem. +%\begin{proof} +%This is the proof. +%\end{proof} +%\end{theorem} +%\end{verbatim} +% +%\subsection{Cross-Referencing} +%\label{sec:crossref} +% +%Always use \ics{label} when cross-referencing, rather than writing +%the number explicitly. The \clsfmt{jmlr} class provides some +%convenience commands to assist referencing. These commands, +%described below, can all take a comma-separated list of labels. +% +%\begin{definition}[\DescribeMacro{\sectionref}] +%\cs{sectionref}\marg{label list} +%\end{definition} +%Used to refer to a section or sections. For example, if you defined +%a section as follows: +%\begin{verbatim} +%\section{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. A +%brief summary of some of the more common commands and environments +%is provided here. See the \ctandoc{amsmath} for further details. +% +%\begin{definition}[\DescribeMacro{\set}] +%\cs{set}\marg{text} +%\end{definition} +%In addition to the commands provided by \sty{amsmath}, the +%\clsfmt{jmlr} class also provides the \cs{set} command which can +%be used to typeset a set. For example: +%\begin{verbatim} +%The universal set is denoted $\set{U}$ +%\end{verbatim} +% +%Unnumbered single-line equations should be displayed using +%\cs{[} and \cs{]}. For example: +%\begin{verbatim} +%\[E = m c^2\] +%\end{verbatim} +%Numbered single-line equations should be displayed using the +%\env{equation} environment. For example: +%\begin{verbatim} +%\begin{equation}\label{eq:trigrule} +%\cos^2\theta + \sin^2\theta \equiv 1 +%\end{equation} +%\end{verbatim} +%Multi-lined numbered equations should be displayed using the +%\env{align} environment. For example: +%\begin{verbatim} +%\begin{align} +%f(x) &= x^2 + x\label{eq:f}\\ +%f'(x) &= 2x + 1\label{eq:df} +%\end{align} +%\end{verbatim} +%Unnumbered multi-lined equations should be displayed using the +%\env{align*} environment. For example: +%\begin{verbatim} +%\begin{align*} +%f(x) &= (x+1)(x-1)\\ +%&= x^2 - 1 +%\end{align*} +%\end{verbatim} +%If you want to mix numbered with unnumbered lines use the +%\env{align} environment and suppress unwanted line numbers with +%\cs{nonumber}. For example: +%\begin{verbatim} +%\begin{align} +%y &= x^2 + 3x - 2x + 1\nonumber\\ +%&= x^2 + x + 1\label{eq:y} +%\end{align} +%\end{verbatim} +%An equation that is too long to fit on a single line can be +%displayed using the \env{split} environment. +% +%Text can be embedded in an equation using \ics{text}\marg{text} or +%you can use \ics{intertext}\marg{text} to interupt a multi-line +%environment such as \env{align}. +% +%Predefined operator names are listed in \tableref{tab:operatornames}. +%For additional operators, either use +%\begin{definition}[\DescribeMacro{\operatorname}] +%\cs{operatorname}\marg{name} +%\end{definition} +%for example +%\begin{verbatim} +%If $X$ and $Y$ are independent, +%$\operatorname{var}(X+Y) = +%\operatorname{var}(X) + \operatorname{var}(Y)$ +%\end{verbatim} +%or declare it with +%\begin{definition}[\DescribeMacro{\DeclareMathOperator}] +%\cs{DeclareMathOperator}\marg{command}\marg{name} +%\end{definition} +%for example +%\begin{verbatim} +%\DeclareMathOperator{\var}{var} +%\end{verbatim} +%and then use this new command: +%\begin{verbatim} +%If $X$ and $Y$ are independent, +%$\var(X+Y) = \var(X)+\var(Y)$ +%\end{verbatim} +% +%If you want limits that go above and +%below the operator (like \ics{sum}) use the starred versions +%(\ics{operatorname*} or \ics{DeclareMathOperator*}). +% +%\begin{table}[htbp] +%\caption{Predefined Operator Names (taken from +% \sty{amsmath} documentation)} +%\label{tab:operatornames}% +%\vskip\baselineskip +%\centering +%\begin{tabular}{rlrlrlrl} +%\cs{arccos} & $\arccos$ & \cs{deg} & $\deg$ & \cs{lg} & $\lg$ & \cs{projlim} & $\projlim$ \\ +%\cs{arcsin} & $\arcsin$ & \cs{det} & $\det$ & \cs{lim} & $\lim$ & \cs{sec} & $\sec$ \\ +%\cs{arctan} & $\arctan$ & \cs{dim} & $\dim$ & \cs{liminf} & $\liminf$ & \cs{sin} & $\sin$ \\ +%\cs{arg} & $\arg$ & \cs{exp} & $\exp$ & \cs{limsup} & $\limsup$ & \cs{sinh} & $\sinh$ \\ +%\cs{cos} & $\cos$ & \cs{gcd} & $\gcd$ & \cs{ln} & $\ln$ & \cs{sup} & $\sup$ \\ +%\cs{cosh} & $\cosh$ & \cs{hom} & $\hom$ & \cs{log} & $\log$ & \cs{tan} & $\tan$ \\ +%\cs{cot} & $\cot$ & \cs{inf} & $\inf$ & \cs{max} & $\max$ & \cs{tanh} & $\tanh$ \\ +%\cs{coth} & $\coth$ & \cs{injlim} & $\injlim$ & \cs{min} & $\min$ \\ +%\cs{csc} & $\csc$ & \cs{ker} & $\ker$ & \cs{Pr} & $\Pr$ +%\end{tabular}\par +%\begin{tabular}{rlrl} +%\cs{varlimsup} & $\varlimsup$ +%& \cs{varinjlim} & $\varinjlim$\\ +%\cs{varliminf} & $\varliminf$ +%& \cs{varprojlim} & $\varprojlim$ +%\end{tabular} +% +%\end{table} +% +%\subsection{Color vs Grayscale} +%\label{sec:color} +% +%It's helpful if authors supply grayscale versions of their +%articles in the event that the article is to be incorporated into +%a black and white printed book. With external PDF, PNG or JPG +%graphic files, you just need to supply a grayscale version of the +%file. For example, if the file is called \texttt{myimage.png}, +%then the gray version should be \texttt{myimage-gray.png} or +%\texttt{myimage-gray.pdf} or \texttt{myimage-gray.jpg}. You don't +%need to modify your code. The \clsfmt{jmlr} class checks for +%the existence of the grayscale version if it is print mode +%(provided you have used \ics{includegraphics} and haven't +%specified the file extension). +% +%\begin{definition}[\DescribeMacro{\ifprint}] +%\cs{ifprint}\marg{true part}\marg{false part} +%\end{definition} +%You can use \cs{ifprint} to determine which mode you are in. +%For example: +%\begin{verbatim} +%in \figureref{fig:nodes}, the +%\ifprint{dark gray}{purple} +%ellipse represents an input and the +%\ifprint{light gray}{yellow} ellipse +%represents an output. +%\end{verbatim} +%Another example: +%\begin{verbatim} +%{\ifprint{\bfseries}{\color{red}}important text!} +%\end{verbatim} +% +%You can use the class option \clsopt{gray} to see how the +%document will appear in gray scale mode. +% +%The \sty{xcolor} class is loaded with the \pkgoptfmt{x11names} +%option, so you can use any of the x11 predefined colors (listed +%in the \ctandoc{xcolor}). +% +%\subsection{Where To Go For Help} +% +%If you have a \LaTeX\ query, the first place to go to is the +%\urlfootref{http://www.tex.ac.uk/faq}{UK TUG FAQ}. +% +%If you are unfamiliar or just getting started with \LaTeX, there's +%a list of on-line introductions to \LaTeX\ at: +%\url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=man-latex} +% +%There are also forums, mailing lists and newsgroups. For example, +%the \LaTeX\ Community (\url{http://www.latex-community.org/}), +%the \texttt{texhax} mailing list +%(\url{http://tug.org/mailman/listinfo/texhax}) and +%\texttt{comp.text.tex} (archives available at +%\url{http://groups.google.com/group/comp.text.tex/}). +% +%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. +% +%\section{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} and +%\texttt{jmlrbook-sample.tex}. All but the last named one are +%articles using the \clsfmt{jmlr} class. The last one +%(\texttt{jmlrbook-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{makejmlrbook} Perl script to compile +%the book and create associated HTML files. See +%\sectionref{sec:makejmlrbook} for details. +% +%\subsection{\clsfmt{jmlrbook} Class Options} +%\begin{description} +%\item[\clsopt{nowcp}]The imported pre-published articles were +%published in the Journal of Machine Learning Research (default). +%\item[\clsopt{wcp}] The imported pre-published articles were +%published in the JMLR Workshop and Conference Proceedings. +% +%If the book has a mixture of JMLR and JMLR WCP articles, you +%can switch between them using +%\begin{definition}[\DescribeMacro{\jmlrwcp}] +%\cs{jmlrwcp} +%\end{definition} +%and +%\begin{definition}[\DescribeMacro{\jmlrnowcp}] +%\cs{jmlrnowcp} +%\end{definition} +%Alternatively, you can set the name of the journal or conference +%proceedings using: +%\begin{definition}[\DescribeMacro{\jmlrproceedings}] +%\cs{jmlrproceedings}\marg{short title}\marg{long title} +%\end{definition} +% +%\item[\clsopt{color}] Color version (see \sectionref{sec:color}). +%Use this option for the on-line version with hyperlinks enabled +%(default). +% +%\item[\clsopt{gray}] Grayscale version (see \sectionref{sec:color}). +%Use this option for the print version without hyperlinks. +% +%\item[\clsopt{tablecaptiontop}] in a \env{table} environment, +%\ics{floatconts} puts the caption at the top. +% +%\item[\clsopt{tablecaptionbottom}] 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{prehyperref}] The \clsfmt{jmlrbook} automatically loads +%the \sty{hyperref} package, but some packages need to be loaded +%before \sty{hyperref}. This information can be specified using +%the \clsopt{prehyperref} option. This is a key=value option. For +%example, to load the packages \styfmt{foo} and \styfmt{bar} before +%\sty{hyperref}, you can do: +%\begin{verbatim} +%\documentclass[prehyperref={\usepackage{foo,bar}}]{jmlrbook} +%\end{verbatim} +%or: +%\begin{verbatim} +%\documentclass[prehyperref={\usepackage{foo}\usepackage{bar}}]{jmlrbook} +%\end{verbatim} +% +%\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} +% +%\subsection{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}\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.) +% +%\begin{definition}[\DescribeMacro{\team}] +%\cs{team}\marg{team title} +%\end{definition} +%This can be used to set the name of the editorial team. This +%command may be omitted if not required. +% +%\begin{definition}[\DescribeMacro{\productioneditor}] +%\cs{productioneditor}\marg{name} +%\end{definition} +%This command may be used to name the production editor. The command +%may be omitted if not required. +% +%See \sectionref{sec:modifytitle} for details on how to modify the +%layout of the title page. +% +%\subsection{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{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. +% +%Within the 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. +% +%\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. +% +%\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 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, this will switch to the +%book appendices. Subsequent \cs{chapter} commands will produce the +%appendices. If used within an imported article, it 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. Within this +%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 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} +% +%\subsubsection{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 labeled \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. +% +%\subsection{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} +% +%\subsection{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. +% +%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. +% +%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. +% +%\subsection{Creating the Book Using \appfmt{makejmlrbook}} +%\label{sec:makejmlrbook} +% +%The \app{makejmlrbook} Perl script is designed to make it +%easier to produce the print and online versions of the book, as +%well as producing an HTML index of all the imported articles with +%links to the abstracts and PDFs of individual articles. Note that +%for it to work properly, the articles must be imported using +%\cs{importarticle}, \cs{importpaper} or \cs{importpubpaper}, and +%the imported articles must use the \clsfmt{jmlr} class. +% +%On UNIX style systems, the script can be invoked from a terminal +%using: +%\begin{prompt} +%makejmlrbook \oarg{options} \meta{filename} +%\end{prompt} +%If that doesn't work, or you aren't using a UNIX style operating +%system, the script can be invoked from a terminal or command +%prompt using: +%\begin{prompt} +%perl makejmlrbook \oarg{options} \meta{filename} +%\end{prompt} +%The mandatory argument \meta{filename} is the name of the master +%\TeX\ file containing the book. It must use the \clsfmt{jmlrbook} +%class. You may omit the \texttt{.tex} extension. For example, if +%the file is called \texttt{proceedings.tex}, you can call +%\app{makejmlrbook} as follows: +%\begin{verbatim} +%perl makejmlrbook proceedings +%\end{verbatim} +%This will create the files \texttt{proceedings-print.pdf} (the +%print version) and \texttt{proceedings-online.pdf} (the online +%version). It will also create a directory (folder) called +%\texttt{html} in which the HTML files and individual article PDFs +%will be placed. +% +%The options to \app{makejmlrbook} are as follows: +%\begin{description} +%\item[--online] Generate the color on-line version (default). +%\item[--noonline] Don't generate the color on-line version. +%\item[--print] Generate the grayscale print version (default). +%\item[--noprint] Don't generate the grayscale print version. +%\item[--html] Generate the HTML files and the individual article +%PDFs (default). +%\item[--nohtml] Don't generate the HTML files and the individual +%article PDFs. +%\item[--logourl \meta{url}] Make the logo on the HTML index page link +%to \meta{url}. +%\item[--batchtex] Run \TeX\ in batch mode. +%\item[--nobatchtex] Don't run \TeX\ in batch mode (default). +%\item[--quieter] Reduce chatter to STDOUT (doesn't eliminate +%all messages). This also runs \TeX\ in batch mode. +%\item[--noquieter] Don't reduce messages to STDOUT (default). +%\item[--version] Display the version number and exit. +%\item[--help] List all available options. +%\end{description} +% +%There are also some more advanced options, but these haven't been +%fully tested: +%\begin{description} +%\item[--latexapp \meta{name}] Application used to call \LaTeX. +%Defaults to \qt{pdflatex}. +%\item[--latexopt \meta{string}] Options to pass to \LaTeX. +%\item[--format \meta{string}] Output format (defaults to \qt{pdf}). +%This may need to be changed if you change the \LaTeX\ application. +%\item[--bibtexapp \meta{name}] Application use to process the +%bibliography. Defaults to \qt{bibtex}. +%\item[--bibtexopt \meta{string}] Options to pass to Bib\TeX. +%\end{description} +% +%\StopEventually{\clearpage\phantomsection +% \addcontentsline{toc}{section}{Index}\PrintIndex +%} +% +% +% +%\section{jmlr.cls Code} +%\iffalse +% \begin{macrocode} +%<*jmlr.cls> +% \end{macrocode} +%\fi +% This class is based on the \sty{jmlr2e} package but was updated to use +% \cls{scrartcl} instead of \cls{article} and 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}[2010/06/17 v1.06 (NLCT) Journal of Machine Learning Research] +% \end{macrocode} +% 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 +}{} +\DeclareOption{color}{\grayscalefalse + \PassOptionsToPackage{color}{xcolor}} +\DeclareOption{gray}{\grayscaletrue + \PassOptionsToPackage{gray}{xcolor}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\iftablecaptiontop} +% Determine if the table captions should go at the top. +%\changes{1.07}{2010-06-17}{new} +% \begin{macrocode} +\newif\iftablecaptiontop +\tablecaptiontoptrue +\DeclareOption{tablecaptiontop}{\tablecaptiontoptrue} +\DeclareOption{tablecaptionbottom}{\tablecaptionbottomtrue} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\ifjmlrhtml} +% Determine if we are using \app{TeX4ht}: +% \begin{macrocode} +\newif\ifjmlrhtml +\jmlrhtmlfalse +\DeclareOption{html}{\jmlrhtmltrue} +\DeclareOption{nohtml}{\jmlrhtmlfalse} +% \end{macrocode} +%\end{macro} +% Normal font size (default is 11pt) +% \begin{macrocode} +\def\pt@size{11pt} +\DeclareOption{10pt}{\renewcommand{\pt@size}{10}% + \PassOptionsToClass{\CurrentOption}{article}} +\DeclareOption{11pt}{\renewcommand{\pt@size}{11}% + \PassOptionsToClass{\CurrentOption}{article}} +\DeclareOption{12pt}{\renewcommand{\pt@size}{12}% + \PassOptionsToClass{\CurrentOption}{article}} +% \end{macrocode} +%\begin{macro}{\@jmlrproceedings} +% The name of the proceedings. +% \begin{macrocode} +\newcommand*{\@jmlrproceedings}{Journal of Machine Learning Research} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@jmlrabbrvproceedings} +% The abbreviated name of the proceedings. +% \begin{macrocode} +\newcommand*{\@jmlrabbrvproceedings}{JMLR} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\jmlrproceedings} +% Sets the title and abbreviation of the proceedings +% \begin{macrocode} +\newcommand*{\jmlrproceedings}[2]{% + \renewcommand*{\@jmlrabbrvproceedings}{#1}% + \renewcommand*{\@jmlrproceedings}{#2}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\nowcp} +% \begin{macrocode} +\newcommand*{\jmlrnowcp}{% + \jmlrproceedings{JMLR}{Journal of Machine Learning Research}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\wcp} +% \begin{macrocode} +\newcommand*{\jmlrwcp}{% + \jmlrproceedings{JMLR WC\&P}{JMLR: Workshop and Conference Proceedings}% +} +% \end{macrocode} +%\end{macro} +% This isn't an article for a workshop: +% \begin{macrocode} +\DeclareOption{nowcp}{\jmlrnowcp} +% \end{macrocode} +% This is an article for a workshop +% \begin{macrocode} +\DeclareOption{wcp}{\jmlrwcp} +% \end{macrocode} +% The default paper size is letter, but provide $7 \times 10$in +% alternative: +% \begin{macrocode} +\newif\ifviiXx +\viiXxfalse +\DeclareOption{7x10}{\viiXxtrue} +\DeclareOption{letterpaper}{\PassOptionsToPackage{letterpaper}{typearea}} +% \end{macrocode} +% Pass all remaining options to \cls{scrartcl} class: +% \begin{macrocode} +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{scrartcl}} +% \end{macrocode} +% Execute required options: +% \begin{macrocode} +\ExecuteOptions{twoside,letterpaper} +% \end{macrocode} +% Process options: +% \begin{macrocode} +\ProcessOptions +% \end{macrocode} +% Load \cls{scrartcl} class +% \begin{macrocode} +\LoadClass[pointednumbers,normalheadings]{scrartcl} +% \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} +% Required packages: +% \begin{macrocode} +\RequirePackage{amsmath} +\RequirePackage{amssymb} +\RequirePackage{natbib} +\RequirePackage{graphicx} +\RequirePackage{url} +\RequirePackage[x11names]{xcolor} +\RequirePackage[algo2e,ruled]{algorithm2e} +% \end{macrocode} +% Float parameters: the following settings were copied from jmlr2e.sty +% \begin{macrocode} +\renewcommand{\topfraction}{0.95} % let figure take up nearly whole page +\renewcommand{\textfraction}{0.05} % let figure take up nearly whole page +% \end{macrocode} +% widows/orphans +% \begin{macrocode} +\widowpenalty=10000\relax +\clubpenalty=10000\relax +% \end{macrocode} +% Set two-sided format +% \begin{macrocode} +\@twosidetrue +% \end{macrocode} +% Put marginal notes on the outside of the page +% \begin{macrocode} +\@mparswitchtrue +% \end{macrocode} +% \begin{macrocode} +\def\ds@draft{\overfullrule 5pt} +% \end{macrocode} +% Use the plainnat bibliography style and set up the required +% punctuation. +% \begin{macrocode} +\bibliographystyle{plainnat} +\bibpunct{(}{)}{;}{a}{,}{,} +% \end{macrocode} +%\subsection{Sections} +% \begin{macrocode} +\addtokomafont{section}{\rmfamily\large} +\addtokomafont{subsection}{\rmfamily\normalsize} +\addtokomafont{subsubsection}{\rmfamily\mdseries\normalsize\scshape} +\addtokomafont{paragraph}{\rmfamily\normalsize} +\addtokomafont{subparagraph}{\rmfamily\itshape\normalsize} +% \end{macrocode} +% Insert possible prefix to section number. +% \begin{macrocode} +\renewcommand*{\othersectionlevelsformat}[1]{% + \csname pre#1num\endcsname\csname the#1\endcsname\autodot\enskip} +% \end{macrocode} +%\subsection{Footnotes} +% This code has been taken from jmlr2e.sty +% \begin{macrocode} +\long\def\@makefntext#1{\@setpar{\@@par\@tempdima \hsize + \advance\@tempdima-15pt\parshape \@ne 15pt \@tempdima}\par + \parindent 2em\noindent \hbox to \z@{\hss{\@thefnmark}. \hfil}#1} +% \end{macrocode} +%\subsection{Article abstract} +% This code has been taken from jmlr2e.sty but with \cs{bf} updated +% to \cs{bfseries} +%\begin{environment}{abstract} +% \begin{macrocode} +\ifjmlrhtml + \renewenvironment{abstract}{\HCode{

}Abstract\HCode{

}}{}% +\else + \renewenvironment{abstract} + {\centerline{\large\bfseries Abstract}\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}{\title} +% Override definition of \cs{title} to allow for an optional +% argument (short title) +% \begin{macrocode} +\renewcommand*{\title}[2][\@title]{% + \def\@shorttitle{#1}% + \def\@title{#2}% + \jmlrtitlehook +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\jmlrtitlehook} +% \begin{macrocode} +\newcommand*{\jmlrtitlehook}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\author} +% Override definition of \cs{author} to allow for an optional +% argument (list of authors for page heading) +% \begin{macrocode} +\renewcommand*{\author}[2][]{% + \def\@author{#2}% + \def\@sauthor{#1}% + \ifx\@sauthor\@empty + \else + \let\@shortauthor\@sauthor + \fi + \jmlrauthorhook +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\jmlrauthorhook} +% \begin{macrocode} +\newcommand*{\jmlrauthorhook}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@shortauthor} +% \begin{macrocode} +\newcommand*{\@shortauthor}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@firstauthor} +% \begin{macrocode} +\newcommand*{\@firstauthor}{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@firstsurname} +% \begin{macrocode} +\newcommand*{\@firstsurname}{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\jmlrlength} +% \begin{macrocode} +\newlength\jmlrlength +% \end{macrocode} +%\end{macro} +% +% overall definition of \cs{maketitle}, \cs{@maketitle} does the real work +%\begin{macro}{\jmlrmaketitle} +% \begin{macrocode} +\def\jmlrmaketitle{% + \jmlrpremaketitlehook + \def\@jmlr@authors@sep{, }% + \par + \begingroup + \def\thefootnote{\fnsymbol{footnote}}% + \def\@makefnmark{\hbox to 0pt{$^{\@thefnmark}$\hss}}% + \@jmlrmaketitle \@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\relax +\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\@jmlrauthors\@empty + \sbox\jmlrbox{\let\addr\relax\@author}% + \fi + \noindent\HCode{

}\@title\HCode{

} + \noindent\@jmlrauthors +} +% \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}{\jmlrpreauthor} +% \begin{macrocode} +\def\jmlrpreauthor{% +\bgroup + \def\and{\unskip\enspace{\normalfont and}\enspace}% + \def\addr{\small\itshape}% + \def\name{\ClassError{jmlr}{Use \string\Name{Author's Name} not \string\name}{}}% + \def\email{\ClassError{jmlr}{Use \string\Email{address} not \string\email}{}}% + \def\AND{\@endauthor\normalfont\hss \vskip \interauthorskip + \@startauthor}% + \@startauthor +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@email} +% \begin{macrocode} +\def\@email{\hfill\small\mdseries\scshape}% +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@name} +% \begin{macrocode} +\def\@name{\normalsize\upshape\bfseries}% +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@parsename} +% Parse a name. Appends forename to \cs{@forenames} and stores +% surname in \cs{@surname}. +% \begin{macrocode} +\def\@parsename#1 #2\@nil{% + \def\@tmp{#2}% + \ifx\@tmp\@empty + \def\@surname{#1}% + \let\@nextparsename\@parsenamenoop + \else + \@getinitial#1-\relax\relax\end + \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\@nil +} +\def\@parsenamenoop#1\@nil{} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\@getinitial} +% \begin{macrocode} +\def\@getinitial#1#2-#3#4\end{% + \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) +% \begin{macrocode} +\newcommand*{\Name}[1]{% + \def\@forenames{}% + \def\@surname{}% + \@parsename#1 \@nil + \ifx\@shortauthor\@empty + \ifx\@sauthor\@empty + \global\let\@shortauthor\@surname + \global\let\@firstsurname\@surname + \fi + \protected@xdef\@jmlrauthors{\@initials\space\@surname}% + \global\let\@firstauthor\@jmlrauthors + \else + \ifx\@sauthor\@empty + \expandafter\toks@\expandafter{\@shortauthor}% + \protected@xdef\@shortauthor{\the\toks@\space\@surname}% + \fi + \protected@xdef\@jmlrauthors{\@jmlrauthors + \noexpand\@jmlr@authors@sep + \@initials\space\@surname}% + \fi + \@name #1% +} +% \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 \@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} +% +% Label end page. +% \begin{macrocode} +\AtEndDocument{% + \@ifundefined{phantomsection}{}{\phantomsection}% + \protected@edef\@currentlabelname{end of \@shorttitle}% + \label{jmlrend}% +} +% \end{macrocode} +% +%\begin{macro}{\@titlefoot} +% \begin{macrocode} +\newcommand*{\@titlefoot}{\scriptsize\copyright\space\@jmlryear + \space\@jmlrauthors.\hfill} +% \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\fi + \ifx\@jmlryear\@empty\else\space(\@jmlryear)\fi + \ifx\@jmlrpages\@empty\else\space\@jmlrpages\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: +% \begin{macrocode} +\let\@jmlrvolume\@empty +% \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} +\let\@jmlrissue\@empty +% \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: +% \begin{macrocode} +\let\@jmlryear\@empty +% \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: +% \begin{macrocode} +\newcommand*\@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: +% \begin{macrocode} +\let\@jmlrsubmitted\@empty +% \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: +% \begin{macrocode} +\let\@jmlrpublished\@empty +% \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: +% \begin{macrocode} +\let\@jmlrworkshop\@empty +% \end{macrocode} +%\end{macro} +%\begin{macro}{\jmlrworkshop} +% \begin{macrocode} +\newcommand*{\jmlrworkshop}[1]{\renewcommand*{\@jmlrworkshop}{#1}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@jmlrauthors} +% \begin{macrocode} +\newcommand*{\@jmlrauthors}{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\jmlrauthors} +% This is provided in case \cs{Name} doesn't set \cs{@jmlrauthors} +% correctly. +% \begin{macrocode} +\newcommand*{\jmlrauthors}[1]{\renewcommand*{\@jmlrauthors}{#1}} +% \end{macrocode} +%\end{macro} +% +% +%\subsection{Miscellany} +% This code was taken from jmlr2e.sty. + +% Define macros for figure captions and table titles +% \begin{macrocode} +\def\figurecaption#1#2{\noindent\hangindent 40pt + \hbox to 36pt {\small\slshape #1 \hfil} + \ignorespaces {\small #2}} +% \end{macrocode} +% Figurecenter prints the caption title centered. +% \begin{macrocode} +\def\figurecenter#1#2{\centerline{{\slshape #1} #2}} +\def\figurecenter#1#2{\centerline{{\small\slshape #1} {\small #2}}} +% \end{macrocode} +% +% Allow ``hanging indents'' in long captions +% +%\begin{macro}{\@makecaption} +% \begin{macrocode} +\long\def\@makecaption#1#2{% + \vskip 10pt + \setbox\@tempboxa\hbox{#1: #2}% + \ifdim \wd\@tempboxa >\hsize % IF longer than one line: + \begin{list}{#1:}{% + \settowidth{\labelwidth}{#1:} + \setlength{\leftmargin}{\labelwidth} + \addtolength{\leftmargin}{\labelsep} + }\item #2 \end{list}\par % Output in quote mode + \else % ELSE center. + \hbox to\hsize{\hfil\box\@tempboxa\hfil} + \fi} +% \end{macrocode} +%\end{macro} +% Define strut macros for skipping spaces above and below text in a +% tabular environment. +% \begin{macrocode} +\def\abovestrut#1{\rule[0in]{0in}{#1}\ignorespaces} +\def\belowstrut#1{\rule[-#1]{0in}{#1}\ignorespaces} +% \end{macrocode} +%\begin{macro}{\acks} +% Acknowledgments +% \begin{macrocode} +\long\def\acks#1{\section*{Acknowledgments}#1} +% \end{macrocode} +%\end{macro} +% Research Note +%\begin{macro}{\researchnote} +% \begin{macrocode} +\long\def\researchnote#1{\noindent {\LARGE\itshape Research Note} #1} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\set} +% \begin{macrocode} +\newcommand*{\set}[1]{\ensuremath{\mathcal{#1}}} +% \end{macrocode} +%\end{macro} +% Convenient macros for cross-referencing. +% \begin{macrocode} +\newcommand*{\@jmlr@reflistsep}{, } +\newcommand*{\@jmlr@reflistlastsep}{ and } +\newcommand*{\sectionrefname}{Section} +\newcommand*{\sectionsrefname}{Sections} +\newcommand*{\equationrefname}{Equation} +\newcommand*{\equationsrefname}{Equations} +\newcommand*{\tablerefname}{Table} +\newcommand*{\tablesrefname}{Tables} +\newcommand*{\figurerefname}{Figure} +\newcommand*{\figuresrefname}{Figures} +\newcommand*{\algorithmrefname}{Algorithm} +\newcommand*{\algorithmsrefname}{Algorithms} +\newcommand*{\theoremrefname}{Theorem} +\newcommand*{\theoremsrefname}{Theorems} +\newcommand*{\lemmarefname}{Lemma} +\newcommand*{\lemmasrefname}{Lemmas} +\newcommand*{\remarkrefname}{Remark} +\newcommand*{\remarksrefname}{Remarks} +\newcommand*{\corollaryrefname}{Corollary} +\newcommand*{\corollarysrefname}{Corollaries} +\newcommand*{\definitionrefname}{Definition} +\newcommand*{\definitionsrefname}{Definitions} +\newcommand*{\conjecturerefname}{Conjecture} +\newcommand*{\conjecturesrefname}{Conjectures} +\newcommand*{\axiomrefname}{Axiom} +\newcommand*{\axiomsrefname}{Axioms} +\newcommand*{\examplerefname}{Example} +\newcommand*{\examplesrefname}{Examples} +\newcommand*{\appendixrefname}{Appendix} +\newcommand*{\appendixsrefname}{Appendices} +\newcommand*{\partrefname}{Part} +\newcommand*{\partsrefname}{Parts} +% \end{macrocode} +%\begin{macro}{\objectref} +% Cross-reference a particular structural element. The first +% argument is the list of labels, the second argument is a +% control sequence containing the singular tag, the third +% argument a control sequence containing the plural tag, +% the fourth argument is text to go before the reference number, +% e.g.\ an opening bracket, and the fifth argument is text +% to go after the reference number, e.g.\ a closing bracket. +% \begin{macrocode} +\newcommand*{\objectref}[5]{% + \let\@objectname\@empty + \def\@objectref{}% + \let\@prevsep\@empty + \@for\@thislabel:=#1\do{% + \toks@{\@prevsep}% + \protected@edef\@objectref{\@objectref\the\toks@ + #4\ref{\@thislabel}#5}% + \ifx\@objectname\@empty + \let\@objectname#2% singular tag + \else + \let\@objectname#3% plural tag + \let\@prevsep\@jmlr@reflistsep + \fi + }% + \ifx\@objectname#3% plural tag + \let\@prevsep\@jmlr@reflistlastsep + \fi + \@objectname~\@objectref +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\sectionref} +% \begin{macrocode} +\newcommand*{\sectionref}[1]{% + \objectref{#1}{\sectionrefname}{\sectionsrefname}{}{}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\equationref} +% \begin{macrocode} +\newcommand*{\equationref}[1]{% + \objectref{#1}{\equationrefname}{\equationsrefname}()} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\tableref} +% \begin{macrocode} +\newcommand*{\tableref}[1]{% + \objectref{#1}{\tablerefname}{\tablesrefname}{}{}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\figureref} +% \begin{macrocode} +\newcommand*{\figureref}[1]{% + \objectref{#1}{\figurerefname}{\figuresrefname}{}{}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\algorithmref} +% \begin{macrocode} +\newcommand*{\algorithmref}[1]{% + \objectref{#1}{\algorithmrefname}{\algorithmsrefname}{}{}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\theoremmref} +% \begin{macrocode} +\newcommand*{\theoremref}[1]{% + \objectref{#1}{\theoremrefname}{\theoremsrefname}{}{}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\lemmaref} +% \begin{macrocode} +\newcommand*{\lemmaref}[1]{% + \objectref{#1}{\lemmarefname}{\lemmasrefname}{}{}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\remarkref} +% \begin{macrocode} +\newcommand*{\remarkref}[1]{% + \objectref{#1}{\remarkrefname}{\remarksrefname}{}{}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\corollaryref} +% \begin{macrocode} +\newcommand*{\corollaryref}[1]{% + \objectref{#1}{\corollaryrefname}{\corollarysrefname}{}{}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\definitionref} +% \begin{macrocode} +\newcommand*{\definitionref}[1]{% + \objectref{#1}{\definitionrefname}{\definitionsrefname}{}{}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\conjectureref} +% \begin{macrocode} +\newcommand*{\conjectureref}[1]{% + \objectref{#1}{\conjecturerefname}{\conjecturesrefname}{}{}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\axiomref} +% \begin{macrocode} +\newcommand*{\axiomref}[1]{% + \objectref{#1}{\axiomrefname}{\axiomsrefname}{}{}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\exampleref} +% \begin{macrocode} +\newcommand*{\exampleref}[1]{% + \objectref{#1}{\examplerefname}{\examplesrefname}{}{}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\appendixref} +% \begin{macrocode} +\newcommand*{\appendixref}[1]{% + \objectref{#1}{\appendixrefname}{\appendixsrefname}{}{}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\partref} +% \begin{macrocode} +\newcommand*{\partref}[1]{% + \objectref{#1}{\partrefname}{\partsrefname}{}{}} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\floatconts} +% The first argument is the label, the second argument contains the +% caption (using \cs{caption}) and the third argument is the +% contents of the float +% \begin{macrocode} +\newcommand{\floatconts}[3]{% + \@ifundefined{\@captype conts}{\tableconts{#1}{#2}{#3}}% + {\csname\@captype conts\endcsname{#1}{#2}{#3}}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\tableconts} +% \begin{macrocode} +\newcommand{\tableconts}[3]{% + \iftablecaptiontop + #2\label{#1}\vskip\baselineskip + {\centering #3\par}% + \else + {\centering #3\par}% + \vskip\baselineskip + #2\label{#1}% + \fi +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\figureconts} +% \begin{macrocode} +\newcommand{\figureconts}[3]{% + {\centering #3\par}% + \vskip\baselineskip + #2\label{#1}% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\includeteximage} +% Provide a command like \cs{includegraphics} that includes a +% file containing \LaTeX\ picture code (e.g.\ \sty{pgf}). +% \begin{macrocode} +\newcommand*{\includeteximage}[2][]{% + \def\Gin@req@sizes{% + \Gin@req@height\Gin@nat@height + \Gin@req@width\Gin@nat@width}% + \begingroup + \@tempswafalse + \let\input@path\Ginput@path + \toks@{\InputIfFileExists{#2}{}{\@warning{File `#1' not found}}}% + \setkeys{Gin}{#1}% + \Gin@esetsize + \the\toks@ + \endgroup +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\ifprint} +% Provide command to check if this is the printed greyscale +% version or the online colour version. +% \begin{macrocode} +\providecommand{\ifprint}[2]{\ifgrayscale#1\else#2\fi} +% \end{macrocode} +%\end{macro} +% +% Modify \cs{includegraphics} so that it can pick up the greyscale +% version of images if this is the print version. +%% \begin{macrocode} +\ifjmlrhtml +\else + \let\@org@Ginclude@graphics\Ginclude@graphics + \def\Ginclude@graphics#1{% + \begingroup + \let\input@path\Ginput@path + \ifprint{\filename@parse{#1-gray}}{\filename@parse{#1}}% + \ifx\filename@ext\relax + \@for\Gin@temp:=\Gin@extensions\do{% + \ifx\Gin@ext\relax + \Gin@getbase\Gin@temp + \fi}% + \else + \ifprint{\filename@parse{#1}}{}% + \Gin@getbase{\Gin@sepdefault\filename@ext}% + \ifx\Gin@ext\relax + \@warning{File `#1' not found}% + \def\Gin@base{\filename@area\filename@base}% + \edef\Gin@ext{\Gin@sepdefault\filename@ext}% + \fi + \fi + \ifx\Gin@ext\relax + \ifprint{\@org@Ginclude@graphics{#1}}% + {% + \@latex@error{File `#1' not found}% + {I could not locate the file with any of these extensions:^^J% + \Gin@extensions^^J\@ehc}% + }% + \else + \@ifundefined{Gin@rule@\Gin@ext}% + {\ifx\Gin@rule@*\@undefined + \@latex@error{Unknown graphics extension: \Gin@ext}\@ehc + \else + \expandafter\Gin@setfile\Gin@rule@*{\Gin@base\Gin@ext}% + \fi}% + {\expandafter\expandafter\expandafter\Gin@setfile + \csname Gin@rule@\Gin@ext\endcsname{\Gin@base\Gin@ext}}% + \fi + \endgroup} +\fi +% \end{macrocode} +% +% The \env{algorithm} environment should float like a figure or table. +% It should use the same counter as the \env{algorithm2e} environment. +% \begin{macrocode} +\newenvironment{algorithm}[1][htbp]% +{% + \@algocf@init% + \@algocf@init@caption + \begin{algocf}[#1]% + \@algocf@start% +}% +{% + \@algocf@finish% + \@algocf@term@caption + \end{algocf}% + \@algocf@term +} +% \end{macrocode} +% +% Set the algorithm margin to zero. +% \begin{macrocode} +\setlength\algomargin{0pt} +% \end{macrocode} +% +%\begin{macro}{\artappendix} +% Switch to appendices in an article +% \begin{macrocode} +\newcommand{\artappendix}{\par + \setcounter{section}{0} + \setcounter{subsection}{0} + \def\thesection{\Alph{section}} + \def\presectionnum{Appendix~}% +} +% \end{macrocode} +%\end{macro} +% The default assumes a stand-alone article. +%\begin{macro}{\appendix} +% \begin{macrocode} +\let\appendix\artappendix +% \end{macrocode} +%\end{macro} +% +%\subsection{Proofs and Theorems} +% This code is taken from jmlr2e.sty +%\begin{macro}{\BlackBox} +% End of proof marker +% \begin{macrocode} +\newcommand{\BlackBox}{\rule{1.5ex}{1.5ex}} +% \end{macrocode} +%\end{macro} +%\begin{environment}{proof} +% Proof environment +% \begin{macrocode} +\newenvironment{proof}{\par\noindent{\bfseries\upshape + Proof\ }}{\hfill\BlackBox\\[2mm]} +% \end{macrocode} +%\end{environment} +%\begin{environment}{example} +% \begin{macrocode} +\newtheorem{example}{Example} +% \end{macrocode} +%\end{environment} +%\begin{environment}{theorem} +% \begin{macrocode} +\newtheorem{theorem}{Theorem} +% \end{macrocode} +%\end{environment} +%\begin{environment}{lemma} +% \begin{macrocode} +\newtheorem{lemma}[theorem]{Lemma} +% \end{macrocode} +%\end{environment} +%\begin{environment}{proposition} +% \begin{macrocode} +\newtheorem{proposition}[theorem]{Proposition} +% \end{macrocode} +%\end{environment} +%\begin{environment}{remark} +% \begin{macrocode} +\newtheorem{remark}[theorem]{Remark} +% \end{macrocode} +%\end{environment} +%\begin{environment}{corollary} +% \begin{macrocode} +\newtheorem{corollary}[theorem]{Corollary} +% \end{macrocode} +%\end{environment} +%\begin{environment}{definition} +% \begin{macrocode} +\newtheorem{definition}[theorem]{Definition} +% \end{macrocode} +%\end{environment} +%\begin{environment}{conjecture} +% \begin{macrocode} +\newtheorem{conjecture}[theorem]{Conjecture} +% \end{macrocode} +%\end{environment} +%\begin{environment}{axiom} +% \begin{macrocode} +\newtheorem{axiom}[theorem]{Axiom} +% \end{macrocode} +%\end{environment} +% +%\begin{macro}{\vec} +% Redefine \cs{vec} to produce a bold symbol +% \begin{macrocode} +\renewcommand*{\vec}[1]{\boldsymbol{#1}} +% \end{macrocode} +%\end{macro} +% +%\begin{environment}{enumerate*} +% Define an enumerate style environment where the nested environments +% all use the same counter. It uses the enumi counter. +% \begin{macrocode} +\newenvironment{enumerate*}% +{% + \ifnum\@enumdepth=0\relax + \setcounter{enumi}{0}% + \fi + \ifnum\@enumdepth>\thr@@ + \@toodeep + \else + \advance\@enumdepth\@ne + \def\@enumctr{enumi}% + \list + {\labelenumi}% + {\@nmbrlisttrue\def\@listctr{enumi}% + \def\makelabel##1{\hss\llap{##1}}}% + \fi +}% +{\endlist} +% \end{macrocode} +%\end{environment} +% +%\begin{environment}{altdescription} +% Define a description like environment where the indent is +% computed from the widest label. The optional argument is +% the widest label. +% \begin{macrocode} +\newenvironment{altdescription}[1]% + {\list{}% + {% + \settowidth{\labelwidth}{\altdescriptionlabel{#1}}% + \setlength{\labelsep}{15pt}% + \setlength{\leftmargin}{2\labelsep}% + \addtolength{\leftmargin}{\labelwidth}% + \setlength{\rightmargin}{\labelsep}% + \let\makelabel\altdescriptionlabel + }% + }% + {\endlist} + +\newcommand*{\altdescriptionlabel}[1]{\normalfont\bfseries #1\hfill} +% \end{macrocode} +%\end{environment} +% +%\begin{macro}{\mailto} +% Syntax: \cs{mailto}\marg{address} +% \begin{macrocode} +\newcommand*{\mailto}[1]{\texttt{#1}} +% \end{macrocode} +%\end{macro} +% +% The \sty{subfig} package breaks jmlrbook.cls, so define \ics{subfig} +% here. (This is fairly primitive.) +%\begin{macro}{\c@subfigure} +% Define subfigure counter: +% \begin{macrocode} +\newcounter{subfigure} +\@addtoreset{subfigure}{figure} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\thesubfigure} +% \begin{macrocode} +\renewcommand*{\thesubfigure}{\alph{subfigure}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\p@subfigure} +% \begin{macrocode} +\renewcommand*{\p@subfigure}{\expandafter\@p@subfigure} +\newcommand*{\@p@subfigure}[1]{% + \protect\@subfigurelabel{\thefigure}{\thesubfigure}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@subfigurelabel} +% Define how label appears. +% \begin{macrocode} +\newcommand*\@subfigurelabel[2]{#1\subfigurelabel{#2}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\subfigref} +% Reference the sub-figure without including the figure number. +% \begin{macrocode} +\newcommand*\@subfigref[1]{% + {% + \def\@subfigurelabel##1##2{\subfigurelabel{##2}}% + \ref{#1}% + }% +} +\newcommand*{\subfigref}[1]{% + \let\@objectname\@empty + \def\@objectref{}% + \let\@prevsep\@empty + \@for\@thislabel:=#1\do{% + \toks@{\@prevsep}% + \protected@edef\@objectref{\@objectref\the\toks@ + \protect\@subfigref{\@thislabel}}% + \ifx\@objectname\@empty + \let\@objectname\@nil + \else + \let\@objectname\relax + \let\@prevsep\@jmlr@reflistsep + \fi + }% + \ifx\@objectname\relax + \let\@prevsep\@jmlr@reflistlastsep + \fi + \@objectref +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\subfigurelabel} +% \begin{macrocode} +\newcommand*{\subfigurelabel}[1]{(\emph{#1})} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\subfigure} +% \begin{macrocode} +\newcommand*{\subfigure}[1][]{% + \bgroup + \def\@subfigcap{#1}% + \@subfigure +} + +\newcommand*{\@subfigure}[2][b]{% + \advance\c@figure by 1\relax + \refstepcounter{subfigure}% + \begin{tabular}[#1]{@{}c@{}}% + #2\\ + \subfigurelabel{\thesubfigure}% + \ifx\@subfigcap\@empty + \else + \space\@subfigcap + \fi + \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 +} + +\newcommand*{\@subtable}[2][t]{% + \refstepcounter{subtable}% + \begin{tabular}[#1]{@{}c@{}}% + \subtablelabel{\thesubtable}% + \ifx\@subtabcap\@empty + \else + \space\@subtabcap + \fi + \\#2% + \end{tabular} +} +% \end{macrocode} +%\end{macro} +% +%\subsection{Compatibility with combine.cls} +% +% Define chapters to make this class play nicely with \cls{combine}. +% These definitions are just copied from book.cls +% \begin{macrocode} +\newcounter{chapter} +\renewcommand\thechapter{\@arabic\c@chapter} +\newcommand\@chapapp{\chaptername} +% \end{macrocode} +% Add sections to the chapter reset. +% \begin{macrocode} +\@addtoreset{section}{chapter} +% \end{macrocode} +%\begin{macro}{\chaptermark} +% \begin{macrocode} +\newcommand*\chaptermark[1]{} +% \end{macrocode} +%\end{macro} +% Chapters should only be defined when we're combining documents +% into a book. +%\begin{macro}{\bookchapter} +% \begin{macrocode} +\newcommand\bookchapter{% + \if@openright\cleardoublepage\else\clearpage\fi + \thispagestyle{plain}% + \global\@topnum\z@ + \@afterindentfalse + \secdef\@chapter\@schapter} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\artchapter} +% Disable chapters for articles. +% \begin{macrocode} +\newcommand\artchapter{% + \ClassError{jmlrwcp}{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 + \if@mainmatter + \refstepcounter{chapter}% + \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 + \pagenumbering{roman}% + \morefrontmatter +} +\newcommand\morefrontmatter{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\mainmatter} +% Start the main matter (in book) +% \begin{macrocode} +\newcommand\mainmatter{% + \cleardoublepage + \@mainmattertrue + \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}{\booktableofcontents} +% This is for the main table of contents when using +% the combine class file, and is not for use in individual +% articles. +% \begin{macrocode} +\let\booktableofcontents\tableofcontents +% \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}{% + \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{% + \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} +%\begin{macro}{\partnumberformat} +% Format of the part number (in a book) +% \begin{macrocode} +\newcommand{\partnumberformat}[1]{% + \Huge\bfseries \partname\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} +\renewcommand*{\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}{part}{\protect\numberline{\thepart}#1}% + \else + \addcontentsline{toc}{part}{#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 +% \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}% + \csname appendixmore\endcsname +} +% \end{macrocode} +%\end{macro} +% Define commands to switch between book/article modes +%\begin{macro}{\jmlrbookcommands} +% Switch to book commands +% \begin{macrocode} +\newcommand*{\jmlrbookcommands}{% + \let\part\bookpart + \let\chapter\bookchapter + \let\appendix\bookappendix + \let\tableofcontents\booktableofcontents + \def\thesection{\thechapter.\arabic{section}}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\jmlarticlecommands} +% Switch to article commands +% \begin{macrocode} +\newcommand*{\jmlrarticlecommands}{% + \let\part\artpart + \let\chapter\artchapter + \let\appendix\artappendix + \let\tableofcontents\arttableofcontents + \def\thesection{\arabic{section}}% +} +% \end{macrocode} +%\end{macro} +% Check for packages that are known to cause problems when +% combining articles into a book. +%\begin{macro}{\@jmlr@check@packages} +% \begin{macrocode} +\newcommand*{\@jmlr@check@packages}{% + \@ifpackageloaded{epsfig}{% + \ClassError{jmlr}{Obsolete package `epsfig' detected. + \MessageBreak + Please use \string\includegraphics\space to include images + instead}{}}{}% + \@ifpackageloaded{psfig}{% + \ClassError{jmlr}{Obsolete package `psfig' detected. + \MessageBreak + Please use \string\includegraphics\space to include images + instead}{}}{}% + \@ifpackageloaded{subfig}{% + \ClassError{jmlr}{Package `subfig' detected.\MessageBreak + This will cause a conflict if the article is incorporated + \MessageBreak + into a book using jmlbook.cls. + \MessageBreak + Please use \string\subfigure\space and + \string\subtable\space instead}{}}{}% + \@ifpackageloaded{theorem}{% + \ClassError{jmlr}{Package `theorem' detected.\MessageBreak + This can cause a conflict with other packages used by jmlr}{}}{}% + \@ifpackageloaded{pdfpages}{Package `pdfpages' detected.\MessageBreak + This can cause a problem for jmlrbook.}{}% + \@ifpackageloaded{geometry}{Package `geometry' detected.\MessageBreak + This can cause a problem for jmlrbook.}{}% +} +\AtBeginDocument{% +\@jmlr@check@packages +\let\@jmlr@check@packages\relax +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\jmlrSuppressPackageChecks} +% Don't check for potentially problematic packages. +% \begin{macrocode} +\newcommand*{\jmlrSuppressPackageChecks}{% + \let\@jmlr@check@packages\relax +} +% \end{macrocode} +%\end{macro} +%\iffalse +% \begin{macrocode} +% +% \end{macrocode} +%\fi +%\iffalse +% \begin{macrocode} +%<*jmlrbook.cls> +% \end{macrocode} +%\fi +%\section{jmlrbook.cls Code} +% Class file for books composed of articles using the \clsfmt{jmlr} class. +% \begin{macrocode} +\NeedsTeXFormat{LaTeX2e} +% \end{macrocode} +% Declare class: +% \begin{macrocode} +\ProvidesClass{jmlrbook}[2010/06/17 v1.06 (NLCT) JMLR Book Style] +% \end{macrocode} +% Need \sty{xkeyval} package to have key=value class options +% \begin{macrocode} +\RequirePackage{xkeyval} +% \end{macrocode} +% Some packages need to be loaded before \sty{hyperref} so provide a +% hook to do this: +% \begin{macrocode} +\newcommand*{\@prehyperref}{} +% \end{macrocode} +% Option to add stuff before \sty{hyperref} is loaded: +% \begin{macrocode} +\define@key{jmlrbook.cls}{prehyperref}{% + \renewcommand*{\@prehyperref}{#1}} +% \end{macrocode} +% Determine whether to select color or grayscale +% \begin{macrocode} +\newif\ifgrayscale +\grayscalefalse +\DeclareOptionX{color}{\grayscalefalse} +\DeclareOptionX{gray}{\grayscaletrue} +% \end{macrocode} +% Pass \clsopt{html} and \clsopt{nohtml} to \clsfmt{jmlr}. +% \begin{macrocode} +\DeclareOptionX{html}{\PassOptionsToClass{\CurrentOption}{jmlr}} +\DeclareOptionX{nohtml}{\PassOptionsToClass{\CurrentOption}{jmlr}} +% \end{macrocode} +% Pass \clsopt{wcp} and \clsopt{nowcp} options to \clsfmt{jmlr}. +% \begin{macrocode} +\DeclareOptionX{wcp}{\PassOptionsToClass{\CurrentOption}{jmlr}} +\DeclareOptionX{nowcp}{\PassOptionsToClass{\CurrentOption}{jmlr}} +% \end{macrocode} +% Pass \clsopt{tablecaptiontop} and \clsopt{tablecaptionbottom} options +% to \clsfmt{jmlr}. +% \begin{macrocode} +\DeclareOptionX{tablecaptiontop}{\PassOptionsToClass{\CurrentOption}{jmlr}} +\DeclareOptionX{tablecaptionbottom}{\PassOptionsToClass{\CurrentOption}{jmlr}} +% \end{macrocode} +% 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} +% 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} +% \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} +% Requires double spacing for the title page +% \begin{macrocode} +\RequirePackage{setspace} +% \end{macrocode} +% Do all the stuff that needs to be done before \sty{hyperref} is +% loaded: +% \begin{macrocode} +\@prehyperref +% \end{macrocode} +% Load \sty{hyperref}: +% \begin{macrocode} +\usepackage[colorlinks, + linkcolor=blue, + citecolor=blue, + urlcolor=magenta, + linktocpage, + plainpages=false]{hyperref} +\usepackage{nameref} +% \end{macrocode} +% If this is the print version, need to disable the hyperlinks +% \begin{macrocode} +\ifgrayscale + \hypersetup{draft} +\fi +% \end{macrocode} +% Switch on two-side mode +% \begin{macrocode} +\@twosidetrue +% \end{macrocode} +% Start new chapters on the right hand page: +% \begin{macrocode} +\newif\if@openright +\@openrighttrue +\newif\if@mainmatter +% \end{macrocode} +% Define commands that affect the formatting: +%\begin{macro}{\pagerule} +% Draw line across the text block. +% \begin{macrocode} +\newcommand*{\pagerule}[1][0pt]{\par\noindent + \rule[#1]{\linewidth}{2pt}\par} +% \end{macrocode} +%\end{macro} +% 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} +% +% Part labels +% \begin{macrocode} +\newcommand*{\@parttoclabel}{part} +\newcommand*{\@partapp}{\partname} +% \end{macrocode} +% +% Extra title information +% \begin{macrocode} +\renewcommand*\jmlrtitlehook{% + \hypersetup{pdftitle={\@shorttitle}}% + \let\jmlrtitlehook\relax +} +\renewcommand*\jmlrauthorhook{% + \ifx\@sauthor\@empty + \hypersetup{pdfauthor={\@author}}% + \else + \hypersetup{pdfauthor={\@sauthor}}% + \fi + \let\jmlrauthorhook\relax + \let\@shortauthor\@empty +} +% \end{macrocode} +%\begin{macro}{\volume} +% \begin{macrocode} +\newcommand*{\@volume}{\@jmlrvolume} +\newcommand*{\volume}[1]{\renewcommand*{\@volume}{#1}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\issue} +% \begin{macrocode} +\newcommand*{\@issue}{\@jmlrissue} +\newcommand*{\issue}[1]{\renewcommand*{\@issue}{#1}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\thejmlrworkshop} +% Provided in the event that it's required for the title page. +% \begin{macrocode} +\newcommand*{\thejmlrworkshop}{\@jmlrworkshop} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\team} +% \begin{macrocode} +\newcommand*{\@team}{} +\newcommand*{\team}[1]{\renewcommand*{\@team}{#1}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\@productioneditorname} +% \begin{macrocode} +\newcommand*{\@productioneditorname}{Production Editor} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\productioneditor} +% \begin{macrocode} +\newcommand*{\@productioneditor}{} +\newcommand*{\productioneditor}[1]{% + \renewcommand*{\@productioneditor}{#1}% + \renewcommand*{\@productioneditorname}{Production Editor}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\productioneditors} +% \begin{macrocode} +\newcommand*{\productioneditors}[1]{% + \renewcommand*{\@productioneditor}{#1}% + \renewcommand*{\@productioneditorname}{Production Editors}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\logo} +% Title page image +% \begin{macrocode} +\newcommand*{\@logo}{} +\newcommand*{\logo}[1]{\renewcommand*{\@logo}{#1}} +% \end{macrocode} +%\end{macro} +% +% Set article title +% \begin{macrocode} +\def\c@lbmaketitle{\jmlrmaketitle} +% \end{macrocode} +% The book's title: +%\begin{macro}{\maintitle} +% \begin{macrocode} +\newcommand*{\maintitle}{} +% \end{macrocode} +%\end{macro} +% +% Make it easier to modify the book's title page: +%\begin{macro}{\SetTitleElement} +% \begin{macrocode} +\newcommand*{\SetTitleElement}[3]{% + {% + \expandafter\ifx\csname @#1\endcsname\@empty + \else + #2\csname @#1\endcsname#3% + \fi + }% +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\IfTitleElement} +% Determine if the given element has been set: +% \begin{macrocode} +\newcommand{\IfTitleElement}[3]{% + \expandafter\ifx\csname @#1\endcsname\@empty + #2% + \else + #3% + \fi +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\titlebody} +% \begin{macrocode} +\newcommand{\titlebody}{% + \SetTitleElement{title}{\maintitlefont}{\postmaintitle}% + \SetTitleElement{volume}{\mainvolumefont}{\postmainvolume}% + \SetTitleElement{subtitle}{\mainsubtitlefont}{\postmainsubtitle}% + \SetTitleElement{logo}{\mainlogofont}{\postmainlogo}% + \SetTitleElement{team}{\mainteamfont}{\postmainteam}% + \SetTitleElement{author}{\mainauthorfont}{\postmainauthor}% + \SetTitleElement{productioneditor}{\mainproductioneditorfont}% + {\postmainproductioneditor}% +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\c@lamaketitle} +% \begin{macrocode} +\ifjmlrhtml + \renewcommand{\c@lamaketitle}{% + \HCode{}% + \HCode{
}% + \HCode{

}% + \@title\newline + \ifx\@volume\@empty + \else + Volume \@volume + \ifx\@subtitle\@empty\else: \fi + \fi + \@subtitle + \HCode{

}% + \newline + \textbf{Editors: \@author} + \HCode{
}% + \@logo + \HCode{
}% + \let\maintitle\@title + } +\else + \renewcommand{\c@lamaketitle}{% + \pagenumbering{alph}% + \pagestyle{empty}% + \begin{titlepage}% + \let\footnotesize\small + \let\footnoterule\relax + \let\footnote\thanks + \titlebody + \par + \@thanks + \end{titlepage}% + \setcounter{footnote}{0}% + \let\maintitle\@title + \c@lmtitlempty + } +\fi +% \end{macrocode} +%\end{macro} +%\begin{macro}{\maintitlefont} +% \begin{macrocode} +\renewcommand{\maintitlefont}{% + \null\vskip15pt\relax\par + \flushleft\Huge\bfseries\noindent} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\postmaintitle} +% \begin{macrocode} +\renewcommand{\postmaintitle}{% + \par\relax +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\mainvolumefont} +% \begin{macrocode} +\newcommand{\mainvolumefont}{% + \flushleft\noindent\LARGE\bfseries Volume +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\postmainvolume} +% \begin{macrocode} +\newcommand{\postmainvolume}{% + \IfTitleElement{subtitle}{}{:}\par\relax +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mainissuefont} +% \begin{macrocode} +\newcommand{\mainissuefont}{% + \flushleft\noindent\LARGE\bfseries Issue +} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\postmainissue} +% \begin{macrocode} +\newcommand{\postmainissue}{% + \par\relax +} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mainsubtitlefont} +% \begin{macrocode} +\newcommand{\mainsubtitlefont}{% + \flushleft\LARGE\bfseries\noindent} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\postmainsubtitle} +% \begin{macrocode} +\newcommand{\postmainsubtitle}{\par} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mainlogofont} +% \begin{macrocode} +\newcommand{\mainlogofont}{% + \vfill + \begin{center}} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\postmainlogo} +% \begin{macrocode} +\newcommand{\postmainlogo}{\end{center}\vfill\par} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mainteamfont} +% \begin{macrocode} +\newcommand{\mainteamfont}{\flushleft\bfseries\Large\noindent} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\postmainteam} +% \begin{macrocode} +\newcommand{\postmainteam}{\par} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\mainauthorfont} +% \begin{macrocode} +\renewcommand{\mainauthorfont}{% + \flushleft\Large\itshape\doublespacing\noindent} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\postmainauthor} +% \begin{macrocode} +\renewcommand{\postmainauthor}{% +\par} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\mainproductioneditorfont} +% \begin{macrocode} +\newcommand{\mainproductioneditorfont}{% + \flushleft\Large\noindent \@productioneditorname: \itshape} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\postmainproductioneditor} +% \begin{macrocode} +\newcommand{\postmainproductioneditor}{\par} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\maindatefont} +% \begin{macrocode} +\renewcommand{\maindatefont}{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\postmaindate} +% \begin{macrocode} +\renewcommand{\postmaindate}{} +% \end{macrocode} +%\end{macro} +% +%\begin{environment}{signoff} +% Editorial team listed at the end of a preface etc. The mandatory +% argument is the date, the optional argument is the team title. +% Each editor should be separated with \ics{Editor}. +% \begin{macrocode} +\newenvironment{signoff}[2][The Editorial Team]{% + \def\Editor##1{\begin{tabular}{@{}l@{}}% + ##1% + \end{tabular}% + \par\vskip\baselineskip\noindent\ignorespaces + }% + \def\@editorialteam{#1}% + \def\@signoffdate{#2}% + \par\vskip\baselineskip\noindent + \ifx\@signoffdate\@empty + \else + \emph{\@signoffdate}\par + \vskip\baselineskip\noindent + \fi + \ifx\@editorialteam\@empty + \else + \@editorialteam:\par\vskip\baselineskip + \fi + \noindent\ignorespaces +}{% +} +% \end{macrocode} +%\end{environment} +%\begin{environment}{authorsignoff} +% An author can sign off at the end of a chapter (such as a +% foreword). +% Each author should be separated with \ics{Author}. +% \begin{macrocode} +\newenvironment{authorsignoff}{% + \def\Author##1{\begin{tabular}{@{}l@{}}% + ##1% + \end{tabular}% + \par\vskip\baselineskip\noindent\ignorespaces + }% + \par\vskip\baselineskip\noindent\ignorespaces +}{% +} +% \end{macrocode} +%\end{environment} +% +%\begin{macro}{\seroextracounters} +% Reset counters at the start of each imported article +% \begin{macrocode} +\renewcommand{\zeroextracounters}{% + \@ifundefined{c@theorem}{}{\setcounter{theorem}{0}}% + \@ifundefined{c@algorithm}{}{\setcounter{algorithm}{0}}% + \@ifundefined{c@example}{}{\setcounter{example}{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} +% \begin{macrocode} +\def\theHalgorithm{\thechapter.\thealgorithm} +% \end{macrocode} +%\end{macro} +\def\theHexample{\thechapter.\theexample} +\def\theHtheorem{\thechapter.\thetheorem} +%\begin{macro}{\theHsection} +% \begin{macrocode} +\def\theHsection{\thechapter.\thesection} +\def\theHsubsection{\thechapter.\thesubsection} +\def\theHsubsubsection{\thechapter.\thesubsubsection} +\def\theHparagraph{\thechapter.\theparagraph} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\theHsubfigure} +% \begin{macrocode} +\def\theHsubfigure{\thechapter.\thefigure.\thesubfigure} +\def\theHsubtable{\thechapter.\thetable.\thesubtable} +% \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}} +% \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{% + \@setimportlabel + \gdef\@setimportlabel{\let\ref\Xref \let\pageref\Xpageref}% + \let\ReadBookmarks\relax +} +% \end{macrocode} +% Imported papers modify \ics{InputIfFileExists} so save original +% definition. +% \begin{macrocode} +\let\@org@InputIfFileExists\InputIfFileExists +% \end{macrocode} +% +%\begin{environment}{jmlrpapers} +% \begin{macrocode} +\newenvironment{jmlrpapers}{% + \begin{papers}[] + \jmlrarticlecommands + \let\importpubpaper\@importpubpaper + \let\importpaper\@importpaper + \let\importarticle\@importarticle + \let\label\Xlabel + \let\ref\Xref + \pagestyle{article}% +}{% + \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}{\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{% + \refstepcounter{chapter}% + \addtomaincontents{toc}% + {\protect\contentsline{papertitle}{\@shorttitle}{\thepage}% + {page.\thepage}}% + \pdfbookmark{\@shorttitle}{chapter.\thechapter}% + \def\@jmlr@authors@sep{ \& }% + \tocchapterpubauthor{\@jmlrauthors}% + {% + \@jmlrabbrvproceedings + \ifx\@jmlrvolume\@empty + \ifx\@jmlrpages\@empty\else\space\fi + \else + \space\@jmlrvolume + \ifx\@jmlrpages\@empty\else:\fi + \fi + \ifx\@jmlrpages\@empty + \else + \@jmlrpages + \ifx\@jmlryear\@empty\else,\fi + \fi + \space\@jmlryear + }% + \@write@author{#1}{\@jmlrauthors}% + }% + \def\jmlrpremaketitlehook{% + \cleardoublepage + \phantomsection + \let\@currentlabelname\@shorttitle + }% + \def\InputIfFileExists##1##2##3{% + \IfFileExists{##1}{% + \@org@InputIfFileExists{##1}{##2}{##3}% + }% + {% + \@org@InputIfFileExists{\@importdir##1}{##2}{##3}% + }% + }% + \def\Xprefix{#1}% + \import{\@importdir\@importfile}% + \def\Xprefix{}% + \egroup + \gdef\@shortauthor{}% + \gdef\@shorttitle{}% + \gdef\@firstauthor{}% + \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{% + \refstepcounter{chapter}% + \addtomaincontents{toc}% + {\protect\contentsline{papertitle}{\@shorttitle}{\thepage}% + {page.\thepage}}% + \pdfbookmark{\@shorttitle}{chapter.\thechapter}% + \def\@jmlr@authors@sep{ \& }% + \tocchapterpubauthor{\@jmlrauthors}% + {% + \@jmlrabbrvproceedings + \ifx\@jmlrvolume\@empty + \space + \else + \space\@jmlrvolume:% + \fi + \protect\articlepagesref{#1}% + \ifx\@jmlryear\@empty\else,\fi + \space\@jmlryear + }% + \@write@author{#1}{\@jmlrauthors}% + }% + \def\jmlrpremaketitlehook{% + \cleardoublepage + \phantomsection + \let\@currentlabelname\@shorttitle + }% + \def\InputIfFileExists##1##2##3{% + \IfFileExists{##1}{% + \@org@InputIfFileExists{##1}{##2}{##3}% + }% + {% + \@org@InputIfFileExists{\@importdir##1}{##2}{##3}% + }% + }% + \def\Xprefix{#1}% + \import{\@importdir\@importfile}% + \def\Xprefix{}% + \egroup + \gdef\@shortauthor{}% + \gdef\@shorttitle{}% + \gdef\@firstauthor{}% + \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{% + \addtomaincontents{toc}% + {\protect\contentsline{papertitle}{\@shorttitle}{\thepage}% + {page.\thepage}}% + \refstepcounter{chapter}% + \pdfbookmark{\@shorttitle}{chapter.\thechapter}% + \def\@jmlr@authors@sep{ \& }% + \tocchapterauthor{\@jmlrauthors}% + \@write@author{#1}{\@jmlrauthors}% + \jmlrpages{}% + \jmlrvolume{}% + \jmlryear{}% + \jmlrsubmitted{}% + \jmlrpublished{}% + \jmlrproceedings{}{}% + }% + \def\jmlrpremaketitlehook{% + \cleardoublepage + \phantomsection + \let\@currentlabelname\@shorttitle + }% + \graphicspath{{\@importdir}}% + \def\InputIfFileExists##1##2##3{% + \IfFileExists{##1}{% + \@org@InputIfFileExists{##1}{##2}{##3}% + }% + {% + \@org@InputIfFileExists{\@importdir##1}{##2}{##3}% + }% + }% + \def\Xprefix{#1}% + \import{\@importdir\@importfile}% + \def\Xprefix{}% + \egroup + \gdef\@shortauthor{}% + \gdef\@shorttitle{}% + \gdef\@firstauthor{}% + \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}% + \vbox{% + \pagerule + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + \leavevmode \large\bfseries + \advance\leftskip\@tempdima + \hskip -\leftskip + \renewcommand*\numberline[1]{\hb@xt@ \@tempdima + {\partname\space ##1\hfil }}% + #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss }\par + \penalty\@highpenalty + \endgroup + \pagerule + }% + \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 + \addpenalty{-\@highpenalty}% + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + \leavevmode \raggedright + #1% + \par + \endgroup + \fi} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\l@section} +% \begin{macrocode} +\renewcommand*\l@section[2]{% + \ifnum \c@tocdepth >\m@ne + \addpenalty{-\@highpenalty}% + \vskip 1.0em \@plus\p@ + \setlength\@tempdima{3em}% + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + \leavevmode \normalsize\mdseries + \advance\leftskip\@tempdima + \hskip -\leftskip + #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par + \penalty\@highpenalty + \endgroup + \fi} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\l@subsection} +% \begin{macrocode} +\renewcommand*\l@subsection[2]{% + \ifnum \c@tocdepth >\m@ne + \addpenalty{-\@highpenalty}% + \vskip 1.0em \@plus\p@ + \setlength\@tempdima{3.5em}% + \begingroup + \parindent \z@ \rightskip \@pnumwidth + \parfillskip -\@pnumwidth + \leavevmode \normalsize\mdseries + \advance\leftskip\@tempdima + \hskip -\leftskip + #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par + \penalty\@highpenalty + \endgroup + \fi} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\chaptermark} +% \begin{macrocode} +\renewcommand*{\chaptermark}[1]{% + \@mkboth{\@curparthead}{\protect\thechapter. #1}% +} +% \end{macrocode} +%\end{macro} +% +% Set up page styles +%\begin{macro}{\firstpagehead} +% \begin{macrocode} +\newcommand{\firstpagehead}{} +% \end{macrocode} +%\end{macro} +%\begin{macro}{\firstpagefoot} +% \begin{macrocode} +\newcommand{\firstpagefoot}{\hfill\thepage} +% \end{macrocode} +%\end{macro} +% +%\begin{macro}{\headfont} +% Set the header font +% \begin{macrocode} +\renewcommand*{\headfont}{\reset@font\small\scshape}% +% \end{macrocode} +%\end{macro} +%\begin{macro}{\footfont} +% Set the footer font +% \begin{macrocode} +\renewcommand*{\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@jmlrbook} +% Page style for book +% \begin{macrocode} +\newcommand*{\ps@jmlrbook}{% + \ps@headings + \renewcommand*{\sectionmark}[1]{}% +} +% \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} +% +%\begin{macro}{\@bookpart} +% Define the layout of a book part +% \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} +% +% Set up the book commands: +% \begin{macrocode} +\jmlrbookcommands +% \end{macrocode} +%\iffalse +% \begin{macrocode} +% +% \end{macrocode} +%\fi +%\Finale +\endinput diff --git a/Master/texmf-dist/source/latex/jmlr/jmlr.ins b/Master/texmf-dist/source/latex/jmlr/jmlr.ins new file mode 100644 index 00000000000..e8d06b7968a --- /dev/null +++ b/Master/texmf-dist/source/latex/jmlr/jmlr.ins @@ -0,0 +1,33 @@ +% jmlr.ins generated using makedtx version 0.94b 2010/6/17 20:52 +\input docstrip + +\preamble + + jmlr.dtx + Copyright 2010 Nicola Talbot + + This work may be distributed and/or modified under the + conditions of the LaTeX Project Public License, either version 1.3 + of this license of (at your option) any later version. + The latest version of this license is in + http://www.latex-project.org/lppl.txt + and version 1.3 or later is part of all distributions of LaTeX + version 2005/12/01 or later. + + This work has the LPPL maintenance status `maintained'. + + The Current Maintainer of this work is Nicola Talbot. + + This work consists of the files jmlr.dtx and jmlr.ins and the derived files jmlr.cls, jmlrbook.cls. + +\endpreamble + +\askforoverwritefalse + +\generate{\file{jmlr.cls}{\usepreamble\defaultpreamble +\usepostamble\defaultpostamble\from{jmlr.dtx}{jmlr.cls,package}} +\file{jmlrbook.cls}{\usepreamble\defaultpreamble +\usepostamble\defaultpostamble\from{jmlr.dtx}{jmlrbook.cls,package}} +} + +\endbatchfile -- cgit v1.2.3