%%
|
|
%% This is file `jmlr.cls',
|
|
%% generated with the docstrip utility.
|
|
%%
|
|
%% The original source files were:
|
|
%%
|
|
%% jmlr.dtx (with options: `jmlr.cls,package')
|
|
%%
|
|
%% jmlr.dtx
|
|
%% Copyright 2017 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 or (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 jmlrutils.sty, jmlr.cls, jmlrbook.cls.
|
|
%%
|
|
%% \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 \~}
|
|
%% First editor:
|
|
%% Second editor:
|
|
\NeedsTeXFormat{LaTeX2e}
|
|
\ProvidesClass{jmlr}[2017/08/01 v1.24 (NLCT) Journal of Machine Learning Research]
|
|
\RequirePackage{xkeyval}
|
|
\RequirePackage{calc}
|
|
\RequirePackage{etoolbox}
|
|
\providecommand*{\jmlrprehyperref}{}
|
|
\newif\if@openright
|
|
\newif\if@mainmatter \@mainmattertrue
|
|
\@ifundefined{ifgrayscale}{
|
|
\newif\ifgrayscale
|
|
\grayscalefalse
|
|
}{}
|
|
\DeclareOptionX{color}{\grayscalefalse
|
|
\PassOptionsToPackage{color}{xcolor}}
|
|
\DeclareOptionX{gray}{\grayscaletrue
|
|
\PassOptionsToPackage{gray}{xcolor}}
|
|
\DeclareOptionX{draft}{\setlength\overfullrule{5pt}}
|
|
\DeclareOptionX{final}{\setlength\overfullrule{0pt}}
|
|
\newif\iftablecaptiontop
|
|
\tablecaptiontoptrue
|
|
\newcommand{\tableconts}[3]{%
|
|
\iftablecaptiontop
|
|
#2\label{#1}\vskip\baselineskip
|
|
{\centering #3\par}%
|
|
\else
|
|
{\centering #3\par}%
|
|
\vskip\baselineskip
|
|
#2\label{#1}%
|
|
\fi
|
|
}
|
|
\DeclareOptionX{tablecaptiontop}{\tablecaptiontoptrue}
|
|
\DeclareOptionX{tablecaptionbottom}{\tablecaptiontopfalse}
|
|
\define@choicekey{jmlr.cls}{tablecaption}[\val\nr]{top,bottom}{%
|
|
\ifcase\nr\relax
|
|
\tablecaptiontoptrue
|
|
\or
|
|
\tablecaptiontopfalse
|
|
\fi
|
|
}
|
|
\newif\ifjmlrhtml
|
|
\jmlrhtmlfalse
|
|
\DeclareOptionX{html}{%
|
|
\ClassWarning{jmlr}{html option is now deprecated}%
|
|
\jmlrhtmltrue}
|
|
\DeclareOptionX{nohtml}{\jmlrhtmlfalse}
|
|
\def\pt@size{11pt}
|
|
\DeclareOptionX{10pt}{\renewcommand{\pt@size}{10pt}}
|
|
\DeclareOptionX{11pt}{\renewcommand{\pt@size}{11pt}}
|
|
\DeclareOptionX{12pt}{\renewcommand{\pt@size}{12pt}}
|
|
\newcommand*{\@jmlrproceedings}{Journal of Machine Learning Research}
|
|
\newcommand*{\@jmlrabbrvproceedings}{JMLR}
|
|
\newcommand*{\jmlrproceedings}[2]{%
|
|
\renewcommand*{\@jmlrabbrvproceedings}{#1}%
|
|
\renewcommand*{\@jmlrproceedings}{#2}%
|
|
}
|
|
\newcommand*{\jmlrnowcp}{%
|
|
\jmlrproceedings{JMLR}{Journal of Machine Learning Research}%
|
|
}
|
|
\newcommand*{\jmlrwcp}{%
|
|
\jmlrproceedings{JMLR W\&CP}{JMLR: Workshop and Conference Proceedings}%
|
|
}
|
|
\newcommand*{\jmlrpmlr}{%
|
|
\jmlrproceedings{PMLR}{Proceedings of Machine Learning Research}%
|
|
}
|
|
\DeclareOptionX{nowcp}{\jmlrnowcp}
|
|
\DeclareOptionX{wcp}{\jmlrwcp}
|
|
\DeclareOptionX{pmlr}{\jmlrpmlr}
|
|
\DeclareOptionX{oneside}{\@twosidefalse \@mparswitchfalse}
|
|
\DeclareOptionX{twoside}{\@twosidetrue \@mparswitchtrue}
|
|
\@twosidetrue
|
|
\newif\ifviiXx
|
|
\viiXxfalse
|
|
\DeclareOptionX{7x10}{\viiXxtrue}
|
|
\DeclareOptionX{letterpaper}{\PassOptionsToPackage{letterpaper}{typearea}}
|
|
\DeclareOptionX*{\PassOptionsToClass{\CurrentOption}{article}}
|
|
\ExecuteOptions{letterpaper}
|
|
\ProcessOptionsX
|
|
\LoadClass[\pt@size]{article}
|
|
\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
|
|
\AtEndDocument{\@jmlrenddoc}
|
|
\RequirePackage{amsmath}
|
|
\RequirePackage{amssymb}
|
|
\RequirePackage{natbib}
|
|
\RequirePackage{graphicx}
|
|
\RequirePackage{url}
|
|
\PassOptionsToPackage{x11names}{xcolor}
|
|
\RequirePackage{xcolor}
|
|
\PassOptionsToPackage{algo2e,ruled}{algorithm2e}
|
|
\RequirePackage{algorithm2e}
|
|
\setlength\algomargin{0pt}
|
|
\RequirePackage{jmlrutils}
|
|
\jmlrprehyperref
|
|
\@ifundefined{@pre@hyperref}{}{\@pre@hyperref}
|
|
\RequirePackage{hyperref}
|
|
\RequirePackage{nameref}
|
|
\@ifundefined{@post@hyperref}{}{\@post@hyperref}
|
|
\hypersetup{colorlinks,
|
|
linkcolor=blue,
|
|
citecolor=blue,
|
|
urlcolor=magenta,
|
|
linktocpage,
|
|
plainpages=false}
|
|
\ifgrayscale
|
|
\hypersetup{draft}
|
|
\fi
|
|
\renewcommand{\topfraction}{0.95} % let figure take up nearly whole page
|
|
\renewcommand{\textfraction}{0.05} % let figure take up nearly whole page
|
|
\widowpenalty=10000\relax
|
|
\clubpenalty=10000\relax
|
|
\@mparswitchtrue
|
|
\bibliographystyle{plainnat}
|
|
\bibpunct{(}{)}{;}{a}{,}{,}
|
|
\renewcommand{\section}{\@startsection{section}{1}{\z@}%
|
|
{-0.24in \@plus -1ex \@minus -.2ex}%
|
|
{0.10in \@plus.2ex}%
|
|
{\normalfont\rmfamily\bfseries\large\raggedright}%
|
|
}
|
|
\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
|
|
{-0.20in \@plus -1ex \@minus -.2ex}%
|
|
{0.08in \@plus .2ex}%
|
|
{\normalfont\rmfamily\bfseries\normalsize\raggedright}%
|
|
}
|
|
\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
|
|
{-0.18in \@plus -1ex \@minus -.2ex}%
|
|
{0.08in \@plus .2ex}%
|
|
{\normalfont\normalsize\rmfamily\mdseries\scshape\raggedright}%
|
|
}
|
|
\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
|
|
{1.5ex plus 0.5ex minus .2ex}%
|
|
{-1em}%
|
|
{\normalfont\normalsize\rmfamily\bfseries}%
|
|
}
|
|
\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\z@}%
|
|
{1.5ex plus 0.5ex minus .2ex}%
|
|
{-1em}%
|
|
{\normalfont\normalsize\rmfamily\bfseries\itshape}}
|
|
\renewcommand*\@seccntformat[1]{%
|
|
\csname pre#1num\endcsname
|
|
\csname the#1\endcsname.\enskip
|
|
}
|
|
\renewcommand*{\@makefntext}[1]{%
|
|
\@setpar
|
|
{%
|
|
\@@par
|
|
\@tempdima\hsize
|
|
\advance \@tempdima -15pt\relax
|
|
\parshape \@ne 15pt \@tempdima
|
|
}%
|
|
\par
|
|
\parindent 2em\noindent
|
|
\hbox to \z@ {\hss {\@thefnmark }\footnoteseptext\hfil }#1%
|
|
}
|
|
\newcommand*{\footnoteseptext}{. }
|
|
\renewcommand*{\thanks}[1]{%
|
|
\footnotemark
|
|
\protected@xdef\@thanks{\@thanks
|
|
\protect\footnotetext[\arabic{footnote}]{#1}}%
|
|
}
|
|
\ifjmlrhtml
|
|
\renewenvironment{abstract}{\HCode{<h3>}Abstract\HCode{</h3>}}{}%
|
|
\else
|
|
\renewenvironment{abstract}
|
|
{{\centering\large\bfseries Abstract\par}\vspace{0.7ex}%
|
|
\bgroup
|
|
\leftskip 20pt\rightskip 20pt\small\noindent\ignorespaces}%
|
|
{\par\egroup\vskip 0.25ex}
|
|
\fi
|
|
\newenvironment{keywords}
|
|
{\bgroup\leftskip 20pt\rightskip 20pt \small\noindent{\bfseries
|
|
Keywords:} \ignorespaces}%
|
|
{\par\egroup\vskip 0.25ex}
|
|
\newlength\aftertitskip \newlength\beforetitskip
|
|
\newlength\interauthorskip \newlength\aftermaketitskip
|
|
%% Changeable parameters.
|
|
\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}
|
|
\newcommand*{\titlebreak}{\newline}
|
|
\newcommand*{\titletag}[1]{}
|
|
\renewcommand*{\title}[2][\@title]{%
|
|
\def\@shorttitle{#1}%
|
|
\def\@title{#2}%
|
|
\protected@write\@auxout{}{\string\jmlr@title{#1}{#2}}%
|
|
\jmlrtitlehook
|
|
}
|
|
\newcommand*{\@shorttitle}{\jobname}
|
|
\newcommand*{\jmlrtitlehook}{}
|
|
\newcommand*{\jmlr@title}[2]{}
|
|
\renewcommand*{\author}[2][]{%
|
|
\def\@author{#2}%
|
|
\def\@sauthor{#1}%
|
|
\def\@jmlr@aux@author{#2}\@onelevel@sanitize\@jmlr@aux@author
|
|
\ifx\@sauthor\@empty
|
|
\let\@jmlr@aux@sauthor\@jmlr@aux@author
|
|
\else
|
|
\let\@shortauthor\@sauthor
|
|
\def\@jmlr@aux@sauthor{#1}\@onelevel@sanitize\@jmlr@aux@sauthor
|
|
\fi
|
|
\jmlrauthorhook
|
|
\protected@write\@auxout
|
|
{}{\string\jmlr@author{\@jmlr@aux@sauthor}{\@jmlr@aux@author}}%
|
|
}
|
|
\newcommand*{\jmlrauthorhook}{}
|
|
\newcommand*{\jmlr@author}[2]{}
|
|
\newcommand*{\@shortauthor}{}
|
|
\newcommand*{\@firstauthor}{}
|
|
\newcommand*{\@firstsurname}{}
|
|
\newlength\jmlrlength
|
|
\def\jmlrmaketitle{%
|
|
\jmlrpremaketitlehook
|
|
\def\@jmlr@authors@sep{, }%
|
|
\par
|
|
\begingroup
|
|
\def\footnoteseptext{ }%
|
|
\def\thempfn{\textsuperscript{\thefootnote}}%
|
|
\def\thefootnote{\fnsymbol{footnote}}%
|
|
\if@twocolumn
|
|
\twocolumn[\@jmlrmaketitle]%
|
|
\else
|
|
\@jmlrmaketitle
|
|
\fi
|
|
\@thanks
|
|
\endgroup
|
|
\label{jmlrstart}%
|
|
\ifx\@sauthor\@empty
|
|
\settowidth{\jmlrlength}{\@evenhead}%
|
|
\ifdim\jmlrlength>\textwidth
|
|
\def\@shortauthor{\@firstsurname\space et al.}%
|
|
\fi
|
|
\fi
|
|
\settowidth{\jmlrlength}{\@titlefoot}%
|
|
\ifdim\jmlrlength>\textwidth
|
|
\def\@jmlrauthors{\@firstauthor\space \emph{et al}}%
|
|
\fi
|
|
\jmlrmaketitlehook
|
|
\thispagestyle{jmlrtps}%
|
|
\setcounter{footnote}{0}%
|
|
\let\maketitle\relax \let\@maketitle\relax
|
|
\gdef\@thanks{}\gdef\@author{}\let\thanks\@gobble
|
|
\def\@jmlr@authors@sep{ \& }%
|
|
}
|
|
\newcommand*{\jmlrmaketitlehook}{}
|
|
\newcommand*{\jmlrpremaketitlehook}{}
|
|
\newcommand{\jmlrhtmlmaketitle}{%
|
|
\ifx\@jmlr@authors\@empty
|
|
\sbox\jmlrbox{\let\addr\relax\@author}%
|
|
\fi
|
|
\noindent\HCode{<h2>}\@title\HCode{</h2>}
|
|
\noindent\@jmlr@authors
|
|
}
|
|
%%\begin{macro}{\jmlrbox}
|
|
\newsavebox\jmlrbox
|
|
\ifjmlrhtml
|
|
\let\maketitle\jmlrhtmlmaketitle
|
|
\else
|
|
\let\maketitle\jmlrmaketitle
|
|
\fi
|
|
\def\@startauthor{\noindent \normalsize\bfseries}
|
|
\def\@endauthor{}
|
|
\def\@starteditor{\noindent \small {\bfseries \@edname:~}}
|
|
\def\@endeditor{\normalsize}
|
|
\def\jmlrpretitle{\vskip\beforetitskip\begin{center}\Large\bfseries}
|
|
\def\jmlrposttitle{\par\end{center}\vskip\aftertitskip}
|
|
\newcommand*{\nametag}[1]{}
|
|
\def\jmlrpreauthor{%
|
|
\bgroup
|
|
\def\nametag##1{##1}%
|
|
\def\and{\unskip\enspace{\normalfont and}\enspace}%
|
|
\def\addr{\mdseries\small\itshape}%
|
|
\def\name{\ClassError{jmlr}{Use \string\Name{Author's Name} not \string\name}{}}%
|
|
\def\email{\ClassError{jmlr}{Use \string\Email{address} not \string\email}{}}%
|
|
\def\AND{\@endauthor\normalfont\hss \vskip \interauthorskip
|
|
\@startauthor}%
|
|
\@startauthor
|
|
}
|
|
\newcommand{\addr}{}
|
|
\def\@email{\hfill\small\mdseries\scshape}%
|
|
\def\@name{\normalsize\upshape\bfseries}%
|
|
\def\@parsename#1 #2\end@parsename{%
|
|
\def\@tmp{#2}%
|
|
\ifx\@tmp\@nnil
|
|
\def\@surname{#1}%
|
|
\let\@nextparsename\@parsenamenoop
|
|
\else
|
|
\@getinitial#1-\relax\relax\end@getinitial
|
|
\ifx\@forenames\@empty
|
|
\def\@forenames{#1}%
|
|
\protected@edef\@initials{\@initial}%
|
|
\else
|
|
\expandafter\toks@\expandafter{\@forenames}%
|
|
\edef\@forenames{\space\the\toks@}%
|
|
\expandafter\toks@\expandafter{\@initials}%
|
|
\protected@edef\@initials{\the\toks@\@initial}%
|
|
\fi
|
|
\let\@nextparsename\@parsename
|
|
\fi
|
|
\@nextparsename#2\end@parsename
|
|
}
|
|
\def\@parsenamenoop#1\end@parsename{}
|
|
\def\@getinitial#1#2-#3#4\end@getinitial{%
|
|
\def\@jmlr@tmp{#3}%
|
|
\if\@jmlr@tmp\relax
|
|
\def\@initial{#1.}%
|
|
\else
|
|
\def\@initial{#1.-#3.}%
|
|
\fi
|
|
}
|
|
\newcommand*{\Name}[2][]{%
|
|
\def\@authorlist{#1}%
|
|
\def\@forenames{}%
|
|
\def\@surname{}%
|
|
\def\nametag##1{}%
|
|
\@parsename#2 \@nil\end@parsename
|
|
\ifx\@shortauthor\@empty
|
|
\ifx\@sauthor\@empty
|
|
\global\let\@shortauthor\@surname
|
|
\global\let\@firstsurname\@surname
|
|
\fi
|
|
\ifx\@authorlist\@empty
|
|
\protected@xdef\@jmlrauthors{\@initials\space\@surname}%
|
|
\else
|
|
\protected@xdef\@jmlrauthors{\@authorlist}%
|
|
\fi
|
|
\global\let\@firstauthor\@jmlrauthors
|
|
\else
|
|
\ifx\@sauthor\@empty
|
|
\expandafter\toks@\expandafter{\@shortauthor}%
|
|
\protected@xdef\@shortauthor{\the\toks@\space\@surname}%
|
|
\fi
|
|
\ifx\@authorlist\@empty
|
|
\ifx\@jmlrauthors\@empty
|
|
\protected@xdef\@jmlrauthors{\@initials\space\@surname}%
|
|
\else
|
|
\protected@xdef\@jmlrauthors{\@jmlrauthors
|
|
\noexpand\@jmlr@authors@sep
|
|
\@initials\space\@surname}%
|
|
\fi
|
|
\else
|
|
\ifx\@jmlrauthors\@empty
|
|
\protected@xdef\@jmlrauthors{\@authorlist}%
|
|
\else
|
|
\protected@xdef\@jmlrauthors{\@jmlrauthors
|
|
\noexpand\@jmlr@authors@sep
|
|
\@authorlist
|
|
}%
|
|
\fi
|
|
\fi
|
|
\fi
|
|
\def\nametag##1{##1}%
|
|
\@name #2%
|
|
}
|
|
\newcommand*{\jmlrabbrnamelist}[1]{%
|
|
\def\nametag##1{}%
|
|
\def\@jmlr@authors@sep{, }%
|
|
\def\@jmlr@namelist{}%
|
|
\@for\@thisname:=#1\do{%
|
|
\expandafter\@jmlrabbrname\expandafter{\@thisname}%
|
|
\ifx\@jmlr@namelist\@empty
|
|
\protected@edef\@jmlr@namelist{%
|
|
\@initials\space\@surname
|
|
}%
|
|
\else
|
|
\protected@edef\@jmlr@namelist{%
|
|
\@jmlr@namelist
|
|
\noexpand\@jmlr@authors@sep
|
|
\@initials\space\@surname
|
|
}%
|
|
\fi
|
|
}%
|
|
\def\@jmlr@authors@sep{ \& }%
|
|
\@jmlr@namelist
|
|
}
|
|
\newcommand*{\@jmlrabbrname}[1]{%
|
|
\def\@initials{}%
|
|
\def\@surname{}%
|
|
\def\@forenames{}%
|
|
\@parsename#1 \@nil\end@parsename
|
|
}
|
|
\newcommand*{\Email}[1]{{\@email #1}}
|
|
\def\jmlrpostauthor{\@endauthor\egroup
|
|
\par
|
|
\vskip \aftermaketitskip
|
|
\noindent
|
|
\ifx\@editor\@empty
|
|
\else
|
|
\@starteditor \@editor \@endeditor
|
|
\fi
|
|
\vskip \aftermaketitskip
|
|
}
|
|
\def\@jmlrmaketitle{\vbox{\hsize\textwidth
|
|
\linewidth\hsize
|
|
\jmlrpretitle
|
|
{%
|
|
\def\titletag##1{##1}%
|
|
\@title
|
|
}%
|
|
\jmlrposttitle
|
|
\jmlrpreauthor \@author \jmlrpostauthor
|
|
}}
|
|
\newcommand*\kernelmachines{(for
|
|
{\textsc{http://www.kernel-machines.org}})}
|
|
\newcommand*{\editorname}{Editor}
|
|
\newcommand*{\editorsname}{Editors}
|
|
\let\@edname\editorname
|
|
\def\@editor{}
|
|
\def\editor#1{%
|
|
\global\let\@edname\editorname
|
|
\gdef\@editor{#1}%
|
|
}
|
|
\def\editors#1{%
|
|
\global\let\@edname\editorsname
|
|
\gdef\@editor{#1}%
|
|
}
|
|
\def\firstpageno#1{\setcounter{page}{#1}}
|
|
\@ifundefined{startpage}{}{\firstpageno{\startpage}}
|
|
\newcommand*{\@jmlrenddoc}{%
|
|
\phantomsection
|
|
\protected@edef\@currentlabelname{end of \@shorttitle}%
|
|
\label{jmlrend}\null
|
|
\global\let\@reprint\@empty
|
|
}
|
|
\newcommand*{\@titlefoot}{\scriptsize\copyright\space\@jmlryear
|
|
\space\@jmlr@authors.\hfill
|
|
\@reprint
|
|
}
|
|
\let\@reprint\@empty
|
|
\newcommand{\reprint}[1]{%
|
|
\gdef\@reprint{Reprinted with permission for JMLR#1}}
|
|
\newcommand\ps@jmlrtps{%
|
|
\let\@mkboth\@gobbletwo
|
|
\def\@oddhead{\scriptsize \@jmlrproceedings
|
|
\ifx\@jmlrvolume\@empty
|
|
\else
|
|
\space\@jmlrvolume
|
|
\ifx\@jmlrissue\@empty\else(\@jmlrissue)\fi
|
|
\ifx\@jmlrpages\@empty
|
|
\ifx\@jmlryear\@empty
|
|
\else
|
|
\if\@jmlrissue\@empty,\fi
|
|
\fi
|
|
\else
|
|
:%
|
|
\fi
|
|
\fi
|
|
\ifx\@jmlrpages\@empty
|
|
\else
|
|
\ifx\@jmlrvolume\@empty\space\fi
|
|
\@jmlrpages
|
|
\ifx\@jmlryear\@empty\else,\fi
|
|
\fi
|
|
\ifx\@jmlryear\@empty\else\space\@jmlryear\fi
|
|
\hfill
|
|
\ifx\@jmlrworkshop\@empty
|
|
\ifx\@jmlrsubmitted\@empty
|
|
\else
|
|
Submitted \@jmlrsubmitted
|
|
\ifx\@jmlrpublished\@empty\else;\fi
|
|
\fi
|
|
\ifx\@jmlrpublished\@empty
|
|
\else
|
|
\space Published \@jmlrpublished
|
|
\fi
|
|
\else
|
|
\space\@jmlrworkshop
|
|
\fi
|
|
}%
|
|
\let\@evenhead\@oddhead
|
|
\def\@oddfoot{\@titlefoot}%
|
|
\let\@evenfoot\@oddfoot
|
|
}
|
|
\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}%
|
|
}%
|
|
\pagestyle{jmlrps}
|
|
\providecommand*{\@jmlrvolume}{}
|
|
\newcommand*{\jmlrvolume}[1]{\renewcommand*{\@jmlrvolume}{#1}}
|
|
\providecommand*{\@jmlrissue}{}
|
|
\newcommand*{\jmlrissue}[1]{\renewcommand*{\@jmlrissue}{#1}}
|
|
\providecommand*{\@jmlryear}{}
|
|
\newcommand*{\jmlryear}[1]{\renewcommand*{\@jmlryear}{#1}}
|
|
\providecommand*\@jmlrpages{\pageref{jmlrstart}--\pageref{jmlrend}}
|
|
\newcommand*{\jmlrpages}[1]{\renewcommand*{\@jmlrpages}{#1}}
|
|
\providecommand*\@jmlrsubmitted{}
|
|
\newcommand*{\jmlrsubmitted}[1]{\renewcommand*{\@jmlrsubmitted}{#1}}
|
|
\providecommand*\@jmlrpublished{}
|
|
\newcommand*{\jmlrpublished}[1]{\renewcommand*{\@jmlrpublished}{#1}}
|
|
\providecommand*\@jmlrworkshop{}
|
|
\newcommand*{\jmlrworkshop}[1]{%
|
|
\renewcommand*{\@jmlrworkshop}{#1}%
|
|
\protected@write\@auxout{}{\string\jmlr@workshop{#1}}%
|
|
}
|
|
\newcommand*{\jmlr@workshop}[1]{}
|
|
\renewcommand*{\date}[1]{%
|
|
\renewcommand*{\@date}{#1}%
|
|
\protected@write\@auxout{}{\string\jmlr@date{#1}}%
|
|
}
|
|
\newcommand*{\jmlr@date}[1]{}
|
|
\newcommand*{\@jmlrauthors}{}
|
|
\newcommand*{\@jmlr@authors}{\@jmlrauthors}
|
|
\newcommand*{\jmlrauthors}[1]{\global\def\@jmlr@authors{#1}}
|
|
|
|
\def\figurecaption#1#2{\noindent\hangindent 40pt
|
|
\hbox to 36pt {\small\slshape #1 \hfil}
|
|
\ignorespaces {\small #2}}
|
|
\def\figurecenter#1#2{\centerline{{\slshape #1} #2}}
|
|
\def\figurecenter#1#2{\centerline{{\small\slshape #1} {\small #2}}}
|
|
\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}
|
|
\def\abovestrut#1{\rule[0in]{0in}{#1}\ignorespaces}
|
|
\def\belowstrut#1{\rule[-#1]{0in}{#1}\ignorespaces}
|
|
\newcommand{\acks}[1]{\section*{Acknowledgments}#1}
|
|
\newcommand{\researchnote}[1]{\noindent {\LARGE\itshape Research Note} #1}
|
|
\providecommand{\ifprint}[2]{\ifgrayscale#1\else#2\fi}
|
|
%% \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
|
|
\newcommand{\artappendix}{\par
|
|
\setcounter{section}{0}
|
|
\setcounter{subsection}{0}
|
|
\def\thesection{\Alph{section}}
|
|
\def\theHsection{\theHchapter.\Alph{section}}
|
|
\def\presectionnum{Appendix~}%
|
|
}
|
|
\let\appendix\artappendix
|
|
\newcommand{\booklinebreak}[1][]{}
|
|
\newcounter{chapter}
|
|
\renewcommand\thechapter{\@arabic\c@chapter}
|
|
\newcommand\@chapapp{\chaptername}
|
|
\@addtoreset{section}{chapter}
|
|
\newcommand*\chaptermark[1]{}
|
|
\newcommand\bookchapter{%
|
|
\if@openright\cleardoublepage\else\clearpage\fi
|
|
\thispagestyle{plain}%
|
|
\global\@topnum\z@
|
|
\@afterindentfalse
|
|
\secdef\@chapter\@schapter}
|
|
\newcommand\artchapter{%
|
|
\ClassError{jmlr}{Chapters not permitted in articles}{}}
|
|
\let\chapter\artchapter
|
|
\def\@chaptoclabel{chapter}
|
|
\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
|
|
\refstepcounter{chapter}%
|
|
\if@mainmatter
|
|
\typeout{\@chapapp\space\thechapter.}%
|
|
\addcontentsline{toc}{\@chaptoclabel}%
|
|
{\protect\numberline{\thechapter}#1}%
|
|
\else
|
|
\addcontentsline{toc}{\@chaptoclabel}{#1}%
|
|
\fi
|
|
\else
|
|
\addcontentsline{toc}{\@chaptoclabel}{#1}%
|
|
\fi
|
|
\chaptermark{#1}%
|
|
\addtocontents{lof}{\protect\addvspace{10\p@}}%
|
|
\addtocontents{lot}{\protect\addvspace{10\p@}}%
|
|
\if@twocolumn
|
|
\@topnewpage[\@makechapterhead{#2}]%
|
|
\else
|
|
\@makechapterhead{#2}%
|
|
\@afterheading
|
|
\fi}
|
|
\newcommand{\chaptertitleformat}[1]{%
|
|
\Huge\bfseries#1%
|
|
}
|
|
\newcommand{\chapternumberformat}[1]{%
|
|
\huge\bfseries \@chapapp\space#1\par\nobreak
|
|
\vskip 20\p@
|
|
}
|
|
\newcommand*{\chapterformat}{\raggedright}
|
|
\newlength\postchapterskip
|
|
\setlength\postchapterskip{40pt}
|
|
\newlength\prechapterskip
|
|
\setlength\prechapterskip{50pt}
|
|
\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
|
|
}}
|
|
\def\@schapter#1{\if@twocolumn
|
|
\@topnewpage[\@makeschapterhead{#1}]%
|
|
\else
|
|
\@makeschapterhead{#1}%
|
|
\@afterheading
|
|
\fi}
|
|
\def\@makeschapterhead#1{%
|
|
\vspace*{\prechapterskip}%
|
|
{\parindent \z@
|
|
\normalfont\chapterformat
|
|
\interlinepenalty\@M
|
|
\chaptertitleformat{#1}\par\nobreak
|
|
\vskip \postchapterskip
|
|
}}
|
|
\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}
|
|
\let\l@appendix\l@chapter
|
|
\newcommand\chaptername{Chapter}
|
|
\newcommand\frontmatter{%
|
|
\cleardoublepage
|
|
\@mainmatterfalse
|
|
\renewcommand*{\theHchapter}{front-\thechapter}%
|
|
\pagenumbering{roman}%
|
|
\morefrontmatter
|
|
}
|
|
\newcommand\morefrontmatter{}
|
|
\newcommand\mainmatter{%
|
|
\cleardoublepage
|
|
\@mainmattertrue
|
|
\setcounter{chapter}{0}%
|
|
\renewcommand*{\theHchapter}{\thechapter}%
|
|
\pagenumbering{arabic}%
|
|
\moremainmatter
|
|
}
|
|
\newcommand\moremainmatter{}
|
|
\newcommand\backmatter{%
|
|
\if@openright
|
|
\cleardoublepage
|
|
\else
|
|
\clearpage
|
|
\fi
|
|
\@mainmatterfalse}
|
|
\newcommand*{\booktocpreamble}{}
|
|
\newcommand*{\booktocpostamble}{}
|
|
\newcommand\booktableofcontents{%
|
|
\if@twocolumn
|
|
\@restonecoltrue\onecolumn
|
|
\else
|
|
\@restonecolfalse
|
|
\fi
|
|
\chapter*{\contentsname
|
|
\@mkboth{\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
|
|
\booktocpreamble
|
|
\@starttoc{toc}%
|
|
\booktocpostamble
|
|
\if@restonecol
|
|
\twocolumn
|
|
\else
|
|
\clearpage
|
|
\fi
|
|
\@mkboth{}{}%
|
|
}
|
|
\let\arttableofcontents\tableofcontents
|
|
\newcommand{\artpart}{%
|
|
\def\toclevel@part{0}%
|
|
\if@noskipsec \leavevmode\fi
|
|
\par
|
|
\addvspace{4ex}%
|
|
\@afterindentfalse
|
|
\secdef\@artpart\@sartpart
|
|
}
|
|
\let\@artpart\@part
|
|
\let\@sartpart\@spart
|
|
\newcommand\bookpart{%
|
|
\def\toclevel@part{-1}%
|
|
\if@openright
|
|
\cleardoublepage
|
|
\else
|
|
\clearpage
|
|
\fi
|
|
\thispagestyle{plain}%
|
|
\if@twocolumn
|
|
\onecolumn
|
|
\@tempswatrue
|
|
\else
|
|
\@tempswafalse
|
|
\fi
|
|
\preparthook
|
|
\secdef\@bookpart\@sbookpart}
|
|
\newcommand{\parttitleformat}[1]{%
|
|
\Huge\bfseries#1%
|
|
}
|
|
\newcommand*{\@parttoclabel}{part}
|
|
\def\@partapp{\partname}
|
|
\newcommand{\partnumberformat}[1]{%
|
|
\Huge\bfseries \@partapp\nobreakspace#1\par\nobreak
|
|
\vskip 20\p@
|
|
}
|
|
\newcommand{\preparthook}{\null\vfil}
|
|
\newcommand*{\partformat}{\centering}
|
|
\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}
|
|
\def\@sbookpart#1{%
|
|
{\interlinepenalty \@M
|
|
\normalfont\partformat
|
|
\parttitleformat{#1}\par}%
|
|
\postparthook}
|
|
\def\postparthook{\vfil\newpage
|
|
\if@twoside
|
|
\if@openright
|
|
\null
|
|
\thispagestyle{empty}%
|
|
\newpage
|
|
\fi
|
|
\fi
|
|
\if@tempswa
|
|
\twocolumn
|
|
\fi}
|
|
\newcommand\bookappendix{\par
|
|
\setcounter{table}{0}%
|
|
\setcounter{figure}{0}%
|
|
\zeroextracounters
|
|
\par
|
|
\gdef\theHchapter{\Alph {chapter}}%
|
|
\xdef\Hy@chapapp{\Hy@appendixstring}%
|
|
\setcounter{chapter}{0}%
|
|
\setcounter{section}{0}%
|
|
\gdef\@chapapp{\appendixname}%
|
|
\gdef\thechapter{\@Alph\c@chapter}%
|
|
\def\@write@jmlr@import{\@@write@jmlr@apdimport}%
|
|
\csname appendixmore\endcsname
|
|
}
|
|
\newcommand*{\jmlrbookcommands}{%
|
|
\let\part\bookpart
|
|
\let\chapter\bookchapter
|
|
\let\appendix\bookappendix
|
|
\let\tableofcontents\booktableofcontents
|
|
\def\thesection{\thechapter.\arabic{section}}%
|
|
}
|
|
\newcommand*{\jmlrarticlecommands}{%
|
|
\let\part\artpart
|
|
\let\chapter\artchapter
|
|
\let\appendix\artappendix
|
|
\let\tableofcontents\arttableofcontents
|
|
\def\thesection{\arabic{section}}%
|
|
}
|
|
\newcommand*{\@jmlr@check@packages}{%
|
|
\@ifpackageloaded{epsfig}{%
|
|
\ClassError{jmlr}{Obsolete package `epsfig' detected.
|
|
\MessageBreak
|
|
Please use \string\includegraphics\space to include images
|
|
instead}{}}{}%
|
|
\@ifpackageloaded{psfig}{%
|
|
\ClassError{jmlr}{Obsolete package `psfig' detected.
|
|
\MessageBreak
|
|
Please use \string\includegraphics\space to include images
|
|
instead}{}}{}%
|
|
\@ifpackageloaded{subfig}{%
|
|
\ClassError{jmlr}{Package `subfig' detected.\MessageBreak
|
|
This will cause a conflict if the article is incorporated
|
|
\MessageBreak
|
|
into a book using jmlbook.cls.
|
|
\MessageBreak
|
|
Please use \string\subfigure\space and
|
|
\string\subtable\space instead}{}}{}%
|
|
\@ifpackageloaded{theorem}{%
|
|
\ClassError{jmlr}{Package `theorem' detected.\MessageBreak
|
|
This can cause a conflict with other packages used by jmlr}{}}{}%
|
|
\@ifpackageloaded{ntheorem}{%
|
|
\ClassError{jmlr}{Package `ntheorem' detected.\MessageBreak
|
|
This can cause a conflict with other packages used by jmlr}{}}{}%
|
|
\@ifpackageloaded{amsthm}{%
|
|
\ClassError{jmlr}{Package `amsthm' detected.\MessageBreak
|
|
This package conflicts with the jmlr class}{}}{}%
|
|
\@ifpackageloaded{pdfpages}{Package `pdfpages' detected.\MessageBreak
|
|
This can cause a problem for jmlrbook}{}%
|
|
\@ifpackageloaded{geometry}{Package `geometry' detected.\MessageBreak
|
|
This can cause a problem for jmlrbook}{}%
|
|
\@ifpackageloaded{tabularx}{%
|
|
\ClassError{jmlr}{Package `tabularx' detected.\MessageBreak
|
|
This will break footnote links}{}}{}%
|
|
\@ifpackageloaded{jmlr2e}{%
|
|
\ClassError{jmlr}{Package `jmlr2e' detected.\MessageBreak
|
|
This can't be used with the jmlr class}{}}{}%
|
|
}
|
|
\AtBeginDocument{%
|
|
\@jmlr@check@packages
|
|
\let\@jmlr@check@packages\relax
|
|
}
|
|
\newcommand*{\jmlrSuppressPackageChecks}{%
|
|
\let\@jmlr@check@packages\relax
|
|
}
|
|
\DeclareRobustCommand*{\obsoletefontcs}[1]{%
|
|
\ClassWarning{jmlr}{Obsolete command
|
|
\expandafter\string\csname#1\endcsname\space detected}%
|
|
\csname #1 \endcsname
|
|
}
|
|
\renewcommand*{\bf}{%
|
|
\obsoletefontcs{bf}%
|
|
}
|
|
\renewcommand*{\it}{%
|
|
\obsoletefontcs{it}%
|
|
}
|
|
\renewcommand*{\sc}{%
|
|
\obsoletefontcs{sc}%
|
|
}
|
|
\renewcommand*{\rm}{%
|
|
\obsoletefontcs{rm}%
|
|
}
|
|
\renewcommand*{\sf}{%
|
|
\obsoletefontcs{sf}%
|
|
}
|
|
\renewcommand*{\tt}{%
|
|
\obsoletefontcs{tt}%
|
|
}
|
|
\providecommand*{\jmlrcheckforpseudocode}{%
|
|
\@ifpackageloaded{pseudocode}%
|
|
{%
|
|
\let\pseudoRETURN\RETURN
|
|
\let\pseudoTRUE\TRUE
|
|
\let\pseudoFALSE\FALSE
|
|
\let\pseudoAND\AND
|
|
\let\pseudoOR\OR
|
|
\let\pseudoNOT\NOT
|
|
\let\pseudoTO\TO
|
|
\let\pseudoCOMMENT\COMMENT
|
|
\let\pseudoIF\IF
|
|
\let\pseudoELSE\ELSE
|
|
\let\pseudoFOR\FOR
|
|
\let\pseudoFORALL\FORALL
|
|
\let\pseudoWHILE\WHILE
|
|
\let\pseudoREPEAT\REPEAT
|
|
\let\pseudoUNTIL\UNTIL
|
|
\let\pseudoENDFOR\ENDFOR
|
|
\let\RETURN\undefined
|
|
\let\TRUE\undefined
|
|
\let\FALSE\undefined
|
|
\let\AND\undefined
|
|
\let\OR\undefined
|
|
\let\NOT\undefined
|
|
\let\TO\undefined
|
|
\let\COMMENT\undefined
|
|
\let\IF\undefined
|
|
\let\ELSE\undefined
|
|
\let\FOR\undefined
|
|
\let\FORALL\undefined
|
|
\let\WHILE\undefined
|
|
\let\REPEAT\undefined
|
|
\let\UNTIL\undefined
|
|
\let\ENDFOR\undefined
|
|
\preto\pseudocode{%
|
|
\let\RETURN\pseudoRETURN
|
|
\let\TRUE\pseudoTRUE
|
|
\let\FALSE\pseudoFALSE
|
|
\let\AND\pseudoAND
|
|
\let\OR\pseudoOR
|
|
\let\NOT\pseudoNOT
|
|
\let\TO\pseudoTO
|
|
\let\COMMENT\pseudoCOMMENT
|
|
\let\IF\pseudoIF
|
|
\let\ELSE\pseudoELSE
|
|
\let\FOR\pseudoFOR
|
|
\let\FORALL\pseudoFORALL
|
|
\let\WHILE\pseudoWHILE
|
|
\let\REPEAT\pseudoREPEAT
|
|
\let\UNTIL\pseudoUNTIL
|
|
\let\ENDFOR\pseudoENDFOR
|
|
}%
|
|
}%
|
|
{}%
|
|
}
|
|
\jmlrcheckforpseudocode
|
|
\endinput
|
|
%%
|
|
%% End of file `jmlr.cls'.
|