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.

1169 lines
34 KiB

4 years ago
  1. %%
  2. %% This is file `jmlrbook.cls',
  3. %% generated with the docstrip utility.
  4. %%
  5. %% The original source files were:
  6. %%
  7. %% jmlr.dtx (with options: `jmlrbook.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{jmlrbook}[2017/08/01 v1.24 (NLCT) JMLR Book Style]
  45. \RequirePackage{xkeyval}
  46. \RequirePackage{setspace}
  47. \newcommand*\jmlrprefacepath{}
  48. \IfFileExists{currfile.sty}%
  49. {
  50. \RequirePackage{currfile}
  51. \renewcommand*\jmlrprefacepath{\currfilepath}
  52. }%
  53. {%
  54. \RequirePackage{fink}
  55. \ifdef\finkpath
  56. {%
  57. \renewcommand*\jmlrprefacepath{\finkpath}%
  58. }
  59. {%
  60. \ClassWarning{jmlrbook}{Install `currfile' package or update
  61. `fink' package}
  62. }
  63. }
  64. \providecommand*{\jmlrprehyperref}{}
  65. \newif\ifgrayscale
  66. \grayscalefalse
  67. \DeclareOptionX{draft}{\setlength\overfullrule{5pt}}
  68. \DeclareOptionX{final}{\setlength\overfullrule{0pt}}
  69. \DeclareOptionX{color}{\grayscalefalse}
  70. \DeclareOptionX{gray}{\grayscaletrue}
  71. \DeclareOptionX{letterpaper}{\PassOptionsToClass{\CurrentOption}{jmlr}}
  72. \DeclareOptionX{7x10}{\PassOptionsToClass{\CurrentOption}{jmlr}}
  73. \DeclareOptionX{html}{\PassOptionsToClass{\CurrentOption}{jmlr}}
  74. \DeclareOptionX{nohtml}{\PassOptionsToClass{\CurrentOption}{jmlr}}
  75. \newcommand*{\jmlrprefaceheader}{%
  76. \phantomsection
  77. \chapter*{\prefacename}%
  78. \addcontentsline{toc}{chapter}{\prefacename}%
  79. \markboth{\prefacename}{\prefacename}%
  80. }
  81. \DeclareOptionX{wcp}{%
  82. \PassOptionsToClass{\CurrentOption}{jmlr}%
  83. }
  84. \DeclareOptionX{pmlr}{%
  85. \PassOptionsToClass{\CurrentOption}{jmlr}%
  86. }
  87. \DeclareOptionX{nowcp}{%
  88. \PassOptionsToClass{\CurrentOption}{jmlr}%
  89. }
  90. \DeclareOptionX{tablecaptiontop}{\PassOptionsToClass{\CurrentOption}{jmlr}}
  91. \DeclareOptionX{tablecaptionbottom}{\PassOptionsToClass{\CurrentOption}{jmlr}}
  92. \DeclareOptionX{10pt}{\PassOptionsToClass{\CurrentOption}{jmlr}}
  93. \DeclareOptionX{11pt}{\PassOptionsToClass{\CurrentOption}{jmlr}}
  94. \DeclareOptionX{12pt}{\PassOptionsToClass{\CurrentOption}{jmlr}}
  95. \@twosidetrue
  96. \DeclareOptionX{oneside}{\@twosidefalse \@mparswitchfalse}
  97. \DeclareOptionX{twoside}{\@twosidetrue \@mparswitchtrue}
  98. \define@boolkey{jmlrbook.cls}[jmlr]{pdfxa}[true]{}
  99. \jmlrpdfxafalse
  100. \ProcessOptionsX
  101. \@ifundefined{jmlrgrayscale}{}%
  102. {%
  103. \ifnum\jmlrgrayscale=0\relax
  104. \grayscalefalse
  105. \else
  106. \grayscaletrue
  107. \fi
  108. }
  109. \ifgrayscale
  110. \newcommand*{\jmlrwritepdfinfo}{%
  111. \protected@write\@auxout{}{\string\jmlrbook@info{\xmpAuthor}{\xmpTitle}}%
  112. }
  113. \ifjmlrpdfxa
  114. \def\convertDate{\getYear}
  115. {\catcode`\D=12
  116. \gdef\getYear D:#1#2#3#4{\edef\xYear{#1#2#3#4}\getMonth}
  117. }
  118. \def\getMonth#1#2{\edef\xMonth{#1#2}\getDay}
  119. \def\getDay#1#2{\edef\xDay{#1#2}\getHour}
  120. \def\getHour#1#2{\edef\xHour{#1#2}\getMin}
  121. \def\getMin#1#2{\edef\xMin{#1#2}\getSec}
  122. \def\getSec#1#2{\edef\xSec{#1#2}\getTZh}
  123. {%
  124. \catcode`\Z=12
  125. \gdef\tmpz{Z}
  126. }
  127. \def\hash{\expandafter\@gobble\string\#}%
  128. \def\amp{\expandafter\@gobble\string\&}%
  129. \def\xmpAmp{\amp\hash x0026;}%
  130. \def\sep{</rdf:li><rdf:li>}
  131. \def\TextCopyright{\amp\hash x00A9;}
  132. \def\Title#1{\gdef\xmpTitle{#1}}
  133. \def\Author#1{\gdef\xmpAuthor{#1}}
  134. \def\Keywords#1{\gdef\xmpKeywords{#1}}
  135. \let\xmpKeywords\@empty
  136. \let\xmpSubject\xmpKeywords
  137. \def\Creator#1{\gdef\xmpCreator{#1}}
  138. \def\xmpCreator{\@pdfcreator}
  139. \def\Producer#1{\gdef\xmpProducer{#1}}
  140. \def\xmpProducer{pdfTeX}
  141. \def\Volume#1{\gdef\xmpVolume{#1}}
  142. \let\xmpVolume\@empty
  143. \def\Issue#1{\gdef\xmpIssue{#1}}
  144. \let\xmpIssue\@empty
  145. \def\CoverDisplayDate#1{\gdef\xmpCoverDisplayDate{#1}}
  146. \let\xmpCoverDisplayDate\@empty
  147. \def\CoverDate#1{\gdef\xmpCoverDate{#1}}
  148. \let\xmpCoverDate\@empty
  149. \def\Copyright#1{\gdef\xmpCopyright{#1}}
  150. \let\xmpCopyright\@empty
  151. \def\Doi#1{\gdef\xmpDoi{#1}}
  152. \let\xmpDoi\@empty
  153. \def\Lastpage#1{\gdef\xmpLastpage{#1}}
  154. \let\xmpLastpage\@empty
  155. \def\Firstpage#1{\gdef\xmpFirstpage{#1}}
  156. \let\xmpFirstpage\@empty
  157. \def\Journaltitle#1{\gdef\xmpJournaltitle{#1}}
  158. \let\xmpJournaltitle\@empty
  159. \def\Journalnumber#1{\gdef\xmpJournalnumber{#1}}
  160. \let\xmpJournalnumber\@empty
  161. \def\Org#1{\gdef\xmpOrg{#1}}
  162. \let\xmpOrg\@empty
  163. \def\CreatorTool#1{\gdef\xmpCreatorTool{#1}}
  164. \def\xmpCreatorTool{\xmpProducer}
  165. \def\AuthoritativeDomain#1{\gdef\xmpAuthoritativeDomain{#1}}
  166. \let\xmpAuthoritativeDomain\@empty
  167. \def\findUUID#1{\edef\tmpstring{\pdfmdfivesum{#1}}
  168. \expandafter\eightofnine\tmpstring\end}
  169. \def\eightofnine#1#2#3#4#5#6#7#8#9\end{%
  170. \xdef\eightchars{#1#2#3#4#5#6#7#8}
  171. \fouroffive#9\end}
  172. \def\fouroffive#1#2#3#4#5\end{\xdef\ffourchars{#1#2#3#4}
  173. \sfouroffive#5\end}
  174. \def\sfouroffive#1#2#3#4#5\end{\xdef\sfourchars{#1#2#3#4}
  175. \tfouroffive#5\end}
  176. \def\tfouroffive#1#2#3#4#5\end{\xdef\tfourchars{#1#2#3#4}
  177. \xdef\laststring{#5}}
  178. \def\uuid{\eightchars-%
  179. \ffourchars-%
  180. \sfourchars-%
  181. \tfourchars-%
  182. \laststring}
  183. \def\getTZh#1{%
  184. \def\TZprefix{#1}%
  185. \ifx\TZprefix\tmpz
  186. \def\xTZsign{+}%
  187. \def\xTZh{00}%
  188. \def\xTZm{00}%
  189. \let\getTZnext\doConvDate
  190. \else
  191. \let\xTZsign\TZprefix
  192. \let\getTZnext\getTZhm
  193. \fi
  194. \getTZnext
  195. }
  196. \def\getTZhm#1#2'#3#4'{%
  197. \edef\xTZh{#1#2}%
  198. \edef\xTZm{#3#4}%
  199. \doConvDate
  200. }
  201. \def\doConvDate{%
  202. \edef\convDate{\xYear-\xMonth-\xDay
  203. T\xHour:\xMin:\xSec\xTZsign\xTZh:\xTZm}%
  204. }
  205. \newcommand{\@pre@hyperref}{%
  206. \IfFileExists{FOGRA39L.icc}%
  207. {%
  208. \pdfminorversion=3
  209. \pdfpageattr{/MediaBox[0 0 595 793]
  210. /BleedBox[0 0 595 793]
  211. /TrimBox[25 20 570 773]}%
  212. \findUUID{\jobname.pdf}%
  213. \edef\xmpdocid{\uuid}%
  214. \findUUID{\pdfcreationdate}%
  215. \edef\xmpinstid{\uuid}%
  216. \InputIfFileExists{\jobname.xmpdata}{}{}%
  217. \RequirePackage{xmpincl}%
  218. \expandafter\convertDate\pdfcreationdate
  219. \def\@pctchar{\expandafter\@gobble\string\%}
  220. \def\@bchar{\expandafter\@gobble\string\\}
  221. \immediate\pdfobj stream attr{/N 4} file{FOGRA39L.icc}
  222. \edef\OBJ@CVR{\the\pdflastobj}
  223. \pdfcatalog{/OutputIntents [ <<
  224. /Type/OutputIntent
  225. /S/GTS_PDFX
  226. /OutputCondition (FOGRA39)
  227. /OutputConditionIdentifier (FOGRA39 \@bchar(ISO Coated v2
  228. 300\@pctchar\space \@bchar(ECI\@bchar)\@bchar))
  229. /DestOutputProfile \OBJ@CVR\space 0 R
  230. /RegistryName(http://www.color.org)
  231. >> ]}
  232. \input glyphtounicode.tex
  233. \input glyphtounicode-cmr.tex
  234. \pdfgentounicode=1
  235. \RequirePackage[draft,pdftex,pdfpagemode=UseNone,bookmarks=false]{hyperref}%
  236. }%
  237. {%
  238. \ClassError{jmlrbook}{Can't find `FOGRA39L.icc'}%
  239. {Download ISOcoated\string_v2\string_330\string_bas.icc from
  240. http://www.colormanagement.org/en/isoprofile.html
  241. Rename it FOGRA39L.icc and put it in the pdfx folder}%
  242. }%
  243. }
  244. \renewcommand*{\jmlrwritepdfinfo}{%
  245. \begingroup
  246. \let\&=\xmpAmp
  247. \IfFileExists{pdfx-1a.xmp}{%
  248. \pdfcompresslevel=0
  249. \immediate\pdfobj stream attr {/Type /Metadata /Subtype /XML}
  250. file{pdfx-1a.xmpi}
  251. \pdfcatalog{/Metadata \the\pdflastobj\space 0 R}
  252. }%
  253. {}%
  254. \endgroup
  255. \protected@write\@auxout{}{\string\jmlrbook@info{\xmpAuthor}{\xmpTitle}}%
  256. \pdfinfo{
  257. /Author(\xmpAuthor)%
  258. /Title(\xmpTitle)%
  259. /Creator(\xmpProducer)%
  260. /CreationDate(\convDate)%
  261. /ModDate(\convDate)%
  262. /Producer(\xmpProducer)%
  263. /Trapped /False
  264. /GTS_PDFXVersion (PDF/X-1:2001)%
  265. /GTS_PDFXConformance (PDF/X-1a:2001)%
  266. }%
  267. }
  268. \fi
  269. \else
  270. \newcommand*{\jmlrwritepdfinfo}{}
  271. \fi
  272. \newcommand*{\jmlrbook@info}[2]{}
  273. \newcommand*{\jmlrbook@location}[1]{}
  274. \newcommand*{\@post@hyperref}{%
  275. \let\@org@c@lenddoca\c@lenddoca
  276. \let\c@lenddoca\undefined
  277. }
  278. \let\@org@LoadClass\LoadClass
  279. \def\LoadClass#1{\let\LoadClass\@org@LoadClass\@org@LoadClass{jmlr}}
  280. \@org@LoadClass{combine}
  281. \let\c@lenddoca\@org@c@lenddoca
  282. \RequirePackage{combnat}
  283. \renewcommand\c@laNAT@parse[1]{{%
  284. \let\protect=\@unexpandable@protect\let~\relax
  285. \let\active@prefix=\@gobble
  286. \xdef\NAT@temp{\csname b@#1\@extra@b@citeb\endcsname}}%
  287. \expandafter\NAT@split\NAT@temp?????@@%
  288. \expandafter\NAT@parse@date\NAT@date??????@@%
  289. \ifciteindex\NAT@index\fi}
  290. \renewcommand\c@lbNAT@parse[1]{{%
  291. \let\protect=\@unexpandable@protect\let~\relax
  292. \let\active@prefix=\@gobble
  293. \xdef\NAT@temp{\csname B?\jobname?@#1\@extra@b@citeb\endcsname}}%
  294. \expandafter\NAT@split\NAT@temp?????@@%
  295. \expandafter\NAT@parse@date\NAT@date??????@@%
  296. \ifciteindex\NAT@index\fi}
  297. \newif\if@openright
  298. \@openrighttrue
  299. \newif\if@mainmatter
  300. \newcommand*{\pagerule}[1][0pt]{\par\noindent
  301. \rule[#1]{\linewidth}{2pt}\par}
  302. \ifjmlrhtml
  303. \newenvironment{preface}[1][preface]%
  304. {%
  305. \noindent\HCode{<h2>\prefacename</h2>}%
  306. }%
  307. {%
  308. }
  309. \else
  310. \newenvironment{preface}[1][preface]%
  311. {%
  312. \jmlrprefaceheader
  313. \protected@write\@mainauxout
  314. {}{\string\@prefacestart{\thepage}{\arabic{page}}}%
  315. \protected@write\@mainauxout{}{\string\@prefacefile{\jmlrprefacepath}{#1}}%
  316. }%
  317. {%
  318. \protected@write\@mainauxout{}{\string\@prefaceend{\thepage}}%
  319. }
  320. \fi
  321. \newcommand*{\prefacename}{Preface}
  322. \newcommand*{\@prefacefile}[2]{}
  323. \newcommand*{\@prefacestart}[2]{}
  324. \newcommand*{\@prefaceend}[1]{}
  325. \newcommand*{\@prefaceeditor}[1]{}
  326. \newcommand*{\chapterrefname}{Chapter}
  327. \newcommand*{\chaptersrefname}{Chapters}
  328. \newcommand*{\chapterref}[1]{%
  329. \objectref{#1}{\chapterrefname}{\chaptersrefname}{}{}}
  330. \newcommand*{\articlepageref}[1]{%
  331. \pageref{#1jmlrstart}%
  332. }
  333. \newcommand*{\articlepagesref}[1]{%
  334. \pageref{#1jmlrstart}--\pageref{#1jmlrend}%
  335. }
  336. \newcommand*{\@articlepagesref}{%
  337. \pageref{jmlrstart}--\pageref{jmlrend}%
  338. }
  339. \newcommand*{\articletitleref}[1]{\nameref{#1jmlrstart}}
  340. \newcommand*{\articleauthorref}[1]{%
  341. \@ifundefined{@jmlr@author@#1}%
  342. {%
  343. \ClassWarning{jmlrbook}{Label `#1' undefined}%
  344. }%
  345. {%
  346. \@nameuse{@jmlr@author@#1}%
  347. }%
  348. }
  349. \renewcommand*\jmlrtitlehook{%
  350. \hypersetup{pdftitle={\@shorttitle}}%
  351. \def\xmpTitle{\@shorttitle}%
  352. \let\jmlrtitlehook\relax
  353. }
  354. \providecommand*{\xmpTitle}{\@title}%
  355. \renewcommand*\jmlrauthorhook{%
  356. \ifx\@sauthor\@empty
  357. \hypersetup{pdfauthor={\@author}}%
  358. \else
  359. \hypersetup{pdfauthor={\@sauthor}}%
  360. \fi
  361. \def\xmpAuthor{\@sauthor}%
  362. \let\jmlrauthorhook\relax
  363. \let\@shortauthor\@empty
  364. }
  365. \providecommand*\xmpAuthor{\@author}%
  366. \newcommand*{\@subtitle}{}
  367. \newcommand*{\subtitle}[1]{\renewcommand*{\@subtitle}{#1}}
  368. \newcommand*{\@volume}{\@jmlrvolume}
  369. \newcommand*{\volume}[1]{%
  370. \renewcommand*{\@volume}{#1}%
  371. \ifjmlrpdfxa
  372. \let\xmpVolume\@volume
  373. \fi
  374. }
  375. \newcommand*{\@issue}{\@jmlrissue}
  376. \newcommand*{\issue}[1]{%
  377. \renewcommand*{\@issue}{#1}%
  378. \ifjmlrpdfxa
  379. \let\xmpIssue\@issue
  380. \fi
  381. }
  382. \newcommand*{\thejmlrworkshop}{\@jmlrworkshop}
  383. \newcommand*{\@team}{}
  384. \newcommand*{\team}[1]{\renewcommand*{\@team}{#1}}
  385. \newcommand*{\@jmlrlocation}{}
  386. \newcommand*{\jmlrlocation}[1]{%
  387. \renewcommand*{\@jmlrlocation}{#1}%
  388. \protected@write\@auxout{}{\string\jmlrbook@location{#1}}%
  389. }
  390. \newcommand*{\@productioneditorname}{Production Editor}
  391. \newcommand*{\@productioneditor}{}
  392. \newcommand*{\productioneditor}[1]{%
  393. \renewcommand*{\@productioneditor}{#1}%
  394. \renewcommand*{\@productioneditorname}{Production Editor}%
  395. }
  396. \newcommand*{\productioneditors}[1]{%
  397. \renewcommand*{\@productioneditor}{#1}%
  398. \renewcommand*{\@productioneditorname}{Production Editors}%
  399. }
  400. \newcommand*{\@logo}{}
  401. \newcommand*{\logo}[2][]{%
  402. \ifjmlrhtml
  403. \def\@logo@tmp{#1}%
  404. \ifx\@logo@tmp\@empty
  405. \renewcommand*{\@logo}{#2}%
  406. \else
  407. \renewcommand*{\@logo}{\HCode{<a href="#1">}#2\HCode{</a>}}%
  408. \fi
  409. \else
  410. \renewcommand*{\@logo}{#2}%
  411. \fi
  412. }
  413. \renewcommand*{\booklinebreak}[1][4]{\linebreak[#1]}
  414. \def\c@lbmaketitle{\jmlrmaketitle}
  415. \newcommand*{\maintitle}{}
  416. \newcommand*{\SetTitleElement}[3]{%
  417. {%
  418. \expandafter\ifx\csname @#1\endcsname\@empty
  419. \else
  420. #2\csname @#1\endcsname#3%
  421. \fi
  422. }%
  423. }
  424. \newcommand{\IfTitleElement}[3]{%
  425. \expandafter\ifx\csname @#1\endcsname\@empty
  426. #2%
  427. \else
  428. #3%
  429. \fi
  430. }
  431. \newcommand{\titlebody}{%
  432. \SetTitleElement{title}{\maintitlefont}{\postmaintitle}%
  433. \SetTitleElement{volume}{\mainvolumefont}{\postmainvolume}%
  434. \SetTitleElement{subtitle}{\mainsubtitlefont}{\postmainsubtitle}%
  435. \SetTitleElement{logo}{\mainlogofont}{\postmainlogo}%
  436. \SetTitleElement{team}{\mainteamfont}{\postmainteam}%
  437. \SetTitleElement{author}{\mainauthorfont}{\postmainauthor}%
  438. \SetTitleElement{productioneditor}{\mainproductioneditorfont}%
  439. {\postmainproductioneditor}%
  440. }
  441. \ifjmlrhtml
  442. \renewcommand{\c@lamaketitle}{%
  443. \HCode{<table cellpadding="2" cellspacing="2" border="0" width="100\%">}%
  444. \HCode{<tbody><tr><td valign="top">}%
  445. \HCode{<h1>}%
  446. \@title\newline
  447. \ifx\@jmlrvolume\@empty
  448. \ifx\@volume\@empty
  449. \else
  450. Volume \@volume
  451. \ifx\@subtitle\@empty\else: \fi
  452. \fi
  453. \else
  454. Volume \@jmlrvolume
  455. \ifx\@subtitle\@empty\else: \fi
  456. \fi
  457. \@subtitle
  458. \HCode{</h1>}%
  459. \newline
  460. \textbf{Editors: \@author}
  461. \HCode{</td><td valign="top">}%
  462. \@logo
  463. \HCode{</td></tr></tbody></table>}%
  464. \let\maintitle\@title
  465. }
  466. \else
  467. \renewcommand{\c@lamaketitle}{%
  468. \pagenumbering{alph}%
  469. \pagestyle{empty}%
  470. \begin{titlepage}%
  471. \let\footnotesize\small
  472. \let\footnoterule\relax
  473. \let\footnote\thanks
  474. \titlebody
  475. \par
  476. \@thanks
  477. \end{titlepage}%
  478. \setcounter{footnote}{0}%
  479. \let\maintitle\@title
  480. \c@lmtitlempty
  481. }
  482. \fi
  483. \renewcommand{\maintitlefont}{%
  484. \null\vskip15pt\relax\par
  485. \flushleft\Huge\bfseries\noindent}
  486. \renewcommand{\postmaintitle}{%
  487. \par\relax
  488. }
  489. \newcommand{\mainvolumefont}{%
  490. \flushleft\noindent\LARGE\bfseries Volume
  491. }
  492. \newcommand{\postmainvolume}{%
  493. \IfTitleElement{subtitle}{}{:}\par\relax
  494. }
  495. \newcommand{\mainissuefont}{%
  496. \flushleft\noindent\LARGE\bfseries Issue
  497. }
  498. \newcommand{\postmainissue}{%
  499. \par\relax
  500. }
  501. \newcommand{\mainsubtitlefont}{%
  502. \flushleft\LARGE\bfseries\noindent}
  503. \newcommand{\postmainsubtitle}{\par}
  504. \newcommand{\mainlogofont}{%
  505. \vfill
  506. \begin{center}}
  507. \newcommand{\postmainlogo}{\end{center}\vfill\par}
  508. \newcommand{\mainteamfont}{\flushleft\bfseries\Large\noindent}
  509. \newcommand{\postmainteam}{\par}
  510. \renewcommand{\mainauthorfont}{%
  511. \flushleft\Large\itshape\doublespacing\noindent}
  512. \renewcommand{\postmainauthor}{%
  513. \par}
  514. \newcommand{\mainproductioneditorfont}{%
  515. \flushleft\Large\noindent \@productioneditorname: \itshape}
  516. \newcommand{\postmainproductioneditor}{\par}
  517. \renewcommand{\maindatefont}{}
  518. \renewcommand{\postmaindate}{}
  519. \ifjmlrhtml
  520. \newenvironment{signoff}[2][The Editorial Team]{%
  521. \def\Editor##1{##1\par\vskip\baselineskip\noindent\ignorespaces}%
  522. \def\@editorialteam{#1}%
  523. \def\@signoffdate{#2}%
  524. \par\vskip\baselineskip\noindent
  525. \ifx\@signoffdate\@empty
  526. \else
  527. \emph{\@signoffdate}\nopagebreak\par
  528. \nopagebreak\vskip\baselineskip\noindent
  529. \fi
  530. \ifx\@editorialteam\@empty
  531. \else
  532. \@editorialteam:\nopagebreak\par\nopagebreak\vskip\baselineskip
  533. \fi
  534. \nopagebreak\noindent\ignorespaces
  535. }%
  536. {%
  537. }%
  538. \else
  539. \newenvironment{signoff}[2][The Editorial Team]{%
  540. \def\Editor##1{%
  541. \protected@write\@mainauxout{}{\string\@prefaceeditor{##1}}%
  542. \begin{tabular}{@{}l@{}}%
  543. ##1%
  544. \end{tabular}%
  545. \par\vskip\baselineskip\noindent\ignorespaces
  546. }%
  547. \def\@editorialteam{#1}%
  548. \def\@signoffdate{#2}%
  549. \par\vskip\baselineskip\noindent
  550. \ifx\@signoffdate\@empty
  551. \else
  552. \emph{\@signoffdate}\par
  553. \vskip\baselineskip\noindent
  554. \fi
  555. \ifx\@editorialteam\@empty
  556. \else
  557. \@editorialteam:\nopagebreak\par\vskip\baselineskip
  558. \fi
  559. \nopagebreak\noindent\ignorespaces
  560. }%
  561. {%
  562. }
  563. \fi
  564. \newenvironment{authorsignoff}{%
  565. \def\Author##1{\begin{tabular}{@{}p{\linewidth}@{}}%
  566. ##1%
  567. \end{tabular}%
  568. \par\vskip\baselineskip\noindent\ignorespaces
  569. }%
  570. \par\vskip\baselineskip\noindent\ignorespaces
  571. }{%
  572. }
  573. \renewcommand{\zeroextracounters}{%
  574. \@ifundefined{c@theorem}{}{\setcounter{theorem}{0}}%
  575. \@ifundefined{c@algorithm}{}{\setcounter{algorithm}{0}}%
  576. \@ifundefined{c@algocf}{}{\setcounter{algocf}{0}}%
  577. \@ifundefined{c@example}{}{\setcounter{example}{0}}%
  578. \@ifundefined{c@definition}{}{\setcounter{definition}{0}}%
  579. }
  580. \renewcommand*{\contentsname}{Table of Contents}
  581. \def\theHalgorithm{\theHchapter.\thealgorithm}
  582. \def\theHexample{\theHchapter.\theexample}
  583. \def\theHtheorem{\theHchapter.\thetheorem}
  584. \def\theHsection{\theHchapter.\thesection}
  585. \def\theHsubsection{\theHchapter.\thesubsection}
  586. \def\theHsubsubsection{\theHchapter.\thesubsubsection}
  587. \def\theHparagraph{\theHchapter.\theparagraph}
  588. \def\theHsubfigure{\theHfigure.\arabic{subfigure}}
  589. \def\theHsubtable{\theHtable.\arabic{subtable}}
  590. \def\theHfootnote{\theHchapter.\alpha{footnote}}
  591. \def\theHtable{\theHchapter.\arabic{table}}
  592. \def\theHfigure{\theHchapter.\arabic{figure}}
  593. \def\theHalgocf{\theHchapter.\thealgocf}
  594. \renewcommand*{\mailto}[1]{%
  595. \href{mailto:#1}{\nolinkurl{#1}}%
  596. }
  597. \c@lhaschapterfalse
  598. \let\c@lthesec\thesection
  599. \newcommand\doimportchapterHref{%
  600. \edef\@currentHref{chapter.\thechapter}%
  601. }
  602. \def\toclevel@appendix{-1}
  603. \def\Xprefix{}
  604. \DeclareRobustCommand\Xref{\@ifstar\@Xrefstar\T@Xref}%
  605. \DeclareRobustCommand\Xpageref{%
  606. \@ifstar\@Xpagerefstar\T@Xpageref
  607. }%
  608. \def\HyRef@StarSetXRef#1{%
  609. \begingroup
  610. \Hy@safe@activestrue
  611. \edef\x{#1}%
  612. \@onelevel@sanitize\x
  613. \edef\x{\endgroup
  614. \noexpand\HyRef@@StarSetRef
  615. \expandafter\noexpand\csname r@\Xprefix\x\endcsname{\x}%
  616. }%
  617. \x
  618. }
  619. \def\@Xrefstar#1{%
  620. \HyRef@StarSetXRef{#1}\@firstoffive
  621. }
  622. \def\@Xpagerefstar#1{%
  623. \HyRef@StarSetXRef{#1}\@secondoffive
  624. }
  625. \def\T@Xref#1{%
  626. \Hy@safe@activestrue
  627. \expandafter\@setXref\csname r@\Xprefix#1\endcsname\@firstoffive{#1}%
  628. \Hy@safe@activesfalse
  629. }%
  630. \def\T@Xpageref#1{%
  631. \Hy@safe@activestrue
  632. \expandafter\@setXref\csname r@\Xprefix#1\endcsname\@secondoffive{#1}%
  633. \Hy@safe@activesfalse
  634. }%
  635. \def\Xlabel#1{%
  636. \@bsphack
  637. \begingroup
  638. \@onelevel@sanitize\@currentlabelname
  639. \edef\@currentlabelname{%
  640. \expandafter\strip@period\@currentlabelname\relax.\relax\@@@
  641. }%
  642. \protected@write\@mainauxout{}{%
  643. \string\newlabel{\Xprefix#1}{{\@currentlabel}{\thepage}%
  644. {\@currentlabelname}{\@currentHref}{}}%
  645. }%
  646. \endgroup
  647. \@esphack
  648. }
  649. \let\ltx@label\Xlabel
  650. \def\@setXref#1#2#3{% csname, extract group, refname
  651. \ifx#1\relax
  652. \protect\G@refundefinedtrue
  653. \nfss@text{\reset@font\bfseries ??}%
  654. \@latex@warning{%
  655. Reference `#3' on page \thepage \space undefined%
  656. }%
  657. \else
  658. \expandafter\Hy@setref@link#1\@empty\@empty\@nil{#2}%
  659. \fi
  660. }
  661. \AtBeginDocument{%
  662. \renewcommand\@secondoffive[5]{#2}%
  663. \jmlrwritepdfinfo
  664. \let\jmlrwritepdfinfo\relax
  665. }
  666. \def\@setimportlabel{%
  667. \let\@mainauxout\@auxout
  668. \let\HRlabel\label
  669. }
  670. \AtBeginDocument{\@jmlrbegindoc}
  671. \newcommand*\@jmlrbegindoc{
  672. \@setimportlabel
  673. \gdef\@setimportlabel{\let\ref\Xref \let\pageref\Xpageref}%
  674. \let\ReadBookmarks\relax
  675. \@ifundefined{@beginmainauxhook}{}{\@beginmainauxhook}%
  676. }
  677. \let\@org@InputIfFileExists\InputIfFileExists
  678. \newenvironment{jmlrpapers}{%
  679. \def\@begindocumenthook{%
  680. \@jmlrbegindoc
  681. \let\bibcite\c@lbNATbibcite
  682. }
  683. \def\@enddocumenthook{%
  684. \@jmlrenddoc
  685. \let\bibcite\c@lbNAT@testdef
  686. }
  687. \begin{papers}[]
  688. \if@twocolumn
  689. \def\@jmlr@restore{\twocolumn}%
  690. \else
  691. \def\@jmlr@restore{\onecolumn}%
  692. \fi
  693. \jmlrarticlecommands
  694. \let\importpubpaper\@importpubpaper
  695. \let\importpaper\@importpaper
  696. \let\importarticle\@importarticle
  697. \let\label\Xlabel
  698. \let\ref\Xref
  699. \pagestyle{article}%
  700. }{%
  701. \@jmlr@restore
  702. \end{papers}
  703. }
  704. \newcommand{\addtomaincontents}[2]{%
  705. \protected@write\@mainauxout{\let\label\@gobble\let\index\@gobble
  706. \let\glossary\@gobble}{\string\@writefile{#1}{#2}}%
  707. }
  708. \newcommand*{\@write@author}[2]{%
  709. \def\@jmlr@authors@sep{ and }%
  710. \protected@write\@mainauxout{}{%
  711. \string\@new@articleauthor{#1}{#2}%
  712. }%
  713. }
  714. \newcommand*{\@new@articleauthor}[2]{%
  715. \expandafter\gdef\csname @jmlr@author@#1\endcsname{%
  716. \hyperref[#1jmlrstart]{#2}}%
  717. }
  718. \newcommand*{\@@write@jmlr@import}[3]{%
  719. \protected@write\@mainauxout{}{\string\@jmlr@import{#1}{#2}{#3}}%
  720. }
  721. \newcommand*{\@jmlr@import}[3]{}
  722. \newcommand*{\@@write@jmlr@apdimport}[3]{%
  723. \protected@write\@mainauxout{}{\string\@jmlr@apdimport{#1}{#2}{#3}}%
  724. }
  725. \newcommand*{\@jmlr@apdimport}[3]{}
  726. \def\@write@jmlr@import{\@@write@jmlr@import}
  727. \def\jmlrpremaketitlehook{%
  728. \cleardoublepage
  729. \phantomsection
  730. \let\@currentlabelname\@shorttitle
  731. \refstepcounter{chapter}%
  732. }%
  733. \newcommand*{\jmlrimporthook}{}
  734. \newcommand*{\@importpubpaper}[4][\@importdir\@importfile]{%
  735. \bgroup
  736. \def\@importdir{#2/}%
  737. \def\@importfile{#3}%
  738. \@write@jmlr@import{#1}{#2}{#3}%
  739. \def\@extra@b@citeb{#1}%
  740. \def\@extra@binfo{#1}%
  741. \jmlrpages{#4}%
  742. \graphicspath{{\@importdir}}%
  743. \def\jmlrmaketitlehook{%
  744. \label{}%
  745. \def\titlebreak{ }%
  746. \addtomaincontents{toc}%
  747. {%
  748. \protect\contentsline{papertitle}{\@title}{\thepage}%
  749. {page.\thepage}}%
  750. \pdfbookmark{\@shorttitle}{chapter.\theHchapter}%
  751. \def\@jmlr@authors@sep{ \& }%
  752. \tocchapterpubauthor{\@jmlr@authors}%
  753. {%
  754. \@jmlrabbrvproceedings
  755. \ifx\@jmlrvolume\@empty
  756. \ifx\@jmlrpages\@empty\else\space\fi
  757. \else
  758. \space\@jmlrvolume
  759. \ifx\@jmlrissue\@empty
  760. \else
  761. (\@jmlrissue)%
  762. \fi
  763. \ifx\@jmlrpages\@empty\else:\fi
  764. \fi
  765. \ifx\@jmlrpages\@empty
  766. \else
  767. \@jmlrpages
  768. \ifx\@jmlryear\@empty\else,\fi
  769. \fi
  770. \space\@jmlryear
  771. }%
  772. \@write@author{#1}{\@jmlr@authors}%
  773. }%
  774. \def\InputIfFileExists##1##2##3{%
  775. \IfFileExists{##1}{%
  776. \@org@InputIfFileExists{##1}{##2}{##3}%
  777. }%
  778. {%
  779. \@org@InputIfFileExists{\@importdir##1}{##2}{##3}%
  780. }%
  781. }%
  782. \def\Xprefix{#1}%
  783. \jmlrimporthook
  784. \import{\@importdir\@importfile}%
  785. \def\Xprefix{}%
  786. \egroup
  787. \gdef\@shortauthor{}%
  788. \gdef\@shorttitle{}%
  789. \gdef\@firstauthor{}%
  790. \gdef\@jmlr@authors{\@jmlrauthors}%
  791. \gdef\@jmlrauthors{}%
  792. \gdef\@firstsurname{}%
  793. }
  794. \newcommand{\importpubpaper}[4][]{%
  795. \ClassError{jmlrbook}{\string\importpubpaper\space
  796. not permitted outside `jmlrpapers' environment}{}%
  797. }
  798. \newcommand{\@importpaper}[3][\@importdir\@importfile]{%
  799. \bgroup
  800. \def\@importdir{#2/}%
  801. \def\@importfile{#3}%
  802. \@write@jmlr@import{#1}{#2}{#3}%
  803. \def\@extra@b@citeb{#1}%
  804. \def\@extra@binfo{#1}%
  805. \jmlrpages{\protect\@articlepagesref}%
  806. \graphicspath{{\@importdir}}%
  807. \def\jmlrmaketitlehook{%
  808. \label{}%
  809. \def\titlebreak{ }%
  810. \addtomaincontents{toc}%
  811. {%
  812. \protect\contentsline{papertitle}{\@title}{\thepage}%
  813. {page.\thepage}}%
  814. \pdfbookmark{\@shorttitle}{chapter.\theHchapter}%
  815. \def\@jmlr@authors@sep{ \& }%
  816. \tocchapterpubauthor{\@jmlr@authors}%
  817. {%
  818. \@jmlrabbrvproceedings
  819. \ifx\@jmlrvolume\@empty
  820. \space
  821. \else
  822. \space\@jmlrvolume
  823. \ifx\@jmlrissue\@empty
  824. \else
  825. (\@jmlrissue)%
  826. \fi
  827. :%
  828. \fi
  829. \protect\articlepagesref{#1}%
  830. \ifx\@jmlryear\@empty\else,\fi
  831. \space\@jmlryear
  832. }%
  833. \@write@author{#1}{\@jmlr@authors}%
  834. }%
  835. \def\InputIfFileExists##1##2##3{%
  836. \IfFileExists{##1}{%
  837. \@org@InputIfFileExists{##1}{##2}{##3}%
  838. }%
  839. {%
  840. \@org@InputIfFileExists{\@importdir##1}{##2}{##3}%
  841. }%
  842. }%
  843. \def\Xprefix{#1}%
  844. \let\jmlrvolume\@gobble
  845. \let\jmlryear\@gobble
  846. \let\jmlrworkshop\@gobble
  847. \let\jmlrissue\@gobble
  848. \let\jmlrpages\@gobble
  849. \jmlrimporthook
  850. \import{\@importdir\@importfile}%
  851. \def\Xprefix{}%
  852. \egroup
  853. \gdef\@shortauthor{}%
  854. \gdef\@shorttitle{}%
  855. \gdef\@firstauthor{}%
  856. \gdef\@jmlr@authors{\@jmlrauthors}%
  857. \gdef\@jmlrauthors{}%
  858. \gdef\@firstsurname{}%
  859. }
  860. \newcommand{\importpaper}[3][]{%
  861. \ClassError{jmlrbook}{\string\importpaper\space
  862. not permitted outside `jmlrpapers' environment}{}%
  863. }
  864. \newcommand{\@importarticle}[3][\@importdir\@importfile]{%
  865. \bgroup
  866. \def\@importdir{#2/}%
  867. \def\@importfile{#3}%
  868. \@write@jmlr@import{#1}{#2}{#3}%
  869. \def\@extra@b@citeb{#1}%
  870. \def\@extra@binfo{#1}%
  871. \def\jmlrmaketitlehook{%
  872. \def\titlebreak{ }%
  873. \addtomaincontents{toc}%
  874. {%
  875. \protect\contentsline{papertitle}{\@title}{\thepage}%
  876. {page.\thepage}}%
  877. \label{}%
  878. \pdfbookmark{\@shorttitle}{chapter.\theHchapter}%
  879. \def\@jmlr@authors@sep{ \& }%
  880. \tocchapterauthor{\@jmlr@authors}%
  881. \@write@author{#1}{\@jmlr@authors}%
  882. \jmlrpages{}%
  883. \jmlrvolume{}%
  884. \jmlryear{}%
  885. \jmlrsubmitted{}%
  886. \jmlrpublished{}%
  887. \jmlrproceedings{}{}%
  888. }%
  889. \graphicspath{{\@importdir}}%
  890. \def\InputIfFileExists##1##2##3{%
  891. \IfFileExists{##1}{%
  892. \@org@InputIfFileExists{##1}{##2}{##3}%
  893. }%
  894. {%
  895. \@org@InputIfFileExists{\@importdir##1}{##2}{##3}%
  896. }%
  897. }%
  898. \def\Xprefix{#1}%
  899. \jmlrimporthook
  900. \let\ps@jmlrtps\ps@articlet
  901. \import{\@importdir\@importfile}%
  902. \def\Xprefix{}%
  903. \egroup
  904. \gdef\@shortauthor{}%
  905. \gdef\@shorttitle{}%
  906. \gdef\@firstauthor{}%
  907. \gdef\@jmlr@authors{\@jmlrauthors}%
  908. \gdef\@jmlrauthors{}%
  909. \gdef\@firstsurname{}%
  910. }
  911. \newcommand{\importarticle}[3][]{%
  912. \ClassError{jmlrbook}{\string\importarticle\space
  913. not permitted outside `jmlrpapers' environment}{}%
  914. }
  915. \newcommand{\addtocpart}[1]{%
  916. \cleardoublepage
  917. \refstepcounter{tocpart}%
  918. \addtocontents{toc}{\protect\tocpart{#1}}%
  919. \pdfbookmark[-1]{#1}{part.\thetocpart}%
  920. }
  921. \newcounter{tocpart}
  922. \newcommand{\tocpart}[1]{%
  923. \addpenalty{-\@highpenalty}%
  924. \vskip 1.0ex \@plus\p@
  925. \setlength\@tempdima{2.25em}%
  926. \begingroup
  927. \parindent \z@ \rightskip \@pnumwidth
  928. \parfillskip -\@pnumwidth
  929. \leavevmode \large\bfseries
  930. \advance\leftskip\@tempdima
  931. \hskip -\leftskip
  932. #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss \null}\par
  933. \penalty\@highpenalty
  934. \endgroup
  935. }
  936. \setlength{\prechapterskip}{3em}
  937. \setlength{\postchapterskip}{20pt}
  938. \renewcommand{\chapternumberformat}[1]{%
  939. \Large\bfseries \@chapapp\space#1\par
  940. }
  941. \renewcommand{\chaptertitleformat}[1]{%
  942. \Large\bfseries #1}
  943. \renewcommand*{\chapterformat}{%
  944. \raggedright
  945. }
  946. \renewcommand{\preparthook}{\cleardoublepage\null\vfil}
  947. \renewcommand{\partnumberformat}[1]{%
  948. \Huge\bfseries \@partapp\nobreakspace#1\par\nobreak
  949. \vskip 20\p@
  950. }
  951. \def\postparthook{%
  952. \thispagestyle{empty}%
  953. \vfil\newpage
  954. \null
  955. \thispagestyle{empty}%
  956. \newpage
  957. }
  958. \newcommand{\@curparthead}{}
  959. \renewcommand{\parttitleformat}[1]{#1%
  960. \gdef\@curparthead{\@partapp\space \thepart. #1}%
  961. \@mkboth{\@curparthead}{\@curparthead}%
  962. }
  963. \renewcommand{\firstpageno}[1]{}
  964. \newcommand{\tocchapterauthor}[1]{%
  965. \addtomaincontents{toc}{\protect\contentsline{chapterauthor}{%
  966. #1}{}{}}%
  967. }
  968. \newcommand{\tocchapterpubauthor}[2]{%
  969. \addtomaincontents{toc}{\protect\contentsline{chapterauthor}{%
  970. #1; #2.}{}{}}%
  971. }
  972. \renewcommand*\@pnumwidth{2em}
  973. \renewcommand*\l@part[2]{%
  974. \ifnum \c@tocdepth >\m@ne
  975. \addpenalty{-\@highpenalty}%
  976. \vskip 1.0em \@plus\p@
  977. %\setlength\@tempdima{5em}%
  978. \settowidth\@tempdima{\large\bfseries \@partapp\space MM}%
  979. \vbox{%
  980. \pagerule
  981. \begingroup
  982. \parindent \z@ \rightskip \@pnumwidth
  983. \parfillskip -\@pnumwidth
  984. \leavevmode \large\bfseries
  985. \advance\leftskip\@tempdima
  986. \hskip -\leftskip
  987. \renewcommand*\numberline[1]{\hb@xt@ \@tempdima
  988. {\@partapp\space ##1\hfil }}%
  989. #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss
  990. \normalfont\normalsize #2}\par
  991. \penalty\@highpenalty
  992. \endgroup
  993. \pagerule
  994. }%
  995. \fi}
  996. \renewcommand{\l@chapter}[2]{%
  997. \ifnum\c@tocdepth>\m@ne
  998. \addpenalty{-\@highpenalty}%
  999. \vskip 1.0em \@plus \p@
  1000. \setlength\@tempdima{2em}%
  1001. \begingroup
  1002. \parindent \z@
  1003. \rightskip \@pnumwidth
  1004. \parfillskip -\@pnumwidth
  1005. \leavevmode \large \bfseries
  1006. \advance \leftskip \@tempdima
  1007. \hskip -\leftskip
  1008. \renewcommand*\numberline[1]{\hb@xt@ \@tempdima
  1009. {##1\hfil }}%
  1010. #1\nobreak \hfil \nobreak \hb@xt@ \@pnumwidth {\hss
  1011. \normalfont\normalsize #2}\par
  1012. \penalty \@highpenalty
  1013. \endgroup
  1014. \fi
  1015. }
  1016. \newcommand*{\l@papertitle}[2]{%
  1017. \ifnum \c@tocdepth >\m@ne
  1018. \addpenalty{-\@highpenalty}%
  1019. \vskip 1.0em \@plus\p@
  1020. \setlength\@tempdima{3em}%
  1021. \begingroup
  1022. \leavevmode \raggedright\itshape
  1023. #1\nobreak\hfill \nobreak\hb@xt@\@pnumwidth{\hss
  1024. \normalfont#2}%
  1025. \par
  1026. \penalty\@highpenalty
  1027. \endgroup
  1028. \fi
  1029. }
  1030. \newcommand*\l@chapterauthor[2]{%
  1031. \ifnum \c@tocdepth >\m@ne
  1032. \begingroup
  1033. \parindent \z@
  1034. \rightskip \@pnumwidth
  1035. \parfillskip -\@pnumwidth
  1036. \leavevmode \raggedright
  1037. \parbox{\linewidth-\@pnumwidth}{\raggedright#1\par}%
  1038. \par
  1039. \endgroup
  1040. \fi}
  1041. \renewcommand*\l@section[2]{%
  1042. \ifnum \c@tocdepth >\m@ne
  1043. \addpenalty{-\@highpenalty}%
  1044. \vskip 1.0em \@plus\p@
  1045. \setlength\@tempdima{3em}%
  1046. \begingroup
  1047. \parindent \z@ \rightskip \@pnumwidth
  1048. \parfillskip -\@pnumwidth
  1049. \leavevmode \normalsize\mdseries
  1050. \advance\leftskip\@tempdima
  1051. \hskip -\leftskip
  1052. #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
  1053. \penalty\@highpenalty
  1054. \endgroup
  1055. \fi}
  1056. \renewcommand*\l@subsection[2]{%
  1057. \ifnum \c@tocdepth >\m@ne
  1058. \addpenalty{-\@highpenalty}%
  1059. \vskip 1.0em \@plus\p@
  1060. \setlength\@tempdima{3.5em}%
  1061. \begingroup
  1062. \parindent \z@ \rightskip \@pnumwidth
  1063. \parfillskip -\@pnumwidth
  1064. \leavevmode \normalsize\mdseries
  1065. \advance\leftskip\@tempdima
  1066. \hskip -\leftskip
  1067. #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
  1068. \penalty\@highpenalty
  1069. \endgroup
  1070. \fi}
  1071. \renewcommand*{\chaptermark}[1]{%
  1072. \@mkboth{\@curparthead}{\protect\thechapter. #1}%
  1073. }
  1074. \newcommand{\firstpagehead}{}
  1075. \newcommand{\firstpagefoot}{%
  1076. \@reprint\hfill\thepage
  1077. }
  1078. \newcommand*{\headfont}{\reset@font\small\scshape}%
  1079. \newcommand*{\footfont}{\reset@font\small\itshape}%
  1080. \newcommand*{\ps@chplain}{%
  1081. \let\@mkboth\@gobbletwo
  1082. \renewcommand*{\@oddhead}{\headfont\firstpagehead}%
  1083. \renewcommand*{\@evenhead}{}%
  1084. \renewcommand*{\@oddfoot}{\footfont\firstpagefoot}%
  1085. \renewcommand*{\@evenfoot}{\footfont\thepage\hfill
  1086. }%
  1087. }
  1088. \let\ps@plain\ps@chplain
  1089. \newcommand*{\ps@article}{%
  1090. \let\@mkboth\@gobbletwo
  1091. \renewcommand*{\@oddhead}{\headfont\hfill\@shorttitle}%
  1092. \renewcommand*{\@evenhead}{\headfont\@shortauthor\hfill}%
  1093. \renewcommand*{\@oddfoot}{\footfont\hfill\thepage}
  1094. \renewcommand*{\@evenfoot}{\footfont\thepage\hfill}
  1095. }
  1096. \newcommand*{\ps@articlet}{%
  1097. \let\@mkboth\@gobbletwo
  1098. \renewcommand*{\@oddhead}{}%
  1099. \renewcommand*{\@evenhead}{}%
  1100. \renewcommand*{\@oddfoot}{\footfont\hfill\thepage}
  1101. \renewcommand*{\@evenfoot}{\footfont\thepage\hfill}
  1102. }
  1103. \newcommand*{\ps@jmlrbook}{%
  1104. \renewcommand*{\@oddfoot}{\footfont\hfill\thepage}
  1105. \renewcommand*{\@evenfoot}{\footfont\thepage\hfill}
  1106. \def\@evenhead{\headfont\leftmark\hfill}%
  1107. \def\@oddhead{\hfill\headfont\rightmark}%
  1108. \let\@mkboth\markboth
  1109. \renewcommand*{\sectionmark}[1]{}%
  1110. }
  1111. \newcommand*{\markleft}[1]{%
  1112. \begingroup
  1113. \let\label\relax
  1114. \let\index\relax
  1115. \let\glossary\relax
  1116. \expandafter\@markleft\@themark{#1}%
  1117. \@temptokena
  1118. \expandafter{\@themark}%
  1119. \mark{\the\@temptokena}
  1120. \endgroup
  1121. \if@nobreak
  1122. \ifvmode
  1123. \nobreak
  1124. \fi
  1125. \fi
  1126. }
  1127. \newcommand*{\@markleft}[3]{%
  1128. \@temptokena{#2}%
  1129. \unrestored@protected@xdef\@themark{{#3}{\the\@temptokena}}
  1130. }
  1131. \renewcommand*{\morefrontmatter}{\pagestyle{jmlrbook}%
  1132. \def\chaptermark##1{%
  1133. \@mkboth{##1\hfill}{\hfill##1}}%
  1134. }
  1135. \renewcommand*{\moremainmatter}{\pagestyle{jmlrbook}%
  1136. \def\chaptermark##1{%
  1137. \@mkboth{\@curparthead}{\protect\thechapter. ##1}%
  1138. }%
  1139. }
  1140. \renewcommand*\bibsection{\section*{\refname}}
  1141. \jmlrbookcommands
  1142. \providecommand*{\SetNoLine}{\SetAlgoNoLine}
  1143. \providecommand*{\SetVline}{\SetAlgoVlined}
  1144. \providecommand*{\Setvlineskip}{\SetVlineSkip}
  1145. \providecommand*{\SetLine}{\SetAlgoLined}
  1146. \providecommand*{\dontprintsemicolon}{\DontPrintSemicolon}
  1147. \providecommand*{\printsemicolon}{\PrintSemicolon}
  1148. \providecommand*{\incmargin}{\IncMargin}
  1149. \providecommand*{\decmargin}[1]{\DecMargin{-#1}}
  1150. \providecommand*{\setnlskip}{\SetNlSkip}
  1151. \providecommand*{\Setnlskip}{\SetNlSkip}
  1152. \providecommand*{\setalcapskip}{\SetAlCapSkip}
  1153. \providecommand*{\setalcaphskip}{\SetAlCapHSkip}
  1154. \providecommand*{\nlSty}{\NlSty}
  1155. \providecommand*{\Setnlsty}{\SetNlSty}
  1156. \providecommand*{\linesnumbered}{\LinesNumbered}
  1157. \providecommand*{\linesnotnumbered}{\LinesNotNumbered}
  1158. \providecommand*{\linesnumberedhidden}{\LinesNumberedHidden}
  1159. \providecommand*{\showln}{\ShowLn}
  1160. \providecommand*{\showlnlabel}{\ShowLnLabel}
  1161. \providecommand*{\nocaptionofalgo}{\NoCaptionOfAlgo}
  1162. \providecommand*{\restorecaptionofalgo}{\RestoreCaptionOfAlgo}
  1163. \providecommand*{\restylealgo}{\RestyleAlgo}
  1164. \providecommand*{\Titleofalgo}{\TitleOfAlgo}
  1165. \endinput
  1166. %%
  1167. %% End of file `jmlrbook.cls'.