Articles I've written for customers on IT issues.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1001 lines
29 KiB

4 years ago
  1. %%
  2. %% This is file `jmlr.cls',
  3. %% generated with the docstrip utility.
  4. %%
  5. %% The original source files were:
  6. %%
  7. %% jmlr.dtx (with options: `jmlr.cls,package')
  8. %%
  9. %% jmlr.dtx
  10. %% Copyright 2017 Nicola Talbot
  11. %%
  12. %% This work may be distributed and/or modified under the
  13. %% conditions of the LaTeX Project Public License, either version 1.3
  14. %% of this license or (at your option) any later version.
  15. %% The latest version of this license is in
  16. %% http://www.latex-project.org/lppl.txt
  17. %% and version 1.3 or later is part of all distributions of LaTeX
  18. %% version 2005/12/01 or later.
  19. %%
  20. %% This work has the LPPL maintenance status `maintained'.
  21. %%
  22. %% The Current Maintainer of this work is Nicola Talbot.
  23. %%
  24. %% This work consists of the files jmlr.dtx and jmlr.ins and the derived files jmlrutils.sty, jmlr.cls, jmlrbook.cls.
  25. %%
  26. %% \CharacterTable
  27. %% {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
  28. %% 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
  29. %% Digits \0\1\2\3\4\5\6\7\8\9
  30. %% Exclamation \! Double quote \" Hash (number) \#
  31. %% Dollar \$ Percent \% Ampersand \&
  32. %% Acute accent \' Left paren \( Right paren \)
  33. %% Asterisk \* Plus \+ Comma \,
  34. %% Minus \- Point \. Solidus \/
  35. %% Colon \: Semicolon \; Less than \<
  36. %% Equals \= Greater than \> Question mark \?
  37. %% Commercial at \@ Left bracket \[ Backslash \\
  38. %% Right bracket \] Circumflex \^ Underscore \_
  39. %% Grave accent \` Left brace \{ Vertical bar \|
  40. %% Right brace \} Tilde \~}
  41. %% First editor:
  42. %% Second editor:
  43. \NeedsTeXFormat{LaTeX2e}
  44. \ProvidesClass{jmlr}[2017/08/01 v1.24 (NLCT) Journal of Machine Learning Research]
  45. \RequirePackage{xkeyval}
  46. \RequirePackage{calc}
  47. \RequirePackage{etoolbox}
  48. \providecommand*{\jmlrprehyperref}{}
  49. \newif\if@openright
  50. \newif\if@mainmatter \@mainmattertrue
  51. \@ifundefined{ifgrayscale}{
  52. \newif\ifgrayscale
  53. \grayscalefalse
  54. }{}
  55. \DeclareOptionX{color}{\grayscalefalse
  56. \PassOptionsToPackage{color}{xcolor}}
  57. \DeclareOptionX{gray}{\grayscaletrue
  58. \PassOptionsToPackage{gray}{xcolor}}
  59. \DeclareOptionX{draft}{\setlength\overfullrule{5pt}}
  60. \DeclareOptionX{final}{\setlength\overfullrule{0pt}}
  61. \newif\iftablecaptiontop
  62. \tablecaptiontoptrue
  63. \newcommand{\tableconts}[3]{%
  64. \iftablecaptiontop
  65. #2\label{#1}\vskip\baselineskip
  66. {\centering #3\par}%
  67. \else
  68. {\centering #3\par}%
  69. \vskip\baselineskip
  70. #2\label{#1}%
  71. \fi
  72. }
  73. \DeclareOptionX{tablecaptiontop}{\tablecaptiontoptrue}
  74. \DeclareOptionX{tablecaptionbottom}{\tablecaptiontopfalse}
  75. \define@choicekey{jmlr.cls}{tablecaption}[\val\nr]{top,bottom}{%
  76. \ifcase\nr\relax
  77. \tablecaptiontoptrue
  78. \or
  79. \tablecaptiontopfalse
  80. \fi
  81. }
  82. \newif\ifjmlrhtml
  83. \jmlrhtmlfalse
  84. \DeclareOptionX{html}{%
  85. \ClassWarning{jmlr}{html option is now deprecated}%
  86. \jmlrhtmltrue}
  87. \DeclareOptionX{nohtml}{\jmlrhtmlfalse}
  88. \def\pt@size{11pt}
  89. \DeclareOptionX{10pt}{\renewcommand{\pt@size}{10pt}}
  90. \DeclareOptionX{11pt}{\renewcommand{\pt@size}{11pt}}
  91. \DeclareOptionX{12pt}{\renewcommand{\pt@size}{12pt}}
  92. \newcommand*{\@jmlrproceedings}{Journal of Machine Learning Research}
  93. \newcommand*{\@jmlrabbrvproceedings}{JMLR}
  94. \newcommand*{\jmlrproceedings}[2]{%
  95. \renewcommand*{\@jmlrabbrvproceedings}{#1}%
  96. \renewcommand*{\@jmlrproceedings}{#2}%
  97. }
  98. \newcommand*{\jmlrnowcp}{%
  99. \jmlrproceedings{JMLR}{Journal of Machine Learning Research}%
  100. }
  101. \newcommand*{\jmlrwcp}{%
  102. \jmlrproceedings{JMLR W\&CP}{JMLR: Workshop and Conference Proceedings}%
  103. }
  104. \newcommand*{\jmlrpmlr}{%
  105. \jmlrproceedings{PMLR}{Proceedings of Machine Learning Research}%
  106. }
  107. \DeclareOptionX{nowcp}{\jmlrnowcp}
  108. \DeclareOptionX{wcp}{\jmlrwcp}
  109. \DeclareOptionX{pmlr}{\jmlrpmlr}
  110. \DeclareOptionX{oneside}{\@twosidefalse \@mparswitchfalse}
  111. \DeclareOptionX{twoside}{\@twosidetrue \@mparswitchtrue}
  112. \@twosidetrue
  113. \newif\ifviiXx
  114. \viiXxfalse
  115. \DeclareOptionX{7x10}{\viiXxtrue}
  116. \DeclareOptionX{letterpaper}{\PassOptionsToPackage{letterpaper}{typearea}}
  117. \DeclareOptionX*{\PassOptionsToClass{\CurrentOption}{article}}
  118. \ExecuteOptions{letterpaper}
  119. \ProcessOptionsX
  120. \LoadClass[\pt@size]{article}
  121. \ifviiXx
  122. \setlength{\paperwidth}{7in}
  123. \setlength{\paperheight}{10in}
  124. \setlength{\textwidth}{5.25in}
  125. \setlength{\textheight}{8.2in}
  126. \setlength{\topmargin}{0.4in}
  127. \setlength{\headheight}{0.2in}
  128. \setlength{\headsep}{0.2in}
  129. \setlength{\hoffset}{-1in}
  130. \setlength{\voffset}{-1in}
  131. \setlength{\evensidemargin}{0.75in}
  132. \setlength{\oddsidemargin}{1.0in}
  133. \else
  134. \setlength{\oddsidemargin}{0.25in}
  135. \setlength{\evensidemargin}{0.25in}
  136. \setlength{\marginparwidth}{0.07 true in}
  137. \setlength{\topmargin}{-0.5in}
  138. \addtolength{\headsep}{0.25in}
  139. \setlength{\textheight}{8.5 true in}
  140. \setlength{\textwidth}{6.0 true in}
  141. \fi
  142. \AtEndDocument{\@jmlrenddoc}
  143. \RequirePackage{amsmath}
  144. \RequirePackage{amssymb}
  145. \RequirePackage{natbib}
  146. \RequirePackage{graphicx}
  147. \RequirePackage{url}
  148. \PassOptionsToPackage{x11names}{xcolor}
  149. \RequirePackage{xcolor}
  150. \PassOptionsToPackage{algo2e,ruled}{algorithm2e}
  151. \RequirePackage{algorithm2e}
  152. \setlength\algomargin{0pt}
  153. \RequirePackage{jmlrutils}
  154. \jmlrprehyperref
  155. \@ifundefined{@pre@hyperref}{}{\@pre@hyperref}
  156. \RequirePackage{hyperref}
  157. \RequirePackage{nameref}
  158. \@ifundefined{@post@hyperref}{}{\@post@hyperref}
  159. \hypersetup{colorlinks,
  160. linkcolor=blue,
  161. citecolor=blue,
  162. urlcolor=magenta,
  163. linktocpage,
  164. plainpages=false}
  165. \ifgrayscale
  166. \hypersetup{draft}
  167. \fi
  168. \renewcommand{\topfraction}{0.95} % let figure take up nearly whole page
  169. \renewcommand{\textfraction}{0.05} % let figure take up nearly whole page
  170. \widowpenalty=10000\relax
  171. \clubpenalty=10000\relax
  172. \@mparswitchtrue
  173. \bibliographystyle{plainnat}
  174. \bibpunct{(}{)}{;}{a}{,}{,}
  175. \renewcommand{\section}{\@startsection{section}{1}{\z@}%
  176. {-0.24in \@plus -1ex \@minus -.2ex}%
  177. {0.10in \@plus.2ex}%
  178. {\normalfont\rmfamily\bfseries\large\raggedright}%
  179. }
  180. \renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
  181. {-0.20in \@plus -1ex \@minus -.2ex}%
  182. {0.08in \@plus .2ex}%
  183. {\normalfont\rmfamily\bfseries\normalsize\raggedright}%
  184. }
  185. \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
  186. {-0.18in \@plus -1ex \@minus -.2ex}%
  187. {0.08in \@plus .2ex}%
  188. {\normalfont\normalsize\rmfamily\mdseries\scshape\raggedright}%
  189. }
  190. \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
  191. {1.5ex plus 0.5ex minus .2ex}%
  192. {-1em}%
  193. {\normalfont\normalsize\rmfamily\bfseries}%
  194. }
  195. \renewcommand\subparagraph{\@startsection{subparagraph}{5}{\z@}%
  196. {1.5ex plus 0.5ex minus .2ex}%
  197. {-1em}%
  198. {\normalfont\normalsize\rmfamily\bfseries\itshape}}
  199. \renewcommand*\@seccntformat[1]{%
  200. \csname pre#1num\endcsname
  201. \csname the#1\endcsname.\enskip
  202. }
  203. \renewcommand*{\@makefntext}[1]{%
  204. \@setpar
  205. {%
  206. \@@par
  207. \@tempdima\hsize
  208. \advance \@tempdima -15pt\relax
  209. \parshape \@ne 15pt \@tempdima
  210. }%
  211. \par
  212. \parindent 2em\noindent
  213. \hbox to \z@ {\hss {\@thefnmark }\footnoteseptext\hfil }#1%
  214. }
  215. \newcommand*{\footnoteseptext}{. }
  216. \renewcommand*{\thanks}[1]{%
  217. \footnotemark
  218. \protected@xdef\@thanks{\@thanks
  219. \protect\footnotetext[\arabic{footnote}]{#1}}%
  220. }
  221. \ifjmlrhtml
  222. \renewenvironment{abstract}{\HCode{<h3>}Abstract\HCode{</h3>}}{}%
  223. \else
  224. \renewenvironment{abstract}
  225. {{\centering\large\bfseries Abstract\par}\vspace{0.7ex}%
  226. \bgroup
  227. \leftskip 20pt\rightskip 20pt\small\noindent\ignorespaces}%
  228. {\par\egroup\vskip 0.25ex}
  229. \fi
  230. \newenvironment{keywords}
  231. {\bgroup\leftskip 20pt\rightskip 20pt \small\noindent{\bfseries
  232. Keywords:} \ignorespaces}%
  233. {\par\egroup\vskip 0.25ex}
  234. \newlength\aftertitskip \newlength\beforetitskip
  235. \newlength\interauthorskip \newlength\aftermaketitskip
  236. %% Changeable parameters.
  237. \setlength\aftertitskip{0.1in plus 0.2in minus 0.2in}
  238. \setlength\beforetitskip{0.05in plus 0.08in minus 0.08in}
  239. \setlength\interauthorskip{0.08in plus 0.1in minus 0.1in}
  240. \setlength\aftermaketitskip{0.3in plus 0.1in minus 0.1in}
  241. \newcommand*{\titlebreak}{\newline}
  242. \newcommand*{\titletag}[1]{}
  243. \renewcommand*{\title}[2][\@title]{%
  244. \def\@shorttitle{#1}%
  245. \def\@title{#2}%
  246. \protected@write\@auxout{}{\string\jmlr@title{#1}{#2}}%
  247. \jmlrtitlehook
  248. }
  249. \newcommand*{\@shorttitle}{\jobname}
  250. \newcommand*{\jmlrtitlehook}{}
  251. \newcommand*{\jmlr@title}[2]{}
  252. \renewcommand*{\author}[2][]{%
  253. \def\@author{#2}%
  254. \def\@sauthor{#1}%
  255. \def\@jmlr@aux@author{#2}\@onelevel@sanitize\@jmlr@aux@author
  256. \ifx\@sauthor\@empty
  257. \let\@jmlr@aux@sauthor\@jmlr@aux@author
  258. \else
  259. \let\@shortauthor\@sauthor
  260. \def\@jmlr@aux@sauthor{#1}\@onelevel@sanitize\@jmlr@aux@sauthor
  261. \fi
  262. \jmlrauthorhook
  263. \protected@write\@auxout
  264. {}{\string\jmlr@author{\@jmlr@aux@sauthor}{\@jmlr@aux@author}}%
  265. }
  266. \newcommand*{\jmlrauthorhook}{}
  267. \newcommand*{\jmlr@author}[2]{}
  268. \newcommand*{\@shortauthor}{}
  269. \newcommand*{\@firstauthor}{}
  270. \newcommand*{\@firstsurname}{}
  271. \newlength\jmlrlength
  272. \def\jmlrmaketitle{%
  273. \jmlrpremaketitlehook
  274. \def\@jmlr@authors@sep{, }%
  275. \par
  276. \begingroup
  277. \def\footnoteseptext{ }%
  278. \def\thempfn{\textsuperscript{\thefootnote}}%
  279. \def\thefootnote{\fnsymbol{footnote}}%
  280. \if@twocolumn
  281. \twocolumn[\@jmlrmaketitle]%
  282. \else
  283. \@jmlrmaketitle
  284. \fi
  285. \@thanks
  286. \endgroup
  287. \label{jmlrstart}%
  288. \ifx\@sauthor\@empty
  289. \settowidth{\jmlrlength}{\@evenhead}%
  290. \ifdim\jmlrlength>\textwidth
  291. \def\@shortauthor{\@firstsurname\space et al.}%
  292. \fi
  293. \fi
  294. \settowidth{\jmlrlength}{\@titlefoot}%
  295. \ifdim\jmlrlength>\textwidth
  296. \def\@jmlrauthors{\@firstauthor\space \emph{et al}}%
  297. \fi
  298. \jmlrmaketitlehook
  299. \thispagestyle{jmlrtps}%
  300. \setcounter{footnote}{0}%
  301. \let\maketitle\relax \let\@maketitle\relax
  302. \gdef\@thanks{}\gdef\@author{}\let\thanks\@gobble
  303. \def\@jmlr@authors@sep{ \& }%
  304. }
  305. \newcommand*{\jmlrmaketitlehook}{}
  306. \newcommand*{\jmlrpremaketitlehook}{}
  307. \newcommand{\jmlrhtmlmaketitle}{%
  308. \ifx\@jmlr@authors\@empty
  309. \sbox\jmlrbox{\let\addr\relax\@author}%
  310. \fi
  311. \noindent\HCode{<h2>}\@title\HCode{</h2>}
  312. \noindent\@jmlr@authors
  313. }
  314. %%\begin{macro}{\jmlrbox}
  315. \newsavebox\jmlrbox
  316. \ifjmlrhtml
  317. \let\maketitle\jmlrhtmlmaketitle
  318. \else
  319. \let\maketitle\jmlrmaketitle
  320. \fi
  321. \def\@startauthor{\noindent \normalsize\bfseries}
  322. \def\@endauthor{}
  323. \def\@starteditor{\noindent \small {\bfseries \@edname:~}}
  324. \def\@endeditor{\normalsize}
  325. \def\jmlrpretitle{\vskip\beforetitskip\begin{center}\Large\bfseries}
  326. \def\jmlrposttitle{\par\end{center}\vskip\aftertitskip}
  327. \newcommand*{\nametag}[1]{}
  328. \def\jmlrpreauthor{%
  329. \bgroup
  330. \def\nametag##1{##1}%
  331. \def\and{\unskip\enspace{\normalfont and}\enspace}%
  332. \def\addr{\mdseries\small\itshape}%
  333. \def\name{\ClassError{jmlr}{Use \string\Name{Author's Name} not \string\name}{}}%
  334. \def\email{\ClassError{jmlr}{Use \string\Email{address} not \string\email}{}}%
  335. \def\AND{\@endauthor\normalfont\hss \vskip \interauthorskip
  336. \@startauthor}%
  337. \@startauthor
  338. }
  339. \newcommand{\addr}{}
  340. \def\@email{\hfill\small\mdseries\scshape}%
  341. \def\@name{\normalsize\upshape\bfseries}%
  342. \def\@parsename#1 #2\end@parsename{%
  343. \def\@tmp{#2}%
  344. \ifx\@tmp\@nnil
  345. \def\@surname{#1}%
  346. \let\@nextparsename\@parsenamenoop
  347. \else
  348. \@getinitial#1-\relax\relax\end@getinitial
  349. \ifx\@forenames\@empty
  350. \def\@forenames{#1}%
  351. \protected@edef\@initials{\@initial}%
  352. \else
  353. \expandafter\toks@\expandafter{\@forenames}%
  354. \edef\@forenames{\space\the\toks@}%
  355. \expandafter\toks@\expandafter{\@initials}%
  356. \protected@edef\@initials{\the\toks@\@initial}%
  357. \fi
  358. \let\@nextparsename\@parsename
  359. \fi
  360. \@nextparsename#2\end@parsename
  361. }
  362. \def\@parsenamenoop#1\end@parsename{}
  363. \def\@getinitial#1#2-#3#4\end@getinitial{%
  364. \def\@jmlr@tmp{#3}%
  365. \if\@jmlr@tmp\relax
  366. \def\@initial{#1.}%
  367. \else
  368. \def\@initial{#1.-#3.}%
  369. \fi
  370. }
  371. \newcommand*{\Name}[2][]{%
  372. \def\@authorlist{#1}%
  373. \def\@forenames{}%
  374. \def\@surname{}%
  375. \def\nametag##1{}%
  376. \@parsename#2 \@nil\end@parsename
  377. \ifx\@shortauthor\@empty
  378. \ifx\@sauthor\@empty
  379. \global\let\@shortauthor\@surname
  380. \global\let\@firstsurname\@surname
  381. \fi
  382. \ifx\@authorlist\@empty
  383. \protected@xdef\@jmlrauthors{\@initials\space\@surname}%
  384. \else
  385. \protected@xdef\@jmlrauthors{\@authorlist}%
  386. \fi
  387. \global\let\@firstauthor\@jmlrauthors
  388. \else
  389. \ifx\@sauthor\@empty
  390. \expandafter\toks@\expandafter{\@shortauthor}%
  391. \protected@xdef\@shortauthor{\the\toks@\space\@surname}%
  392. \fi
  393. \ifx\@authorlist\@empty
  394. \ifx\@jmlrauthors\@empty
  395. \protected@xdef\@jmlrauthors{\@initials\space\@surname}%
  396. \else
  397. \protected@xdef\@jmlrauthors{\@jmlrauthors
  398. \noexpand\@jmlr@authors@sep
  399. \@initials\space\@surname}%
  400. \fi
  401. \else
  402. \ifx\@jmlrauthors\@empty
  403. \protected@xdef\@jmlrauthors{\@authorlist}%
  404. \else
  405. \protected@xdef\@jmlrauthors{\@jmlrauthors
  406. \noexpand\@jmlr@authors@sep
  407. \@authorlist
  408. }%
  409. \fi
  410. \fi
  411. \fi
  412. \def\nametag##1{##1}%
  413. \@name #2%
  414. }
  415. \newcommand*{\jmlrabbrnamelist}[1]{%
  416. \def\nametag##1{}%
  417. \def\@jmlr@authors@sep{, }%
  418. \def\@jmlr@namelist{}%
  419. \@for\@thisname:=#1\do{%
  420. \expandafter\@jmlrabbrname\expandafter{\@thisname}%
  421. \ifx\@jmlr@namelist\@empty
  422. \protected@edef\@jmlr@namelist{%
  423. \@initials\space\@surname
  424. }%
  425. \else
  426. \protected@edef\@jmlr@namelist{%
  427. \@jmlr@namelist
  428. \noexpand\@jmlr@authors@sep
  429. \@initials\space\@surname
  430. }%
  431. \fi
  432. }%
  433. \def\@jmlr@authors@sep{ \& }%
  434. \@jmlr@namelist
  435. }
  436. \newcommand*{\@jmlrabbrname}[1]{%
  437. \def\@initials{}%
  438. \def\@surname{}%
  439. \def\@forenames{}%
  440. \@parsename#1 \@nil\end@parsename
  441. }
  442. \newcommand*{\Email}[1]{{\@email #1}}
  443. \def\jmlrpostauthor{\@endauthor\egroup
  444. \par
  445. \vskip \aftermaketitskip
  446. \noindent
  447. \ifx\@editor\@empty
  448. \else
  449. \@starteditor \@editor \@endeditor
  450. \fi
  451. \vskip \aftermaketitskip
  452. }
  453. \def\@jmlrmaketitle{\vbox{\hsize\textwidth
  454. \linewidth\hsize
  455. \jmlrpretitle
  456. {%
  457. \def\titletag##1{##1}%
  458. \@title
  459. }%
  460. \jmlrposttitle
  461. \jmlrpreauthor \@author \jmlrpostauthor
  462. }}
  463. \newcommand*\kernelmachines{(for
  464. {\textsc{http://www.kernel-machines.org}})}
  465. \newcommand*{\editorname}{Editor}
  466. \newcommand*{\editorsname}{Editors}
  467. \let\@edname\editorname
  468. \def\@editor{}
  469. \def\editor#1{%
  470. \global\let\@edname\editorname
  471. \gdef\@editor{#1}%
  472. }
  473. \def\editors#1{%
  474. \global\let\@edname\editorsname
  475. \gdef\@editor{#1}%
  476. }
  477. \def\firstpageno#1{\setcounter{page}{#1}}
  478. \@ifundefined{startpage}{}{\firstpageno{\startpage}}
  479. \newcommand*{\@jmlrenddoc}{%
  480. \phantomsection
  481. \protected@edef\@currentlabelname{end of \@shorttitle}%
  482. \label{jmlrend}\null
  483. \global\let\@reprint\@empty
  484. }
  485. \newcommand*{\@titlefoot}{\scriptsize\copyright\space\@jmlryear
  486. \space\@jmlr@authors.\hfill
  487. \@reprint
  488. }
  489. \let\@reprint\@empty
  490. \newcommand{\reprint}[1]{%
  491. \gdef\@reprint{Reprinted with permission for JMLR#1}}
  492. \newcommand\ps@jmlrtps{%
  493. \let\@mkboth\@gobbletwo
  494. \def\@oddhead{\scriptsize \@jmlrproceedings
  495. \ifx\@jmlrvolume\@empty
  496. \else
  497. \space\@jmlrvolume
  498. \ifx\@jmlrissue\@empty\else(\@jmlrissue)\fi
  499. \ifx\@jmlrpages\@empty
  500. \ifx\@jmlryear\@empty
  501. \else
  502. \if\@jmlrissue\@empty,\fi
  503. \fi
  504. \else
  505. :%
  506. \fi
  507. \fi
  508. \ifx\@jmlrpages\@empty
  509. \else
  510. \ifx\@jmlrvolume\@empty\space\fi
  511. \@jmlrpages
  512. \ifx\@jmlryear\@empty\else,\fi
  513. \fi
  514. \ifx\@jmlryear\@empty\else\space\@jmlryear\fi
  515. \hfill
  516. \ifx\@jmlrworkshop\@empty
  517. \ifx\@jmlrsubmitted\@empty
  518. \else
  519. Submitted \@jmlrsubmitted
  520. \ifx\@jmlrpublished\@empty\else;\fi
  521. \fi
  522. \ifx\@jmlrpublished\@empty
  523. \else
  524. \space Published \@jmlrpublished
  525. \fi
  526. \else
  527. \space\@jmlrworkshop
  528. \fi
  529. }%
  530. \let\@evenhead\@oddhead
  531. \def\@oddfoot{\@titlefoot}%
  532. \let\@evenfoot\@oddfoot
  533. }
  534. \def\ps@jmlrps{%
  535. \let\@mkboth\@gobbletwo
  536. \def\@oddhead{\hfill {\small\scshape \@shorttitle} \hfill}%
  537. \def\@oddfoot{\hfill \small\rmfamily \thepage \hfill}%
  538. \def\@evenhead{\hfill {\small\scshape \@shortauthor} \hfill}%
  539. \def\@evenfoot{\hfill \small\rmfamily \thepage \hfill}%
  540. }%
  541. \pagestyle{jmlrps}
  542. \providecommand*{\@jmlrvolume}{}
  543. \newcommand*{\jmlrvolume}[1]{\renewcommand*{\@jmlrvolume}{#1}}
  544. \providecommand*{\@jmlrissue}{}
  545. \newcommand*{\jmlrissue}[1]{\renewcommand*{\@jmlrissue}{#1}}
  546. \providecommand*{\@jmlryear}{}
  547. \newcommand*{\jmlryear}[1]{\renewcommand*{\@jmlryear}{#1}}
  548. \providecommand*\@jmlrpages{\pageref{jmlrstart}--\pageref{jmlrend}}
  549. \newcommand*{\jmlrpages}[1]{\renewcommand*{\@jmlrpages}{#1}}
  550. \providecommand*\@jmlrsubmitted{}
  551. \newcommand*{\jmlrsubmitted}[1]{\renewcommand*{\@jmlrsubmitted}{#1}}
  552. \providecommand*\@jmlrpublished{}
  553. \newcommand*{\jmlrpublished}[1]{\renewcommand*{\@jmlrpublished}{#1}}
  554. \providecommand*\@jmlrworkshop{}
  555. \newcommand*{\jmlrworkshop}[1]{%
  556. \renewcommand*{\@jmlrworkshop}{#1}%
  557. \protected@write\@auxout{}{\string\jmlr@workshop{#1}}%
  558. }
  559. \newcommand*{\jmlr@workshop}[1]{}
  560. \renewcommand*{\date}[1]{%
  561. \renewcommand*{\@date}{#1}%
  562. \protected@write\@auxout{}{\string\jmlr@date{#1}}%
  563. }
  564. \newcommand*{\jmlr@date}[1]{}
  565. \newcommand*{\@jmlrauthors}{}
  566. \newcommand*{\@jmlr@authors}{\@jmlrauthors}
  567. \newcommand*{\jmlrauthors}[1]{\global\def\@jmlr@authors{#1}}
  568. \def\figurecaption#1#2{\noindent\hangindent 40pt
  569. \hbox to 36pt {\small\slshape #1 \hfil}
  570. \ignorespaces {\small #2}}
  571. \def\figurecenter#1#2{\centerline{{\slshape #1} #2}}
  572. \def\figurecenter#1#2{\centerline{{\small\slshape #1} {\small #2}}}
  573. \long\def\@makecaption#1#2{%
  574. \vskip 10pt
  575. \setbox\@tempboxa\hbox{#1: #2}%
  576. \ifdim \wd\@tempboxa >\hsize % IF longer than one line:
  577. \begin{list}{#1:}{%
  578. \settowidth{\labelwidth}{#1:}
  579. \setlength{\leftmargin}{\labelwidth}
  580. \addtolength{\leftmargin}{\labelsep}
  581. }\item #2 \end{list}\par % Output in quote mode
  582. \else % ELSE center.
  583. \hbox to\hsize{\hfil\box\@tempboxa\hfil}
  584. \fi}
  585. \def\abovestrut#1{\rule[0in]{0in}{#1}\ignorespaces}
  586. \def\belowstrut#1{\rule[-#1]{0in}{#1}\ignorespaces}
  587. \newcommand{\acks}[1]{\section*{Acknowledgments}#1}
  588. \newcommand{\researchnote}[1]{\noindent {\LARGE\itshape Research Note} #1}
  589. \providecommand{\ifprint}[2]{\ifgrayscale#1\else#2\fi}
  590. %% \begin{macrocode}
  591. \ifjmlrhtml
  592. \else
  593. \let\@org@Ginclude@graphics\Ginclude@graphics
  594. \def\Ginclude@graphics#1{%
  595. \begingroup
  596. \let\input@path\Ginput@path
  597. \ifprint{\filename@parse{#1-gray}}{\filename@parse{#1}}%
  598. \ifx\filename@ext\relax
  599. \@for\Gin@temp:=\Gin@extensions\do{%
  600. \ifx\Gin@ext\relax
  601. \Gin@getbase\Gin@temp
  602. \fi}%
  603. \else
  604. \ifprint{\filename@parse{#1}}{}%
  605. \Gin@getbase{\Gin@sepdefault\filename@ext}%
  606. \ifx\Gin@ext\relax
  607. \@warning{File `#1' not found}%
  608. \def\Gin@base{\filename@area\filename@base}%
  609. \edef\Gin@ext{\Gin@sepdefault\filename@ext}%
  610. \fi
  611. \fi
  612. \ifx\Gin@ext\relax
  613. \ifprint{\@org@Ginclude@graphics{#1}}%
  614. {%
  615. \@latex@error{File `#1' not found}%
  616. {I could not locate the file with any of these extensions:^^J%
  617. \Gin@extensions^^J\@ehc}%
  618. }%
  619. \else
  620. \@ifundefined{Gin@rule@\Gin@ext}%
  621. {\ifx\Gin@rule@*\@undefined
  622. \@latex@error{Unknown graphics extension: \Gin@ext}\@ehc
  623. \else
  624. \expandafter\Gin@setfile\Gin@rule@*{\Gin@base\Gin@ext}%
  625. \fi}%
  626. {\expandafter\expandafter\expandafter\Gin@setfile
  627. \csname Gin@rule@\Gin@ext\endcsname{\Gin@base\Gin@ext}}%
  628. \fi
  629. \endgroup}
  630. \fi
  631. \newcommand{\artappendix}{\par
  632. \setcounter{section}{0}
  633. \setcounter{subsection}{0}
  634. \def\thesection{\Alph{section}}
  635. \def\theHsection{\theHchapter.\Alph{section}}
  636. \def\presectionnum{Appendix~}%
  637. }
  638. \let\appendix\artappendix
  639. \newcommand{\booklinebreak}[1][]{}
  640. \newcounter{chapter}
  641. \renewcommand\thechapter{\@arabic\c@chapter}
  642. \newcommand\@chapapp{\chaptername}
  643. \@addtoreset{section}{chapter}
  644. \newcommand*\chaptermark[1]{}
  645. \newcommand\bookchapter{%
  646. \if@openright\cleardoublepage\else\clearpage\fi
  647. \thispagestyle{plain}%
  648. \global\@topnum\z@
  649. \@afterindentfalse
  650. \secdef\@chapter\@schapter}
  651. \newcommand\artchapter{%
  652. \ClassError{jmlr}{Chapters not permitted in articles}{}}
  653. \let\chapter\artchapter
  654. \def\@chaptoclabel{chapter}
  655. \def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
  656. \refstepcounter{chapter}%
  657. \if@mainmatter
  658. \typeout{\@chapapp\space\thechapter.}%
  659. \addcontentsline{toc}{\@chaptoclabel}%
  660. {\protect\numberline{\thechapter}#1}%
  661. \else
  662. \addcontentsline{toc}{\@chaptoclabel}{#1}%
  663. \fi
  664. \else
  665. \addcontentsline{toc}{\@chaptoclabel}{#1}%
  666. \fi
  667. \chaptermark{#1}%
  668. \addtocontents{lof}{\protect\addvspace{10\p@}}%
  669. \addtocontents{lot}{\protect\addvspace{10\p@}}%
  670. \if@twocolumn
  671. \@topnewpage[\@makechapterhead{#2}]%
  672. \else
  673. \@makechapterhead{#2}%
  674. \@afterheading
  675. \fi}
  676. \newcommand{\chaptertitleformat}[1]{%
  677. \Huge\bfseries#1%
  678. }
  679. \newcommand{\chapternumberformat}[1]{%
  680. \huge\bfseries \@chapapp\space#1\par\nobreak
  681. \vskip 20\p@
  682. }
  683. \newcommand*{\chapterformat}{\raggedright}
  684. \newlength\postchapterskip
  685. \setlength\postchapterskip{40pt}
  686. \newlength\prechapterskip
  687. \setlength\prechapterskip{50pt}
  688. \def\@makechapterhead#1{%
  689. \null\vskip\prechapterskip
  690. {\parindent \z@ \normalfont\chapterformat
  691. \ifnum \c@secnumdepth >\m@ne
  692. \if@mainmatter
  693. \chapternumberformat{\thechapter}%
  694. \fi
  695. \fi
  696. \interlinepenalty\@M
  697. \chaptertitleformat{#1}\par\nobreak
  698. \vskip \postchapterskip
  699. }}
  700. \def\@schapter#1{\if@twocolumn
  701. \@topnewpage[\@makeschapterhead{#1}]%
  702. \else
  703. \@makeschapterhead{#1}%
  704. \@afterheading
  705. \fi}
  706. \def\@makeschapterhead#1{%
  707. \vspace*{\prechapterskip}%
  708. {\parindent \z@
  709. \normalfont\chapterformat
  710. \interlinepenalty\@M
  711. \chaptertitleformat{#1}\par\nobreak
  712. \vskip \postchapterskip
  713. }}
  714. \newcommand*\l@chapter[2]{%
  715. \ifnum \c@tocdepth >\m@ne
  716. \addpenalty{-\@highpenalty}%
  717. \vskip 1.0em \@plus\p@
  718. \setlength\@tempdima{1.5em}%
  719. \begingroup
  720. \parindent \z@ \rightskip \@pnumwidth
  721. \parfillskip -\@pnumwidth
  722. \leavevmode \large\bfseries
  723. \advance\leftskip\@tempdima
  724. \hskip -\leftskip
  725. #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
  726. \penalty\@highpenalty
  727. \endgroup
  728. \fi}
  729. \let\l@appendix\l@chapter
  730. \newcommand\chaptername{Chapter}
  731. \newcommand\frontmatter{%
  732. \cleardoublepage
  733. \@mainmatterfalse
  734. \renewcommand*{\theHchapter}{front-\thechapter}%
  735. \pagenumbering{roman}%
  736. \morefrontmatter
  737. }
  738. \newcommand\morefrontmatter{}
  739. \newcommand\mainmatter{%
  740. \cleardoublepage
  741. \@mainmattertrue
  742. \setcounter{chapter}{0}%
  743. \renewcommand*{\theHchapter}{\thechapter}%
  744. \pagenumbering{arabic}%
  745. \moremainmatter
  746. }
  747. \newcommand\moremainmatter{}
  748. \newcommand\backmatter{%
  749. \if@openright
  750. \cleardoublepage
  751. \else
  752. \clearpage
  753. \fi
  754. \@mainmatterfalse}
  755. \newcommand*{\booktocpreamble}{}
  756. \newcommand*{\booktocpostamble}{}
  757. \newcommand\booktableofcontents{%
  758. \if@twocolumn
  759. \@restonecoltrue\onecolumn
  760. \else
  761. \@restonecolfalse
  762. \fi
  763. \chapter*{\contentsname
  764. \@mkboth{\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
  765. \booktocpreamble
  766. \@starttoc{toc}%
  767. \booktocpostamble
  768. \if@restonecol
  769. \twocolumn
  770. \else
  771. \clearpage
  772. \fi
  773. \@mkboth{}{}%
  774. }
  775. \let\arttableofcontents\tableofcontents
  776. \newcommand{\artpart}{%
  777. \def\toclevel@part{0}%
  778. \if@noskipsec \leavevmode\fi
  779. \par
  780. \addvspace{4ex}%
  781. \@afterindentfalse
  782. \secdef\@artpart\@sartpart
  783. }
  784. \let\@artpart\@part
  785. \let\@sartpart\@spart
  786. \newcommand\bookpart{%
  787. \def\toclevel@part{-1}%
  788. \if@openright
  789. \cleardoublepage
  790. \else
  791. \clearpage
  792. \fi
  793. \thispagestyle{plain}%
  794. \if@twocolumn
  795. \onecolumn
  796. \@tempswatrue
  797. \else
  798. \@tempswafalse
  799. \fi
  800. \preparthook
  801. \secdef\@bookpart\@sbookpart}
  802. \newcommand{\parttitleformat}[1]{%
  803. \Huge\bfseries#1%
  804. }
  805. \newcommand*{\@parttoclabel}{part}
  806. \def\@partapp{\partname}
  807. \newcommand{\partnumberformat}[1]{%
  808. \Huge\bfseries \@partapp\nobreakspace#1\par\nobreak
  809. \vskip 20\p@
  810. }
  811. \newcommand{\preparthook}{\null\vfil}
  812. \newcommand*{\partformat}{\centering}
  813. \def\@bookpart[#1]#2{%
  814. \ifnum \c@secnumdepth >-2\relax
  815. \refstepcounter{part}%
  816. \addcontentsline{toc}{\@parttoclabel}{\protect\numberline{\thepart}#1}%
  817. \else
  818. \addcontentsline{toc}{\@parttoclabel}{#1}%
  819. \fi
  820. \markboth{}{}%
  821. {\interlinepenalty \@M
  822. \normalfont\partformat
  823. \ifnum \c@secnumdepth >-2\relax
  824. \partnumberformat{\thepart}%
  825. \fi
  826. \parttitleformat{#2}\par}%
  827. \postparthook}
  828. \def\@sbookpart#1{%
  829. {\interlinepenalty \@M
  830. \normalfont\partformat
  831. \parttitleformat{#1}\par}%
  832. \postparthook}
  833. \def\postparthook{\vfil\newpage
  834. \if@twoside
  835. \if@openright
  836. \null
  837. \thispagestyle{empty}%
  838. \newpage
  839. \fi
  840. \fi
  841. \if@tempswa
  842. \twocolumn
  843. \fi}
  844. \newcommand\bookappendix{\par
  845. \setcounter{table}{0}%
  846. \setcounter{figure}{0}%
  847. \zeroextracounters
  848. \par
  849. \gdef\theHchapter{\Alph {chapter}}%
  850. \xdef\Hy@chapapp{\Hy@appendixstring}%
  851. \setcounter{chapter}{0}%
  852. \setcounter{section}{0}%
  853. \gdef\@chapapp{\appendixname}%
  854. \gdef\thechapter{\@Alph\c@chapter}%
  855. \def\@write@jmlr@import{\@@write@jmlr@apdimport}%
  856. \csname appendixmore\endcsname
  857. }
  858. \newcommand*{\jmlrbookcommands}{%
  859. \let\part\bookpart
  860. \let\chapter\bookchapter
  861. \let\appendix\bookappendix
  862. \let\tableofcontents\booktableofcontents
  863. \def\thesection{\thechapter.\arabic{section}}%
  864. }
  865. \newcommand*{\jmlrarticlecommands}{%
  866. \let\part\artpart
  867. \let\chapter\artchapter
  868. \let\appendix\artappendix
  869. \let\tableofcontents\arttableofcontents
  870. \def\thesection{\arabic{section}}%
  871. }
  872. \newcommand*{\@jmlr@check@packages}{%
  873. \@ifpackageloaded{epsfig}{%
  874. \ClassError{jmlr}{Obsolete package `epsfig' detected.
  875. \MessageBreak
  876. Please use \string\includegraphics\space to include images
  877. instead}{}}{}%
  878. \@ifpackageloaded{psfig}{%
  879. \ClassError{jmlr}{Obsolete package `psfig' detected.
  880. \MessageBreak
  881. Please use \string\includegraphics\space to include images
  882. instead}{}}{}%
  883. \@ifpackageloaded{subfig}{%
  884. \ClassError{jmlr}{Package `subfig' detected.\MessageBreak
  885. This will cause a conflict if the article is incorporated
  886. \MessageBreak
  887. into a book using jmlbook.cls.
  888. \MessageBreak
  889. Please use \string\subfigure\space and
  890. \string\subtable\space instead}{}}{}%
  891. \@ifpackageloaded{theorem}{%
  892. \ClassError{jmlr}{Package `theorem' detected.\MessageBreak
  893. This can cause a conflict with other packages used by jmlr}{}}{}%
  894. \@ifpackageloaded{ntheorem}{%
  895. \ClassError{jmlr}{Package `ntheorem' detected.\MessageBreak
  896. This can cause a conflict with other packages used by jmlr}{}}{}%
  897. \@ifpackageloaded{amsthm}{%
  898. \ClassError{jmlr}{Package `amsthm' detected.\MessageBreak
  899. This package conflicts with the jmlr class}{}}{}%
  900. \@ifpackageloaded{pdfpages}{Package `pdfpages' detected.\MessageBreak
  901. This can cause a problem for jmlrbook}{}%
  902. \@ifpackageloaded{geometry}{Package `geometry' detected.\MessageBreak
  903. This can cause a problem for jmlrbook}{}%
  904. \@ifpackageloaded{tabularx}{%
  905. \ClassError{jmlr}{Package `tabularx' detected.\MessageBreak
  906. This will break footnote links}{}}{}%
  907. \@ifpackageloaded{jmlr2e}{%
  908. \ClassError{jmlr}{Package `jmlr2e' detected.\MessageBreak
  909. This can't be used with the jmlr class}{}}{}%
  910. }
  911. \AtBeginDocument{%
  912. \@jmlr@check@packages
  913. \let\@jmlr@check@packages\relax
  914. }
  915. \newcommand*{\jmlrSuppressPackageChecks}{%
  916. \let\@jmlr@check@packages\relax
  917. }
  918. \DeclareRobustCommand*{\obsoletefontcs}[1]{%
  919. \ClassWarning{jmlr}{Obsolete command
  920. \expandafter\string\csname#1\endcsname\space detected}%
  921. \csname #1 \endcsname
  922. }
  923. \renewcommand*{\bf}{%
  924. \obsoletefontcs{bf}%
  925. }
  926. \renewcommand*{\it}{%
  927. \obsoletefontcs{it}%
  928. }
  929. \renewcommand*{\sc}{%
  930. \obsoletefontcs{sc}%
  931. }
  932. \renewcommand*{\rm}{%
  933. \obsoletefontcs{rm}%
  934. }
  935. \renewcommand*{\sf}{%
  936. \obsoletefontcs{sf}%
  937. }
  938. \renewcommand*{\tt}{%
  939. \obsoletefontcs{tt}%
  940. }
  941. \providecommand*{\jmlrcheckforpseudocode}{%
  942. \@ifpackageloaded{pseudocode}%
  943. {%
  944. \let\pseudoRETURN\RETURN
  945. \let\pseudoTRUE\TRUE
  946. \let\pseudoFALSE\FALSE
  947. \let\pseudoAND\AND
  948. \let\pseudoOR\OR
  949. \let\pseudoNOT\NOT
  950. \let\pseudoTO\TO
  951. \let\pseudoCOMMENT\COMMENT
  952. \let\pseudoIF\IF
  953. \let\pseudoELSE\ELSE
  954. \let\pseudoFOR\FOR
  955. \let\pseudoFORALL\FORALL
  956. \let\pseudoWHILE\WHILE
  957. \let\pseudoREPEAT\REPEAT
  958. \let\pseudoUNTIL\UNTIL
  959. \let\pseudoENDFOR\ENDFOR
  960. \let\RETURN\undefined
  961. \let\TRUE\undefined
  962. \let\FALSE\undefined
  963. \let\AND\undefined
  964. \let\OR\undefined
  965. \let\NOT\undefined
  966. \let\TO\undefined
  967. \let\COMMENT\undefined
  968. \let\IF\undefined
  969. \let\ELSE\undefined
  970. \let\FOR\undefined
  971. \let\FORALL\undefined
  972. \let\WHILE\undefined
  973. \let\REPEAT\undefined
  974. \let\UNTIL\undefined
  975. \let\ENDFOR\undefined
  976. \preto\pseudocode{%
  977. \let\RETURN\pseudoRETURN
  978. \let\TRUE\pseudoTRUE
  979. \let\FALSE\pseudoFALSE
  980. \let\AND\pseudoAND
  981. \let\OR\pseudoOR
  982. \let\NOT\pseudoNOT
  983. \let\TO\pseudoTO
  984. \let\COMMENT\pseudoCOMMENT
  985. \let\IF\pseudoIF
  986. \let\ELSE\pseudoELSE
  987. \let\FOR\pseudoFOR
  988. \let\FORALL\pseudoFORALL
  989. \let\WHILE\pseudoWHILE
  990. \let\REPEAT\pseudoREPEAT
  991. \let\UNTIL\pseudoUNTIL
  992. \let\ENDFOR\pseudoENDFOR
  993. }%
  994. }%
  995. {}%
  996. }
  997. \jmlrcheckforpseudocode
  998. \endinput
  999. %%
  1000. %% End of file `jmlr.cls'.