|
%\iffalse
|
|
% jmlr.dtx generated using makedtx version 1.2 (c) Nicola Talbot
|
|
% Command line args:
|
|
% -doc "jmlr-manual.tex"
|
|
% -src "jmlrutils.sty\Z=>jmlrutils.sty"
|
|
% -src "jmlr.cls\Z=>jmlr.cls"
|
|
% -src "jmlrbook.cls\Z=>jmlrbook.cls"
|
|
% -author "Nicola Talbot"
|
|
% -section "chapter"
|
|
% jmlr
|
|
% Created on 2017/8/1 16:57
|
|
%\fi
|
|
%\iffalse
|
|
%<*package>
|
|
%% \CharacterTable
|
|
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
|
|
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
|
|
%% Digits \0\1\2\3\4\5\6\7\8\9
|
|
%% Exclamation \! Double quote \" Hash (number) \#
|
|
%% Dollar \$ Percent \% Ampersand \&
|
|
%% Acute accent \' Left paren \( Right paren \)
|
|
%% Asterisk \* Plus \+ Comma \,
|
|
%% Minus \- Point \. Solidus \/
|
|
%% Colon \: Semicolon \; Less than \<
|
|
%% Equals \= Greater than \> Question mark \?
|
|
%% Commercial at \@ Left bracket \[ Backslash \\
|
|
%% Right bracket \] Circumflex \^ Underscore \_
|
|
%% Grave accent \` Left brace \{ Vertical bar \|
|
|
%% Right brace \} Tilde \~}
|
|
%</package>
|
|
%\fi
|
|
% \iffalse
|
|
% Doc-Source file to use with LaTeX2e
|
|
% Copyright (C) 2017 Nicola Talbot, all rights reserved.
|
|
% \fi
|
|
% \iffalse
|
|
%<*driver>
|
|
\documentclass[report]{nlctdoc}
|
|
|
|
\usepackage{amsmath}
|
|
\usepackage[utf8]{inputenc}
|
|
\usepackage[T1]{fontenc}
|
|
\usepackage{ifthen}
|
|
\usepackage[colorlinks,
|
|
bookmarks,
|
|
hyperindex=false,
|
|
pdfauthor={Nicola L.C. Talbot},
|
|
pdftitle={jmlr: Classes for the Journal of Machine
|
|
Learning Research (JMLR) and Proceedings of Machine Learning
|
|
Research (PMLR)},
|
|
pdfkeywords={LaTeX,jmlr}]{hyperref}
|
|
|
|
\doxitem{Option}{option}{package options}
|
|
|
|
\CheckSum{5030}
|
|
|
|
\newcommand*{\appopt}[1]{\texttt{-{}-#1}}
|
|
|
|
\begin{document}
|
|
\DocInput{jmlr.dtx}
|
|
\end{document}
|
|
%</driver>
|
|
%\fi
|
|
%\MakeShortVerb{"}
|
|
%\DeleteShortVerb{\|}
|
|
%
|
|
% \title{\LaTeXe\ Classes for the Journal of Machine
|
|
%Learning Research (JMLR) and
|
|
%Proceedings of Machine Learning Research (PMLR)}
|
|
% \author{Nicola L. C. Talbot\\[10pt]
|
|
%\url{http://www.dickimaw-books.com/}}
|
|
%
|
|
% \date{2017-08-01 (version 1.24)}
|
|
% \maketitle
|
|
%\tableofcontents
|
|
%
|
|
%\chapter{Introduction}
|
|
%
|
|
%The \clsfmt{jmlr} class is for articles that need to be formatted
|
|
%according to the Journal of Machine Learning Research style. This
|
|
%class is based on the \sty{jmlr2e} and \sty{jmlrwcp2e} packages
|
|
%but has been adapted to enable it to work better with the
|
|
%\cls{combine} class to collate the articles into a book.
|
|
%\sectionref{sec:jmlr} describes how to use the \clsfmt{jmlr} class.
|
|
%Note that JMLR W\&CP (JMLR: Workshop and Conference Proceedings)
|
|
%has been renamed PMLR (Proceedings of Machine Learning
|
|
%Research). Articles for new proceedings should use the \clsopt{pmlr}
|
|
%class option.
|
|
%
|
|
%The \clsfmt{jmlrbook} class is for combining articles that use the
|
|
%\clsfmt{jmlr} class into a
|
|
%book. The \clsfmt{jmlrbook} class uses \cls{combine} and \sty{hyperref}, which are
|
|
%troublesome enough on their own but together are quite fragile. The
|
|
%\clsfmt{jmlrbook} class redefines some internals to get
|
|
%\clsfmt{combine} and \clsfmt{hyperref} to work together but some
|
|
%packages (e.g.\ \sty{subfig} and \sty{pdfpages}) are likely to mess
|
|
%everything up and cause errors. This is why the guidelines to
|
|
%authors are fairly stringent and why the \clsfmt{jmlr} class will give an
|
|
%error message if certain packages are loaded.\footnote{Currently
|
|
%\clsfmt{jmlr} will check if \sty{subfig}, \sty{pdfpages},
|
|
%\sty{geometry}, \sty{psfig}, \sty{epsfig}, \sty{theorem},
|
|
%\sty{tabularx}, \sty{amsthm} and \sty{ntheorem} are loaded and will throw an error.
|
|
%If other packages are found to be a problem, they will be added to
|
|
%the list.} The \clsfmt{jmlrbook} class works best with PDF\LaTeX\ so
|
|
%authors should ensure that their articles can compile with
|
|
%PDF\LaTeX. \sectionref{sec:jmlrbook} describes how to use the
|
|
%\clsfmt{jmlrbook} class.
|
|
%
|
|
%As from v1.24, some non-class dependent commands and environments
|
|
%have been moved to a new package \sty{jmlrutils} (see
|
|
%\sectionref{sec:jmlrutils}). This package is automatically loaded by
|
|
%\clsfmt{jmlr}, but may be used with other classes. (Note that you
|
|
%will need to explicitly load \sty{algorithm2e} if you want to use
|
|
%the \env{algorithm} environment.)
|
|
%
|
|
%\begin{important}
|
|
%Note that the \clsfmt{jmlr} (and therefore \clsfmt{jmlrbook}) class automatically loads
|
|
%the \sty{hyperref} package, but some packages need to be loaded
|
|
%before \sty{hyperref}.
|
|
%\end{important}
|
|
%
|
|
%Anything that needs to be done before \sty{hyperref} is loaded can be specified
|
|
%by defining the command
|
|
%\begin{definition}[\DescribeMacro{\jmlrprehyperref}]
|
|
%\cs{jmlrprehyperref}
|
|
%\end{definition}
|
|
%\emph{before} the class is loaded. For
|
|
%example, to load the packages \styfmt{foo} and \styfmt{bar} before
|
|
%\sty{hyperref}, you can do:
|
|
%\begin{verbatim}
|
|
%\newcommand{\jmlrprehyperref}{\usepackage{foo,bar}}
|
|
%\documentclass{jmlr}
|
|
%\end{verbatim}
|
|
%
|
|
%There is a Java application called \app{makejmlrbookgui} that can
|
|
%compile all the individual papers from the book and generate the
|
|
%bib file for the proceedings (according to the PMLR specifications). It can also
|
|
%create a grey nonhyperlinked PDF/X compliant print version of the
|
|
%book. The application can be downloaded from
|
|
%\url{http://www.dickimaw-books.com/software/makejmlrbookgui/} where
|
|
%there is also a
|
|
%\href{http://www.dickimaw-books.com/software/makejmlrbookgui/manual/troubleshooting.html}{troubleshooting
|
|
%section}.
|
|
%
|
|
%There is also a Perl script called \app{makejmlrbook}, which is
|
|
%distributed with the \clsfmt{jmlr} and \clsfmt{jmlrbook} bundle,
|
|
%however it is now deprecated and has been superseded by
|
|
%\app{makejmlrbookgui}. Note that PMLR (formerly JMLR W\&CP) has new
|
|
%format guidelines that are followed by new versions of
|
|
%\app{makejmlrbookgui} but not by the Perl script \app{makejmlrbook},
|
|
%so that script is no longer documented or supported and may be
|
|
%dropped from future versions of this bundle.
|
|
%
|
|
%\section{Required Packages}
|
|
%
|
|
%The \clsfmt{jmlr} class is based on the \cls{article} class and loads
|
|
%the following packages: \sty{jmlrutils} (see \sectionref{sec:jmlrutils}),
|
|
%\sty{amsmath}, \sty{amssymb},
|
|
%\sty{natbib}, \sty{url}, \sty{graphicx} and \sty{algorithm2e},
|
|
%\sty{hyperref}, \sty{nameref}, \sty{xcolor} and \sty{xkeyval}.
|
|
%Note that unlike the \sty{jmlr2e} and \sty{jmlrwcp2e} packages,
|
|
%this class file does not load the obsolete \sty{epsfig} package.
|
|
%
|
|
%The \clsfmt{jmlrbook} class additionally loads the \cls{combine} class
|
|
%and the following packages: \sty{combnat}, \sty{setspace} and \sty{fink}.
|
|
%
|
|
%The \app{makejmlrbookgui} application requires Java and \TeX.
|
|
%(GhostScript is also required for the print-ready version of the
|
|
%book.)
|
|
%
|
|
%\chapter{Guidelines for Article Authors}
|
|
%\label{sec:jmlr}
|
|
%
|
|
%Article authors should use the \clsfmt{jmlr} class. This class
|
|
%comes with example files \texttt{jmlr-sample.tex} and
|
|
%\texttt{jmlrwcp-sample.tex}, which can be used as templates.
|
|
%
|
|
%The following class options are available:
|
|
%\begin{description}
|
|
%\item[\clsopt{nowcp}]The article is for the Journal of Machine
|
|
%Learning Research (default).
|
|
%\item[\clsopt{pmlr}] The article is for the Proceedings of Machine
|
|
%Learning Research (PMLR).
|
|
%\item[\clsopt{wcp}] The article is for JMLR Workshop and Conference
|
|
%Proceedings (JMLR W\&CP).
|
|
%
|
|
%\item[\clsopt{twocolumn}] Use two-column style.
|
|
%
|
|
%\item[\clsopt{onecolumn}] Use one-column style (default).
|
|
%
|
|
%\item[\clsopt{color}] Color version (see \sectionref{sec:color}).
|
|
%
|
|
%\item[\clsopt{gray}] Grayscale version (see \sectionref{sec:color}).
|
|
%
|
|
%\item[{\clsopt[top]{tablecaption}}] in a \env{table} environment,
|
|
%\ics{floatconts} puts the caption at the top.
|
|
%
|
|
%\item[{\clsopt[bottom]{tablecaption}}] in a \env{table} environment,
|
|
%\ics{floatconts} puts the caption at the bottom.
|
|
%
|
|
%\end{description}
|
|
%
|
|
%\section{Title Information}
|
|
%
|
|
%The \clsfmt{jmlr} class uses different syntax from \sty{jmlr2e} and
|
|
%\sty{jmlrwcp2e} to specify the title information. In particular, it
|
|
%doesn't define \cs{jmlrheading} and \cs{ShortHeading}. Instead, the
|
|
%following commands should be used:
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\jmlrvolume}]
|
|
%\cs{jmlrvolume}\marg{number}
|
|
%\end{definition}
|
|
%This specifies the volume number. For example:
|
|
%\begin{verbatim}
|
|
%\jmlrvolume{2}
|
|
%\end{verbatim}
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\jmlryear}]
|
|
%\cs{jmlryear}\marg{year}
|
|
%\end{definition}
|
|
%This specifies the year. For example:
|
|
%\begin{verbatim}
|
|
%\jmlryear{2010}
|
|
%\end{verbatim}
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\jmlrsubmitted}]
|
|
%\cs{jmlrsubmitted}\marg{date}
|
|
%\end{definition}
|
|
%This specifies the submission date.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\jmlrpublished}]
|
|
%\cs{jmlrpublished}\marg{date}
|
|
%\end{definition}
|
|
%This specifies the publication date.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\jmlrworkshop}]
|
|
%\cs{jmlrworkshop}\marg{title}
|
|
%\end{definition}
|
|
%This specifies the workshop title (for use with the \clsopt{wcp}
|
|
%class option).
|
|
%
|
|
%The title information is specified using the commands described
|
|
%below. These commands should typically go in the preamble. As
|
|
%with most class files, The title itself is produced using
|
|
%\begin{definition}[\DescribeMacro{\maketitle}]
|
|
%\cs{maketitle}
|
|
%\end{definition}
|
|
%This command should go after \verb|\begin{document}|. For example:
|
|
%\begin{verbatim}
|
|
%\begin{document}
|
|
%\maketitle
|
|
%\end{verbatim}
|
|
%Before \cs{maketitle}, you must specify the title information
|
|
%using the following commands:
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\title}]
|
|
%\cs{title}\oarg{short title}\marg{title}
|
|
%\end{definition}
|
|
%This specifies the article's title. A short title for the page
|
|
%header can be supplied via the optional argument \meta{short title}.
|
|
%If you want to force a line break in the title, use
|
|
%\begin{definition}[\DescribeMacro{\titlebreak}]
|
|
%\cs{titlebreak}
|
|
%\end{definition}
|
|
%instead of \cs{newline} or \verb|\\| as this will ensure that the
|
|
%line break doesn't also end up in the table of contents or bookmarks
|
|
%when the article is included in a book. If there is content within
|
|
%the title that should not appear in the page headings or table of
|
|
%contents (for example, a footnote) use
|
|
%\begin{definition}[\DescribeMacro{\titletag}]
|
|
%\cs{titletag}\marg{title only stuff}
|
|
%\end{definition}
|
|
%For example:
|
|
%\begin{verbatim}
|
|
%\title{An Interesting Paper\titlebreak
|
|
%With a Line Break\titletag{\thanks{and an
|
|
%acknowledgement}}}
|
|
%\end{verbatim}
|
|
%
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\editor}]
|
|
%\cs{editor}\marg{name}
|
|
%\end{definition}
|
|
%This specifies the editor's name. If there is more than one
|
|
%editor, use:
|
|
%\begin{definition}[\DescribeMacro{\editors}]
|
|
%\cs{editors}\marg{names}
|
|
%\end{definition}
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\author}]
|
|
%\cs{author}\marg{author specs}
|
|
%\end{definition}
|
|
%This specifies the author. The specifications \meta{author specs}
|
|
%are a bit different to \sty{jmlr2e} and \sty{jmlrwcp2e}. Use
|
|
%\begin{definition}[\DescribeMacro{\Name}]
|
|
%\cs{Name}\oarg{abbreviated name}\marg{author's name}
|
|
%\end{definition}
|
|
%to specify the author's name. Note that if the surname contains a
|
|
%space it must be grouped (enclosed in braces \{\}). Similarly if
|
|
%the initial letter of each forename is a diacritic it must be
|
|
%grouped. If the abbreviation of the name doesn't get parsed
|
|
%properly you can override the default using the optional argument. (See below for examples.)
|
|
%
|
|
%If there is any content within \meta{author's name} that shouldn't
|
|
%get copied to the header, footer or table of contents, it should be
|
|
%enclosed within the argument of
|
|
%\begin{definition}[\DescribeMacro{\nametag}]
|
|
%\cs{nametag}\marg{title only stuff}
|
|
%\end{definition}
|
|
%For example:
|
|
%\begin{verbatim}
|
|
%\Name{Ann Other\nametag{\thanks{formerly with some other
|
|
%institute}}}
|
|
%\end{verbatim}
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\Email}]
|
|
%\cs{Email}\marg{author's email}
|
|
%\end{definition}
|
|
%This specifies the author's email address. It should only be used
|
|
%within the argument to \cs{author}.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\and}]
|
|
%\cs{and}
|
|
%\end{definition}
|
|
%This should be used to separate two authors with the same address.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\AND}]
|
|
%\cs{AND}
|
|
%\end{definition}
|
|
%This should be used to separate authors with different addresses.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\\}]
|
|
%\verb|\\|
|
|
%\end{definition}
|
|
%This should be used before an author's address or between authors
|
|
%with the same address where there are more that two authors.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\addr}]
|
|
%\cs{addr}
|
|
%\end{definition}
|
|
%This should be used at the start of the address.
|
|
%
|
|
%\begin{description}
|
|
%\item[Example 1] Two authors with the same address:
|
|
%\begin{verbatim}
|
|
%\author{\Name{Jane Doe} \Email{abc@sample.com}\and
|
|
% \Name{John {Basey Fisher}} \Email{xyz@sample.com}\\
|
|
% \addr Address}
|
|
%\end{verbatim}
|
|
%In this example, the second author has a space in his surname
|
|
%so the surname needs to be grouped.
|
|
%
|
|
%\item[Example 2] Three authors with the same address:
|
|
%\begin{verbatim}
|
|
%\author{\Name{Fred Arnold {de la Cour}} \Email{an1@sample.com}\\
|
|
% \Name{Jack Jones} \Email{an3@sample.com}\\
|
|
% \Name{{\'E}louise {\'E}abhla Finchley} \Email{an2@sample.com}\\
|
|
% \addr Address}
|
|
%\end{verbatim}
|
|
%In this example, the third author has an accent on her
|
|
%forename initials so grouping is required.
|
|
%
|
|
%\item[Example 3] Authors with a different address:
|
|
%\begin{verbatim}
|
|
%\author{\Name{John Smith} \Email{abc@sample.com}\\
|
|
% \addr Address 1
|
|
% \AND
|
|
% \Name{May Brown} \Email{xyz@sample.com}\\
|
|
% \addr Address 2
|
|
% }
|
|
%\end{verbatim}
|
|
%
|
|
%\item[Example 4] The author is actually a company so there's no
|
|
%first name and surname:
|
|
%\begin{verbatim}
|
|
%\author{\Name[Some Company, Ltd]{Some Company, Ltd}\Email{xyz:some.com}\\
|
|
% \addr Address
|
|
%}
|
|
%\end{verbatim}
|
|
%\end{description}
|
|
%
|
|
%\section{Font Changing Commands}
|
|
%
|
|
%Use the \LaTeXe\ font changing commands, such as \cs{bfseries} or
|
|
%\cs{textbf}\marg{text}, rather than the obsolete \LaTeX2.09
|
|
%commands, such as \cs{bf}. (The obsolete font changing commands
|
|
%will produce a warning if used.)
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\url}]
|
|
%\cs{url}\marg{address}
|
|
%\end{definition}
|
|
%This will typeset \meta{address} in a typewriter font. Special
|
|
%characters, such as \verb|~|, are correctly displayed. Example:
|
|
%\begin{verbatim}
|
|
%\url{http://theoval.cmp.uea.ac.uk/~nlct/}
|
|
%\end{verbatim}
|
|
%This command is provided by the \sty{url} package which is
|
|
%automatically loaded.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\mailto}]
|
|
%\cs{mailto}\marg{email address}
|
|
%\end{definition}
|
|
%This will typeset the given email address in a typewriter font.
|
|
%Note that this is not the same as \cs{Email}, which should only be
|
|
%used in the argument of \cs{author}. This command is provided by the
|
|
%supplementary package \sty{jmlrutils}. Other commands are described
|
|
%in \sectionref{sec:jmlrutils}.
|
|
%
|
|
%\section{Structure}
|
|
%
|
|
%\begin{definition}[\DescribeEnv{abstract}]
|
|
%\cs{begin}\{abstract\}\\
|
|
%\meta{text}\\
|
|
%\cs{end}\{abstract\}
|
|
%\end{definition}
|
|
%The abstract text should be displayed using the \envfmt{abstract}
|
|
%environment.
|
|
%
|
|
%\begin{definition}[\DescribeEnv{keywords}]
|
|
%\cs{begin}\{keywords\}\meta{keyword list}\cs{end}\{keywords\}
|
|
%\end{definition}
|
|
%The keywords should be displayed using the \envfmt{keywords}
|
|
%environment.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\acks}]
|
|
%\cs{acks}\marg{text}
|
|
%\end{definition}
|
|
%This displays the acknowledgements.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\section}]
|
|
%\cs{section}\marg{title}
|
|
%\end{definition}
|
|
%Section titles are created using \cs{section}. The heading is
|
|
%automatically numbered and can be cross-referenced using
|
|
%\cs{label} and \cs{ref}. Unnumbered sections can be produced
|
|
%using:
|
|
%\begin{definition}[\DescribeMacro{\section*}]
|
|
%\cs{section*}\marg{title}
|
|
%\end{definition}
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\subsection}]
|
|
%\cs{subsection}\marg{title}
|
|
%\end{definition}
|
|
%Sub-section titles are created using \cs{subsection}. Unnumbered
|
|
%sub-sections can be produced using:
|
|
%\begin{definition}[\DescribeMacro{\subsection*}]
|
|
%\cs{subsection*}\marg{title}
|
|
%\end{definition}
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\subsubsection}]
|
|
%\cs{subsubsection}\marg{title}
|
|
%\end{definition}
|
|
%Sub-sub-section titles are created using \cs{subsubsection}.
|
|
%Unnumbered sub-sub-sections can be produced using:
|
|
%\begin{definition}[\DescribeMacro{\subsubsection*}]
|
|
%\cs{subsubsection*}\marg{title}
|
|
%\end{definition}
|
|
%
|
|
%Further sectioning levels can be obtained using \cs{paragraph}
|
|
%and \cs{subparagraph}, but these are unnumbered with running heads.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\appendix}]
|
|
%\cs{appendix}
|
|
%\end{definition}
|
|
%Use \cs{appendix} to switch to the appendices. This changes
|
|
%\cs{section} to produce an appendix. Example:
|
|
%\begin{verbatim}
|
|
%\appendix
|
|
%\chapter{Proof of Theorems}
|
|
%\end{verbatim}
|
|
%
|
|
%\section{Citations and Bibliography}
|
|
%
|
|
%The \clsfmt{jmlr} class automatically loads \sty{natbib} and sets
|
|
%the bibliography style to \texttt{plainnat}. References should
|
|
%be stored in a \texttt{.bib} file.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\bibliography}]
|
|
%\cs{bibliography}\marg{bib file}
|
|
%\end{definition}
|
|
%This displays the bibliography.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\citep}]
|
|
%\cs{citep}\oarg{pre note}\oarg{post note}\marg{label}
|
|
%\end{definition}
|
|
%Use \cs{citep} for a parenthetical citation.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\citet}]
|
|
%\cs{citet}\oarg{note}\marg{label}
|
|
%\end{definition}
|
|
%Use \cs{citet} for a textual citation.
|
|
%
|
|
%See the \ctandoc{natbib} for further details.
|
|
%
|
|
%\section{\styfmt{jmlrutils} supplementary package}
|
|
%\label{sec:jmlrutils}
|
|
%
|
|
%The \sty{jmlrutils} package is automatically loaded by the
|
|
%\clsfmt{jmlr} class but may be used with other classes.
|
|
%
|
|
%\subsection{Package Options}
|
|
%
|
|
%The following options may be passed to the \styfmt{jmlrutils}
|
|
%package if it is to be used without the \clsfmt{jmlr} class.
|
|
%\begin{description}
|
|
%\item[\pkgopt{maths}] Define the commands \cs{set} and \cs{oldvec}
|
|
%and redefine \cs{vec}. This will also automatically load the
|
|
%\sty{amsmath} package. (Default.)
|
|
%\item[\pkgopt{nomaths}] Don't define \cs{set} and \cs{oldvec}
|
|
%and don't redefine \cs{vec}.
|
|
%\item[\pkgopt{theorems}] Define the theorem commands and
|
|
%environments listed in \sectionref{sec:theorems}. (Default.)
|
|
%\item[\pkgopt{notheorems}] Don't define the theorem commands and
|
|
%environments.
|
|
%\item[\pkgopt{subfloats}] Define the sub-figure and sub-table
|
|
%commands listed in \sectionref{sec:subfloats}. (Default.)
|
|
%\item[\pkgopt{nosubfloats}] Don't define the sub-figure and
|
|
%sub-table commands.
|
|
%\end{description}
|
|
%The non-default options are provided when \styfmt{jmlrutils} is
|
|
%loaded without the \clsfmt{jmlr} class.
|
|
%Don't try passing the non-default options to \styfmt{jmlrutils} if
|
|
%you are using the \clsfmt{jmlr} class as this could interfere with
|
|
%the build process for the proceedings or book.
|
|
%
|
|
%The \styfmt{jmlrutils} package doesn't recognise any of the
|
|
%\clsfmt{jmlr} class options (such as \pkgopt{tablecaption}).
|
|
%
|
|
%\subsection{Figures and Tables}
|
|
%\label{sec:floats}
|
|
%
|
|
%Floats, such as figures, tables and algorithms, are moving objects
|
|
%and are supposed to float to the nearest convenient location.
|
|
%Please don't force them to go in a particular place. In general
|
|
%it's best to use the \texttt{htbp} specifier and don't put
|
|
%the float in the middle of a paragraph (that is, make sure there's
|
|
%a paragraph break above and below the float). Floats are supposed
|
|
%to have a little extra space above and below them to make them
|
|
%stand out from the rest of the text. This extra space is put in
|
|
%automatically and shouldn't need modifying.
|
|
%
|
|
%To ensure consistency, please \emph{\bfseries don't} try changing the
|
|
%format of the caption by doing something like:
|
|
%\begin{verbatim}
|
|
%\caption{\textit{A Sample Caption.}}
|
|
%\end{verbatim}
|
|
%or
|
|
%\begin{verbatim}
|
|
%\caption{\em A Sample Caption.}
|
|
%\end{verbatim}
|
|
%You can, of course, change the font for individual words or
|
|
%phrases. For example:
|
|
%\begin{verbatim}
|
|
%\caption{A Sample Caption With Some \emph{Emphasized Words}.}
|
|
%\end{verbatim}
|
|
%
|
|
%The \styfmt{jmlrutils} package provides the following command for displaying
|
|
%the contents of a figure or table:
|
|
%\begin{definition}[\DescribeMacro{\floatconts}]
|
|
%\cs{floatconts}\marg{label}\marg{caption command}\marg{contents}
|
|
%\end{definition}
|
|
%This ensures that the caption is correctly positioned and that
|
|
%the contents are centred. For example:
|
|
%\begin{verbatim}
|
|
%\begin{table}[htbp]
|
|
%\floatconts
|
|
% {tab:example}% label
|
|
% {\caption{An Example Table}}% caption command
|
|
% {%
|
|
% \begin{tabular}{ll}
|
|
% \bfseries Dataset & \bfseries Result\\
|
|
% Data1 & 0.123456
|
|
% \end{tabular}
|
|
% }
|
|
%\end{table}
|
|
%\end{verbatim}
|
|
%If the \clsfmt{jmlr} class is used, the table caption (when used
|
|
%with \cs{floatconts}) will obey the \clsopt{tablecaption} class option,
|
|
%otherwise it will be placed above the table contents. Within the
|
|
%\env{figure} environment, \cs{floatconts} will put the caption below
|
|
%the contents. This command may be used within other floats.
|
|
%
|
|
%The \clsfmt{jmlr} class automatically loads \sty{graphicx} which
|
|
%defines:
|
|
%\begin{definition}[\DescribeMacro{\includegraphics}]
|
|
%\cs{includegraphics}\oarg{options}\marg{file name}
|
|
%\end{definition}
|
|
%where \meta{options} is a comma-separated list of options.
|
|
%If you are using \styfmt{jmlrutils} with another class you need to load
|
|
%\sty{graphicx} in order to use this command. See the documentation
|
|
%for the \sty{graphicx} package for further details of this command
|
|
%and other provided commands.
|
|
%
|
|
%For example, suppose you have an image called
|
|
%\texttt{mypic.png} in a subdirectory called \texttt{images}:
|
|
%\begin{verbatim}
|
|
%\begin{figure}[htbp]
|
|
%\floatconts
|
|
% {fig:example}% label
|
|
% {\caption{An Example Figure}}% caption command
|
|
% {\includegraphics[width=0.5\textwidth]{images/mypic}}
|
|
%\end{figure}
|
|
%\end{verbatim}
|
|
%
|
|
%Note that you shouldn't specify the file extension when including
|
|
%the image when using the \clsfmt{jmlr} class. It's helpful if you
|
|
%can also provide a grayscale version of colour images. This should be
|
|
%labelled as the colour image but with \texttt{-gray} immediately
|
|
%before the extension. (The extension need not be the same as that
|
|
%of the colour image.) For example, if you have an image called
|
|
%\texttt{mypic.pdf}, the grayscale can be called
|
|
%\texttt{mypic-gray.pdf}, \texttt{mypic-gray.png} or
|
|
%\texttt{mypic-gray.jpg}. See \sectionref{sec:color} for further
|
|
%details.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\includeteximage}]
|
|
%\cs{includeteximage}\oarg{options}\marg{file name}
|
|
%\end{definition}
|
|
%If your image file is made up of \LaTeX\ code (e.g.\ \sty{tikz}
|
|
%commands) the file can be included using \cs{includeteximage}.
|
|
%The optional argument is a key=value comma-separated list
|
|
%where the keys are a subset of those provided by
|
|
%\linebreak\cs{includegraphics}. The main keys are: \texttt{width},
|
|
%\texttt{height}, \texttt{scale} and \texttt{angle}. Some
|
|
%of the keys specific to image files (such as the bounding box
|
|
%and type keys) do nothing with \cs{includeteximage}.
|
|
%
|
|
%\subsubsection{Sub-Figures and Sub-Tables}
|
|
%\label{sec:subfloats}
|
|
%
|
|
%The \sty{subfig} package causes a problem for \clsfmt{jmlrbook} so
|
|
%the \clsfmt{jmlr} class will give an error if it is used. Therefore
|
|
%the \clsfmt{jmlr} class provides its own commands for including
|
|
%sub-figures and sub-tables. If you aren't using the \clsfmt{jmlr}
|
|
%class, you can prevent \styfmt{jmlrutils} from defining these
|
|
%commands with the \pkgopt{nosubfloats} package option.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\subfigure}]
|
|
%\cs{subfigure}\oarg{title}\oarg{valign}\marg{contents}
|
|
%\end{definition}
|
|
%This makes a sub-figure where \meta{contents} denotes the contents
|
|
%of the sub-figure. This should also include the \cs{label}.
|
|
%The first optional argument \meta{title} indicates a caption for
|
|
%the sub-figure. By default, the sub-figures are aligned at the
|
|
%base. This can be changed with the second optional argument
|
|
%\meta{valign}, which may be one of: \texttt{t} (top), \texttt{c}
|
|
%(centred) or \texttt{b} (base).
|
|
%
|
|
%For example, suppose there are two images files, \texttt{mypic1.png}
|
|
%and \texttt{mypic2.png}, in the subdirectory \texttt{images}.
|
|
%Then they can be included as sub-figures as follows:
|
|
%\begin{verbatim}
|
|
%\begin{figure}[htbp]
|
|
%\floatconts
|
|
% {fig:example2}% label for whole figure
|
|
% {\caption{An Example Figure.}}% caption for whole figure
|
|
% {%
|
|
% \subfigure{%
|
|
% \label{fig:pic1}% label for this sub-figure
|
|
% \includegraphics{images/mypic1}
|
|
% }\qquad % space out the images a bit
|
|
% \subfigure{%
|
|
% \label{fig:pic2}% label for this sub-figure
|
|
% \includegraphics{images/mypic2}
|
|
% }
|
|
% }
|
|
%\end{figure}
|
|
%\end{verbatim}
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\subtable}]
|
|
%\cs{subtable}\oarg{title}\oarg{valign}\marg{contents}
|
|
%\end{definition}
|
|
%This is an analogous command for sub-tables. The default value
|
|
%for \meta{valign} is \texttt{t}.
|
|
%
|
|
%\subsection{Algorithms}
|
|
%The \clsfmt{jmlr} class automatically loads the \sty{algorithm2e}
|
|
%package. If you are using \styfmt{jmlrutils} with another class, you
|
|
%will need to load \sty{algorithm2e} if you want to use the
|
|
%\env{algorithm} and \env{algorithm2e} environments described below.
|
|
%
|
|
%\begin{definition}[\DescribeEnv{algorithm}]
|
|
%\cs{begin}\{algorithm\}\oarg{placement}\\
|
|
%\meta{contents}\\
|
|
%\cs{end}\{algorithm\}
|
|
%\end{definition}
|
|
%Enumerated textual algorithms can be displayed using the
|
|
%\envfmt{algorithm} environment.
|
|
%The optional argument is as for \env{figure} and \env{table}.
|
|
%
|
|
%Within the body of the
|
|
%environment you can use the \env{enumerate} environment.
|
|
%\begin{definition}[\DescribeEnv{enumerate*}]
|
|
%\cs{begin}\{enumerate*\}\\
|
|
%\cs{item} \meta{text}\\
|
|
%\ldots\\
|
|
%\cs{end}\{enumerate*\}
|
|
%\end{definition}
|
|
%If you want to have nested \env{enumerate} environments but you want
|
|
%to keep the same numbering throughout the algorithm, you can use the
|
|
%\envfmt{enumerate*} environment, provided by the \styfmt{jmlrutils}
|
|
%package. For example:
|
|
%\begin{verbatim}
|
|
%\begin{algorithm}
|
|
%\floatconts{alg:path}%label
|
|
%{\caption{Shortest Path}}% caption
|
|
%{% contents
|
|
%\begin{enumerate*}
|
|
% \item Set the label of vertex $s$ to 0
|
|
% \item Set $i=0$
|
|
% \begin{enumerate*}
|
|
% \item \label{step:locate}Locate all unlabelled vertices
|
|
% adjacent to a vertex labelled $i$ and label them $i+1$
|
|
% \item If vertex $t$ has been labelled,
|
|
% \begin{enumerate*}
|
|
% \item[] the shortest path can be found by backtracking, and
|
|
% the length is given by the label of $t$.
|
|
% \end{enumerate*}
|
|
% otherwise
|
|
% \begin{enumerate*}
|
|
% \item[] increment $i$ and return to step~\ref{step:locate}
|
|
% \end{enumerate*}
|
|
% \end{enumerate*}
|
|
%\end{enumerate*}
|
|
%}
|
|
%\end{algorithm}
|
|
%\end{verbatim}
|
|
%
|
|
%
|
|
%\begin{definition}[\DescribeEnv{algorithm2e}]
|
|
%\cs{begin}\{algorithm2e\}\\
|
|
%\meta{contents}\\
|
|
%\cs{end}\{algorithm2e\}
|
|
%\end{definition}
|
|
%Pseudo code can be displayed using the \envfmt{algorithm2e} environment,
|
|
%provided by the \sty{algorithm2e} package, which is automatically
|
|
%loaded. For example:
|
|
%\begin{verbatim}
|
|
%\begin{algorithm2e}
|
|
%\caption{Computing Net Activation}
|
|
%\label{alg:net}
|
|
%\DontPrintSemicolon
|
|
%\LinesNumbered
|
|
%\KwIn{$x_1, \ldots, x_n, w_1, \ldots, w_n$}
|
|
%\KwOut{$y$, the net activation}
|
|
%$y\leftarrow 0$\;
|
|
%\For{$i\leftarrow 1$ \KwTo $n$}{
|
|
% $y \leftarrow y + w_i*x_i$\;
|
|
%}
|
|
%\end{algorithm2e}
|
|
%\end{verbatim}
|
|
%
|
|
%See the \ctandoc{algorithm2e} for more details.
|
|
%
|
|
%\subsection{Description Lists}
|
|
%
|
|
%\begin{definition}[\DescribeEnv{altdescription}]
|
|
%\cs{begin}\{altdescription\}\marg{widest label}\\
|
|
%\cs{item}\oarg{label} \meta{item text}\\
|
|
%\cs{end}\{altdescription\}
|
|
%\end{definition}
|
|
%In addition to the standard \env{description} environment, the
|
|
%\clsfmt{jmlr} class also provides the \envfmt{altdescription} environment.
|
|
%This has an argument that should be the widest label used in the
|
|
%list. For example:
|
|
%\begin{verbatim}
|
|
%\begin{altdescription}{differentiate}
|
|
%\item[add] A method that adds two variables.
|
|
%\item[differentiate] A method that differentiates a function.
|
|
%\end{altdescription}
|
|
%\end{verbatim}
|
|
%
|
|
%\subsection{Theorems, Lemmas etc}
|
|
%\label{sec:theorems}
|
|
%
|
|
%The \clsfmt{jmlrbook} class doesn't work well with common theorem
|
|
%packages, so \styfmt{jmlrutils} provides theorem code that won't
|
|
%conflict with \clsfmt{jmlrbook}. If you're using \styfmt{jmlrutils}
|
|
%without the \clsfmt{jmlr} class, you can prevent the definition of
|
|
%these commands with the \pkgopt{notheorems} package option.
|
|
%
|
|
%The \styfmt{jmlrutils} package provides the following theorem-like
|
|
%environments: \env{theorem}, \env{example}, \env{lemma},
|
|
%\env{proposition}, \env{remark}, \env{corollary}, \env{definition},
|
|
%\env{conjecture} and \env{axiom}. Within the body of those
|
|
%environments, you can use the \env{proof} environment to display the
|
|
%proof if need be. The theorem-like environments all take an
|
|
%optional argument, which gives the environment a title. For example:
|
|
%
|
|
%\begin{verbatim}
|
|
%\begin{theorem}[An Example Theorem]
|
|
%\label{thm:example}
|
|
%This is the theorem.
|
|
%\begin{proof}
|
|
%This is the proof.
|
|
%\end{proof}
|
|
%\end{theorem}
|
|
%\end{verbatim}
|
|
%
|
|
%You can define your own numbered theorem-like environment using:
|
|
%\begin{definition}[\DescribeMacro{\newtheorem}]
|
|
%\cs{newtheorem}\marg{name}\oarg{counter}\marg{title}\oarg{outer
|
|
%counter}
|
|
%\end{definition}
|
|
%or you can define an unnumbered theorem-like environment using:
|
|
%\begin{definition}[\DescribeMacro{\newtheorem*}]
|
|
%\cs{newtheorem*}\marg{name}\marg{title}
|
|
%\end{definition}
|
|
%where \meta{name} is the name of the new environment and
|
|
%\meta{title} is the title tag at the start of the environment. In
|
|
%the case of the numbered theorems, \meta{counter} is a predefined
|
|
%counter to use with this theorem. If omitted, a new counter called
|
|
%\meta{name} will be defined. The final optional argument \meta{outer
|
|
%counter} is the name of a parent counter which, when incremented, should
|
|
%reset the theorem counter.
|
|
%
|
|
%Both \cs{newtheorem} and \cs{newtheorem*} set the new theorem's
|
|
%style to the current defined style. The current style is set using
|
|
%the following commands:
|
|
%\begin{definition}[\DescribeMacro{\theorembodyfont}]
|
|
%\cs{theorembodyfont}\marg{declarations}
|
|
%\end{definition}
|
|
%This sets the font declarations used in the body of the theorem.
|
|
%This defaults to \cs{itshape}.
|
|
%\begin{definition}[\DescribeMacro{\theoremheaderfont}]
|
|
%\cs{theoremheaderfont}\marg{declarations}
|
|
%\end{definition}
|
|
%This sets the font declarations used for the theorem title.
|
|
%This defaults to \cs{bfseries}.
|
|
%\begin{definition}[\DescribeMacro{\theorempostheader}]
|
|
%\cs{theorempostheader}\marg{text}
|
|
%\end{definition}
|
|
%This indicates what should occur at the end of the title. This
|
|
%defaults to nothing.
|
|
%\begin{definition}[\DescribeMacro{\theoremsep}]
|
|
%\cs{theoremsep}\marg{text}
|
|
%\end{definition}
|
|
%This indicates what to put between the header and the body of the
|
|
%environment. This defaults to nothing.
|
|
%
|
|
%For example, to define an unnumbered theorem-like environment called
|
|
%\qt{note} with the title \qt{Note} followed by a colon and a new
|
|
%line between the title and the body of the \texttt{note}
|
|
%environment:
|
|
%\begin{verbatim}
|
|
% \theorembodyfont{\upshape}
|
|
% \theoremheaderfont{\scshape}
|
|
% \theorempostheader{:}
|
|
% \theoremsep{\newline}
|
|
% \newtheorem*{note}{Note}
|
|
%\end{verbatim}
|
|
%Now it can be used in the document environment:
|
|
%\begin{verbatim}
|
|
%\begin{note}
|
|
%This is an numbered theorem-like environment.
|
|
%\end{note}
|
|
%\end{verbatim}
|
|
%
|
|
%\subsection{Cross-Referencing}
|
|
%\label{sec:crossref}
|
|
%
|
|
%Always use \ics{label} when cross-referencing, rather than writing
|
|
%the number explicitly. The \styfmt{jmlrutils} package provides some
|
|
%convenience commands to assist referencing. These commands,
|
|
%described below, can all take a comma-separated list of labels.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\sectionref}]
|
|
%\cs{sectionref}\marg{label list}
|
|
%\end{definition}
|
|
%Used to refer to a section or sections. For example, if you defined
|
|
%a section as follows:
|
|
%\begin{verbatim}
|
|
%\chapter{Results}\label{sec:results}
|
|
%\end{verbatim}
|
|
%you can refer to it as follows:
|
|
%\begin{verbatim}
|
|
%The results are detailed in \sectionref{sec:results}.
|
|
%\end{verbatim}
|
|
%This command may also be used for sub-sections and sub-sub-sections.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\appendixref}]
|
|
%\cs{appendixref}\marg{label list}
|
|
%\end{definition}
|
|
%Used to refer to an appendix or multiple appendices.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\equationref}]
|
|
%\cs{equationref}\marg{label list}
|
|
%\end{definition}
|
|
%Used to refer to an equation or multiple equations.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\tableref}]
|
|
%\cs{tableref}\marg{label list}
|
|
%\end{definition}
|
|
%Used to refer to a table or multiple tables. This can also be
|
|
%used for sub-tables where the main table number is also required.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\subtabref}]
|
|
%\cs{subtabref}\marg{label list}
|
|
%\end{definition}
|
|
%Used to refer to sub-tables without the main table number, e.g.
|
|
%(\emph{a}) or (\emph{b}).
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\figureref}]
|
|
%\cs{figureref}\marg{label list}
|
|
%\end{definition}
|
|
%Used to refer to a figure or multiple figures. This can also
|
|
%be used for sub-figures where the main figure number is also
|
|
%required, e.g.\ 2(\emph{a}) or 4(\emph{b}).
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\subfigref}]
|
|
%\cs{subfigref}\marg{label list}
|
|
%\end{definition}
|
|
%Used to refer to sub-figures without the main figure number, e.g.
|
|
%(\emph{a}) or (\emph{b}).
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\algorithmref}]
|
|
%\cs{algorithmref}\marg{label list}
|
|
%\end{definition}
|
|
%Used to refer to an algorithm or multiple algorithms.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\theoremref}]
|
|
%\cs{theoremref}\marg{label list}
|
|
%\end{definition}
|
|
%Used to refer to a theorem or multiple theorems.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\lemmaref}]
|
|
%\cs{lemmaref}\marg{label list}
|
|
%\end{definition}
|
|
%Used to refer to a lemma or multiple lemmas.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\remarkref}]
|
|
%\cs{remarkref}\marg{label list}
|
|
%\end{definition}
|
|
%Used to refer to a remark or multiple remarks.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\corollaryref}]
|
|
%\cs{corollaryref}\marg{label list}
|
|
%\end{definition}
|
|
%Used to refer to a corollary or multiple corollaries.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\definitionref}]
|
|
%\cs{definitionref}\marg{label list}
|
|
%\end{definition}
|
|
%Used to refer to a definition or multiple definitions.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\conjectureref}]
|
|
%\cs{conjectureref}\marg{label list}
|
|
%\end{definition}
|
|
%Used to refer to a conjecture or multiple conjectures.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\axiomref}]
|
|
%\cs{axiomref}\marg{label list}
|
|
%\end{definition}
|
|
%Used to refer to an axiom or multiple axioms.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\exampleref}]
|
|
%\cs{exampleref}\marg{label list}
|
|
%\end{definition}
|
|
%Used to refer to an example or multiple examples.
|
|
%
|
|
%\subsection{Mathematics}
|
|
%
|
|
%The \clsfmt{jmlr} class loads the \sty{amsmath} package so you can
|
|
%use any of the commands and environments defined in that package.
|
|
%The \styfmt{jmlrutils} package will load \sty{amsmath} if the
|
|
%default \pkgopt{maths} package option is used but won't load
|
|
%\sty{amsmath} if the \pkgopt{nomaths} option is used. A brief
|
|
%summary of some of the more common commands and environments is
|
|
%provided here. See the \ctandoc{amsmath} for further details.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\set}]
|
|
%\cs{set}\marg{maths}
|
|
%\end{definition}
|
|
%In addition to the commands provided by \sty{amsmath}, the
|
|
%\styfmt{jmlrutils} package also provides the \cs{set} command which can
|
|
%be used to typeset a set. For example:
|
|
%\begin{verbatim}
|
|
%The universal set is denoted $\set{U}$
|
|
%\end{verbatim}
|
|
%This command won't be provided if the \pkgopt{nomaths} option is
|
|
%used.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\vec}]
|
|
%\cs{vec}\marg{maths}
|
|
%\end{definition}
|
|
%The \cs{vec} command is redefined by \styfmt{jmlrutils} to use
|
|
%\cs{boldsymbol}, which is provided by \sty{amsmath}.
|
|
%(This command won't be redefined if the \pkgopt{nomaths} option is
|
|
%used.) If you require
|
|
%the original \cs{vec}, you can access it with:
|
|
%\begin{definition}[\DescribeMacro{\orgvec}]
|
|
%\cs{orgvec}\marg{maths}
|
|
%\end{definition}
|
|
%This command won't be provided if the \pkgopt{nomaths} option is
|
|
%used.
|
|
%
|
|
%Unnumbered single-line equations should be displayed using
|
|
%\cs{[} and \cs{]}. For example:
|
|
%\begin{verbatim}
|
|
%\[E = m c^2\]
|
|
%\end{verbatim}
|
|
%Numbered single-line equations should be displayed using the
|
|
%\env{equation} environment. For example:
|
|
%\begin{verbatim}
|
|
%\begin{equation}\label{eq:trigrule}
|
|
%\cos^2\theta + \sin^2\theta \equiv 1
|
|
%\end{equation}
|
|
%\end{verbatim}
|
|
%The above are provided by the \LaTeX\ kernel but may be adjusted by
|
|
%packages such as \sty{amsmath}. The commands and environments below
|
|
%are provided by \sty{amsmath}.
|
|
%
|
|
%Multi-lined numbered equations should be displayed using the
|
|
%\env{align} environment. For example:
|
|
%\begin{verbatim}
|
|
%\begin{align}
|
|
%f(x) &= x^2 + x\label{eq:f}\\
|
|
%f'(x) &= 2x + 1\label{eq:df}
|
|
%\end{align}
|
|
%\end{verbatim}
|
|
%Unnumbered multi-lined equations should be displayed using the
|
|
%\env{align*} environment. For example:
|
|
%\begin{verbatim}
|
|
%\begin{align*}
|
|
%f(x) &= (x+1)(x-1)\\
|
|
%&= x^2 - 1
|
|
%\end{align*}
|
|
%\end{verbatim}
|
|
%If you want to mix numbered with unnumbered lines use the
|
|
%\env{align} environment and suppress unwanted line numbers with
|
|
%\cs{nonumber}. For example:
|
|
%\begin{verbatim}
|
|
%\begin{align}
|
|
%y &= x^2 + 3x - 2x + 1\nonumber\\
|
|
%&= x^2 + x + 1\label{eq:y}
|
|
%\end{align}
|
|
%\end{verbatim}
|
|
%An equation that is too long to fit on a single line can be
|
|
%displayed using the \env{split} environment.
|
|
%
|
|
%Text can be embedded in an equation using \ics{text}\marg{text} or
|
|
%you can use \ics{intertext}\marg{text} to interupt a multi-line
|
|
%environment such as \env{align}.
|
|
%
|
|
%Predefined operator names are listed in \tableref{tab:operatornames}.
|
|
%For additional operators, either use
|
|
%\begin{definition}[\DescribeMacro{\operatorname}]
|
|
%\cs{operatorname}\marg{name}
|
|
%\end{definition}
|
|
%for example
|
|
%\begin{verbatim}
|
|
%If $X$ and $Y$ are independent,
|
|
%$\operatorname{var}(X+Y) =
|
|
%\operatorname{var}(X) + \operatorname{var}(Y)$
|
|
%\end{verbatim}
|
|
%or declare it with
|
|
%\begin{definition}[\DescribeMacro{\DeclareMathOperator}]
|
|
%\cs{DeclareMathOperator}\marg{command}\marg{name}
|
|
%\end{definition}
|
|
%for example
|
|
%\begin{verbatim}
|
|
%\DeclareMathOperator{\var}{var}
|
|
%\end{verbatim}
|
|
%and then use this new command:
|
|
%\begin{verbatim}
|
|
%If $X$ and $Y$ are independent,
|
|
%$\var(X+Y) = \var(X)+\var(Y)$
|
|
%\end{verbatim}
|
|
%
|
|
%If you want limits that go above and
|
|
%below the operator (like \ics{sum}) use the starred versions
|
|
%(\ics{operatorname*} or \ics{DeclareMathOperator*}).
|
|
%
|
|
%\begin{table}[htbp]
|
|
%\caption{Predefined Operator Names (taken from
|
|
% \sty{amsmath} documentation)}
|
|
%\label{tab:operatornames}%
|
|
%\vskip\baselineskip
|
|
%\centering
|
|
%\begin{tabular}{rlrlrlrl}
|
|
%\cs{arccos} & $\arccos$ & \cs{deg} & $\deg$ & \cs{lg} & $\lg$ & \cs{projlim} & $\projlim$ \\
|
|
%\cs{arcsin} & $\arcsin$ & \cs{det} & $\det$ & \cs{lim} & $\lim$ & \cs{sec} & $\sec$ \\
|
|
%\cs{arctan} & $\arctan$ & \cs{dim} & $\dim$ & \cs{liminf} & $\liminf$ & \cs{sin} & $\sin$ \\
|
|
%\cs{arg} & $\arg$ & \cs{exp} & $\exp$ & \cs{limsup} & $\limsup$ & \cs{sinh} & $\sinh$ \\
|
|
%\cs{cos} & $\cos$ & \cs{gcd} & $\gcd$ & \cs{ln} & $\ln$ & \cs{sup} & $\sup$ \\
|
|
%\cs{cosh} & $\cosh$ & \cs{hom} & $\hom$ & \cs{log} & $\log$ & \cs{tan} & $\tan$ \\
|
|
%\cs{cot} & $\cot$ & \cs{inf} & $\inf$ & \cs{max} & $\max$ & \cs{tanh} & $\tanh$ \\
|
|
%\cs{coth} & $\coth$ & \cs{injlim} & $\injlim$ & \cs{min} & $\min$ \\
|
|
%\cs{csc} & $\csc$ & \cs{ker} & $\ker$ & \cs{Pr} & $\Pr$
|
|
%\end{tabular}\par
|
|
%\begin{tabular}{rlrl}
|
|
%\cs{varlimsup} & $\varlimsup$
|
|
%& \cs{varinjlim} & $\varinjlim$\\
|
|
%\cs{varliminf} & $\varliminf$
|
|
%& \cs{varprojlim} & $\varprojlim$
|
|
%\end{tabular}
|
|
%
|
|
%\end{table}
|
|
%
|
|
%\section{Color vs Grayscale}
|
|
%\label{sec:color}
|
|
%
|
|
%It's helpful if authors supply grayscale versions of their
|
|
%articles in the event that the article is to be incorporated into
|
|
%a black and white printed book. With external PDF, PNG or JPG
|
|
%graphic files, you just need to supply a grayscale version of the
|
|
%file. For example, if the file is called \texttt{myimage.png},
|
|
%then the gray version should be \texttt{myimage-gray.png} or
|
|
%\texttt{myimage-gray.pdf} or \texttt{myimage-gray.jpg}. You don't
|
|
%need to modify your code. The \clsfmt{jmlr} class checks for
|
|
%the existence of the grayscale version if it is print mode
|
|
%(provided you have used \ics{includegraphics} and haven't
|
|
%specified the file extension). This check is performed by code
|
|
%provided by the \clsfmt{jmlr} class not the \styfmt{jmlrutils} package.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\ifprint}]
|
|
%\cs{ifprint}\marg{true part}\marg{false part}
|
|
%\end{definition}
|
|
%You can use \cs{ifprint} to determine which mode you are in.
|
|
%For example:
|
|
%\begin{verbatim}
|
|
%in \figureref{fig:nodes}, the
|
|
%\ifprint{dark gray}{purple}
|
|
%ellipse represents an input and the
|
|
%\ifprint{light gray}{yellow} ellipse
|
|
%represents an output.
|
|
%\end{verbatim}
|
|
%Another example:
|
|
%\begin{verbatim}
|
|
%{\ifprint{\bfseries}{\color{red}}important text!}
|
|
%\end{verbatim}
|
|
%
|
|
%You can use the class option \clsopt{gray} to see how the
|
|
%document will appear in gray scale mode.
|
|
%
|
|
%The \sty{xcolor} class is loaded with the \pkgoptfmt{x11names}
|
|
%option, so you can use any of the x11 predefined colors (listed
|
|
%in the \ctandoc{xcolor}).
|
|
%
|
|
%\section{Where To Go For Help}
|
|
%
|
|
%If you have a general \LaTeX\ query, the first place to go to is the
|
|
%\urlfootref{http://www.tex.ac.uk/faq}{UK TUG FAQ}.
|
|
%
|
|
%If you are unfamiliar or just getting started with \LaTeX, there's
|
|
%a list of on-line introductions to \LaTeX\ at
|
|
%\url{http://www.tex.ac.uk/cgi-bin/texfaq2html?label=man-latex}
|
|
%or have a look at
|
|
%\href{http://www.dickimaw-books.com/latex/novices}{\LaTeX\ for Complete Novices}.
|
|
%
|
|
%There are also forums, mailing lists and newsgroups. For example,
|
|
%\TeX\ on StackExchange (\url{http://tex.stackexchange.com/}),
|
|
%the \LaTeX\ Community (\url{http://www.latex-community.org/}),
|
|
%the \texttt{texhax} mailing list
|
|
%(\url{http://tug.org/mailman/listinfo/texhax}) and
|
|
%\texttt{comp.text.tex} (archives available at
|
|
%\url{http://groups.google.com/group/comp.text.tex/}).
|
|
%
|
|
%Documentation for packages or classes can be found using the
|
|
%\texttt{texdoc} application. For example:
|
|
%\begin{verbatim}
|
|
%texdoc natbib
|
|
%\end{verbatim}
|
|
%Alternatively, you can go to
|
|
%\texttt{http://www.ctan.org/pkg/}\meta{name} where
|
|
%\meta{name} is the name of the package. For example:
|
|
%\url{http://www.ctan.org/pkg/natbib}
|
|
%
|
|
%For a general guide to preparing papers (regardless of whether you
|
|
%are using \LaTeX\ or a word processor), see Kate L.~Turabian, \qt{A
|
|
%manual for writers of term papers, theses, and dissertations}, The
|
|
%University of Chicago Press, 1996.
|
|
%
|
|
%\chapter{Guidelines for Production Editors}
|
|
%\label{sec:jmlrbook}
|
|
%
|
|
%The \clsfmt{jmlrbook} class can be used to combine articles that use
|
|
%the \clsfmt{jmlr} document class into a book. The following sample
|
|
%files are provided: \texttt{paper1/paper1.tex},
|
|
%\texttt{paper2/paper2.tex}, \texttt{paper3/paper3.tex},
|
|
%\texttt{jmlr-sample.tex}, \texttt{jmlrwcp-sample.tex},
|
|
%\texttt{jmlrbook-sample.tex} and \texttt{proceedings-sample.tex}.
|
|
%All but the last two are articles using the \clsfmt{jmlr} class. The
|
|
%last two (\texttt{jmlrbook-sample.tex} and
|
|
%\texttt{proceedings-sample.tex}) uses the \clsfmt{jmlrbook} class
|
|
%file to combine the articles into a book. Note that no modifications
|
|
%are needed to the files using the \clsfmt{jmlr} class when they are
|
|
%imported into the book. They can either be compiled as stand-alone
|
|
%articles or with the entire book.
|
|
%
|
|
%Before you compile the book, make sure that all the articles
|
|
%compile as stand-alone documents (and run Bib\TeX\ where
|
|
%necessary). You can use the \app{makejmlrbookgui} application to compile
|
|
%the book. See
|
|
%\url{http://www.dickimaw-books.com/software/makejmlrbookgui/} for details.
|
|
%
|
|
%\section{\clsfmt{jmlrbook} Class Options}
|
|
%\begin{description}
|
|
%\item[\clsopt{nowcp}]The imported pre-published articles were
|
|
%published in the Journal of Machine Learning Research (default).
|
|
%\item[\clsopt{pmlr}] The imported pre-published articles were
|
|
%published in the Proceedings of Machine Learning Research (PMLR).
|
|
%\item[\clsopt{wcp}] The imported pre-published articles were
|
|
%published in the JMLR Workshop and Conference Proceedings (JMLR
|
|
%W\&CP).
|
|
%
|
|
%If the book has a mixture of JMLR, JMLR W\&CP or PMLR articles, you
|
|
%can switch between them using
|
|
%\begin{definition}[\DescribeMacro{\jmlrnowcp}]
|
|
%\cs{jmlrnowcp}
|
|
%\end{definition}
|
|
%(for JMLR) or
|
|
%\begin{definition}[\DescribeMacro{\jmlrwcp}]
|
|
%\cs{jmlrwcp}
|
|
%\end{definition}
|
|
%(for JMLR W\&CP) or
|
|
%\begin{definition}[\DescribeMacro{\jmlrpmlr}]
|
|
%\cs{jmlrpmlr}
|
|
%\end{definition}
|
|
%(for PMLR).
|
|
%Alternatively, you can set the name of the journal or conference
|
|
%proceedings using:
|
|
%\begin{definition}[\DescribeMacro{\jmlrproceedings}]
|
|
%\cs{jmlrproceedings}\marg{short title}\marg{long title}
|
|
%\end{definition}
|
|
%
|
|
%\item[\clsopt{color}] Color version (see \sectionref{sec:color}).
|
|
%Use this option for the on-line version with hyperlinks enabled
|
|
%(default).
|
|
%
|
|
%\item[\clsopt{gray}] Grayscale version (see \sectionref{sec:color}).
|
|
%Use this option for the print version without hyperlinks.
|
|
%
|
|
%\item[{\clsopt[top]{tablecaption}}] in a \env{table} environment,
|
|
%\ics{floatconts} puts the caption at the top.
|
|
%
|
|
%\item[{\clsopt[bottom]{tablecaption}}] in a \env{table} environment,
|
|
%\ics{floatconts} puts the caption at the bottom.
|
|
%
|
|
%\item[\clsopt{letterpaper}] Set the paper size to letter (default).
|
|
%
|
|
%\item[\clsopt{7x10}] Set the paper size to $7\times10$ inches.
|
|
%
|
|
%\item[\clsopt{10pt}] Use 10pt as the normal text size.
|
|
%\item[\clsopt{11pt}] Use 11pt as the normal text size (default).
|
|
%\item[\clsopt{12pt}] Use 12pt as the normal text size.
|
|
%
|
|
%\end{description}
|
|
%
|
|
%\section{The Preamble}
|
|
%
|
|
%Any packages that the imported articles load (which aren't
|
|
%automatically loaded by \clsfmt{jmlr}) must be loaded in the book's
|
|
%preamble. For example, if one or more of the articles load the
|
|
%\sty{siunitx} package, this package must be loaded in the book.
|
|
%
|
|
%Commands that are defined in the imported articles will be local
|
|
%to that article unless they have been globally defined using
|
|
%\ics{gdef} or \ics{global}. Since most authors use \ics{newcommand}
|
|
%and \ics{newenvironment} (or \ics{renewcommand} and
|
|
%\ics{renewenvironment}) this shouldn't cause a conflict if more
|
|
%that one article has defined the same command or environment.
|
|
%For example, in the sample files supplied, both
|
|
%\texttt{paper1/paper1.tex} and \texttt{paper2/paper2.tex} have
|
|
%defined the command \cs{samplecommand} using \cs{newcommand}. As
|
|
%long as this command isn't also defined in the book, there won't
|
|
%be a conflict.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\title}]
|
|
%\cs{title}\oarg{PDF title}\marg{book title}
|
|
%\end{definition}
|
|
%In the book preamble, \cs{title} sets the book title and the optional
|
|
%argument is used for the PDF title, which will be displayed
|
|
%when the reader views the PDF file's properties in their PDF viewer.
|
|
%(Note that in the imported articles, \cs{title} sets the article's
|
|
%title and the optional argument sets the short title for the
|
|
%page header and table of contents.)
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\author}]
|
|
%\cs{author}\oarg{PDF author(s)}\marg{book author(s)}
|
|
%\end{definition}
|
|
%In the book preamble, \cs{author} sets the book's author (or editor)
|
|
%and the optional argument is used for the PDF author, which will be
|
|
%displayed when the reader views the PDF file's properties in their
|
|
%PDF viewer. (Note that in the imported articles, \cs{author} sets
|
|
%the article's author and the optional argument sets the short author
|
|
%list for the page header.)
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\volume}]
|
|
%\cs{volume}\marg{number}
|
|
%\end{definition}
|
|
%This command sets the book's volume number. Omit if the book has no
|
|
%volume number.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\subtitle}]
|
|
%\cs{subtitle}\marg{sub-title}
|
|
%\end{definition}
|
|
%This command sets the book's subtitle. Omit if the book has no
|
|
%sub-title.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\logo}]
|
|
%\cs{logo}\oarg{url}\marg{image command}
|
|
%\end{definition}
|
|
%This sets the book's title image. Use \ics{includegraphics} and
|
|
%omit the file extension. If you provide a grayscale version as
|
|
%well as a color version, the grayscale version will be used for
|
|
%the print version of the book. (See \sectionref{sec:color}
|
|
%for further details.) The optional argument, if present, was
|
|
%formerly used by \app{makejmlrbookgui} to make the logo a link to
|
|
%\meta{url} on the index HTML page. (The HTML pages are no longer
|
|
%generated by the application as PMLR now generate the HTML from
|
|
%the .bib file for the proceedings.)
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\team}]
|
|
%\cs{team}\marg{team title}
|
|
%\end{definition}
|
|
%This can be used to set the name of the editorial team. This
|
|
%command may be omitted if not required.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\productioneditor}]
|
|
%\cs{productioneditor}\marg{name}
|
|
%\end{definition}
|
|
%This command may be used to name the production editor. The command
|
|
%may be omitted if not required.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\jmlrlocation}]
|
|
%\cs{jmlrlocation}\marg{location}
|
|
%\end{definition}
|
|
%This specifies the workshop location. By default this doesn't appear
|
|
%on the title page. See \sectionref{sec:modifytitle} for details on
|
|
%how to modify the layout of the title page.
|
|
%
|
|
%\section{Main Book Commands}
|
|
%
|
|
%All commands that are provided by the \clsfmt{jmlr} class are
|
|
%also available with the \clsfmt{jmlrbook} class, but some commands
|
|
%might behave differently depending on whether they are in the
|
|
%main part of the book or within the imported articles.
|
|
%
|
|
%In the main part of the book you can use the following commands:
|
|
%\begin{definition}[\DescribeMacro{\maketitle}]
|
|
%\cs{maketitle}
|
|
%\end{definition}
|
|
%This displays the book's title page. Note that \cs{maketitle} has
|
|
%a different effect when used in imported articles.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\frontmatter}]
|
|
%\cs{frontmatter}
|
|
%\end{definition}
|
|
%Use this command at the start of the front matter (e.g.\ before the
|
|
%foreword or preface). This will make chapters unnumbered even if you
|
|
%use \cs{chapter} instead of \cs{chapter*}. It also sets the page
|
|
%style and sets the page numbering to lower case Roman numerals.
|
|
%
|
|
%\begin{definition}[\DescribeEnv{authorsignoff}]
|
|
%\cs{begin}\{authorsignoff\}\\
|
|
%\meta{author list}\\
|
|
%\cs{end}\{authorsignoff\}
|
|
%\end{definition}
|
|
%This environment may be used by the author signing off at the end of a chapter such as the
|
|
%foreword. Within the environment use:
|
|
%\begin{definition}[\DescribeMacro{\Author}]
|
|
%\cs{Author}\marg{details}
|
|
%\end{definition}
|
|
%for the author's details. More than one \cs{Author} should be used
|
|
%if there is more than one author. Example:
|
|
%\begin{verbatim}
|
|
%\begin{authorsignoff}
|
|
%\Author{Nicola Talbot\\
|
|
%University of East Anglia}
|
|
%\Author{Anne Author\\
|
|
%University of No Where}
|
|
%\end{authorsignoff}
|
|
%\end{verbatim}
|
|
%
|
|
%\begin{definition}[\DescribeEnv{preface}]
|
|
%\cs{begin}\{preface\}\oarg{filename}
|
|
%\end{definition}
|
|
%This environment may be used to typeset the preface. This starts a
|
|
%new chapter using
|
|
%\begin{verbatim}
|
|
%\chapter{\prefacename}
|
|
%\end{verbatim}
|
|
%\DescribeMacro{\prefacename}where \cs{prefacename} defaults to
|
|
%``Preface''. This environment should typically go in the front
|
|
%matter and is provided to allow \app{makejmlrbookgui} create a
|
|
%standalone document for the preface. The optional argument is the
|
|
%filename (without any extension or path) that will be used by
|
|
%\app{makejmlrbookgui}. This defaults to \texttt{preface} but, to
|
|
%conform with PMLR guidelines, should be changed to the surname of
|
|
%the first author (editor) followed by the final two digits of the
|
|
%year. See the PMLR website for further details of the guidelines.
|
|
%
|
|
%\begin{definition}[\DescribeEnv{signoff}]
|
|
%\cs{begin}\{signoff\}\oarg{team name}\marg{date}\\
|
|
%\meta{editor list}\\
|
|
%\cs{end}\{signoff\}
|
|
%\end{definition}
|
|
%This environment may be used by the editorial team when signing off
|
|
%a chapter such as the preface. If the optional argument is omitted,
|
|
%\qt{The Editorial Team} is used. If you are using the \env{preface}
|
|
%environment described above, the \env{signoff} environment must go
|
|
%inside the \env{preface} environment.
|
|
%
|
|
%Within the \env{signoff} environment use:
|
|
%\begin{definition}[\DescribeMacro{\Editor}]
|
|
%\cs{Editor}\marg{details}
|
|
%\end{definition}
|
|
%for each editor. Example:
|
|
%\begin{verbatim}
|
|
%\begin{signoff}{March 2010}
|
|
%% First editor:
|
|
%\Editor{Nicola Talbot\\
|
|
%University of East Anglia\\
|
|
%\mailto{N.Talbot@uea.ac.uk}}
|
|
%% Second editor:
|
|
%\Editor{Anne Editor\\
|
|
%University of Nowhere\\
|
|
%\mailto{ae@sample.com}}
|
|
%\end{signoff}
|
|
%\end{verbatim}
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\tableofcontents}]
|
|
%\cs{tableofcontents}
|
|
%\end{definition}
|
|
%This command displays the book's table of contents. Note that it
|
|
%has a different effect if used in an imported article.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\mainmatter}]
|
|
%\cs{mainmatter}
|
|
%\end{definition}
|
|
%Use this command to switch to the book's main matter. This will
|
|
%switch the chapter numbering back on, reset the page numbering to
|
|
%Arabic and set up the main page style.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\part}]
|
|
%\cs{part}\oarg{short title}\marg{title}
|
|
%\end{definition}
|
|
%If used in the main part of the book, this command will start a
|
|
%new part and issue a clear double page. Note that this command
|
|
%has a different effect if used in an imported article (or inside the
|
|
%\env{jmlrpapers} environment).
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\addtocpart}]
|
|
%\cs{addtocpart}\marg{title}
|
|
%\end{definition}
|
|
%This adds \meta{title} to the table of contents, issues a clear
|
|
%double page, but doesn't display any text or affect the part
|
|
%numbering.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\chapter}]
|
|
%\cs{chapter}\oarg{short title}\marg{title}
|
|
%\end{definition}
|
|
%This command may be used in the main body of the book but will
|
|
%cause an error if used within an imported article (or inside the
|
|
%\env{jmlrpapers} environment).
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\section}]
|
|
%\cs{section}\oarg{short title}\marg{title}
|
|
%\end{definition}
|
|
%\begin{definition}[\DescribeMacro{\subsection}]
|
|
%\cs{subsection}\oarg{short title}\marg{title}
|
|
%\end{definition}
|
|
%\begin{definition}[\DescribeMacro{\subsubsection}]
|
|
%\cs{subsubsection}\oarg{short title}\marg{title}
|
|
%\end{definition}
|
|
%\begin{definition}[\DescribeMacro{\paragraph}]
|
|
%\cs{paragraph}\oarg{short title}\marg{title}
|
|
%\end{definition}
|
|
%\begin{definition}[\DescribeMacro{\subparagraph}]
|
|
%\cs{subparagraph}\oarg{short title}\marg{title}
|
|
%\end{definition}
|
|
%These commands may be used in the main body of the book or within
|
|
%imported articles. In the main body of the book (outside of the
|
|
%\env{jmlrpapers} environment) they need to be
|
|
%within a chapter and will be numbered according to the chapter.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\appendix}]
|
|
%\cs{appendix}
|
|
%\end{definition}
|
|
%If used in the main body of the book (\emph{outside} of the
|
|
%\env{jmlrpapers} environment) this will switch to the book
|
|
%appendices. Subsequent \cs{chapter} commands will produce the
|
|
%appendices. (Any imported articles in the appendix will be
|
|
%identified by \app{makejmlrbookgui} as supplemental material.) If
|
|
%used within an imported article (or within the \env{jmlrpapers}
|
|
%environment) \cs{appendix} will switch to the
|
|
%article appendices and won't affect the main part of the book.
|
|
%
|
|
%\begin{definition}[\DescribeEnv{jmlrpapers}]
|
|
%\cs{begin}\{jmlrpapers\}\\
|
|
%\meta{imported papers}\\
|
|
%\cs{end}\{jmlrpapers\}
|
|
%\end{definition}
|
|
%This environment must be used when importing articles and may be
|
|
%used as often as required. Take care not to include book sectioning
|
|
%commands, such as \ics{chapter}, in this environment. Within the
|
|
%\envfmt{jmlrpapers} environment, use the following commands to
|
|
%import articles:
|
|
%\begin{definition}[\DescribeMacro{\importpubpaper}]
|
|
%\cs{importpubpaper}\oarg{label}\marg{directory}\marg{file}\marg{pages}
|
|
%\end{definition}
|
|
%This imports an article that has already been published elsewhere.
|
|
%The \meta{pages} argument should be the page range from the
|
|
%\emph{previously published} version of this article. This may not
|
|
%necessarily be the same as the page range of the article in the
|
|
%book. The directory the imported file is contained in is given by
|
|
%\meta{directory}. If the file is in the same directory as the book,
|
|
%use a dot. The file name is given by \meta{file}. The article is
|
|
%also given a label, specified by the optional argument. This is
|
|
%\meta{directory}/\meta{file} by default. The label is used as a
|
|
%prefix to labels in the imported articles which ensures that
|
|
%cross-references are unique. You can also use this label to
|
|
%reference the article elsewhere in the book (see
|
|
%\sectionref{sec:bkcrossref}).
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\importpaper}]
|
|
%\cs{importpaper}\oarg{label}\marg{directory}\marg{file}
|
|
%\end{definition}
|
|
%Imports an article that is being published in the book. The
|
|
%arguments are the same as above except that there is no page
|
|
%range (the page range is computed automatically).
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\importarticle}]
|
|
%\cs{importarticle}\oarg{label}\marg{directory}\marg{file}
|
|
%\end{definition}
|
|
%This imports an article that hasn't been published elsewhere. There
|
|
%is no page range, but the other arguments are the same as
|
|
%those describe above for \cs{importpubpaper}.
|
|
%
|
|
%Example: to import a previously published paper
|
|
%\texttt{paper1/paper1.tex} and an unpublished paper
|
|
%\texttt{paper2/paper2.tex}:
|
|
%\begin{verbatim}
|
|
%\begin{jmlrpapers}
|
|
%\importpubpaper{paper1}{paper1}{23--45}
|
|
%\importarticle{paper2}{paper2}
|
|
%\end{jmlrpapers}
|
|
%\end{verbatim}
|
|
%
|
|
%\subsection{Two Column Articles in a One Column Book}
|
|
%
|
|
%The \clsfmt{jmlrbook} class column style will override the column style
|
|
%of the imported articles. You can use the \clsopt{twocolumn} class
|
|
%option to \clsfmt{jmlrbook}, but this will make the whole book with
|
|
%two columns. If you only want the imported articles to be in two
|
|
%columns, then put \ics{twocolumn} in the \env{jmlrpapers}
|
|
%environment to switch on two column formatting. The effect will be
|
|
%localised to the end of the environment.
|
|
%
|
|
%\subsection{Cross-Referencing}
|
|
%\label{sec:bkcrossref}
|
|
%
|
|
%You can cross-reference other parts of the book using the
|
|
%standard \cs{label}/\cs{ref} mechanism, but if you want to
|
|
%reference something within an imported article, you must prefix
|
|
%the label with the label given when importing the article (that
|
|
%is, the optional argument to \ics{importpubpaper},
|
|
%\ics{importpaper} or \cs{importarticle}). For example, if you
|
|
%want to reference a section labelled \texttt{sec:results} in the
|
|
%imported paper \texttt{paper1/paper1.tex}, you would need to do:
|
|
%\begin{verbatim}
|
|
%see Section~\ref{paper1/paper1sec:results}
|
|
%\end{verbatim}
|
|
%or
|
|
%\begin{verbatim}
|
|
%see \sectionref{paper1/paper1sec:results}
|
|
%\end{verbatim}
|
|
%
|
|
%In addition to the commands described in \sectionref{sec:crossref},
|
|
%the \clsfmt{jmlrbook} class also provides the following
|
|
%cross-referencing commands:
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\chapterref}]
|
|
%\cs{chapterref}\marg{label list}
|
|
%\end{definition}
|
|
%Reference a chapter or chapters. The argument is a comma-separated
|
|
%list of labels.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\articlepageref}]
|
|
%\cs{articlepageref}\marg{label}
|
|
%\end{definition}
|
|
%This displays the starting page number of the article whose label
|
|
%is given by \meta{label}. Note that this must a single label, not
|
|
%a list. For example:
|
|
%\begin{verbatim}
|
|
%An interesting article starts on page~\articlepageref{paper1/paper1}
|
|
%\end{verbatim}
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\articlepagesref}]
|
|
%\cs{articlepagesref}\marg{label}
|
|
%\end{definition}
|
|
%This displays the page range of the article whose label is
|
|
%given by \meta{label}. Again, this must be a single label, not a
|
|
%list. This page range is unrelated to the \meta{pages} argument of
|
|
%\ics{importpubarticle}.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\articletitleref}]
|
|
%\cs{articletitleref}\marg{label}
|
|
%\end{definition}
|
|
%This displays the short title for the article whose label is
|
|
%given by \meta{label}. Again, this must be a single label, not a
|
|
%list.
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\articleauthorref}]
|
|
%\cs{articleauthorref}\marg{label}
|
|
%\end{definition}
|
|
%This displays the author list for the article whose label is
|
|
%given by \meta{label}. Again, this must be a single label, not a
|
|
%list.
|
|
%
|
|
%\section{Altering the Layout of the Main Title Page}
|
|
%\label{sec:modifytitle}
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\titlebody}]
|
|
%\cs{titlebody}
|
|
%\end{definition}
|
|
%The main body of the book's title page is given by the command
|
|
%\cs{titlebody}. Within the definition of this command, you can
|
|
%use:
|
|
%\begin{definition}[\DescribeMacro{\SetTitleElement}]
|
|
%\cs{SetTitleElement}\marg{element}\marg{pre}\marg{post}
|
|
%\end{definition}
|
|
%where \meta{element} can be: \texttt{title}, \texttt{volume},
|
|
%\texttt{issue}\footnote{The default title page layout doesn't use
|
|
%\texttt{issue}, but if required it can be set with \ics{issue}\marg{number}},
|
|
%\texttt{subtitle}, \texttt{logo}, \texttt{team}, \texttt{author},
|
|
%\texttt{date}, \texttt{productioneditor}. The \meta{pre} and
|
|
%\meta{post} arguments specify what to do before and after the
|
|
%element. Note that \cs{SetTitleElement} does nothing if that
|
|
%element hasn't been set. For example, if \cs{volume} has been
|
|
%omitted or \verb|\volume{}| is used, then
|
|
%\begin{verbatim}
|
|
%\SetTitleElement{volume}{\mainvolumefont}{\postmainvolume}
|
|
%\end{verbatim}
|
|
%will do nothing (so you don't end up with \textbf{Volume :}).
|
|
%
|
|
%\begin{definition}[\DescribeMacro{\IfTitleElement}]
|
|
%\cs{IfTitleElement}\marg{element}\marg{true part}\marg{false part}
|
|
%\end{definition}
|
|
%This does \meta{true part} if \meta{element} has been set
|
|
%otherwise it does \meta{false part}. For example,
|
|
%\cs{postmainvolume} is defined as:
|
|
%\begin{verbatim}
|
|
%\newcommand{\postmainvolume}{%
|
|
% \IfTitleElement{subtitle}{}{:}\par\relax
|
|
%}
|
|
%\end{verbatim}
|
|
%This means that it will only print a colon after the volume
|
|
%number if the subtitle has been set.
|
|
%
|
|
%The default definition of \cs{titlebody} is:
|
|
%\begin{verbatim}
|
|
%\newcommand{\titlebody}{%
|
|
% \SetTitleElement{title}{\maintitlefont}{\postmaintitle}%
|
|
% \SetTitleElement{volume}{\mainvolumefont}{\postmainvolume}%
|
|
% \SetTitleElement{subtitle}{\mainsubtitlefont}{\postmainsubtitle}%
|
|
% \SetTitleElement{logo}{\mainlogofont}{\postmainlogo}%
|
|
% \SetTitleElement{team}{\mainteamfont}{\postmainteam}%
|
|
% \SetTitleElement{author}{\mainauthorfont}{\postmainauthor}%
|
|
% \SetTitleElement{productioneditor}{\mainproductioneditorfont}%
|
|
% {\postmainproductioneditor}%
|
|
%}
|
|
%\end{verbatim}
|
|
%
|
|
%\section{Potential Pitfalls}
|
|
%
|
|
%The \cls{combine} class and \sty{hyperref} package are
|
|
%individually both easily broken by packages that change certain
|
|
%internals and they don't ordinarily work together. The
|
|
%\clsfmt{jmlrbook} class applies patches to the internal referencing
|
|
%mechanism to make them work together, but it's a fairly fragile
|
|
%alliance. Some packages are known to break it, for example
|
|
%\sty{subfig}, \sty{pdfpages} and \sty{geometry}. This is why the
|
|
%\clsfmt{jmlr} class checks for known problem packages and generates an
|
|
%error message to dissuade authors from using them. It's likely that
|
|
%there are other packages that may cause a problem and, as they are
|
|
%found, they will be added to the check list. Also, it's possible for
|
|
%an author to disable the package checking mechanism if they are
|
|
%determined to use a particular package.
|
|
%
|
|
%In the event that an article has loaded a problem package, the
|
|
%editors will have to decide whether to ask the author to change
|
|
%the article so that it doesn't cause a problem or to make the changes
|
|
%themselves or to find a way of fudging things to get it to work. It
|
|
%depends on the level of \LaTeX\ expertise amongst the editors and
|
|
%the time available.
|
|
%
|
|
%Another problem that can arise is when different articles use
|
|
%packages that conflict. For example, one article uses package
|
|
%\styfmt{foo} and another uses package \styfmt{bar}. Each article compiles
|
|
%okay as a stand-alone article, but when combined \styfmt{foo} and
|
|
%\styfmt{bar} conflict. Another problem may occur when articles load the
|
|
%same package but with conflicting package options. To reduce the
|
|
%chance of this occurring, the \clsfmt{jmlr} class loads some commonly
|
|
%used packages. For example, it loads the \sty{algorithm2e}
|
|
%package with the \pkgoptfmt{algo2e} and \pkgoptfmt{ruled} options and
|
|
%provides the \env{algorithm} environment in addition to
|
|
%\sty{algorithm2e}'s \env{algorithm2e} environment. Different
|
|
%versions of the same package can also be a problem. To help
|
|
%counteract the problem caused by different papers using different
|
|
%versions of the \sty{algorithm2e} package, \sty{jmlrbook} defines
|
|
%most of the old style commands if they don't exist.
|
|
%
|
|
%Articles that use different input encodings can also cause a
|
|
%problem. For example, if one article uses \texttt{utf8} and another
|
|
%uses \texttt{latin1}. If the authors have directly entered a
|
|
%diacritic or ligature, such as \'e or \ae, instead of using a
|
|
%\LaTeX\ command, such as \cs{'e} or \cs{ae}, then this will cause an
|
|
%error on compiling the book.\footnote{and may also cause a problem
|
|
%for the editor's text editor.} The choice then is to either change
|
|
%all non-keyboard characters with the appropriate \LaTeX\ commands or
|
|
%to use the \cs{inputencoding} command, supplied by the
|
|
%\sty{inputenc} package, to switch the encoding at the start of each
|
|
%article. One thing to watch out for are bib files that contain a
|
|
%mixture of encodings caused by copying and pasting from different
|
|
%sources. Version~0.4.2b of \app{makejmlrbookgui} provides a function
|
|
%to search for characters outside the range 0x20 (space) and 0x7E
|
|
%(tilde).
|
|
%
|
|
%Authors who use \cs{nonumber} within an \env{equation} environment
|
|
%can mess up the hyperlinks. Remove \cs{nonumber} and change the
|
|
%equation environment to \cs{[} \ldots\ \cs{]} (or just make it a
|
|
%numbered equation).
|
|
%
|
|
%If the article changes the graphics path using \cs{graphicspath},
|
|
%\clsfmt{jmlrbook} won't find the graphics if the imported articles
|
|
%aren't in the same directory as the book.
|
|
%
|
|
%The \app{makejmlrbookgui} application provides some diagnostic
|
|
%tools, which can help detect some common problems. It's manual also
|
|
%has a
|
|
%\href{http://www.dickimaw-books.com/software/makejmlrbookgui/manual/troubleshooting.html}{troubleshooting
|
|
%section}.
|
|
%
|
|
%\StopEventually{\clearpage\phantomsection
|
|
% \PrintIndex
|
|
%}
|
|
%
|
|
%
|
|
%
|
|
%\chapter{The Code}
|
|
%\iffalse
|
|
% \begin{macrocode}
|
|
%<*jmlrutils.sty>
|
|
% \end{macrocode}
|
|
%\fi
|
|
%\section{jmlrutils.sty Code}
|
|
%Non-class dependent code. This package is automatically loaded by
|
|
%\cls{jmlr} but may be used with other classes.
|
|
% \begin{macrocode}
|
|
\ProvidesPackage{jmlrutils}[2017/08/01]
|
|
% \end{macrocode}
|
|
% Package options:
|
|
%\begin{macro}{\ifjmlrutilsmaths}
|
|
%Determine if the maths commands should be provided.
|
|
% \begin{macrocode}
|
|
\newif\ifjmlrutilsmaths
|
|
\jmlrutilsmathstrue
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
% \begin{macrocode}
|
|
\DeclareOption{maths}{\jmlrutilsmathstrue}
|
|
\DeclareOption{nomaths}{\jmlrutilsmathsfalse}
|
|
% \end{macrocode}
|
|
%
|
|
%\begin{macro}{\ifjmlrutilstheorems}
|
|
%Determine if the theorem environments should be provided.
|
|
% \begin{macrocode}
|
|
\newif\ifjmlrutilstheorems
|
|
\jmlrutilstheoremstrue
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
% \begin{macrocode}
|
|
\DeclareOption{theorems}{\jmlrutilstheoremstrue}
|
|
\DeclareOption{notheorems}{\jmlrutilstheoremsfalse}
|
|
% \end{macrocode}
|
|
%
|
|
%\begin{macro}{\ifjmlrutilssubfloats}
|
|
%Determine if the sub-floats should be provided.
|
|
% \begin{macrocode}
|
|
\newif\ifjmlrutilssubfloats
|
|
\jmlrutilssubfloatstrue
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
% \begin{macrocode}
|
|
\DeclareOption{subfloats}{\jmlrutilssubfloatstrue}
|
|
\DeclareOption{nosubfloats}{\jmlrutilssubfloatsfalse}
|
|
% \end{macrocode}
|
|
%
|
|
% \begin{macrocode}
|
|
\ProcessOptions
|
|
% \end{macrocode}
|
|
% Requires \sty{etoolbox}:
|
|
% \begin{macrocode}
|
|
\RequirePackage{etoolbox}
|
|
% \end{macrocode}
|
|
%If the maths commands are needed, load \sty{amsmath}.
|
|
% \begin{macrocode}
|
|
\ifjmlrutilsmaths
|
|
\RequirePackage{amsmath}
|
|
\fi
|
|
% \end{macrocode}
|
|
% The conditional \cs{iftablecaptiontop} will already have been
|
|
% defined by the \cls{jmlr} class, so only needs to be defined
|
|
% if not already done.
|
|
%\begin{macro}{\iftablecaptiontop}
|
|
% \begin{macrocode}
|
|
\@ifundefined{iftablecaptiontop}
|
|
{\newif\iftablecaptiontop
|
|
\tablecaptiontoptrue}
|
|
{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\subsection{Cross-Referencing}
|
|
% Convenient macros for cross-referencing.
|
|
% \begin{macrocode}
|
|
\newcommand*{\@jmlr@reflistsep}{, }
|
|
\newcommand*{\@jmlr@reflistlastsep}{ and }
|
|
\newcommand*{\sectionrefname}{Section}
|
|
\newcommand*{\sectionsrefname}{Sections}
|
|
\newcommand*{\equationrefname}{Equation}
|
|
\newcommand*{\equationsrefname}{Equations}
|
|
\newcommand*{\tablerefname}{Table}
|
|
\newcommand*{\tablesrefname}{Tables}
|
|
\newcommand*{\figurerefname}{Figure}
|
|
\newcommand*{\figuresrefname}{Figures}
|
|
\newcommand*{\algorithmrefname}{Algorithm}
|
|
\newcommand*{\algorithmsrefname}{Algorithms}
|
|
\newcommand*{\theoremrefname}{Theorem}
|
|
\newcommand*{\theoremsrefname}{Theorems}
|
|
\newcommand*{\lemmarefname}{Lemma}
|
|
\newcommand*{\lemmasrefname}{Lemmas}
|
|
\newcommand*{\remarkrefname}{Remark}
|
|
\newcommand*{\remarksrefname}{Remarks}
|
|
\newcommand*{\corollaryrefname}{Corollary}
|
|
\newcommand*{\corollarysrefname}{Corollaries}
|
|
\newcommand*{\definitionrefname}{Definition}
|
|
\newcommand*{\definitionsrefname}{Definitions}
|
|
\newcommand*{\conjecturerefname}{Conjecture}
|
|
\newcommand*{\conjecturesrefname}{Conjectures}
|
|
\newcommand*{\axiomrefname}{Axiom}
|
|
\newcommand*{\axiomsrefname}{Axioms}
|
|
\newcommand*{\examplerefname}{Example}
|
|
\newcommand*{\examplesrefname}{Examples}
|
|
\newcommand*{\appendixrefname}{Appendix}
|
|
\newcommand*{\appendixsrefname}{Appendices}
|
|
\newcommand*{\partrefname}{Part}
|
|
\newcommand*{\partsrefname}{Parts}
|
|
% \end{macrocode}
|
|
%\begin{macro}{\objectref}
|
|
% Cross-reference a particular structural element. The first
|
|
% argument is the list of labels, the second argument is a
|
|
% control sequence containing the singular tag, the third
|
|
% argument a control sequence containing the plural tag,
|
|
% the fourth argument is text to go before the reference number,
|
|
% e.g.\ an opening bracket, and the fifth argument is text
|
|
% to go after the reference number, e.g.\ a closing bracket.
|
|
%\changes{1.24}{2017-08-01}{changed \cs{DeclareRobustCommand}
|
|
%to \cs{newrobustcmd}}
|
|
% \begin{macrocode}
|
|
\newrobustcmd*{\objectref}[5]{%
|
|
\let\@objectname\@empty
|
|
\def\@objectref{}%
|
|
\let\@prevsep\@empty
|
|
\@for\@thislabel:=#1\do{%
|
|
\toks@{\@prevsep}%
|
|
\protected@edef\@objectref{\@objectref\the\toks@
|
|
#4\ref{\@thislabel}#5}%
|
|
\ifx\@objectname\@empty
|
|
\let\@objectname#2% singular tag
|
|
\else
|
|
\let\@objectname#3% plural tag
|
|
\let\@prevsep\@jmlr@reflistsep
|
|
\fi
|
|
}%
|
|
\ifx\@objectname#3% plural tag
|
|
\let\@prevsep\@jmlr@reflistlastsep
|
|
\fi
|
|
\@objectname~\@objectref
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\sectionref}
|
|
% \begin{macrocode}
|
|
\newcommand*{\sectionref}[1]{%
|
|
\objectref{#1}{\sectionrefname}{\sectionsrefname}{}{}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\equationref}
|
|
% \begin{macrocode}
|
|
\newcommand*{\equationref}[1]{%
|
|
\objectref{#1}{\equationrefname}{\equationsrefname}()}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\tableref}
|
|
% \begin{macrocode}
|
|
\newcommand*{\tableref}[1]{%
|
|
\objectref{#1}{\tablerefname}{\tablesrefname}{}{}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\figureref}
|
|
% \begin{macrocode}
|
|
\newcommand*{\figureref}[1]{%
|
|
\objectref{#1}{\figurerefname}{\figuresrefname}{}{}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\algorithmref}
|
|
% \begin{macrocode}
|
|
\newcommand*{\algorithmref}[1]{%
|
|
\objectref{#1}{\algorithmrefname}{\algorithmsrefname}{}{}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\theoremmref}
|
|
% \begin{macrocode}
|
|
\newcommand*{\theoremref}[1]{%
|
|
\objectref{#1}{\theoremrefname}{\theoremsrefname}{}{}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\lemmaref}
|
|
% \begin{macrocode}
|
|
\newcommand*{\lemmaref}[1]{%
|
|
\objectref{#1}{\lemmarefname}{\lemmasrefname}{}{}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\remarkref}
|
|
% \begin{macrocode}
|
|
\newcommand*{\remarkref}[1]{%
|
|
\objectref{#1}{\remarkrefname}{\remarksrefname}{}{}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\corollaryref}
|
|
% \begin{macrocode}
|
|
\newcommand*{\corollaryref}[1]{%
|
|
\objectref{#1}{\corollaryrefname}{\corollarysrefname}{}{}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\definitionref}
|
|
% \begin{macrocode}
|
|
\newcommand*{\definitionref}[1]{%
|
|
\objectref{#1}{\definitionrefname}{\definitionsrefname}{}{}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\conjectureref}
|
|
% \begin{macrocode}
|
|
\newcommand*{\conjectureref}[1]{%
|
|
\objectref{#1}{\conjecturerefname}{\conjecturesrefname}{}{}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\axiomref}
|
|
% \begin{macrocode}
|
|
\newcommand*{\axiomref}[1]{%
|
|
\objectref{#1}{\axiomrefname}{\axiomsrefname}{}{}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\exampleref}
|
|
% \begin{macrocode}
|
|
\newcommand*{\exampleref}[1]{%
|
|
\objectref{#1}{\examplerefname}{\examplesrefname}{}{}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\appendixref}
|
|
% \begin{macrocode}
|
|
\newcommand*{\appendixref}[1]{%
|
|
\objectref{#1}{\appendixrefname}{\appendixsrefname}{}{}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\partref}
|
|
% \begin{macrocode}
|
|
\newcommand*{\partref}[1]{%
|
|
\objectref{#1}{\partrefname}{\partsrefname}{}{}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\subsection{Figures, Tables and Algorithms}
|
|
%
|
|
%\begin{macro}{\floatconts}
|
|
% The first argument is the label, the second argument contains the
|
|
% caption (using \cs{caption}) and the third argument contains the
|
|
% contents of the float
|
|
% \begin{macrocode}
|
|
\newcommand{\floatconts}[3]{%
|
|
\@ifundefined{\@captype conts}{\tableconts{#1}{#2}{#3}}%
|
|
{\csname\@captype conts\endcsname{#1}{#2}{#3}}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\tableconts}
|
|
%This will already have been defined if the \clsfmt{jmlr} class was
|
|
%loaded.
|
|
% \begin{macrocode}
|
|
\providecommand{\tableconts}[3]{%
|
|
#2\label{#1}\vskip\baselineskip
|
|
{\centering #3\par}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\figureconts}
|
|
% \begin{macrocode}
|
|
\newcommand{\figureconts}[3]{%
|
|
{\centering #3\par}%
|
|
\vskip\baselineskip
|
|
#2\label{#1}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%The following macro and environment assume that \sty{algorithm2e}
|
|
%has been loaded (which is done by the \cls{jmlr} class). If the
|
|
%\styfmt{jmlrutils} package is loaded without the \cls{jmlr} class,
|
|
%the \sty{algorithm2e} package will have to be explicitly loaded.
|
|
%\begin{macro}{\algocfconts}
|
|
%\changes{1.09}{2010/12/01}{new}
|
|
%Command used by \cs{floatconts} to display the caption contents.
|
|
% \begin{macrocode}
|
|
\newcommand{\algocfconts}[3]{%
|
|
\@algocf@pre@ruled
|
|
#2\label{#1}\kern2pt\hrule height.8pt depth0pt\kern2pt%
|
|
#3\@algocf@pre@ruled
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
% The \env{algorithm} environment should float like a figure or table.
|
|
% It should use the same counter as the \env{algorithm2e} environment.
|
|
%\changes{1.09}{2010/12/01}{caption set up so that it doesn't use a
|
|
%box}
|
|
% \begin{macrocode}
|
|
\newenvironment{algorithm}[1][htbp]%
|
|
{%
|
|
\ifundef{\algocf}%
|
|
{`algorithm2e' package is required if you want to
|
|
use the algorithm environment}%
|
|
{}%
|
|
\begin{algocf}[#1]%
|
|
\renewcommand\@makecaption[2]{%
|
|
\hskip\AlCapHSkip
|
|
\parbox[t]{\hsize}{\algocf@captiontext{##1}{##2}}%
|
|
}%
|
|
}%
|
|
{%
|
|
\end{algocf}%
|
|
}
|
|
% \end{macrocode}
|
|
%
|
|
%\begin{macro}{\@jmlr@ifgraphicxloaded}
|
|
% \begin{macrocode}
|
|
\AtBeginDocument{%
|
|
\@ifpackageloaded{graphicx}%
|
|
{\let\@jmlr@ifgraphicxloaded\@firstoftwo}%
|
|
{\let\@jmlr@ifgraphicxloaded\@secondoftwo}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\includeteximage}
|
|
% Provide a command like \cs{includegraphics} that includes a
|
|
% file containing \LaTeX\ picture code (e.g.\ \sty{pgf}).
|
|
% \begin{macrocode}
|
|
\newcommand*{\includeteximage}[2][]{%
|
|
\@jmlr@ifgraphicxloaded
|
|
{%
|
|
\def\Gin@req@sizes{%
|
|
\Gin@req@height\Gin@nat@height
|
|
\Gin@req@width\Gin@nat@width}%
|
|
\begingroup
|
|
\let\input@path\Ginput@path
|
|
\IfFileExists{#2}%
|
|
{%
|
|
\toks@{\input{#2}}%
|
|
\ifstrempty{#1}
|
|
{}%
|
|
{%
|
|
\@tempswatrue
|
|
\setkeys{Gin}{#1}%
|
|
\Gin@esetsize
|
|
}%
|
|
\the\toks@
|
|
}%
|
|
{\@warning{File `#2' not found}}%
|
|
\endgroup
|
|
}%
|
|
{\PackageError{jmlrutils}{`graphicx' package is required
|
|
if you want to use \string\includeteximage}{}}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%Sub floats.
|
|
% \begin{macrocode}
|
|
\ifjmlrutilssubfloats
|
|
% \end{macrocode}
|
|
% The \sty{subfig} package breaks jmlrbook.cls, so define \ics{subfig}
|
|
% here. (This is fairly primitive.)
|
|
%\begin{macro}{\c@subfigure}
|
|
% Define subfigure counter:
|
|
% \begin{macrocode}
|
|
\newcounter{subfigure}
|
|
\@addtoreset{subfigure}{figure}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\thesubfigure}
|
|
% \begin{macrocode}
|
|
\renewcommand*{\thesubfigure}{\alph{subfigure}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\p@subfigure}
|
|
% \begin{macrocode}
|
|
\renewcommand*{\p@subfigure}{\expandafter\@p@subfigure}
|
|
\newcommand*{\@p@subfigure}[1]{%
|
|
\protect\@subfigurelabel{\thefigure}{\thesubfigure}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@subfigurelabel}
|
|
% Define how label appears.
|
|
% \begin{macrocode}
|
|
\newcommand*\@subfigurelabel[2]{#1\subfigurelabel{#2}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\subfigref}
|
|
% Reference the sub-figure without including the figure number.
|
|
% \begin{macrocode}
|
|
\newcommand*\@subfigref[1]{%
|
|
{%
|
|
\def\@subfigurelabel##1##2{\subfigurelabel{##2}}%
|
|
\ref{#1}%
|
|
}%
|
|
}
|
|
\newcommand*{\subfigref}[1]{%
|
|
\let\@objectname\@empty
|
|
\def\@objectref{}%
|
|
\let\@prevsep\@empty
|
|
\@for\@thislabel:=#1\do{%
|
|
\toks@{\@prevsep}%
|
|
\protected@edef\@objectref{\@objectref\the\toks@
|
|
\protect\@subfigref{\@thislabel}}%
|
|
\ifx\@objectname\@empty
|
|
\let\@objectname\@nil
|
|
\else
|
|
\let\@objectname\relax
|
|
\let\@prevsep\@jmlr@reflistsep
|
|
\fi
|
|
}%
|
|
\ifx\@objectname\relax
|
|
\let\@prevsep\@jmlr@reflistlastsep
|
|
\fi
|
|
\@objectref
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\subfigurelabel}
|
|
% \begin{macrocode}
|
|
\newcommand*{\subfigurelabel}[1]{(\emph{#1})}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\@subfloatcapbox}
|
|
% Box to store subfloat caption.
|
|
% \begin{macrocode}
|
|
\newsavebox\@subfloatcapbox
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@subfloatcontsbox}
|
|
% Box to store subfloat contents.
|
|
% \begin{macrocode}
|
|
\newsavebox\@subfloatcontsbox
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\subfigure}
|
|
% \begin{macrocode}
|
|
\newcommand*{\subfigure}[1][]{%
|
|
\bgroup
|
|
\def\@subfigcap{#1}%
|
|
\@subfigure
|
|
}
|
|
% \end{macrocode}
|
|
%\changes{1.09}{2010/12/01}{Added check to determine whether the
|
|
%subfigure caption is wider than the subfigure}
|
|
% \begin{macrocode}
|
|
\newcommand*{\@subfigure}[2][b]{%
|
|
\advance\c@figure by 1\relax
|
|
\refstepcounter{subfigure}%
|
|
\sbox\@subfloatcapbox{\subfigurelabel{\thesubfigure}%
|
|
\ifx\@subfigcap\@empty
|
|
\else
|
|
\space\@subfigcap
|
|
\fi}%
|
|
\sbox\@subfloatcontsbox{#2}%
|
|
\settowidth{\@tempdima}{\usebox\@subfloatcontsbox}%
|
|
\settowidth{\@tempdimb}{\usebox\@subfloatcapbox}%
|
|
\ifdim\@tempdimb>\@tempdima
|
|
\settowidth\@tempdimb{\subfigurelabel{\thesubfigure}\space}%
|
|
\addtolength{\@tempdima}{-\@tempdimb}%
|
|
\sbox\@subfloatcapbox{\subfigurelabel{\thesubfigure}\space
|
|
\parbox[t]{\@tempdima}{\@subfigcap}}%
|
|
\fi
|
|
\begin{tabular}[#1]{@{}c@{}}%
|
|
\usebox\@subfloatcontsbox\\\usebox\@subfloatcapbox
|
|
\end{tabular}%
|
|
\egroup
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
% Sub-tables:
|
|
%\begin{macro}{\c@subtable}
|
|
% Define subtable counter:
|
|
% \begin{macrocode}
|
|
\newcounter{subtable}
|
|
\@addtoreset{subtable}{table}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\thesubtable}
|
|
% \begin{macrocode}
|
|
\renewcommand*{\thesubtable}{\alph{subtable}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\p@subtable}
|
|
% \begin{macrocode}
|
|
\renewcommand*{\p@subtable}{\expandafter\@p@subtable}
|
|
\newcommand*{\@p@subtable}[1]{%
|
|
\protect\@subtablelabel{\thetable}{\thesubtable}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@subtablelabel}
|
|
% Define how label appears.
|
|
% \begin{macrocode}
|
|
\newcommand*\@subtablelabel[2]{#1\subtablelabel{#2}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\subtabref}
|
|
% Reference the sub-table without including the table number.
|
|
% \begin{macrocode}
|
|
\newcommand*\@subtabref[1]{%
|
|
{%
|
|
\def\@subtablelabel##1##2{\subtablelabel{##2}}%
|
|
\ref{#1}%
|
|
}%
|
|
}
|
|
\newcommand*{\subtabref}[1]{%
|
|
\let\@objectname\@empty
|
|
\def\@objectref{}%
|
|
\let\@prevsep\@empty
|
|
\@for\@thislabel:=#1\do{%
|
|
\toks@{\@prevsep}%
|
|
\protected@edef\@objectref{\@objectref\the\toks@
|
|
\protect\@subtabref{\@thislabel}}%
|
|
\ifx\@objectname\@empty
|
|
\let\@objectname\@nil
|
|
\else
|
|
\let\@objectname\relax
|
|
\let\@prevsep\@jmlr@reflistsep
|
|
\fi
|
|
}%
|
|
\ifx\@objectname\relax
|
|
\let\@prevsep\@jmlr@reflistlastsep
|
|
\fi
|
|
\@objectref
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\subtablelabel}
|
|
% \begin{macrocode}
|
|
\newcommand*{\subtablelabel}[1]{(\emph{#1})}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\subtable}
|
|
% \begin{macrocode}
|
|
\newcommand*{\subtable}[1][]{%
|
|
\def\@subtabcap{#1}%
|
|
\@subtable
|
|
}
|
|
% \end{macrocode}
|
|
%\changes{1.09}{2010/12/01}{Added check to determine whether the
|
|
%subtable caption is wider than the subtable}
|
|
% \begin{macrocode}
|
|
\newcommand*{\@subtable}[2][t]{%
|
|
\refstepcounter{subtable}%
|
|
\sbox\@subfloatcapbox{\subtablelabel{\thesubtable}%
|
|
\ifx\@subtabcap\@empty
|
|
\else
|
|
\space\@subtabcap
|
|
\fi}%
|
|
\sbox\@subfloatcontsbox{#2}%
|
|
\settowidth{\@tempdima}{\usebox\@subfloatcontsbox}%
|
|
\settowidth{\@tempdimb}{\usebox\@subfloatcapbox}%
|
|
\ifdim\@tempdimb>\@tempdima
|
|
\settowidth\@tempdimb{\subtablelabel{\thesubtable}\space}%
|
|
\addtolength{\@tempdima}{-\@tempdimb}%
|
|
\sbox\@subfloatcapbox{\subtablelabel{\thesubtable}\space
|
|
\parbox[t]{\@tempdima}{\@subtabcap}}%
|
|
\fi
|
|
\begin{tabular}[#1]{@{}c@{}}%
|
|
\usebox\@subfloatcapbox\\\usebox\@subfloatcontsbox
|
|
\end{tabular}
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%End of sub-floats.
|
|
% \begin{macrocode}
|
|
\fi
|
|
% \end{macrocode}
|
|
%
|
|
%\subsection{General Markup}
|
|
%Provide maths command if required.
|
|
% \begin{macrocode}
|
|
\ifjmlrutilsmaths
|
|
% \end{macrocode}
|
|
%\begin{macro}{\set}
|
|
% \begin{macrocode}
|
|
\newcommand*{\set}[1]{\ensuremath{\mathcal{#1}}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\orgvec}
|
|
%\changes{1.21}{2015-02-24}{new}
|
|
%Keep a copy of original \cs{vec} in case it's wanted.
|
|
% \begin{macrocode}
|
|
\let\orgvec\vec
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\vec}
|
|
% Redefine \cs{vec} to produce a bold symbol. The \sty{amsmath}
|
|
%package is required for this.
|
|
% \begin{macrocode}
|
|
\renewcommand*{\vec}[1]{\boldsymbol{#1}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%End of maths commands.
|
|
% \begin{macrocode}
|
|
\fi
|
|
% \end{macrocode}
|
|
%
|
|
%\begin{environment}{enumerate*}
|
|
% Define an enumerate style environment where the nested environments
|
|
% all use the same counter. It uses the enumi counter.
|
|
% \begin{macrocode}
|
|
\newenvironment{enumerate*}%
|
|
{%
|
|
\ifnum\@enumdepth=0\relax
|
|
\setcounter{enumi}{0}%
|
|
\fi
|
|
\ifnum\@enumdepth>\thr@@
|
|
\@toodeep
|
|
\else
|
|
\advance\@enumdepth\@ne
|
|
\def\@enumctr{enumi}%
|
|
\list
|
|
{\labelenumi}%
|
|
{\@nmbrlisttrue\def\@listctr{enumi}%
|
|
\def\makelabel##1{\hss\llap{##1}}}%
|
|
\fi
|
|
}%
|
|
{\endlist}
|
|
% \end{macrocode}
|
|
%\end{environment}
|
|
%
|
|
%\begin{environment}{altdescription}
|
|
% Define a description like environment where the indent is
|
|
% computed from the widest label. The optional argument is
|
|
% the widest label.
|
|
% \begin{macrocode}
|
|
\newenvironment{altdescription}[1]%
|
|
{\list{}%
|
|
{%
|
|
\settowidth{\labelwidth}{\altdescriptionlabel{#1}}%
|
|
\setlength{\labelsep}{15pt}%
|
|
\setlength{\leftmargin}{2\labelsep}%
|
|
\addtolength{\leftmargin}{\labelwidth}%
|
|
\setlength{\rightmargin}{\labelsep}%
|
|
\let\makelabel\altdescriptionlabel
|
|
}%
|
|
}%
|
|
{\endlist}
|
|
|
|
\newcommand*{\altdescriptionlabel}[1]{\normalfont\bfseries #1\hfill}
|
|
% \end{macrocode}
|
|
%\end{environment}
|
|
%
|
|
%\begin{macro}{\mailto}
|
|
% Syntax: \cs{mailto}\marg{address}
|
|
% \begin{macrocode}
|
|
\newcommand*{\mailto}[1]{\texttt{#1}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\subsection{Proofs and Theorems}
|
|
% \begin{macrocode}
|
|
\ifjmlrutilstheorems
|
|
% \end{macrocode}
|
|
% This code is taken from jmlr2e.sty
|
|
%\begin{macro}{\jmlrBlackBox}
|
|
% End of proof marker.
|
|
%\changes{1.24}{2017-08-01}{new}
|
|
%This command was formerly called \cs{BlackBox} but has been renamed
|
|
%in case of a clash with symbol packages.
|
|
% \begin{macrocode}
|
|
\newcommand{\jmlrBlackBox}{\rule{1.5ex}{1.5ex}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\BlackBox}
|
|
% Backward compatibility in case it was used explicitly.
|
|
% \begin{macrocode}
|
|
\providecommand{\BlackBox}{\jmlrBlackBox}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\jmlrQED}
|
|
%\changes{1.21}{2015-02-24}{new}
|
|
%\changes{1.24}{2017-08-01}{changed to use \cs{par}}
|
|
% \begin{macrocode}
|
|
\newcommand{\jmlrQED}{\hfill\jmlrBlackBox\par\bigskip}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{environment}{proof}
|
|
% Proof environment
|
|
% \begin{macrocode}
|
|
\newenvironment{proof}%
|
|
{%
|
|
\par\noindent{\bfseries\upshape Proof\ }%
|
|
}%
|
|
{\jmlrQED}
|
|
% \end{macrocode}
|
|
%\end{environment}
|
|
%
|
|
% Since \sty{theorem}, \sty{ntheorem} and \sty{amsthm} all cause
|
|
% problems with the \cls{jmlr} and \cls{jmlrbook} classes,
|
|
% this package provides a simple alternative.
|
|
%
|
|
%\begin{macro}{\theorembodyfont}
|
|
%\changes{1.18}{2013-10-17}{new}
|
|
%\begin{definition}
|
|
%\cs{theorembodyfont}\marg{font declarations}
|
|
%\end{definition}
|
|
% \begin{macrocode}
|
|
\newcommand*{\theorembodyfont}[1]{%
|
|
\renewcommand*{\@theorembodyfont}{#1}%
|
|
}
|
|
\newcommand*{\@theorembodyfont}{\normalfont\itshape}%
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\theoremheaderfont}
|
|
%\changes{1.18}{2013-10-17}{new}
|
|
%\begin{definition}
|
|
%\cs{theoremheaderfont}\marg{font declarations}
|
|
%\end{definition}
|
|
% \begin{macrocode}
|
|
\newcommand*{\theoremheaderfont}[1]{%
|
|
\renewcommand*{\@theoremheaderfont}{#1}%
|
|
}
|
|
\newcommand*{\@theoremheaderfont}{\normalfont\bfseries }%
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\theoremsep}
|
|
%\changes{1.18}{2013-10-17}{new}
|
|
%\begin{definition}
|
|
%\cs{theoremsep}\marg{separation code}
|
|
%\end{definition}
|
|
% \begin{macrocode}
|
|
\newcommand*{\theoremsep}[1]{%
|
|
\renewcommand*{\@theoremsep}{#1}%
|
|
}
|
|
\newcommand*{\@theoremsep}{}%
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\theorempostheader}
|
|
%\changes{1.18}{2013-10-17}{new}
|
|
%\begin{definition}
|
|
%\cs{theorempostheader}\marg{text}
|
|
%\end{definition}
|
|
% \begin{macrocode}
|
|
\newcommand*{\theorempostheader}[1]{%
|
|
\renewcommand*{\@theorempostheader}{#1}%
|
|
}
|
|
\newcommand*{\@theorempostheader}{}%
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\newtheorem}
|
|
%\changes{1.18}{2013-10-17}{new}
|
|
% \begin{macrocode}
|
|
\let\jmlr@org@newtheorem\newtheorem
|
|
\renewcommand*{\newtheorem}{\@ifstar\jmlr@snewtheorem\jmlr@newtheorem}
|
|
% \end{macrocode}
|
|
% Define starred version:
|
|
%\begin{definition}
|
|
%\cs{newtheorem*}\marg{env-name}\marg{title tag}
|
|
%\end{definition}
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlr@snewtheorem}[2]{%
|
|
\cslet{jmlr@thm@#1@body@font}{\@theorembodyfont}%
|
|
\cslet{jmlr@thm@#1@header@font}{\@theoremheaderfont}%
|
|
\cslet{jmlr@thm@#1@sep}{\@theoremsep}%
|
|
\cslet{jmlr@thm@#1@postheader}{\@theorempostheader}%
|
|
\newenvironment{#1}%
|
|
{%
|
|
\trivlist
|
|
\item
|
|
[%
|
|
\hskip\labelsep{\csuse{jmlr@thm@#1@header@font}#2%
|
|
\csuse{jmlr@thm@#1@postheader}%
|
|
}%
|
|
]%
|
|
\mbox{}\csuse{jmlr@thm@#1@sep}%
|
|
\csuse{jmlr@thm@#1@body@font}%
|
|
}%
|
|
{%
|
|
\endtrivlist
|
|
}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
% Unstarred version needs adjusting to take the style into account:
|
|
%\begin{macro}{\@othm}
|
|
%\changes{1.18}{2013-10-17}{new}
|
|
% \begin{macrocode}
|
|
\newcommand{\jmlr@newtheorem}[1]{%
|
|
\cslet{jmlr@thm@#1@body@font}{\@theorembodyfont}%
|
|
\cslet{jmlr@thm@#1@header@font}{\@theoremheaderfont}%
|
|
\cslet{jmlr@thm@#1@sep}{\@theoremsep}%
|
|
\cslet{jmlr@thm@#1@postheader}{\@theorempostheader}%
|
|
\jmlr@org@newtheorem{#1}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@xthm}
|
|
%\changes{1.18}{2013-10-17}{new}
|
|
% \begin{macrocode}
|
|
\renewcommand*{\@xthm}[2]{%
|
|
\def\@jmlr@currentthm{#1}%
|
|
\@begintheorem{#2}{\csname the#1\endcsname}%
|
|
\ignorespaces
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@ythm}
|
|
%\changes{1.18}{2013-10-17}{new}
|
|
% \begin{macrocode}
|
|
\def\@ythm#1#2[#3]{%
|
|
\def\@jmlr@currentthm{#1}%
|
|
\@opargbegintheorem{#2}{\csname the#1\endcsname}{#3}%
|
|
\ignorespaces
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@begintheorem}
|
|
%\changes{1.18}{2013-10-17}{new}
|
|
% \begin{macrocode}
|
|
\renewcommand*{\@begintheorem}[2]{%
|
|
\ifdef{\@jmlr@currentthm}%
|
|
{%
|
|
\letcs{\jmlr@this@theoremheader}{jmlr@thm@\@jmlr@currentthm @header@font}%
|
|
\letcs{\jmlr@this@theorembody}{jmlr@thm@\@jmlr@currentthm @body@font}%
|
|
\letcs{\jmlr@this@theoremsep}{jmlr@thm@\@jmlr@currentthm @sep}%
|
|
\letcs{\jmlr@this@theorempostheader}%
|
|
{jmlr@thm@\@jmlr@currentthm @postheader}%
|
|
}%
|
|
{%
|
|
\let\jmlr@this@theorembody\@theorembodyfont
|
|
\let\jmlr@this@theoremheader\@theoremheaderfont
|
|
\let\jmlr@this@theoremsep\@theoremsep
|
|
\let\jmlr@this@theorempostheader\@theorempostheader
|
|
}%
|
|
\trivlist
|
|
\item
|
|
[%
|
|
\hskip\labelsep{\jmlr@this@theoremheader #1\ #2%
|
|
\jmlr@this@theorempostheader}%
|
|
]%
|
|
\mbox{}\jmlr@this@theoremsep
|
|
\jmlr@this@theorembody
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@opargbegintheorem}
|
|
%\changes{1.18}{2013-10-17}{new}
|
|
% \begin{macrocode}
|
|
\renewcommand*{\@opargbegintheorem}[3]{%
|
|
\ifdef{\@jmlr@currentthm}%
|
|
{%
|
|
\letcs{\jmlr@this@theoremheader}{jmlr@thm@\@jmlr@currentthm @header@font}%
|
|
\letcs{\jmlr@this@theorembody}{jmlr@thm@\@jmlr@currentthm @body@font}%
|
|
\letcs{\jmlr@this@theoremsep}{jmlr@thm@\@jmlr@currentthm @sep}%
|
|
\letcs{\jmlr@this@theorempostheader}%
|
|
{jmlr@thm@\@jmlr@currentthm @postheader}%
|
|
}%
|
|
{%
|
|
\let\jmlr@this@theorembody\@theorembodyfont
|
|
\let\jmlr@this@theoremheader\@theoremheaderfont
|
|
\let\jmlr@this@theoremsep\@theoremsep
|
|
\let\jmlr@this@theorempostheader\@theorempostheader
|
|
}%
|
|
\trivlist
|
|
\item[\hskip\labelsep{\jmlr@this@theoremheader #1\ #2\ (#3)%
|
|
\jmlr@this@theorempostheader}]%
|
|
\mbox{}\jmlr@this@theoremsep
|
|
\jmlr@this@theorembody
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{environment}{example}
|
|
% \begin{macrocode}
|
|
\newtheorem{example}{Example}
|
|
% \end{macrocode}
|
|
%\end{environment}
|
|
%\begin{environment}{theorem}
|
|
% \begin{macrocode}
|
|
\newtheorem{theorem}{Theorem}
|
|
% \end{macrocode}
|
|
%\end{environment}
|
|
%\begin{environment}{lemma}
|
|
% \begin{macrocode}
|
|
\newtheorem{lemma}[theorem]{Lemma}
|
|
% \end{macrocode}
|
|
%\end{environment}
|
|
%\begin{environment}{proposition}
|
|
% \begin{macrocode}
|
|
\newtheorem{proposition}[theorem]{Proposition}
|
|
% \end{macrocode}
|
|
%\end{environment}
|
|
%\begin{environment}{remark}
|
|
% \begin{macrocode}
|
|
\newtheorem{remark}[theorem]{Remark}
|
|
% \end{macrocode}
|
|
%\end{environment}
|
|
%\begin{environment}{corollary}
|
|
% \begin{macrocode}
|
|
\newtheorem{corollary}[theorem]{Corollary}
|
|
% \end{macrocode}
|
|
%\end{environment}
|
|
%\begin{environment}{definition}
|
|
% \begin{macrocode}
|
|
\newtheorem{definition}[theorem]{Definition}
|
|
% \end{macrocode}
|
|
%\end{environment}
|
|
%\begin{environment}{conjecture}
|
|
% \begin{macrocode}
|
|
\newtheorem{conjecture}[theorem]{Conjecture}
|
|
% \end{macrocode}
|
|
%\end{environment}
|
|
%\begin{environment}{axiom}
|
|
% \begin{macrocode}
|
|
\newtheorem{axiom}[theorem]{Axiom}
|
|
% \end{macrocode}
|
|
%\end{environment}
|
|
% End of theorem definitions.
|
|
% \begin{macrocode}
|
|
\fi
|
|
% \end{macrocode}
|
|
%\iffalse
|
|
% \begin{macrocode}
|
|
%</jmlrutils.sty>
|
|
% \end{macrocode}
|
|
%\fi
|
|
%\iffalse
|
|
% \begin{macrocode}
|
|
%<*jmlr.cls>
|
|
% \end{macrocode}
|
|
%\fi
|
|
%\section{jmlr.cls Code}
|
|
% This class is based on the \sty{jmlr2e} package but was modified to make sure
|
|
% it works with \clsfmt{jmlrbook} which uses both \cls{combine} and
|
|
% \sty{hyperref}.
|
|
%
|
|
% Declare class and required TeX format:
|
|
% \begin{macrocode}
|
|
\NeedsTeXFormat{LaTeX2e}
|
|
\ProvidesClass{jmlr}[2017/08/01 v1.24 (NLCT) Journal of Machine Learning Research]
|
|
% \end{macrocode}
|
|
%\changes{1.10}{2011-01-05}{hyperref now loaded by jmlr instead of
|
|
%jmlrbook}
|
|
% Need \sty{xkeyval} package to have key=value class options
|
|
% \begin{macrocode}
|
|
\RequirePackage{xkeyval}
|
|
% \end{macrocode}
|
|
%\changes{1.18}{2013-10-17}{now requires calc package}
|
|
% \begin{macrocode}
|
|
\RequirePackage{calc}
|
|
% \end{macrocode}
|
|
%\changes{1.18}{2013-10-17}{now requires etoolbox package}
|
|
% \begin{macrocode}
|
|
\RequirePackage{etoolbox}
|
|
% \end{macrocode}
|
|
% Some packages need to be loaded before \sty{hyperref} so provide a
|
|
% hook to do this:
|
|
%\begin{macro}{\jmlrprehyperref}
|
|
%\changes{1.12}{2012/01/05}{removed @ from name so it can be defined
|
|
%by user}
|
|
% \begin{macrocode}
|
|
\providecommand*{\jmlrprehyperref}{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\changes{1.12}{2012/01/05}{removed class option prehyperref}
|
|
% The following conditionals are provided to make this class play nicely
|
|
% with combine and aren't required for articles.
|
|
% \begin{macrocode}
|
|
\newif\if@openright
|
|
\newif\if@mainmatter \@mainmattertrue
|
|
% \end{macrocode}
|
|
%\begin{macro}{\ifgrayscale}
|
|
% Determine whether to select grayscale alternatives
|
|
% \begin{macrocode}
|
|
\@ifundefined{ifgrayscale}{
|
|
\newif\ifgrayscale
|
|
\grayscalefalse
|
|
}{}
|
|
\DeclareOptionX{color}{\grayscalefalse
|
|
\PassOptionsToPackage{color}{xcolor}}
|
|
\DeclareOptionX{gray}{\grayscaletrue
|
|
\PassOptionsToPackage{gray}{xcolor}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{option}{draft}
|
|
%\changes{1.18}{2013-10-17}{new}
|
|
% \begin{macrocode}
|
|
\DeclareOptionX{draft}{\setlength\overfullrule{5pt}}
|
|
% \end{macrocode}
|
|
%\end{option}
|
|
%\begin{option}{final}
|
|
%\changes{1.18}{2013-10-17}{new}
|
|
% \begin{macrocode}
|
|
\DeclareOptionX{final}{\setlength\overfullrule{0pt}}
|
|
% \end{macrocode}
|
|
%\end{option}
|
|
% Can't load \sty{jmlrutils} here but need the \cs{iftablecaptiontop}
|
|
% conditional for the class options.
|
|
%\begin{macro}{\iftablecaptiontop}
|
|
%\changes{1.07}{2010-06-17}{new}
|
|
% \begin{macrocode}
|
|
\newif\iftablecaptiontop
|
|
\tablecaptiontoptrue
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
% Provide table contents command that uses this conditional.
|
|
% (The \sty{jmlrutils} package doesn't use it.)
|
|
%\begin{macro}{\tableconts}
|
|
% \begin{macrocode}
|
|
\newcommand{\tableconts}[3]{%
|
|
\iftablecaptiontop
|
|
#2\label{#1}\vskip\baselineskip
|
|
{\centering #3\par}%
|
|
\else
|
|
{\centering #3\par}%
|
|
\vskip\baselineskip
|
|
#2\label{#1}%
|
|
\fi
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
% Determine if the table captions should go at the top.
|
|
%\begin{option}{tablecaptiontop}
|
|
% \begin{macrocode}
|
|
\DeclareOptionX{tablecaptiontop}{\tablecaptiontoptrue}
|
|
% \end{macrocode}
|
|
%\end{option}
|
|
%\begin{option}{tablecaptiontop}
|
|
% \begin{macrocode}
|
|
\DeclareOptionX{tablecaptionbottom}{\tablecaptiontopfalse}
|
|
% \end{macrocode}
|
|
%\end{option}
|
|
%\begin{option}{tablecaption}
|
|
%Key=value interface.
|
|
% \begin{macrocode}
|
|
\define@choicekey{jmlr.cls}{tablecaption}[\val\nr]{top,bottom}{%
|
|
\ifcase\nr\relax
|
|
\tablecaptiontoptrue
|
|
\or
|
|
\tablecaptiontopfalse
|
|
\fi
|
|
}
|
|
% \end{macrocode}
|
|
%\end{option}
|
|
%\begin{macro}{\ifjmlrhtml}
|
|
% Determine if we are using \app{TeX4ht}. (Deprecated.)
|
|
%This option should no longer be used. The PMLR have changed
|
|
%the submission guidelines and the production editor should
|
|
%no longer supply HTML files.
|
|
% \begin{macrocode}
|
|
\newif\ifjmlrhtml
|
|
\jmlrhtmlfalse
|
|
\DeclareOptionX{html}{%
|
|
\ClassWarning{jmlr}{html option is now deprecated}%
|
|
\jmlrhtmltrue}
|
|
\DeclareOptionX{nohtml}{\jmlrhtmlfalse}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
% Normal font size (default is 11pt).
|
|
%\changes{1.10}{2011-01-05}{font size options don't pass option to
|
|
%class}
|
|
% \begin{macrocode}
|
|
\def\pt@size{11pt}
|
|
\DeclareOptionX{10pt}{\renewcommand{\pt@size}{10pt}}
|
|
\DeclareOptionX{11pt}{\renewcommand{\pt@size}{11pt}}
|
|
\DeclareOptionX{12pt}{\renewcommand{\pt@size}{12pt}}
|
|
% \end{macrocode}
|
|
%\begin{macro}{\@jmlrproceedings}
|
|
% The name of the proceedings.
|
|
% \begin{macrocode}
|
|
\newcommand*{\@jmlrproceedings}{Journal of Machine Learning Research}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@jmlrabbrvproceedings}
|
|
% The abbreviated name of the proceedings.
|
|
% \begin{macrocode}
|
|
\newcommand*{\@jmlrabbrvproceedings}{JMLR}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\jmlrproceedings}
|
|
% Sets the title and abbreviation of the proceedings
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlrproceedings}[2]{%
|
|
\renewcommand*{\@jmlrabbrvproceedings}{#1}%
|
|
\renewcommand*{\@jmlrproceedings}{#2}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\jmlrnowcp}
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlrnowcp}{%
|
|
\jmlrproceedings{JMLR}{Journal of Machine Learning Research}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\jmlrwcp}
|
|
%\changes{1.11}{2011-03-24}{Fixed typo}
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlrwcp}{%
|
|
\jmlrproceedings{JMLR W\&CP}{JMLR: Workshop and Conference Proceedings}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\jmlrpmlr}
|
|
%\changes{1.23}{2017-03-09}{new}
|
|
%The JMLR W\&CP has been renamed PMLR, so provide code to switch to
|
|
%this instead,
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlrpmlr}{%
|
|
\jmlrproceedings{PMLR}{Proceedings of Machine Learning Research}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
% This is a journal (non JMLR W\&CP\slash PMLR) article:
|
|
% \begin{macrocode}
|
|
\DeclareOptionX{nowcp}{\jmlrnowcp}
|
|
% \end{macrocode}
|
|
% This is an article for JMLR W\&CP
|
|
% \begin{macrocode}
|
|
\DeclareOptionX{wcp}{\jmlrwcp}
|
|
% \end{macrocode}
|
|
% This is an article for PMLR
|
|
% \begin{macrocode}
|
|
\DeclareOptionX{pmlr}{\jmlrpmlr}
|
|
% \end{macrocode}
|
|
%\begin{option}{oneside}
|
|
%\changes{1.22}{2015/04/11}{new}
|
|
% \begin{macrocode}
|
|
\DeclareOptionX{oneside}{\@twosidefalse \@mparswitchfalse}
|
|
% \end{macrocode}
|
|
%\end{option}
|
|
%\begin{option}{twoside}
|
|
%\changes{1.22}{2015/04/11}{new}
|
|
% \begin{macrocode}
|
|
\DeclareOptionX{twoside}{\@twosidetrue \@mparswitchtrue}
|
|
% \end{macrocode}
|
|
%\end{option}
|
|
% Set two-sided format
|
|
% \begin{macrocode}
|
|
\@twosidetrue
|
|
% \end{macrocode}
|
|
% The default paper size is letter, but provide $7 \times 10$in
|
|
% alternative:
|
|
% \begin{macrocode}
|
|
\newif\ifviiXx
|
|
\viiXxfalse
|
|
\DeclareOptionX{7x10}{\viiXxtrue}
|
|
\DeclareOptionX{letterpaper}{\PassOptionsToPackage{letterpaper}{typearea}}
|
|
% \end{macrocode}
|
|
% Pass all remaining options to \cls{article} class:
|
|
% \begin{macrocode}
|
|
\DeclareOptionX*{\PassOptionsToClass{\CurrentOption}{article}}
|
|
% \end{macrocode}
|
|
% Execute required options:
|
|
% \begin{macrocode}
|
|
\ExecuteOptions{letterpaper}
|
|
% \end{macrocode}
|
|
% Process options:
|
|
% \begin{macrocode}
|
|
\ProcessOptionsX
|
|
% \end{macrocode}
|
|
% Load \cls{article} class.
|
|
%\changes{1.10}{2011-01-05}{passed \cs{pt@size} when loading article
|
|
%class}
|
|
% \begin{macrocode}
|
|
\LoadClass[\pt@size]{article}
|
|
% \end{macrocode}
|
|
% Can't use \sty{geometry} package because it doesn't play nicely
|
|
% with the \cls{combine} class.
|
|
% \begin{macrocode}
|
|
\ifviiXx
|
|
\setlength{\paperwidth}{7in}
|
|
\setlength{\paperheight}{10in}
|
|
\setlength{\textwidth}{5.25in}
|
|
\setlength{\textheight}{8.2in}
|
|
\setlength{\topmargin}{0.4in}
|
|
\setlength{\headheight}{0.2in}
|
|
\setlength{\headsep}{0.2in}
|
|
\setlength{\hoffset}{-1in}
|
|
\setlength{\voffset}{-1in}
|
|
\setlength{\evensidemargin}{0.75in}
|
|
\setlength{\oddsidemargin}{1.0in}
|
|
\else
|
|
\setlength{\oddsidemargin}{0.25in}
|
|
\setlength{\evensidemargin}{0.25in}
|
|
\setlength{\marginparwidth}{0.07 true in}
|
|
\setlength{\topmargin}{-0.5in}
|
|
\addtolength{\headsep}{0.25in}
|
|
\setlength{\textheight}{8.5 true in}
|
|
\setlength{\textwidth}{6.0 true in}
|
|
\fi
|
|
% \end{macrocode}
|
|
% Need to add jmlr end document hook before natbib adds a
|
|
% \cs{clearpage} to it.
|
|
% \begin{macrocode}
|
|
\AtEndDocument{\@jmlrenddoc}
|
|
% \end{macrocode}
|
|
% Required packages:
|
|
% \begin{macrocode}
|
|
\RequirePackage{amsmath}
|
|
\RequirePackage{amssymb}
|
|
\RequirePackage{natbib}
|
|
\RequirePackage{graphicx}
|
|
\RequirePackage{url}
|
|
\PassOptionsToPackage{x11names}{xcolor}
|
|
\RequirePackage{xcolor}
|
|
% \end{macrocode}
|
|
% Allow old command names in the event that the proceedings contains
|
|
% a mixture of papers that use old and new versions. (This means
|
|
% that editors need to install the newer version.) For some reason,
|
|
% loading \sty{algorithm2e} causes the message
|
|
%\begin{verbatim}
|
|
%(\end occurred inside a group at level 1)
|
|
%\end{verbatim}
|
|
% I don't know why, but it's outside the control of this class.
|
|
% \begin{macrocode}
|
|
\PassOptionsToPackage{algo2e,ruled}{algorithm2e}
|
|
\RequirePackage{algorithm2e}
|
|
% \end{macrocode}
|
|
% Set the algorithm margin to zero.
|
|
% \begin{macrocode}
|
|
\setlength\algomargin{0pt}
|
|
% \end{macrocode}
|
|
%Load \sty{jmlrutils} before \sty{hyperref}.
|
|
%\changes{1.24}{??}{added \styfmt{jmlrutils}}
|
|
% \begin{macrocode}
|
|
\RequirePackage{jmlrutils}
|
|
% \end{macrocode}
|
|
% Do all the stuff that needs to be done before \sty{hyperref} is
|
|
% loaded:
|
|
% \begin{macrocode}
|
|
\jmlrprehyperref
|
|
% \end{macrocode}
|
|
% Do stuff that has to come immediately before \sty{hyperref} is
|
|
% loaded:
|
|
%\changes{1.13}{2012/02/25}{added \cs{@pre@hyperref}}
|
|
% \begin{macrocode}
|
|
\@ifundefined{@pre@hyperref}{}{\@pre@hyperref}
|
|
% \end{macrocode}
|
|
% Load \sty{hyperref}:
|
|
%\changes{1.19}{??}{replaced \cs{usepackage} with \cs{RequirePackage}}
|
|
% \begin{macrocode}
|
|
\RequirePackage{hyperref}
|
|
\RequirePackage{nameref}
|
|
% \end{macrocode}
|
|
% \begin{macrocode}
|
|
% Do stuff that has to come immediately after \sty{hyperref} and
|
|
% \sty{nameref} are loaded:
|
|
%\changes{1.16}{2012/05/15}{added \cs{@post@hyperref}}
|
|
\@ifundefined{@post@hyperref}{}{\@post@hyperref}
|
|
% \end{macrocode}
|
|
% Set up hyperref options:
|
|
% \begin{macrocode}
|
|
\hypersetup{colorlinks,
|
|
linkcolor=blue,
|
|
citecolor=blue,
|
|
urlcolor=magenta,
|
|
linktocpage,
|
|
plainpages=false}
|
|
% \end{macrocode}
|
|
%
|
|
% \begin{macrocode}
|
|
\ifgrayscale
|
|
% \end{macrocode}
|
|
% If this is the print version, need to disable the hyperlinks:
|
|
% \begin{macrocode}
|
|
\hypersetup{draft}
|
|
\fi
|
|
% \end{macrocode}
|
|
%
|
|
% Float parameters: the following settings were copied from jmlr2e.sty
|
|
% \begin{macrocode}
|
|
\renewcommand{\topfraction}{0.95} % let figure take up nearly whole page
|
|
\renewcommand{\textfraction}{0.05} % let figure take up nearly whole page
|
|
% \end{macrocode}
|
|
% widows/orphans
|
|
% \begin{macrocode}
|
|
\widowpenalty=10000\relax
|
|
\clubpenalty=10000\relax
|
|
% \end{macrocode}
|
|
% Put marginal notes on the outside of the page
|
|
% \begin{macrocode}
|
|
\@mparswitchtrue
|
|
% \end{macrocode}
|
|
%\changes{1.18}{2013-10-17}{removed \cs{ds@draft}}
|
|
% Use the plainnat bibliography style and set up the required
|
|
% punctuation.
|
|
% \begin{macrocode}
|
|
\bibliographystyle{plainnat}
|
|
\bibpunct{(}{)}{;}{a}{,}{,}
|
|
% \end{macrocode}
|
|
%\subsection{Sections}
|
|
%\begin{macro}{\section}
|
|
% \begin{macrocode}
|
|
\renewcommand{\section}{\@startsection{section}{1}{\z@}%
|
|
{-0.24in \@plus -1ex \@minus -.2ex}%
|
|
{0.10in \@plus.2ex}%
|
|
{\normalfont\rmfamily\bfseries\large\raggedright}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\subsection}
|
|
% \begin{macrocode}
|
|
\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
|
|
{-0.20in \@plus -1ex \@minus -.2ex}%
|
|
{0.08in \@plus .2ex}%
|
|
{\normalfont\rmfamily\bfseries\normalsize\raggedright}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\subsubsection}
|
|
% \begin{macrocode}
|
|
\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
|
|
{-0.18in \@plus -1ex \@minus -.2ex}%
|
|
{0.08in \@plus .2ex}%
|
|
{\normalfont\normalsize\rmfamily\mdseries\scshape\raggedright}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\paragraph}
|
|
% \begin{macrocode}
|
|
\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
|
|
{1.5ex plus 0.5ex minus .2ex}%
|
|
{-1em}%
|
|
{\normalfont\normalsize\rmfamily\bfseries}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\subparagraph}
|
|
% \begin{macrocode}
|
|
\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\z@}%
|
|
{1.5ex plus 0.5ex minus .2ex}%
|
|
{-1em}%
|
|
{\normalfont\normalsize\rmfamily\bfseries\itshape}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\@seccntformat}
|
|
% Redefine the way the section number appears in the section
|
|
% heading.
|
|
% \begin{macrocode}
|
|
\renewcommand*\@seccntformat[1]{%
|
|
\csname pre#1num\endcsname
|
|
\csname the#1\endcsname.\enskip
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\subsection{Footnotes}
|
|
%\begin{macro}{\@makefntext}
|
|
%\changes{1.08}{2010-07-27}{new}
|
|
% Redefine \cs{@makefntext} so that the text between the footnote
|
|
% symbol and the footnote text can be redefined. (It looks odd
|
|
% having a full stop after a symbol.)
|
|
% \begin{macrocode}
|
|
\renewcommand*{\@makefntext}[1]{%
|
|
\@setpar
|
|
{%
|
|
\@@par
|
|
\@tempdima\hsize
|
|
\advance \@tempdima -15pt\relax
|
|
\parshape \@ne 15pt \@tempdima
|
|
}%
|
|
\par
|
|
\parindent 2em\noindent
|
|
\hbox to \z@ {\hss {\@thefnmark }\footnoteseptext\hfil }#1%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\footnoteseptext}
|
|
%\changes{1.08}{2010-07-27}{new}
|
|
% The separation text between the footnote symbol and the footnote
|
|
% text.
|
|
% \begin{macrocode}
|
|
\newcommand*{\footnoteseptext}{. }
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\thanks}
|
|
%\changes{1.21}{2015-02-24}{added optional argument to \cs{footnotetext}}
|
|
%\changes{1.10}{2011-01-05}{Modified definition of \cs{thanks}}
|
|
%Added optional argument to \cs{footnotetext} as per
|
|
%\url{http://tex.stackexchange.com/questions/229295}.
|
|
% \begin{macrocode}
|
|
\renewcommand*{\thanks}[1]{%
|
|
\footnotemark
|
|
\protected@xdef\@thanks{\@thanks
|
|
\protect\footnotetext[\arabic{footnote}]{#1}}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\subsection{Article abstract}
|
|
% This code has been taken from jmlr2e.sty but with \cs{bf} updated
|
|
% to \cs{bfseries}
|
|
%\begin{environment}{abstract}
|
|
% \begin{macrocode}
|
|
\ifjmlrhtml
|
|
\renewenvironment{abstract}{\HCode{<h3>}Abstract\HCode{</h3>}}{}%
|
|
\else
|
|
\renewenvironment{abstract}
|
|
% \end{macrocode}
|
|
%\changes{1.09}{2010/12/01}{changed \cs{centerline} to
|
|
%\cs{centering}\ldots\cs{par}}
|
|
% \begin{macrocode}
|
|
{{\centering\large\bfseries Abstract\par}\vspace{0.7ex}%
|
|
\bgroup
|
|
\leftskip 20pt\rightskip 20pt\small\noindent\ignorespaces}%
|
|
{\par\egroup\vskip 0.25ex}
|
|
\fi
|
|
% \end{macrocode}
|
|
%\end{environment}
|
|
%\subsection{Keywords}
|
|
% This code has been taken from jmlr2e.sty but with \cs{bf} updated
|
|
% to \cs{bfseries}.
|
|
%\begin{environment}{keywords}
|
|
% \begin{macrocode}
|
|
\newenvironment{keywords}
|
|
{\bgroup\leftskip 20pt\rightskip 20pt \small\noindent{\bfseries
|
|
Keywords:} \ignorespaces}%
|
|
{\par\egroup\vskip 0.25ex}
|
|
% \end{macrocode}
|
|
%\end{environment}
|
|
%\subsection{Title Page Information}
|
|
% This code has been taken from jmlr2e.sty.
|
|
%
|
|
% Title stuff, borrowed in part from aaai92.sty
|
|
% \begin{macrocode}
|
|
\newlength\aftertitskip \newlength\beforetitskip
|
|
\newlength\interauthorskip \newlength\aftermaketitskip
|
|
% \end{macrocode}
|
|
%% Changeable parameters.
|
|
% \begin{macrocode}
|
|
\setlength\aftertitskip{0.1in plus 0.2in minus 0.2in}
|
|
\setlength\beforetitskip{0.05in plus 0.08in minus 0.08in}
|
|
\setlength\interauthorskip{0.08in plus 0.1in minus 0.1in}
|
|
\setlength\aftermaketitskip{0.3in plus 0.1in minus 0.1in}
|
|
% \end{macrocode}
|
|
%
|
|
%\begin{macro}{\titlebreak}
|
|
%\changes{1.12}{2012/01/05}{new}
|
|
% Acts like new line in the paper title, but with jmlrbook acts like a space in
|
|
% the table of contents and bookmarks.
|
|
% \begin{macrocode}
|
|
\newcommand*{\titlebreak}{\newline}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\titletag}
|
|
%\changes{1.17}{2012/05/30}{new}
|
|
% \begin{macrocode}
|
|
\newcommand*{\titletag}[1]{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\title}
|
|
% Override definition of \cs{title} to allow for an optional
|
|
% argument (short title)
|
|
% \begin{macrocode}
|
|
\renewcommand*{\title}[2][\@title]{%
|
|
\def\@shorttitle{#1}%
|
|
\def\@title{#2}%
|
|
\protected@write\@auxout{}{\string\jmlr@title{#1}{#2}}%
|
|
\jmlrtitlehook
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@shorttitle}
|
|
%\changes{1.12}{2012/01/05}{provided default value}
|
|
% The short title of the document is initialised to \cs{jobname} to
|
|
% ensure a basic document will compile even if no title is set.
|
|
% \begin{macrocode}
|
|
\newcommand*{\@shorttitle}{\jobname}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\jmlrtitlehook}
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlrtitlehook}{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\jmlr@title}
|
|
%\changes{1.20}{2014/10/15}{new}
|
|
% AUX command provided for MakeJmlrBookGUI
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlr@title}[2]{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\author}
|
|
% Override definition of \cs{author} to allow for an optional
|
|
% argument (list of authors for page heading)
|
|
% \begin{macrocode}
|
|
\renewcommand*{\author}[2][]{%
|
|
\def\@author{#2}%
|
|
\def\@sauthor{#1}%
|
|
\def\@jmlr@aux@author{#2}\@onelevel@sanitize\@jmlr@aux@author
|
|
\ifx\@sauthor\@empty
|
|
\let\@jmlr@aux@sauthor\@jmlr@aux@author
|
|
\else
|
|
\let\@shortauthor\@sauthor
|
|
\def\@jmlr@aux@sauthor{#1}\@onelevel@sanitize\@jmlr@aux@sauthor
|
|
\fi
|
|
\jmlrauthorhook
|
|
\protected@write\@auxout
|
|
{}{\string\jmlr@author{\@jmlr@aux@sauthor}{\@jmlr@aux@author}}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\jmlrauthorhook}
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlrauthorhook}{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\jmlr@author}
|
|
%\changes{1.20}{2014/10/15}{new}
|
|
% AUX command provided for MakeJmlrBookGUI
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlr@author}[2]{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\@shortauthor}
|
|
% \begin{macrocode}
|
|
\newcommand*{\@shortauthor}{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\@firstauthor}
|
|
% \begin{macrocode}
|
|
\newcommand*{\@firstauthor}{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@firstsurname}
|
|
% \begin{macrocode}
|
|
\newcommand*{\@firstsurname}{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\jmlrlength}
|
|
% \begin{macrocode}
|
|
\newlength\jmlrlength
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\jmlrmaketitle}
|
|
% Make the title
|
|
% \begin{macrocode}
|
|
\def\jmlrmaketitle{%
|
|
\jmlrpremaketitlehook
|
|
\def\@jmlr@authors@sep{, }%
|
|
\par
|
|
\begingroup
|
|
% \end{macrocode}
|
|
%\changes{1.08}{2010-07-27}{modified footnote marker in the footnote
|
|
%text so that it is raised and isn't followed by a full stop}
|
|
% \begin{macrocode}
|
|
\def\footnoteseptext{ }%
|
|
\def\thempfn{\textsuperscript{\thefootnote}}%
|
|
\def\thefootnote{\fnsymbol{footnote}}%
|
|
% \end{macrocode}
|
|
%\changes{1.07}{2010-06-30}{added check for two column mode}
|
|
% \begin{macrocode}
|
|
\if@twocolumn
|
|
\twocolumn[\@jmlrmaketitle]%
|
|
\else
|
|
\@jmlrmaketitle
|
|
\fi
|
|
\@thanks
|
|
\endgroup
|
|
\label{jmlrstart}%
|
|
\ifx\@sauthor\@empty
|
|
\settowidth{\jmlrlength}{\@evenhead}%
|
|
\ifdim\jmlrlength>\textwidth
|
|
\def\@shortauthor{\@firstsurname\space et al.}%
|
|
\fi
|
|
\fi
|
|
\settowidth{\jmlrlength}{\@titlefoot}%
|
|
\ifdim\jmlrlength>\textwidth
|
|
\def\@jmlrauthors{\@firstauthor\space \emph{et al}}%
|
|
\fi
|
|
\jmlrmaketitlehook
|
|
\thispagestyle{jmlrtps}%
|
|
\setcounter{footnote}{0}%
|
|
\let\maketitle\relax \let\@maketitle\relax
|
|
\gdef\@thanks{}\gdef\@author{}\let\thanks\@gobble
|
|
\def\@jmlr@authors@sep{ \& }%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\jmlrmaketitlehook}
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlrmaketitlehook}{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\jmlrpremaketitlehook}
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlrpremaketitlehook}{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
% Provide a different title layout for HTML
|
|
%\begin{macro}{\jmlrhtmlmaketitle}
|
|
% \begin{macrocode}
|
|
\newcommand{\jmlrhtmlmaketitle}{%
|
|
\ifx\@jmlr@authors\@empty
|
|
\sbox\jmlrbox{\let\addr\relax\@author}%
|
|
\fi
|
|
\noindent\HCode{<h2>}\@title\HCode{</h2>}
|
|
\noindent\@jmlr@authors
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%%\begin{macro}{\jmlrbox}
|
|
% Define a save box
|
|
% \begin{macrocode}
|
|
\newsavebox\jmlrbox
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\maketitle}
|
|
% If we're creating HTML, set \cs{maketitle} to
|
|
% \cs{jmlrhtmlmaketitle}, otherwise set it to \cs{jmlrmaketitle}
|
|
% \begin{macrocode}
|
|
\ifjmlrhtml
|
|
\let\maketitle\jmlrhtmlmaketitle
|
|
\else
|
|
\let\maketitle\jmlrmaketitle
|
|
\fi
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
% Author and editor information.
|
|
% \begin{macrocode}
|
|
\def\@startauthor{\noindent \normalsize\bfseries}
|
|
\def\@endauthor{}
|
|
\def\@starteditor{\noindent \small {\bfseries \@edname:~}}
|
|
\def\@endeditor{\normalsize}
|
|
% \end{macrocode}
|
|
% Provide hooks to make it easier to adapted with \cls{combine}
|
|
% class.
|
|
%\begin{macro}{\jmlrpretitle}
|
|
% \begin{macrocode}
|
|
\def\jmlrpretitle{\vskip\beforetitskip\begin{center}\Large\bfseries}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\jmlrposttitle}
|
|
% \begin{macrocode}
|
|
\def\jmlrposttitle{\par\end{center}\vskip\aftertitskip}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\nametag}
|
|
%\changes{1.09}{2010/12/01}{new}
|
|
% \begin{macrocode}
|
|
\newcommand*{\nametag}[1]{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\jmlrpreauthor}
|
|
%\changes{1.09}{2010/12/01}{added \cs{nametag}}
|
|
% \begin{macrocode}
|
|
\def\jmlrpreauthor{%
|
|
\bgroup
|
|
\def\nametag##1{##1}%
|
|
\def\and{\unskip\enspace{\normalfont and}\enspace}%
|
|
% \end{macrocode}
|
|
%\changes{1.10}{2011-01-05}{added \cs{mdseries} to \cs{addr}}
|
|
% \begin{macrocode}
|
|
\def\addr{\mdseries\small\itshape}%
|
|
\def\name{\ClassError{jmlr}{Use \string\Name{Author's Name} not \string\name}{}}%
|
|
\def\email{\ClassError{jmlr}{Use \string\Email{address} not \string\email}{}}%
|
|
\def\AND{\@endauthor\normalfont\hss \vskip \interauthorskip
|
|
\@startauthor}%
|
|
\@startauthor
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\addr}
|
|
%\changes{1.20}{2014/10/15}{initialised to nothing}
|
|
% Initialise to do nothing if used outside of \cs{author}
|
|
% \begin{macrocode}
|
|
\newcommand{\addr}{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@email}
|
|
% \begin{macrocode}
|
|
\def\@email{\hfill\small\mdseries\scshape}%
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@name}
|
|
% \begin{macrocode}
|
|
\def\@name{\normalsize\upshape\bfseries}%
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\@parsename}
|
|
% Parse a name. Appends forename to \cs{@forenames} and stores
|
|
% surname in \cs{@surname}.
|
|
% \begin{macrocode}
|
|
\def\@parsename#1 #2\end@parsename{%
|
|
\def\@tmp{#2}%
|
|
\ifx\@tmp\@nnil
|
|
\def\@surname{#1}%
|
|
\let\@nextparsename\@parsenamenoop
|
|
\else
|
|
\@getinitial#1-\relax\relax\end@getinitial
|
|
\ifx\@forenames\@empty
|
|
\def\@forenames{#1}%
|
|
\protected@edef\@initials{\@initial}%
|
|
\else
|
|
\expandafter\toks@\expandafter{\@forenames}%
|
|
\edef\@forenames{\space\the\toks@}%
|
|
\expandafter\toks@\expandafter{\@initials}%
|
|
\protected@edef\@initials{\the\toks@\@initial}%
|
|
\fi
|
|
\let\@nextparsename\@parsename
|
|
\fi
|
|
\@nextparsename#2\end@parsename
|
|
}
|
|
\def\@parsenamenoop#1\end@parsename{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\@getinitial}
|
|
% \begin{macrocode}
|
|
\def\@getinitial#1#2-#3#4\end@getinitial{%
|
|
\def\@jmlr@tmp{#3}%
|
|
\if\@jmlr@tmp\relax
|
|
\def\@initial{#1.}%
|
|
\else
|
|
\def\@initial{#1.-#3.}%
|
|
\fi
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\Name}
|
|
% Get the author's name and add surname to \cs{@shortauthors}.
|
|
% (Surnames with \qt{von} parts or with spaces in should be
|
|
% enclosed in braces)
|
|
%\changes{1.12}{2012/01/05}{added optional argument}
|
|
% \begin{macrocode}
|
|
\newcommand*{\Name}[2][]{%
|
|
\def\@authorlist{#1}%
|
|
\def\@forenames{}%
|
|
\def\@surname{}%
|
|
\def\nametag##1{}%
|
|
\@parsename#2 \@nil\end@parsename
|
|
\ifx\@shortauthor\@empty
|
|
\ifx\@sauthor\@empty
|
|
\global\let\@shortauthor\@surname
|
|
\global\let\@firstsurname\@surname
|
|
\fi
|
|
\ifx\@authorlist\@empty
|
|
\protected@xdef\@jmlrauthors{\@initials\space\@surname}%
|
|
\else
|
|
\protected@xdef\@jmlrauthors{\@authorlist}%
|
|
\fi
|
|
\global\let\@firstauthor\@jmlrauthors
|
|
\else
|
|
\ifx\@sauthor\@empty
|
|
\expandafter\toks@\expandafter{\@shortauthor}%
|
|
\protected@xdef\@shortauthor{\the\toks@\space\@surname}%
|
|
\fi
|
|
\ifx\@authorlist\@empty
|
|
\ifx\@jmlrauthors\@empty
|
|
\protected@xdef\@jmlrauthors{\@initials\space\@surname}%
|
|
\else
|
|
\protected@xdef\@jmlrauthors{\@jmlrauthors
|
|
\noexpand\@jmlr@authors@sep
|
|
\@initials\space\@surname}%
|
|
\fi
|
|
\else
|
|
\ifx\@jmlrauthors\@empty
|
|
\protected@xdef\@jmlrauthors{\@authorlist}%
|
|
\else
|
|
\protected@xdef\@jmlrauthors{\@jmlrauthors
|
|
\noexpand\@jmlr@authors@sep
|
|
\@authorlist
|
|
}%
|
|
\fi
|
|
\fi
|
|
\fi
|
|
\def\nametag##1{##1}%
|
|
\@name #2%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\jmlrabbrnamelist}
|
|
%\changes{1.11}{2011-03-24}{new}
|
|
% Display list of names in abbreviated form. (Mainly designed for use with
|
|
% makejmlrbook for the preface authors.) The author should be
|
|
% grouped if the name contains a comma.
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlrabbrnamelist}[1]{%
|
|
\def\nametag##1{}%
|
|
\def\@jmlr@authors@sep{, }%
|
|
\def\@jmlr@namelist{}%
|
|
\@for\@thisname:=#1\do{%
|
|
\expandafter\@jmlrabbrname\expandafter{\@thisname}%
|
|
\ifx\@jmlr@namelist\@empty
|
|
\protected@edef\@jmlr@namelist{%
|
|
\@initials\space\@surname
|
|
}%
|
|
\else
|
|
\protected@edef\@jmlr@namelist{%
|
|
\@jmlr@namelist
|
|
\noexpand\@jmlr@authors@sep
|
|
\@initials\space\@surname
|
|
}%
|
|
\fi
|
|
}%
|
|
\def\@jmlr@authors@sep{ \& }%
|
|
\@jmlr@namelist
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@jmlrabbrname}
|
|
% \begin{macrocode}
|
|
\newcommand*{\@jmlrabbrname}[1]{%
|
|
\def\@initials{}%
|
|
\def\@surname{}%
|
|
\def\@forenames{}%
|
|
\@parsename#1 \@nil\end@parsename
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\Email}
|
|
% \begin{macrocode}
|
|
\newcommand*{\Email}[1]{{\@email #1}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\jmlrpostauthor}
|
|
% \begin{macrocode}
|
|
\def\jmlrpostauthor{\@endauthor\egroup
|
|
\par
|
|
\vskip \aftermaketitskip
|
|
\noindent
|
|
\ifx\@editor\@empty
|
|
\else
|
|
\@starteditor \@editor \@endeditor
|
|
\fi
|
|
\vskip \aftermaketitskip
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@jmlrmaketitle}
|
|
% \begin{macrocode}
|
|
\def\@jmlrmaketitle{\vbox{\hsize\textwidth
|
|
\linewidth\hsize
|
|
\jmlrpretitle
|
|
{%
|
|
\def\titletag##1{##1}%
|
|
\@title
|
|
}%
|
|
\jmlrposttitle
|
|
\jmlrpreauthor \@author \jmlrpostauthor
|
|
}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\kernelmachines}
|
|
% Convenience command
|
|
% \begin{macrocode}
|
|
\newcommand*\kernelmachines{(for
|
|
{\textsc{http://www.kernel-machines.org}})}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\editorname}
|
|
% Label for the editor
|
|
% \begin{macrocode}
|
|
\newcommand*{\editorname}{Editor}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\editorsname}
|
|
% Label for the editor
|
|
% \begin{macrocode}
|
|
\newcommand*{\editorsname}{Editors}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@edname}
|
|
% This will either be Editor or Editors depending on whether
|
|
% \cs{editor} or \cs{editors} is used. Defaults to \cs{editorname}
|
|
% \begin{macrocode}
|
|
\let\@edname\editorname
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@editor}
|
|
% The editor or editors are stored in \cs{@editor}
|
|
% \begin{macrocode}
|
|
\def\@editor{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\editor}
|
|
% A single editor
|
|
% \begin{macrocode}
|
|
\def\editor#1{%
|
|
\global\let\@edname\editorname
|
|
\gdef\@editor{#1}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\editors}
|
|
% Multiple editors
|
|
% \begin{macrocode}
|
|
\def\editors#1{%
|
|
\global\let\@edname\editorsname
|
|
\gdef\@editor{#1}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\subsection{Pagestyles}
|
|
% This is taken from jmlr2e.sty
|
|
%
|
|
%\begin{macro}{\firstpageno}
|
|
% Set the page counter.
|
|
% \begin{macrocode}
|
|
\def\firstpageno#1{\setcounter{page}{#1}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\startpage}
|
|
%\changes{1.10}{2011-01-05}{new}
|
|
% If \cs{startpage} has been defined, use its value for the first
|
|
% page.
|
|
% \begin{macrocode}
|
|
\@ifundefined{startpage}{}{\firstpageno{\startpage}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
% Label end page.
|
|
%\begin{macro}{\@jmlrenddoc}
|
|
% Label end page
|
|
% \begin{macrocode}
|
|
\newcommand*{\@jmlrenddoc}{%
|
|
\phantomsection
|
|
\protected@edef\@currentlabelname{end of \@shorttitle}%
|
|
\label{jmlrend}\null
|
|
\global\let\@reprint\@empty
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\@titlefoot}
|
|
%\changes{1.09}{2010/12/01}{added \cs{@reprint}}
|
|
% \begin{macrocode}
|
|
\newcommand*{\@titlefoot}{\scriptsize\copyright\space\@jmlryear
|
|
\space\@jmlr@authors.\hfill
|
|
\@reprint
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\reprint}
|
|
%\changes{1.09}{2010/12/01}{new}
|
|
% \begin{macrocode}
|
|
\let\@reprint\@empty
|
|
\newcommand{\reprint}[1]{%
|
|
\gdef\@reprint{Reprinted with permission for JMLR#1}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\ps@jmlrtps}
|
|
% Title page style
|
|
% \begin{macrocode}
|
|
\newcommand\ps@jmlrtps{%
|
|
\let\@mkboth\@gobbletwo
|
|
\def\@oddhead{\scriptsize \@jmlrproceedings
|
|
\ifx\@jmlrvolume\@empty
|
|
\else
|
|
\space\@jmlrvolume
|
|
\ifx\@jmlrissue\@empty\else(\@jmlrissue)\fi
|
|
\ifx\@jmlrpages\@empty
|
|
\ifx\@jmlryear\@empty
|
|
\else
|
|
\if\@jmlrissue\@empty,\fi
|
|
\fi
|
|
\else
|
|
:%
|
|
\fi
|
|
\fi
|
|
\ifx\@jmlrpages\@empty
|
|
\else
|
|
\ifx\@jmlrvolume\@empty\space\fi
|
|
\@jmlrpages
|
|
\ifx\@jmlryear\@empty\else,\fi
|
|
\fi
|
|
\ifx\@jmlryear\@empty\else\space\@jmlryear\fi
|
|
\hfill
|
|
\ifx\@jmlrworkshop\@empty
|
|
\ifx\@jmlrsubmitted\@empty
|
|
\else
|
|
Submitted \@jmlrsubmitted
|
|
\ifx\@jmlrpublished\@empty\else;\fi
|
|
\fi
|
|
\ifx\@jmlrpublished\@empty
|
|
\else
|
|
\space Published \@jmlrpublished
|
|
\fi
|
|
\else
|
|
\space\@jmlrworkshop
|
|
\fi
|
|
}%
|
|
\let\@evenhead\@oddhead
|
|
\def\@oddfoot{\@titlefoot}%
|
|
\let\@evenfoot\@oddfoot
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\ps@jmlrps}
|
|
% Page style for subsequent pages
|
|
% \begin{macrocode}
|
|
\def\ps@jmlrps{%
|
|
\let\@mkboth\@gobbletwo
|
|
\def\@oddhead{\hfill {\small\scshape \@shorttitle} \hfill}%
|
|
\def\@oddfoot{\hfill \small\rmfamily \thepage \hfill}%
|
|
\def\@evenhead{\hfill {\small\scshape \@shortauthor} \hfill}%
|
|
\def\@evenfoot{\hfill \small\rmfamily \thepage \hfill}%
|
|
}%
|
|
% \end{macrocode}
|
|
% Set the page style:
|
|
% \begin{macrocode}
|
|
\pagestyle{jmlrps}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
% Set the heading information:
|
|
%\begin{macro}{\@jmlrvolume}
|
|
% The volume number:
|
|
%\changes{1.17}{2012/05/30}{changed initial definition to use
|
|
%\cs{providecommand}}
|
|
% \begin{macrocode}
|
|
\providecommand*{\@jmlrvolume}{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\jmlrvolume}
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlrvolume}[1]{\renewcommand*{\@jmlrvolume}{#1}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@jmlrissue}
|
|
% The issue number:
|
|
% \begin{macrocode}
|
|
\providecommand*{\@jmlrissue}{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\jmlrissue}
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlrissue}[1]{\renewcommand*{\@jmlrissue}{#1}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@jmlryear}
|
|
% The year of publication:
|
|
%\changes{1.17}{2012/05/30}{changed initial definition to use
|
|
%\cs{providecommand}}
|
|
% \begin{macrocode}
|
|
\providecommand*{\@jmlryear}{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\jmlryear}
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlryear}[1]{\renewcommand*{\@jmlryear}{#1}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@jmlrpages}
|
|
% The page range:
|
|
%\changes{1.17}{2012/05/30}{changed initial definition to use
|
|
%\cs{providecommand}}
|
|
% \begin{macrocode}
|
|
\providecommand*\@jmlrpages{\pageref{jmlrstart}--\pageref{jmlrend}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\jmlrpages}
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlrpages}[1]{\renewcommand*{\@jmlrpages}{#1}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@jmlrsubmitted}
|
|
% The date the article was submitted:
|
|
%\changes{1.17}{2012/05/30}{changed initial definition to use
|
|
%\cs{providecommand}}
|
|
% \begin{macrocode}
|
|
\providecommand*\@jmlrsubmitted{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\jmlrsubmitted}
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlrsubmitted}[1]{\renewcommand*{\@jmlrsubmitted}{#1}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@jmlrpublished}
|
|
% The date the article was published:
|
|
%\changes{1.17}{2012/05/30}{changed initial definition to use
|
|
%\cs{providecommand}}
|
|
% \begin{macrocode}
|
|
\providecommand*\@jmlrpublished{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\jmlrpublished}
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlrpublished}[1]{\renewcommand*{\@jmlrpublished}{#1}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@jmlrworkshop}
|
|
% The name of the workshop:
|
|
%\changes{1.17}{2012/05/30}{changed initial definition to use
|
|
%\cs{providecommand}}
|
|
% \begin{macrocode}
|
|
\providecommand*\@jmlrworkshop{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\jmlrworkshop}
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlrworkshop}[1]{%
|
|
\renewcommand*{\@jmlrworkshop}{#1}%
|
|
\protected@write\@auxout{}{\string\jmlr@workshop{#1}}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\jmlr@workshop}
|
|
%\changes{1.20}{2014/10/15}{new}
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlr@workshop}[1]{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\date}
|
|
% \begin{macrocode}
|
|
\renewcommand*{\date}[1]{%
|
|
\renewcommand*{\@date}{#1}%
|
|
\protected@write\@auxout{}{\string\jmlr@date{#1}}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\jmlr@date}
|
|
%\changes{1.20}{2014/10/15}{new}
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlr@date}[1]{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@jmlrauthors}
|
|
% \begin{macrocode}
|
|
\newcommand*{\@jmlrauthors}{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@jmlr@authors}
|
|
%\changes{1.12}{2012/01/05}{new}
|
|
% \begin{macrocode}
|
|
\newcommand*{\@jmlr@authors}{\@jmlrauthors}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\jmlrauthors}
|
|
% This is provided in case \cs{Name} doesn't set \cs{@jmlrauthors}
|
|
% correctly.
|
|
%\changes{1.12}{2012/01/05}{\cs{jmlrauthors} now redefines
|
|
%\cs{@jmlr@authors} instead of \cs{@jmlrauthors}}
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlrauthors}[1]{\global\def\@jmlr@authors{#1}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%
|
|
%\subsection{Miscellany}
|
|
% This code was taken from jmlr2e.sty.
|
|
|
|
% Define macros for figure captions and table titles
|
|
% \begin{macrocode}
|
|
\def\figurecaption#1#2{\noindent\hangindent 40pt
|
|
\hbox to 36pt {\small\slshape #1 \hfil}
|
|
\ignorespaces {\small #2}}
|
|
% \end{macrocode}
|
|
% Figurecenter prints the caption title centered.
|
|
% \begin{macrocode}
|
|
\def\figurecenter#1#2{\centerline{{\slshape #1} #2}}
|
|
\def\figurecenter#1#2{\centerline{{\small\slshape #1} {\small #2}}}
|
|
% \end{macrocode}
|
|
%
|
|
% Allow ``hanging indents'' in long captions
|
|
%
|
|
%\begin{macro}{\@makecaption}
|
|
% \begin{macrocode}
|
|
\long\def\@makecaption#1#2{%
|
|
\vskip 10pt
|
|
\setbox\@tempboxa\hbox{#1: #2}%
|
|
\ifdim \wd\@tempboxa >\hsize % IF longer than one line:
|
|
\begin{list}{#1:}{%
|
|
\settowidth{\labelwidth}{#1:}
|
|
\setlength{\leftmargin}{\labelwidth}
|
|
\addtolength{\leftmargin}{\labelsep}
|
|
}\item #2 \end{list}\par % Output in quote mode
|
|
\else % ELSE center.
|
|
\hbox to\hsize{\hfil\box\@tempboxa\hfil}
|
|
\fi}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
% Define strut macros for skipping spaces above and below text in a
|
|
% tabular environment.
|
|
% \begin{macrocode}
|
|
\def\abovestrut#1{\rule[0in]{0in}{#1}\ignorespaces}
|
|
\def\belowstrut#1{\rule[-#1]{0in}{#1}\ignorespaces}
|
|
% \end{macrocode}
|
|
%\begin{macro}{\acks}
|
|
% Acknowledgements
|
|
% \begin{macrocode}
|
|
\newcommand{\acks}[1]{\section*{Acknowledgments}#1}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
% Research Note
|
|
%\begin{macro}{\researchnote}
|
|
% \begin{macrocode}
|
|
\newcommand{\researchnote}[1]{\noindent {\LARGE\itshape Research Note} #1}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%Other macros now moved to \sty{jmlrutils}.
|
|
%
|
|
%\begin{macro}{\ifprint}
|
|
% Provide command to check if this is the printed greyscale
|
|
% version or the online colour version.
|
|
% \begin{macrocode}
|
|
\providecommand{\ifprint}[2]{\ifgrayscale#1\else#2\fi}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
% Modify \cs{includegraphics} so that it can pick up the greyscale
|
|
% version of images if this is the print version.
|
|
%% \begin{macrocode}
|
|
\ifjmlrhtml
|
|
\else
|
|
\let\@org@Ginclude@graphics\Ginclude@graphics
|
|
\def\Ginclude@graphics#1{%
|
|
\begingroup
|
|
\let\input@path\Ginput@path
|
|
\ifprint{\filename@parse{#1-gray}}{\filename@parse{#1}}%
|
|
\ifx\filename@ext\relax
|
|
\@for\Gin@temp:=\Gin@extensions\do{%
|
|
\ifx\Gin@ext\relax
|
|
\Gin@getbase\Gin@temp
|
|
\fi}%
|
|
\else
|
|
\ifprint{\filename@parse{#1}}{}%
|
|
\Gin@getbase{\Gin@sepdefault\filename@ext}%
|
|
\ifx\Gin@ext\relax
|
|
\@warning{File `#1' not found}%
|
|
\def\Gin@base{\filename@area\filename@base}%
|
|
\edef\Gin@ext{\Gin@sepdefault\filename@ext}%
|
|
\fi
|
|
\fi
|
|
\ifx\Gin@ext\relax
|
|
\ifprint{\@org@Ginclude@graphics{#1}}%
|
|
{%
|
|
\@latex@error{File `#1' not found}%
|
|
{I could not locate the file with any of these extensions:^^J%
|
|
\Gin@extensions^^J\@ehc}%
|
|
}%
|
|
\else
|
|
\@ifundefined{Gin@rule@\Gin@ext}%
|
|
{\ifx\Gin@rule@*\@undefined
|
|
\@latex@error{Unknown graphics extension: \Gin@ext}\@ehc
|
|
\else
|
|
\expandafter\Gin@setfile\Gin@rule@*{\Gin@base\Gin@ext}%
|
|
\fi}%
|
|
{\expandafter\expandafter\expandafter\Gin@setfile
|
|
\csname Gin@rule@\Gin@ext\endcsname{\Gin@base\Gin@ext}}%
|
|
\fi
|
|
\endgroup}
|
|
\fi
|
|
% \end{macrocode}
|
|
%
|
|
%\begin{macro}{\artappendix}
|
|
% Switch to appendices in an article
|
|
% \begin{macrocode}
|
|
\newcommand{\artappendix}{\par
|
|
\setcounter{section}{0}
|
|
\setcounter{subsection}{0}
|
|
\def\thesection{\Alph{section}}
|
|
% \end{macrocode}
|
|
%\changes{1.12}{2012/01/05}{added chapter to \cs{theHsection} to ensure unique
|
|
%hyperlink names in book}
|
|
% \begin{macrocode}
|
|
\def\theHsection{\theHchapter.\Alph{section}}
|
|
\def\presectionnum{Appendix~}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
% The default assumes a stand-alone article.
|
|
%\begin{macro}{\appendix}
|
|
% \begin{macrocode}
|
|
\let\appendix\artappendix
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\booklinebreak}
|
|
%\changes{1.18}{2013-10-17}{new}
|
|
% Provided for book production editors to fine tune the book
|
|
% line breaking. Does nothing in the standalone article.
|
|
% \begin{macrocode}
|
|
\newcommand{\booklinebreak}[1][]{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\subsection{Compatibility with combine.cls}
|
|
%
|
|
% Define chapters to make this class play nicely with \cls{combine}.
|
|
% These definitions are just copied from book.cls
|
|
% \begin{macrocode}
|
|
\newcounter{chapter}
|
|
\renewcommand\thechapter{\@arabic\c@chapter}
|
|
\newcommand\@chapapp{\chaptername}
|
|
% \end{macrocode}
|
|
% Add sections to the chapter reset.
|
|
% \begin{macrocode}
|
|
\@addtoreset{section}{chapter}
|
|
% \end{macrocode}
|
|
%\begin{macro}{\chaptermark}
|
|
% \begin{macrocode}
|
|
\newcommand*\chaptermark[1]{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
% Chapters should only be defined when we're combining documents
|
|
% into a book.
|
|
%\begin{macro}{\bookchapter}
|
|
% \begin{macrocode}
|
|
\newcommand\bookchapter{%
|
|
\if@openright\cleardoublepage\else\clearpage\fi
|
|
\thispagestyle{plain}%
|
|
\global\@topnum\z@
|
|
\@afterindentfalse
|
|
\secdef\@chapter\@schapter}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\artchapter}
|
|
% Disable chapters for articles.
|
|
% \begin{macrocode}
|
|
\newcommand\artchapter{%
|
|
\ClassError{jmlr}{Chapters not permitted in articles}{}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\chapter}
|
|
% The default assumes a stand-alone document.
|
|
% \begin{macrocode}
|
|
\let\chapter\artchapter
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
% Label for the chapter entries in the toc.
|
|
% \begin{macrocode}
|
|
\def\@chaptoclabel{chapter}
|
|
% \end{macrocode}
|
|
%\begin{macro}{\@chapter}
|
|
% Numbered chapters
|
|
% \begin{macrocode}
|
|
\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
|
|
\refstepcounter{chapter}%
|
|
\if@mainmatter
|
|
\typeout{\@chapapp\space\thechapter.}%
|
|
\addcontentsline{toc}{\@chaptoclabel}%
|
|
{\protect\numberline{\thechapter}#1}%
|
|
\else
|
|
\addcontentsline{toc}{\@chaptoclabel}{#1}%
|
|
\fi
|
|
\else
|
|
\addcontentsline{toc}{\@chaptoclabel}{#1}%
|
|
\fi
|
|
\chaptermark{#1}%
|
|
\addtocontents{lof}{\protect\addvspace{10\p@}}%
|
|
\addtocontents{lot}{\protect\addvspace{10\p@}}%
|
|
\if@twocolumn
|
|
\@topnewpage[\@makechapterhead{#2}]%
|
|
\else
|
|
\@makechapterhead{#2}%
|
|
\@afterheading
|
|
\fi}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\chaptertitleformat}
|
|
% Formats the chapter title
|
|
% \begin{macrocode}
|
|
\newcommand{\chaptertitleformat}[1]{%
|
|
\Huge\bfseries#1%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\chapternumberformat}
|
|
% Formats the chapter number
|
|
% \begin{macrocode}
|
|
\newcommand{\chapternumberformat}[1]{%
|
|
\huge\bfseries \@chapapp\space#1\par\nobreak
|
|
\vskip 20\p@
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\chapterformat}
|
|
% Overall format for chapter headings
|
|
% \begin{macrocode}
|
|
\newcommand*{\chapterformat}{\raggedright}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\postchapterskip}
|
|
% Vertical gap after chapter heading
|
|
% \begin{macrocode}
|
|
\newlength\postchapterskip
|
|
\setlength\postchapterskip{40pt}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\prechapterskip}
|
|
% Vertical gap before chapter heading
|
|
% \begin{macrocode}
|
|
\newlength\prechapterskip
|
|
\setlength\prechapterskip{50pt}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@makechapterhead}
|
|
% Chapter heading for numbered chapters
|
|
% \begin{macrocode}
|
|
\def\@makechapterhead#1{%
|
|
\null\vskip\prechapterskip
|
|
{\parindent \z@ \normalfont\chapterformat
|
|
\ifnum \c@secnumdepth >\m@ne
|
|
\if@mainmatter
|
|
\chapternumberformat{\thechapter}%
|
|
\fi
|
|
\fi
|
|
\interlinepenalty\@M
|
|
\chaptertitleformat{#1}\par\nobreak
|
|
\vskip \postchapterskip
|
|
}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@schapter}
|
|
% Unnumbered chapters.
|
|
% \begin{macrocode}
|
|
\def\@schapter#1{\if@twocolumn
|
|
\@topnewpage[\@makeschapterhead{#1}]%
|
|
\else
|
|
\@makeschapterhead{#1}%
|
|
\@afterheading
|
|
\fi}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@makeschapterhead}
|
|
% Layout for unnumbered chapter headings
|
|
% \begin{macrocode}
|
|
\def\@makeschapterhead#1{%
|
|
\vspace*{\prechapterskip}%
|
|
{\parindent \z@
|
|
\normalfont\chapterformat
|
|
\interlinepenalty\@M
|
|
\chaptertitleformat{#1}\par\nobreak
|
|
\vskip \postchapterskip
|
|
}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\l@chapter}
|
|
% Format for chapter entry in toc
|
|
% \begin{macrocode}
|
|
\newcommand*\l@chapter[2]{%
|
|
\ifnum \c@tocdepth >\m@ne
|
|
\addpenalty{-\@highpenalty}%
|
|
\vskip 1.0em \@plus\p@
|
|
\setlength\@tempdima{1.5em}%
|
|
\begingroup
|
|
\parindent \z@ \rightskip \@pnumwidth
|
|
\parfillskip -\@pnumwidth
|
|
\leavevmode \large\bfseries
|
|
\advance\leftskip\@tempdima
|
|
\hskip -\leftskip
|
|
#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
|
|
\penalty\@highpenalty
|
|
\endgroup
|
|
\fi}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\l@appendix}
|
|
% Make appendix entries in the toc the same as that for chapters
|
|
% by default
|
|
% \begin{macrocode}
|
|
\let\l@appendix\l@chapter
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\chaptername}
|
|
% \begin{macrocode}
|
|
\newcommand\chaptername{Chapter}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\frontmatter}
|
|
% Start the front matter (in book)
|
|
% \begin{macrocode}
|
|
\newcommand\frontmatter{%
|
|
\cleardoublepage
|
|
\@mainmatterfalse
|
|
\renewcommand*{\theHchapter}{front-\thechapter}%
|
|
\pagenumbering{roman}%
|
|
\morefrontmatter
|
|
}
|
|
\newcommand\morefrontmatter{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\mainmatter}
|
|
% Start the main matter (in book)
|
|
% \begin{macrocode}
|
|
\newcommand\mainmatter{%
|
|
\cleardoublepage
|
|
\@mainmattertrue
|
|
\setcounter{chapter}{0}%
|
|
\renewcommand*{\theHchapter}{\thechapter}%
|
|
\pagenumbering{arabic}%
|
|
\moremainmatter
|
|
}
|
|
\newcommand\moremainmatter{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\backmatter}
|
|
% Start the back matter (in book)
|
|
% \begin{macrocode}
|
|
\newcommand\backmatter{%
|
|
\if@openright
|
|
\cleardoublepage
|
|
\else
|
|
\clearpage
|
|
\fi
|
|
\@mainmatterfalse}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\booktocpreamble}
|
|
%\changes{1.09}{2010/12/01}{new}
|
|
% \begin{macrocode}
|
|
\newcommand*{\booktocpreamble}{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\booktocpostamble}
|
|
%\changes{1.14}{2012-04-24}{new}
|
|
% \begin{macrocode}
|
|
\newcommand*{\booktocpostamble}{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\booktableofcontents}
|
|
% This is for the main table of contents when using
|
|
% the combine class file, and is not for use in individual
|
|
% articles.
|
|
%\changes{1.14}{2012-04-24}{reset page headers at end of toc}
|
|
% \begin{macrocode}
|
|
\newcommand\booktableofcontents{%
|
|
\if@twocolumn
|
|
\@restonecoltrue\onecolumn
|
|
\else
|
|
\@restonecolfalse
|
|
\fi
|
|
\chapter*{\contentsname
|
|
\@mkboth{\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
|
|
\booktocpreamble
|
|
\@starttoc{toc}%
|
|
\booktocpostamble
|
|
\if@restonecol
|
|
\twocolumn
|
|
\else
|
|
\clearpage
|
|
\fi
|
|
\@mkboth{}{}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\arttableofcontents}
|
|
% Table of contents for individual articles.
|
|
% \begin{macrocode}
|
|
\let\arttableofcontents\tableofcontents
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\artpart}
|
|
% A part in an article
|
|
% \begin{macrocode}
|
|
\newcommand{\artpart}{%
|
|
% \end{macrocode}
|
|
%\changes{1.10}{2011-01-05}{set \cs{toclevel@part}}
|
|
% \begin{macrocode}
|
|
\def\toclevel@part{0}%
|
|
\if@noskipsec \leavevmode\fi
|
|
\par
|
|
\addvspace{4ex}%
|
|
\@afterindentfalse
|
|
\secdef\@artpart\@sartpart
|
|
}
|
|
\let\@artpart\@part
|
|
\let\@sartpart\@spart
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\bookpart}
|
|
% A part in a book forming a collection of articles
|
|
% \begin{macrocode}
|
|
\newcommand\bookpart{%
|
|
% \end{macrocode}
|
|
%\changes{1.10}{2011-01-05}{set \cs{toclevel@part}}
|
|
% \begin{macrocode}
|
|
\def\toclevel@part{-1}%
|
|
\if@openright
|
|
\cleardoublepage
|
|
\else
|
|
\clearpage
|
|
\fi
|
|
\thispagestyle{plain}%
|
|
\if@twocolumn
|
|
\onecolumn
|
|
\@tempswatrue
|
|
\else
|
|
\@tempswafalse
|
|
\fi
|
|
\preparthook
|
|
\secdef\@bookpart\@sbookpart}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\parttitleformat}
|
|
% Format of the title for a part (in a book)
|
|
% \begin{macrocode}
|
|
\newcommand{\parttitleformat}[1]{%
|
|
\Huge\bfseries#1%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
% Part labels
|
|
% \begin{macrocode}
|
|
\newcommand*{\@parttoclabel}{part}
|
|
% \end{macrocode}
|
|
%
|
|
%\begin{macro}{\@partapp}
|
|
%\changes{1.09}{2010/12/01}{new}
|
|
% \begin{macrocode}
|
|
\def\@partapp{\partname}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\partnumberformat}
|
|
% Format of the part number (in a book)
|
|
% \begin{macrocode}
|
|
\newcommand{\partnumberformat}[1]{%
|
|
\Huge\bfseries \@partapp\nobreakspace#1\par\nobreak
|
|
\vskip 20\p@
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\preparthook}
|
|
% Hook at the start of a part (in a book)
|
|
% \begin{macrocode}
|
|
\newcommand{\preparthook}{\null\vfil}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\partformat}
|
|
% Overall format of part
|
|
% \begin{macrocode}
|
|
\newcommand*{\partformat}{\centering}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\@bookpart}
|
|
% Numbered book part format
|
|
% \begin{macrocode}
|
|
\def\@bookpart[#1]#2{%
|
|
\ifnum \c@secnumdepth >-2\relax
|
|
\refstepcounter{part}%
|
|
\addcontentsline{toc}{\@parttoclabel}{\protect\numberline{\thepart}#1}%
|
|
\else
|
|
\addcontentsline{toc}{\@parttoclabel}{#1}%
|
|
\fi
|
|
\markboth{}{}%
|
|
{\interlinepenalty \@M
|
|
\normalfont\partformat
|
|
\ifnum \c@secnumdepth >-2\relax
|
|
\partnumberformat{\thepart}%
|
|
\fi
|
|
\parttitleformat{#2}\par}%
|
|
\postparthook}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@sbookpart}
|
|
% Unnumbered book part format
|
|
% \begin{macrocode}
|
|
\def\@sbookpart#1{%
|
|
{\interlinepenalty \@M
|
|
\normalfont\partformat
|
|
\parttitleformat{#1}\par}%
|
|
\postparthook}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\postparthook}
|
|
% Hook after part heading
|
|
% \begin{macrocode}
|
|
\def\postparthook{\vfil\newpage
|
|
\if@twoside
|
|
\if@openright
|
|
\null
|
|
\thispagestyle{empty}%
|
|
\newpage
|
|
\fi
|
|
\fi
|
|
\if@tempswa
|
|
\twocolumn
|
|
\fi}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\bookappendix}
|
|
% Switch to appendices in book
|
|
%\changes{1.17}{2012/05/30}{added def \cs{@write@jmlr@import}}
|
|
% \begin{macrocode}
|
|
\newcommand\bookappendix{\par
|
|
\setcounter{table}{0}%
|
|
\setcounter{figure}{0}%
|
|
\zeroextracounters
|
|
\par
|
|
\gdef\theHchapter{\Alph {chapter}}%
|
|
\xdef\Hy@chapapp{\Hy@appendixstring}%
|
|
\setcounter{chapter}{0}%
|
|
\setcounter{section}{0}%
|
|
\gdef\@chapapp{\appendixname}%
|
|
\gdef\thechapter{\@Alph\c@chapter}%
|
|
\def\@write@jmlr@import{\@@write@jmlr@apdimport}%
|
|
\csname appendixmore\endcsname
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
% Define commands to switch between book/article modes
|
|
%\begin{macro}{\jmlrbookcommands}
|
|
% Switch to book commands
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlrbookcommands}{%
|
|
\let\part\bookpart
|
|
\let\chapter\bookchapter
|
|
\let\appendix\bookappendix
|
|
\let\tableofcontents\booktableofcontents
|
|
\def\thesection{\thechapter.\arabic{section}}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\jmlarticlecommands}
|
|
% Switch to article commands
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlrarticlecommands}{%
|
|
\let\part\artpart
|
|
\let\chapter\artchapter
|
|
\let\appendix\artappendix
|
|
\let\tableofcontents\arttableofcontents
|
|
\def\thesection{\arabic{section}}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
% Check for packages that are known to cause problems when
|
|
% combining articles into a book.
|
|
%\begin{macro}{\@jmlr@check@packages}
|
|
% \begin{macrocode}
|
|
\newcommand*{\@jmlr@check@packages}{%
|
|
\@ifpackageloaded{epsfig}{%
|
|
\ClassError{jmlr}{Obsolete package `epsfig' detected.
|
|
\MessageBreak
|
|
Please use \string\includegraphics\space to include images
|
|
instead}{}}{}%
|
|
\@ifpackageloaded{psfig}{%
|
|
\ClassError{jmlr}{Obsolete package `psfig' detected.
|
|
\MessageBreak
|
|
Please use \string\includegraphics\space to include images
|
|
instead}{}}{}%
|
|
\@ifpackageloaded{subfig}{%
|
|
\ClassError{jmlr}{Package `subfig' detected.\MessageBreak
|
|
This will cause a conflict if the article is incorporated
|
|
\MessageBreak
|
|
into a book using jmlbook.cls.
|
|
\MessageBreak
|
|
Please use \string\subfigure\space and
|
|
\string\subtable\space instead}{}}{}%
|
|
\@ifpackageloaded{theorem}{%
|
|
\ClassError{jmlr}{Package `theorem' detected.\MessageBreak
|
|
This can cause a conflict with other packages used by jmlr}{}}{}%
|
|
\@ifpackageloaded{ntheorem}{%
|
|
\ClassError{jmlr}{Package `ntheorem' detected.\MessageBreak
|
|
This can cause a conflict with other packages used by jmlr}{}}{}%
|
|
\@ifpackageloaded{amsthm}{%
|
|
\ClassError{jmlr}{Package `amsthm' detected.\MessageBreak
|
|
This package conflicts with the jmlr class}{}}{}%
|
|
\@ifpackageloaded{pdfpages}{Package `pdfpages' detected.\MessageBreak
|
|
This can cause a problem for jmlrbook}{}%
|
|
\@ifpackageloaded{geometry}{Package `geometry' detected.\MessageBreak
|
|
This can cause a problem for jmlrbook}{}%
|
|
\@ifpackageloaded{tabularx}{%
|
|
\ClassError{jmlr}{Package `tabularx' detected.\MessageBreak
|
|
This will break footnote links}{}}{}%
|
|
% \end{macrocode}
|
|
%\changes{1.21}{2015-02-24}{Added check for jmlr2e package}
|
|
% \begin{macrocode}
|
|
\@ifpackageloaded{jmlr2e}{%
|
|
\ClassError{jmlr}{Package `jmlr2e' detected.\MessageBreak
|
|
This can't be used with the jmlr class}{}}{}%
|
|
}
|
|
\AtBeginDocument{%
|
|
\@jmlr@check@packages
|
|
\let\@jmlr@check@packages\relax
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\jmlrSuppressPackageChecks}
|
|
% Don't check for potentially problematic packages.
|
|
% (If I find this in any paper sent to me for inclusion in a book,
|
|
% it will annoy me.)
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlrSuppressPackageChecks}{%
|
|
\let\@jmlr@check@packages\relax
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
% Discourage authors from using obsolete commands:
|
|
%\begin{macro}{\obsoletefontcs}
|
|
% \begin{macrocode}
|
|
\DeclareRobustCommand*{\obsoletefontcs}[1]{%
|
|
\ClassWarning{jmlr}{Obsolete command
|
|
\expandafter\string\csname#1\endcsname\space detected}%
|
|
\csname #1 \endcsname
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\bf}
|
|
%\changes{1.17}{2012/05/30}{added redefinition to produce obsolete warning}
|
|
% \begin{macrocode}
|
|
\renewcommand*{\bf}{%
|
|
\obsoletefontcs{bf}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\it}
|
|
%\changes{1.17}{2012/05/30}{added redefinition to produce obsolete warning}
|
|
% \begin{macrocode}
|
|
\renewcommand*{\it}{%
|
|
\obsoletefontcs{it}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\sc}
|
|
%\changes{1.17}{2012/05/30}{added redefinition to produce obsolete warning}
|
|
% \begin{macrocode}
|
|
\renewcommand*{\sc}{%
|
|
\obsoletefontcs{sc}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\rm}
|
|
%\changes{1.17}{2012/05/30}{added redefinition to produce obsolete warning}
|
|
% \begin{macrocode}
|
|
\renewcommand*{\rm}{%
|
|
\obsoletefontcs{rm}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\sf}
|
|
%\changes{1.17}{2012/05/30}{added redefinition to produce obsolete warning}
|
|
% \begin{macrocode}
|
|
\renewcommand*{\sf}{%
|
|
\obsoletefontcs{sf}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\tt}
|
|
%\changes{1.17}{2012/05/30}{added redefinition to produce obsolete warning}
|
|
% \begin{macrocode}
|
|
\renewcommand*{\tt}{%
|
|
\obsoletefontcs{tt}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\jmlrcheckforpseudocode}
|
|
%\changes{1.21}{2015-02-24}{Added check for pseudocode package}
|
|
% Check for \sty{pseudocode} package since it conflicts with
|
|
% the \sty{algorithm} package and quite often both packages
|
|
% are used in the same book or proceedings.
|
|
% \begin{macrocode}
|
|
\providecommand*{\jmlrcheckforpseudocode}{%
|
|
\@ifpackageloaded{pseudocode}%
|
|
{%
|
|
\let\pseudoRETURN\RETURN
|
|
\let\pseudoTRUE\TRUE
|
|
\let\pseudoFALSE\FALSE
|
|
\let\pseudoAND\AND
|
|
\let\pseudoOR\OR
|
|
\let\pseudoNOT\NOT
|
|
\let\pseudoTO\TO
|
|
\let\pseudoCOMMENT\COMMENT
|
|
\let\pseudoIF\IF
|
|
\let\pseudoELSE\ELSE
|
|
\let\pseudoFOR\FOR
|
|
\let\pseudoFORALL\FORALL
|
|
\let\pseudoWHILE\WHILE
|
|
\let\pseudoREPEAT\REPEAT
|
|
\let\pseudoUNTIL\UNTIL
|
|
\let\pseudoENDFOR\ENDFOR
|
|
\let\RETURN\undefined
|
|
\let\TRUE\undefined
|
|
\let\FALSE\undefined
|
|
\let\AND\undefined
|
|
\let\OR\undefined
|
|
\let\NOT\undefined
|
|
\let\TO\undefined
|
|
\let\COMMENT\undefined
|
|
\let\IF\undefined
|
|
\let\ELSE\undefined
|
|
\let\FOR\undefined
|
|
\let\FORALL\undefined
|
|
\let\WHILE\undefined
|
|
\let\REPEAT\undefined
|
|
\let\UNTIL\undefined
|
|
\let\ENDFOR\undefined
|
|
\preto\pseudocode{%
|
|
\let\RETURN\pseudoRETURN
|
|
\let\TRUE\pseudoTRUE
|
|
\let\FALSE\pseudoFALSE
|
|
\let\AND\pseudoAND
|
|
\let\OR\pseudoOR
|
|
\let\NOT\pseudoNOT
|
|
\let\TO\pseudoTO
|
|
\let\COMMENT\pseudoCOMMENT
|
|
\let\IF\pseudoIF
|
|
\let\ELSE\pseudoELSE
|
|
\let\FOR\pseudoFOR
|
|
\let\FORALL\pseudoFORALL
|
|
\let\WHILE\pseudoWHILE
|
|
\let\REPEAT\pseudoREPEAT
|
|
\let\UNTIL\pseudoUNTIL
|
|
\let\ENDFOR\pseudoENDFOR
|
|
}%
|
|
}%
|
|
{}%
|
|
}
|
|
\jmlrcheckforpseudocode
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\iffalse
|
|
% \begin{macrocode}
|
|
%</jmlr.cls>
|
|
% \end{macrocode}
|
|
%\fi
|
|
%\iffalse
|
|
% \begin{macrocode}
|
|
%<*jmlrbook.cls>
|
|
% \end{macrocode}
|
|
%\fi
|
|
%\section{jmlrbook.cls Code}
|
|
% Class file for books composed of articles using the \clsfmt{jmlr} class.
|
|
% \begin{macrocode}
|
|
\NeedsTeXFormat{LaTeX2e}
|
|
% \end{macrocode}
|
|
% Declare class:
|
|
% \begin{macrocode}
|
|
\ProvidesClass{jmlrbook}[2017/08/01 v1.24 (NLCT) JMLR Book Style]
|
|
% \end{macrocode}
|
|
% Need \sty{xkeyval} package to have key=value class options
|
|
% \begin{macrocode}
|
|
\RequirePackage{xkeyval}
|
|
% \end{macrocode}
|
|
% Requires double spacing for the title page
|
|
% \begin{macrocode}
|
|
\RequirePackage{setspace}
|
|
% \end{macrocode}
|
|
%
|
|
% Path used to determine if the preface is in the main
|
|
% document or in a separate file.
|
|
%\begin{macro}{\jmlrprefacefile}
|
|
%\changes{1.20}{2014/10/15}{new}
|
|
% \begin{macrocode}
|
|
\newcommand*\jmlrprefacepath{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
% The \sty{fink} package is now deprecated, so only use it if
|
|
% \sty{currfile} isn't installed.
|
|
% \begin{macrocode}
|
|
\IfFileExists{currfile.sty}%
|
|
{
|
|
\RequirePackage{currfile}
|
|
\renewcommand*\jmlrprefacepath{\currfilepath}
|
|
}%
|
|
{%
|
|
% \end{macrocode}
|
|
%\changes{1.11}{2011-03-24}{fink package now required}
|
|
% \begin{macrocode}
|
|
\RequirePackage{fink}
|
|
\ifdef\finkpath
|
|
{%
|
|
\renewcommand*\jmlrprefacepath{\finkpath}%
|
|
}
|
|
{%
|
|
% \end{macrocode}
|
|
% \sty{fink} version too old.
|
|
% \begin{macrocode}
|
|
\ClassWarning{jmlrbook}{Install `currfile' package or update
|
|
`fink' package}
|
|
}
|
|
}
|
|
% \end{macrocode}
|
|
% Some packages need to be loaded before \sty{hyperref} so provide a
|
|
% hook to do this:
|
|
%\changes{1.12}{2012/01/05}{changed \cs{newcommand} to \cs{providecommand}}
|
|
% \begin{macrocode}
|
|
\providecommand*{\jmlrprehyperref}{}
|
|
% \end{macrocode}
|
|
%\begin{macro}{\ifgrayscale}
|
|
% Determine whether to select color or grayscale
|
|
% \begin{macrocode}
|
|
\newif\ifgrayscale
|
|
\grayscalefalse
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{option}{draft}
|
|
%\changes{1.18}{2013-10-17}{new}
|
|
% \begin{macrocode}
|
|
\DeclareOptionX{draft}{\setlength\overfullrule{5pt}}
|
|
% \end{macrocode}
|
|
%\end{option}
|
|
%\begin{option}{final}
|
|
%\changes{1.18}{2013-10-17}{new}
|
|
% \begin{macrocode}
|
|
\DeclareOptionX{final}{\setlength\overfullrule{0pt}}
|
|
% \end{macrocode}
|
|
%\end{option}
|
|
%\begin{option}{color}
|
|
% \begin{macrocode}
|
|
\DeclareOptionX{color}{\grayscalefalse}
|
|
% \end{macrocode}
|
|
%\end{option}
|
|
%\begin{option}{gray}
|
|
% \begin{macrocode}
|
|
\DeclareOptionX{gray}{\grayscaletrue}
|
|
% \end{macrocode}
|
|
%\end{option}
|
|
% Pass \clsopt{letterpaper} and \clsopt{7x10} to \clsfmt{jmlr}.
|
|
%\begin{option}{letterpaper}
|
|
% \begin{macrocode}
|
|
\DeclareOptionX{letterpaper}{\PassOptionsToClass{\CurrentOption}{jmlr}}
|
|
% \end{macrocode}
|
|
%\end{option}
|
|
%\begin{option}{7x10}
|
|
% \begin{macrocode}
|
|
\DeclareOptionX{7x10}{\PassOptionsToClass{\CurrentOption}{jmlr}}
|
|
% \end{macrocode}
|
|
%\end{option}
|
|
% Pass \clsopt{html} and \clsopt{nohtml} to \clsfmt{jmlr}.
|
|
% (Used by \app{makejmlrbookgui})
|
|
%\begin{option}{html}
|
|
% \begin{macrocode}
|
|
\DeclareOptionX{html}{\PassOptionsToClass{\CurrentOption}{jmlr}}
|
|
% \end{macrocode}
|
|
%\end{option}
|
|
%\begin{option}{nohtml}
|
|
% \begin{macrocode}
|
|
\DeclareOptionX{nohtml}{\PassOptionsToClass{\CurrentOption}{jmlr}}
|
|
% \end{macrocode}
|
|
%\end{option}
|
|
%\begin{macro}{\jmlrprefaceheader}
|
|
%\changes{1.20}{2014/10/15}{new}
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlrprefaceheader}{%
|
|
\phantomsection
|
|
\chapter*{\prefacename}%
|
|
\addcontentsline{toc}{chapter}{\prefacename}%
|
|
\markboth{\prefacename}{\prefacename}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
% Pass \clsopt{wcp}, \clsopt{pmlr} and \clsopt{nowcp} options to \clsfmt{jmlr} and
|
|
% set preface header.
|
|
%\begin{option}{wcp}
|
|
%\changes{1.21}{2015-02-24}{No longer changes preface header}
|
|
% \begin{macrocode}
|
|
\DeclareOptionX{wcp}{%
|
|
\PassOptionsToClass{\CurrentOption}{jmlr}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{option}
|
|
%\begin{option}{pmlr}
|
|
%\changes{1.23}{2017-03-09}{new}
|
|
% \begin{macrocode}
|
|
\DeclareOptionX{pmlr}{%
|
|
\PassOptionsToClass{\CurrentOption}{jmlr}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{option}
|
|
%\begin{option}{nowcp}
|
|
%\changes{1.21}{2015-02-24}{No longer changes preface header}
|
|
% \begin{macrocode}
|
|
\DeclareOptionX{nowcp}{%
|
|
\PassOptionsToClass{\CurrentOption}{jmlr}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{option}
|
|
% Pass \clsopt{tablecaptiontop} and \clsopt{tablecaptionbottom} options
|
|
% to \clsfmt{jmlr}.
|
|
%\begin{option}{tablecaptiontop}
|
|
% \begin{macrocode}
|
|
\DeclareOptionX{tablecaptiontop}{\PassOptionsToClass{\CurrentOption}{jmlr}}
|
|
% \end{macrocode}
|
|
%\end{option}
|
|
%\begin{option}{tablecaptionbottom}
|
|
% \begin{macrocode}
|
|
\DeclareOptionX{tablecaptionbottom}{\PassOptionsToClass{\CurrentOption}{jmlr}}
|
|
% \end{macrocode}
|
|
%\end{option}
|
|
%
|
|
% Pass font size commands to \clsfmt{jmlr}
|
|
%\changes{1.10}{2011-01-05}{Added 10pt, 11pt and 12pt options to
|
|
%jmlrbook}
|
|
%\begin{option}{10pt}
|
|
% \begin{macrocode}
|
|
\DeclareOptionX{10pt}{\PassOptionsToClass{\CurrentOption}{jmlr}}
|
|
% \end{macrocode}
|
|
%\end{option}
|
|
%\begin{option}{11pt}
|
|
% \begin{macrocode}
|
|
\DeclareOptionX{11pt}{\PassOptionsToClass{\CurrentOption}{jmlr}}
|
|
% \end{macrocode}
|
|
%\end{option}
|
|
%\begin{option}{12pt}
|
|
% \begin{macrocode}
|
|
\DeclareOptionX{12pt}{\PassOptionsToClass{\CurrentOption}{jmlr}}
|
|
% \end{macrocode}
|
|
%\end{option}
|
|
%
|
|
% Switch on two-side mode by default
|
|
% \begin{macrocode}
|
|
\@twosidetrue
|
|
% \end{macrocode}
|
|
%\begin{option}{oneside}
|
|
%\changes{1.22}{2015/04/11}{new}
|
|
% \begin{macrocode}
|
|
\DeclareOptionX{oneside}{\@twosidefalse \@mparswitchfalse}
|
|
% \end{macrocode}
|
|
%\end{option}
|
|
%\begin{option}{twoside}
|
|
%\changes{1.22}{2015/04/11}{new}
|
|
% \begin{macrocode}
|
|
\DeclareOptionX{twoside}{\@twosidetrue \@mparswitchtrue}
|
|
% \end{macrocode}
|
|
%\end{option}
|
|
%
|
|
%\begin{option}{pdfxa}
|
|
%\changes{1.13}{2012/02/25}{new}
|
|
% \begin{macrocode}
|
|
\define@boolkey{jmlrbook.cls}[jmlr]{pdfxa}[true]{}
|
|
\jmlrpdfxafalse
|
|
% \end{macrocode}
|
|
%\end{option}
|
|
% Process options
|
|
% \begin{macrocode}
|
|
\ProcessOptionsX
|
|
% \end{macrocode}
|
|
% If \ics{jmlrgrayscale} has been defined, let it override the
|
|
% class options. If it is defined, it should be set to 0 for the
|
|
% online version and any other number for the grayscale print
|
|
% version.
|
|
% \begin{macrocode}
|
|
\@ifundefined{jmlrgrayscale}{}%
|
|
{%
|
|
\ifnum\jmlrgrayscale=0\relax
|
|
\grayscalefalse
|
|
\else
|
|
\grayscaletrue
|
|
\fi
|
|
}
|
|
% \end{macrocode}
|
|
%
|
|
% This next bit is a modification of \sty{pdfx}. It's only used for
|
|
% the print version when the \clsopt{pdfxa} option is used.
|
|
%\changes{1.13}{2012/02/25}{added support for pdfx-1a}
|
|
% \begin{macrocode}
|
|
\ifgrayscale
|
|
\newcommand*{\jmlrwritepdfinfo}{%
|
|
\protected@write\@auxout{}{\string\jmlrbook@info{\xmpAuthor}{\xmpTitle}}%
|
|
}
|
|
\ifjmlrpdfxa
|
|
\def\convertDate{\getYear}
|
|
{\catcode`\D=12
|
|
\gdef\getYear D:#1#2#3#4{\edef\xYear{#1#2#3#4}\getMonth}
|
|
}
|
|
\def\getMonth#1#2{\edef\xMonth{#1#2}\getDay}
|
|
\def\getDay#1#2{\edef\xDay{#1#2}\getHour}
|
|
\def\getHour#1#2{\edef\xHour{#1#2}\getMin}
|
|
\def\getMin#1#2{\edef\xMin{#1#2}\getSec}
|
|
\def\getSec#1#2{\edef\xSec{#1#2}\getTZh}
|
|
{%
|
|
\catcode`\Z=12
|
|
\gdef\tmpz{Z}
|
|
}
|
|
\def\hash{\expandafter\@gobble\string\#}%
|
|
\def\amp{\expandafter\@gobble\string\&}%
|
|
\def\xmpAmp{\amp\hash x0026;}%
|
|
\def\sep{</rdf:li><rdf:li>}
|
|
\def\TextCopyright{\amp\hash x00A9;}
|
|
\def\Title#1{\gdef\xmpTitle{#1}}
|
|
\def\Author#1{\gdef\xmpAuthor{#1}}
|
|
\def\Keywords#1{\gdef\xmpKeywords{#1}}
|
|
\let\xmpKeywords\@empty
|
|
\let\xmpSubject\xmpKeywords
|
|
\def\Creator#1{\gdef\xmpCreator{#1}}
|
|
\def\xmpCreator{\@pdfcreator}
|
|
\def\Producer#1{\gdef\xmpProducer{#1}}
|
|
\def\xmpProducer{pdfTeX}
|
|
\def\Volume#1{\gdef\xmpVolume{#1}}
|
|
\let\xmpVolume\@empty
|
|
\def\Issue#1{\gdef\xmpIssue{#1}}
|
|
\let\xmpIssue\@empty
|
|
\def\CoverDisplayDate#1{\gdef\xmpCoverDisplayDate{#1}}
|
|
\let\xmpCoverDisplayDate\@empty
|
|
\def\CoverDate#1{\gdef\xmpCoverDate{#1}}
|
|
\let\xmpCoverDate\@empty
|
|
\def\Copyright#1{\gdef\xmpCopyright{#1}}
|
|
\let\xmpCopyright\@empty
|
|
\def\Doi#1{\gdef\xmpDoi{#1}}
|
|
\let\xmpDoi\@empty
|
|
\def\Lastpage#1{\gdef\xmpLastpage{#1}}
|
|
\let\xmpLastpage\@empty
|
|
\def\Firstpage#1{\gdef\xmpFirstpage{#1}}
|
|
\let\xmpFirstpage\@empty
|
|
\def\Journaltitle#1{\gdef\xmpJournaltitle{#1}}
|
|
\let\xmpJournaltitle\@empty
|
|
\def\Journalnumber#1{\gdef\xmpJournalnumber{#1}}
|
|
\let\xmpJournalnumber\@empty
|
|
\def\Org#1{\gdef\xmpOrg{#1}}
|
|
\let\xmpOrg\@empty
|
|
\def\CreatorTool#1{\gdef\xmpCreatorTool{#1}}
|
|
\def\xmpCreatorTool{\xmpProducer}
|
|
\def\AuthoritativeDomain#1{\gdef\xmpAuthoritativeDomain{#1}}
|
|
\let\xmpAuthoritativeDomain\@empty
|
|
\def\findUUID#1{\edef\tmpstring{\pdfmdfivesum{#1}}
|
|
\expandafter\eightofnine\tmpstring\end}
|
|
\def\eightofnine#1#2#3#4#5#6#7#8#9\end{%
|
|
\xdef\eightchars{#1#2#3#4#5#6#7#8}
|
|
\fouroffive#9\end}
|
|
\def\fouroffive#1#2#3#4#5\end{\xdef\ffourchars{#1#2#3#4}
|
|
\sfouroffive#5\end}
|
|
\def\sfouroffive#1#2#3#4#5\end{\xdef\sfourchars{#1#2#3#4}
|
|
\tfouroffive#5\end}
|
|
\def\tfouroffive#1#2#3#4#5\end{\xdef\tfourchars{#1#2#3#4}
|
|
\xdef\laststring{#5}}
|
|
\def\uuid{\eightchars-%
|
|
\ffourchars-%
|
|
\sfourchars-%
|
|
\tfourchars-%
|
|
\laststring}
|
|
% \end{macrocode}
|
|
%
|
|
%\begin{macro}{\getTZh}
|
|
%\changes{1.14}{2012-04-24}{fixed for times zones other than Z}
|
|
% This is a modification of the command from \sty{pdfx} that also
|
|
% works for zero and negative hours.
|
|
% \begin{macrocode}
|
|
\def\getTZh#1{%
|
|
\def\TZprefix{#1}%
|
|
\ifx\TZprefix\tmpz
|
|
\def\xTZsign{+}%
|
|
\def\xTZh{00}%
|
|
\def\xTZm{00}%
|
|
\let\getTZnext\doConvDate
|
|
\else
|
|
\let\xTZsign\TZprefix
|
|
\let\getTZnext\getTZhm
|
|
\fi
|
|
\getTZnext
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\getTZm}
|
|
% This is a modified version of the command from \sty{pdfx}.
|
|
% \begin{macrocode}
|
|
\def\getTZhm#1#2'#3#4'{%
|
|
\edef\xTZh{#1#2}%
|
|
\edef\xTZm{#3#4}%
|
|
\doConvDate
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\doConvDate}
|
|
% Defines the date using information derived from parsing
|
|
% \ics{pdfcreationdate}
|
|
% \begin{macrocode}
|
|
\def\doConvDate{%
|
|
\edef\convDate{\xYear-\xMonth-\xDay
|
|
T\xHour:\xMin:\xSec\xTZsign\xTZh:\xTZm}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@pre@hyperref}
|
|
% This macro contains a trimmed down version of \sty{pdfx}.
|
|
% \begin{macrocode}
|
|
\newcommand{\@pre@hyperref}{%
|
|
\IfFileExists{FOGRA39L.icc}%
|
|
{%
|
|
\pdfminorversion=3
|
|
\pdfpageattr{/MediaBox[0 0 595 793]
|
|
/BleedBox[0 0 595 793]
|
|
/TrimBox[25 20 570 773]}%
|
|
\findUUID{\jobname.pdf}%
|
|
\edef\xmpdocid{\uuid}%
|
|
\findUUID{\pdfcreationdate}%
|
|
\edef\xmpinstid{\uuid}%
|
|
\InputIfFileExists{\jobname.xmpdata}{}{}%
|
|
\RequirePackage{xmpincl}%
|
|
\expandafter\convertDate\pdfcreationdate
|
|
\def\@pctchar{\expandafter\@gobble\string\%}
|
|
\def\@bchar{\expandafter\@gobble\string\\}
|
|
\immediate\pdfobj stream attr{/N 4} file{FOGRA39L.icc}
|
|
\edef\OBJ@CVR{\the\pdflastobj}
|
|
\pdfcatalog{/OutputIntents [ <<
|
|
/Type/OutputIntent
|
|
/S/GTS_PDFX
|
|
/OutputCondition (FOGRA39)
|
|
/OutputConditionIdentifier (FOGRA39 \@bchar(ISO Coated v2
|
|
300\@pctchar\space \@bchar(ECI\@bchar)\@bchar))
|
|
/DestOutputProfile \OBJ@CVR\space 0 R
|
|
/RegistryName(http://www.color.org)
|
|
>> ]}
|
|
\input glyphtounicode.tex
|
|
\input glyphtounicode-cmr.tex
|
|
\pdfgentounicode=1
|
|
\RequirePackage[draft,pdftex,pdfpagemode=UseNone,bookmarks=false]{hyperref}%
|
|
}%
|
|
{%
|
|
\ClassError{jmlrbook}{Can't find `FOGRA39L.icc'}%
|
|
{Download ISOcoated\string_v2\string_330\string_bas.icc from
|
|
http://www.colormanagement.org/en/isoprofile.html
|
|
Rename it FOGRA39L.icc and put it in the pdfx folder}%
|
|
}%
|
|
}
|
|
\renewcommand*{\jmlrwritepdfinfo}{%
|
|
\begingroup
|
|
\let\&=\xmpAmp
|
|
\IfFileExists{pdfx-1a.xmp}{%
|
|
\pdfcompresslevel=0
|
|
\immediate\pdfobj stream attr {/Type /Metadata /Subtype /XML}
|
|
file{pdfx-1a.xmpi}
|
|
\pdfcatalog{/Metadata \the\pdflastobj\space 0 R}
|
|
}%
|
|
{}%
|
|
\endgroup
|
|
\protected@write\@auxout{}{\string\jmlrbook@info{\xmpAuthor}{\xmpTitle}}%
|
|
\pdfinfo{
|
|
/Author(\xmpAuthor)%
|
|
/Title(\xmpTitle)%
|
|
/Creator(\xmpProducer)%
|
|
/CreationDate(\convDate)%
|
|
/ModDate(\convDate)%
|
|
/Producer(\xmpProducer)%
|
|
/Trapped /False
|
|
/GTS_PDFXVersion (PDF/X-1:2001)%
|
|
/GTS_PDFXConformance (PDF/X-1a:2001)%
|
|
}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
% \begin{macrocode}
|
|
\fi
|
|
\else
|
|
\newcommand*{\jmlrwritepdfinfo}{}
|
|
\fi
|
|
% \end{macrocode}
|
|
%
|
|
%\begin{macro}{\jmlrbook@info}
|
|
%\changes{1.14}{2012-04-24}{new}
|
|
% Not needed (information provided for MakeJmlrBookGUI)
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlrbook@info}[2]{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\jmlrbook@location}
|
|
%\changes{1.20}{2014/10/15}{new}
|
|
% Not needed (information provided for MakeJmlrBookGUI)
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlrbook@location}[1]{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@post@hyperref}
|
|
%\changes{1.16}{2012/05/15}{new}
|
|
% \begin{macrocode}
|
|
\newcommand*{\@post@hyperref}{%
|
|
\let\@org@c@lenddoca\c@lenddoca
|
|
\let\c@lenddoca\undefined
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
% Load \cls{combine} class. This requires a little bit of trickery.
|
|
% \begin{macrocode}
|
|
\let\@org@LoadClass\LoadClass
|
|
\def\LoadClass#1{\let\LoadClass\@org@LoadClass\@org@LoadClass{jmlr}}
|
|
\@org@LoadClass{combine}
|
|
\let\c@lenddoca\@org@c@lenddoca
|
|
% \end{macrocode}
|
|
% Requires \sty{combnat} to work with \sty{natbib}:
|
|
% \begin{macrocode}
|
|
\RequirePackage{combnat}
|
|
% \end{macrocode}
|
|
% Need to apply a patch to \sty{combnat} (this has now been fixed
|
|
% in \sty{combnat}, but user might be using an old version):
|
|
% \begin{macrocode}
|
|
\renewcommand\c@laNAT@parse[1]{{%
|
|
\let\protect=\@unexpandable@protect\let~\relax
|
|
\let\active@prefix=\@gobble
|
|
\xdef\NAT@temp{\csname b@#1\@extra@b@citeb\endcsname}}%
|
|
\expandafter\NAT@split\NAT@temp?????@@%
|
|
\expandafter\NAT@parse@date\NAT@date??????@@%
|
|
\ifciteindex\NAT@index\fi}
|
|
|
|
\renewcommand\c@lbNAT@parse[1]{{%
|
|
\let\protect=\@unexpandable@protect\let~\relax
|
|
\let\active@prefix=\@gobble
|
|
\xdef\NAT@temp{\csname B?\jobname?@#1\@extra@b@citeb\endcsname}}%
|
|
\expandafter\NAT@split\NAT@temp?????@@%
|
|
\expandafter\NAT@parse@date\NAT@date??????@@%
|
|
\ifciteindex\NAT@index\fi}
|
|
% \end{macrocode}
|
|
% Start new chapters on the right hand page:
|
|
% \begin{macrocode}
|
|
\newif\if@openright
|
|
\@openrighttrue
|
|
\newif\if@mainmatter
|
|
% \end{macrocode}
|
|
% Define commands that affect the formatting:
|
|
%\begin{macro}{\pagerule}
|
|
% Draw line across the text block.
|
|
% \begin{macrocode}
|
|
\newcommand*{\pagerule}[1][0pt]{\par\noindent
|
|
\rule[#1]{\linewidth}{2pt}\par}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{environment}{preface}
|
|
% The preface environment starts a new chapter but also writes
|
|
% information to the main aux file for \app{makejmlrbook}. The
|
|
% optional argument is the file name for the extracted preface.
|
|
%\changes{1.11}{2011-03-24}{new}
|
|
%\changes{1.13}{2012/02/25}{changed the chapter to an unnumbered one}
|
|
% \begin{macrocode}
|
|
\ifjmlrhtml
|
|
\newenvironment{preface}[1][preface]%
|
|
{%
|
|
\noindent\HCode{<h2>\prefacename</h2>}%
|
|
}%
|
|
{%
|
|
}
|
|
\else
|
|
\newenvironment{preface}[1][preface]%
|
|
{%
|
|
% \end{macrocode}
|
|
%\changes{1.19}{2014/09/29}{changed to unstarred chapter}
|
|
% \begin{macrocode}
|
|
\jmlrprefaceheader
|
|
\protected@write\@mainauxout
|
|
{}{\string\@prefacestart{\thepage}{\arabic{page}}}%
|
|
\protected@write\@mainauxout{}{\string\@prefacefile{\jmlrprefacepath}{#1}}%
|
|
}%
|
|
{%
|
|
\protected@write\@mainauxout{}{\string\@prefaceend{\thepage}}%
|
|
}
|
|
\fi
|
|
% \end{macrocode}
|
|
%\end{environment}
|
|
%\begin{macro}{\prefacename}
|
|
%\changes{1.11}{2011-03-24}{new}
|
|
% \begin{macrocode}
|
|
\newcommand*{\prefacename}{Preface}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@prefacefile}
|
|
% \begin{macrocode}
|
|
\newcommand*{\@prefacefile}[2]{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@prefacestart}
|
|
% \begin{macrocode}
|
|
\newcommand*{\@prefacestart}[2]{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@prefaceend}
|
|
% \begin{macrocode}
|
|
\newcommand*{\@prefaceend}[1]{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@prefaceeditor}
|
|
% \begin{macrocode}
|
|
\newcommand*{\@prefaceeditor}[1]{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
% Cross-reference chapters:
|
|
% \begin{macrocode}
|
|
\newcommand*{\chapterrefname}{Chapter}
|
|
\newcommand*{\chaptersrefname}{Chapters}
|
|
% \end{macrocode}
|
|
%\begin{macro}{\chapterref}
|
|
% \begin{macrocode}
|
|
\newcommand*{\chapterref}[1]{%
|
|
\objectref{#1}{\chapterrefname}{\chaptersrefname}{}{}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
% Cross-referencing imported articles:
|
|
%\begin{macro}{\articlepageref}
|
|
% Page number of start of article
|
|
% \begin{macrocode}
|
|
\newcommand*{\articlepageref}[1]{%
|
|
\pageref{#1jmlrstart}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\articlepagesref}
|
|
% Page range of article
|
|
% \begin{macrocode}
|
|
\newcommand*{\articlepagesref}[1]{%
|
|
\pageref{#1jmlrstart}--\pageref{#1jmlrend}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@articlepagesref}
|
|
% Page range of article for use within the article
|
|
% \begin{macrocode}
|
|
\newcommand*{\@articlepagesref}{%
|
|
\pageref{jmlrstart}--\pageref{jmlrend}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\articletitleref}
|
|
% Reference the short title of an imported article
|
|
% \begin{macrocode}
|
|
\newcommand*{\articletitleref}[1]{\nameref{#1jmlrstart}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\articleauthorref}
|
|
% Reference the authors of an imported article
|
|
% \begin{macrocode}
|
|
\newcommand*{\articleauthorref}[1]{%
|
|
\@ifundefined{@jmlr@author@#1}%
|
|
{%
|
|
\ClassWarning{jmlrbook}{Label `#1' undefined}%
|
|
}%
|
|
{%
|
|
\@nameuse{@jmlr@author@#1}%
|
|
}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\jmlrtitlehook}
|
|
%\changes{1.20}{2014/10/15}{changed \cs{let} to \cs{def}}
|
|
% Extra title information
|
|
% \begin{macrocode}
|
|
\renewcommand*\jmlrtitlehook{%
|
|
\hypersetup{pdftitle={\@shorttitle}}%
|
|
\def\xmpTitle{\@shorttitle}%
|
|
\let\jmlrtitlehook\relax
|
|
}
|
|
\providecommand*{\xmpTitle}{\@title}%
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\jmlrauthorhook}
|
|
%\changes{1.20}{2014/10/15}{changed \cs{let} to \cs{def}}
|
|
% \begin{macrocode}
|
|
\renewcommand*\jmlrauthorhook{%
|
|
\ifx\@sauthor\@empty
|
|
\hypersetup{pdfauthor={\@author}}%
|
|
\else
|
|
\hypersetup{pdfauthor={\@sauthor}}%
|
|
\fi
|
|
\def\xmpAuthor{\@sauthor}%
|
|
\let\jmlrauthorhook\relax
|
|
\let\@shortauthor\@empty
|
|
}
|
|
\providecommand*\xmpAuthor{\@author}%
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\subtitle}
|
|
% \begin{macrocode}
|
|
\newcommand*{\@subtitle}{}
|
|
\newcommand*{\subtitle}[1]{\renewcommand*{\@subtitle}{#1}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\volume}
|
|
% \begin{macrocode}
|
|
\newcommand*{\@volume}{\@jmlrvolume}
|
|
\newcommand*{\volume}[1]{%
|
|
\renewcommand*{\@volume}{#1}%
|
|
\ifjmlrpdfxa
|
|
\let\xmpVolume\@volume
|
|
\fi
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\jmlrissue}
|
|
% \begin{macrocode}
|
|
\newcommand*{\@issue}{\@jmlrissue}
|
|
\newcommand*{\issue}[1]{%
|
|
\renewcommand*{\@issue}{#1}%
|
|
\ifjmlrpdfxa
|
|
\let\xmpIssue\@issue
|
|
\fi
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\thejmlrworkshop}
|
|
% Provided in the event that it's required for the title page.
|
|
% \begin{macrocode}
|
|
\newcommand*{\thejmlrworkshop}{\@jmlrworkshop}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\team}
|
|
% \begin{macrocode}
|
|
\newcommand*{\@team}{}
|
|
\newcommand*{\team}[1]{\renewcommand*{\@team}{#1}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\jmlrlocation}
|
|
%\changes{1.20}{2014/10/15}{new}
|
|
% \begin{macrocode}
|
|
\newcommand*{\@jmlrlocation}{}
|
|
\newcommand*{\jmlrlocation}[1]{%
|
|
\renewcommand*{\@jmlrlocation}{#1}%
|
|
\protected@write\@auxout{}{\string\jmlrbook@location{#1}}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@productioneditorname}
|
|
% \begin{macrocode}
|
|
\newcommand*{\@productioneditorname}{Production Editor}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\productioneditor}
|
|
% \begin{macrocode}
|
|
\newcommand*{\@productioneditor}{}
|
|
\newcommand*{\productioneditor}[1]{%
|
|
\renewcommand*{\@productioneditor}{#1}%
|
|
\renewcommand*{\@productioneditorname}{Production Editor}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\productioneditors}
|
|
% \begin{macrocode}
|
|
\newcommand*{\productioneditors}[1]{%
|
|
\renewcommand*{\@productioneditor}{#1}%
|
|
\renewcommand*{\@productioneditorname}{Production Editors}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\logo}
|
|
% Title page image
|
|
%\changes{1.17}{2012/05/30}{added optional argument}
|
|
% \begin{macrocode}
|
|
\newcommand*{\@logo}{}
|
|
\newcommand*{\logo}[2][]{%
|
|
\ifjmlrhtml
|
|
\def\@logo@tmp{#1}%
|
|
\ifx\@logo@tmp\@empty
|
|
\renewcommand*{\@logo}{#2}%
|
|
\else
|
|
\renewcommand*{\@logo}{\HCode{<a href="#1">}#2\HCode{</a>}}%
|
|
\fi
|
|
\else
|
|
\renewcommand*{\@logo}{#2}%
|
|
\fi
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\booklinebreak}
|
|
%\changes{1.18}{2013-10-17}{new}
|
|
% Provided for book production editors to fine tune the book
|
|
% line breaking.
|
|
% \begin{macrocode}
|
|
\renewcommand*{\booklinebreak}[1][4]{\linebreak[#1]}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
% Set article title
|
|
% \begin{macrocode}
|
|
\def\c@lbmaketitle{\jmlrmaketitle}
|
|
% \end{macrocode}
|
|
% The book's title:
|
|
%\begin{macro}{\maintitle}
|
|
% \begin{macrocode}
|
|
\newcommand*{\maintitle}{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
% Make it easier to modify the book's title page:
|
|
%\begin{macro}{\SetTitleElement}
|
|
% \begin{macrocode}
|
|
\newcommand*{\SetTitleElement}[3]{%
|
|
{%
|
|
\expandafter\ifx\csname @#1\endcsname\@empty
|
|
\else
|
|
#2\csname @#1\endcsname#3%
|
|
\fi
|
|
}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\IfTitleElement}
|
|
% Determine if the given element has been set:
|
|
% \begin{macrocode}
|
|
\newcommand{\IfTitleElement}[3]{%
|
|
\expandafter\ifx\csname @#1\endcsname\@empty
|
|
#2%
|
|
\else
|
|
#3%
|
|
\fi
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\titlebody}
|
|
% \begin{macrocode}
|
|
\newcommand{\titlebody}{%
|
|
\SetTitleElement{title}{\maintitlefont}{\postmaintitle}%
|
|
\SetTitleElement{volume}{\mainvolumefont}{\postmainvolume}%
|
|
\SetTitleElement{subtitle}{\mainsubtitlefont}{\postmainsubtitle}%
|
|
\SetTitleElement{logo}{\mainlogofont}{\postmainlogo}%
|
|
\SetTitleElement{team}{\mainteamfont}{\postmainteam}%
|
|
\SetTitleElement{author}{\mainauthorfont}{\postmainauthor}%
|
|
\SetTitleElement{productioneditor}{\mainproductioneditorfont}%
|
|
{\postmainproductioneditor}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\c@lamaketitle}
|
|
% \begin{macrocode}
|
|
\ifjmlrhtml
|
|
\renewcommand{\c@lamaketitle}{%
|
|
\HCode{<table cellpadding="2" cellspacing="2" border="0" width="100\%">}%
|
|
\HCode{<tbody><tr><td valign="top">}%
|
|
\HCode{<h1>}%
|
|
\@title\newline
|
|
\ifx\@jmlrvolume\@empty
|
|
\ifx\@volume\@empty
|
|
\else
|
|
Volume \@volume
|
|
\ifx\@subtitle\@empty\else: \fi
|
|
\fi
|
|
\else
|
|
Volume \@jmlrvolume
|
|
\ifx\@subtitle\@empty\else: \fi
|
|
\fi
|
|
\@subtitle
|
|
\HCode{</h1>}%
|
|
\newline
|
|
\textbf{Editors: \@author}
|
|
\HCode{</td><td valign="top">}%
|
|
\@logo
|
|
\HCode{</td></tr></tbody></table>}%
|
|
\let\maintitle\@title
|
|
}
|
|
\else
|
|
\renewcommand{\c@lamaketitle}{%
|
|
\pagenumbering{alph}%
|
|
\pagestyle{empty}%
|
|
\begin{titlepage}%
|
|
\let\footnotesize\small
|
|
\let\footnoterule\relax
|
|
\let\footnote\thanks
|
|
\titlebody
|
|
\par
|
|
\@thanks
|
|
\end{titlepage}%
|
|
\setcounter{footnote}{0}%
|
|
\let\maintitle\@title
|
|
\c@lmtitlempty
|
|
}
|
|
\fi
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\maintitlefont}
|
|
% \begin{macrocode}
|
|
\renewcommand{\maintitlefont}{%
|
|
\null\vskip15pt\relax\par
|
|
\flushleft\Huge\bfseries\noindent}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\postmaintitle}
|
|
% \begin{macrocode}
|
|
\renewcommand{\postmaintitle}{%
|
|
\par\relax
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\mainvolumefont}
|
|
% \begin{macrocode}
|
|
\newcommand{\mainvolumefont}{%
|
|
\flushleft\noindent\LARGE\bfseries Volume
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\postmainvolume}
|
|
% \begin{macrocode}
|
|
\newcommand{\postmainvolume}{%
|
|
\IfTitleElement{subtitle}{}{:}\par\relax
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\mainissuefont}
|
|
% \begin{macrocode}
|
|
\newcommand{\mainissuefont}{%
|
|
\flushleft\noindent\LARGE\bfseries Issue
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\postmainissue}
|
|
% \begin{macrocode}
|
|
\newcommand{\postmainissue}{%
|
|
\par\relax
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\mainsubtitlefont}
|
|
% \begin{macrocode}
|
|
\newcommand{\mainsubtitlefont}{%
|
|
\flushleft\LARGE\bfseries\noindent}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\postmainsubtitle}
|
|
% \begin{macrocode}
|
|
\newcommand{\postmainsubtitle}{\par}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\mainlogofont}
|
|
% \begin{macrocode}
|
|
\newcommand{\mainlogofont}{%
|
|
\vfill
|
|
\begin{center}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\postmainlogo}
|
|
% \begin{macrocode}
|
|
\newcommand{\postmainlogo}{\end{center}\vfill\par}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\mainteamfont}
|
|
% \begin{macrocode}
|
|
\newcommand{\mainteamfont}{\flushleft\bfseries\Large\noindent}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\postmainteam}
|
|
% \begin{macrocode}
|
|
\newcommand{\postmainteam}{\par}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\mainauthorfont}
|
|
% \begin{macrocode}
|
|
\renewcommand{\mainauthorfont}{%
|
|
\flushleft\Large\itshape\doublespacing\noindent}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\postmainauthor}
|
|
% \begin{macrocode}
|
|
\renewcommand{\postmainauthor}{%
|
|
\par}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\mainproductioneditorfont}
|
|
% \begin{macrocode}
|
|
\newcommand{\mainproductioneditorfont}{%
|
|
\flushleft\Large\noindent \@productioneditorname: \itshape}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\postmainproductioneditor}
|
|
% \begin{macrocode}
|
|
\newcommand{\postmainproductioneditor}{\par}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\maindatefont}
|
|
% \begin{macrocode}
|
|
\renewcommand{\maindatefont}{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\postmaindate}
|
|
% \begin{macrocode}
|
|
\renewcommand{\postmaindate}{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{environment}{signoff}
|
|
% Editorial team listed at the end of a preface etc. The mandatory
|
|
% argument is the date, the optional argument is the team title.
|
|
% Each editor should be separated with \ics{Editor}.
|
|
%\changes{1.19}{2014/09/29}{added \cs{nopagebreak}}
|
|
% \begin{macrocode}
|
|
\ifjmlrhtml
|
|
\newenvironment{signoff}[2][The Editorial Team]{%
|
|
\def\Editor##1{##1\par\vskip\baselineskip\noindent\ignorespaces}%
|
|
\def\@editorialteam{#1}%
|
|
\def\@signoffdate{#2}%
|
|
\par\vskip\baselineskip\noindent
|
|
\ifx\@signoffdate\@empty
|
|
\else
|
|
\emph{\@signoffdate}\nopagebreak\par
|
|
\nopagebreak\vskip\baselineskip\noindent
|
|
\fi
|
|
\ifx\@editorialteam\@empty
|
|
\else
|
|
\@editorialteam:\nopagebreak\par\nopagebreak\vskip\baselineskip
|
|
\fi
|
|
\nopagebreak\noindent\ignorespaces
|
|
}%
|
|
{%
|
|
}%
|
|
\else
|
|
\newenvironment{signoff}[2][The Editorial Team]{%
|
|
\def\Editor##1{%
|
|
\protected@write\@mainauxout{}{\string\@prefaceeditor{##1}}%
|
|
\begin{tabular}{@{}l@{}}%
|
|
##1%
|
|
\end{tabular}%
|
|
\par\vskip\baselineskip\noindent\ignorespaces
|
|
}%
|
|
\def\@editorialteam{#1}%
|
|
\def\@signoffdate{#2}%
|
|
\par\vskip\baselineskip\noindent
|
|
\ifx\@signoffdate\@empty
|
|
\else
|
|
\emph{\@signoffdate}\par
|
|
\vskip\baselineskip\noindent
|
|
\fi
|
|
\ifx\@editorialteam\@empty
|
|
\else
|
|
% \end{macrocode}
|
|
%\changes{1.21}{2015-02-24}{added \cs{nopagebreak}}
|
|
% \begin{macrocode}
|
|
\@editorialteam:\nopagebreak\par\vskip\baselineskip
|
|
\fi
|
|
\nopagebreak\noindent\ignorespaces
|
|
}%
|
|
{%
|
|
}
|
|
\fi
|
|
% \end{macrocode}
|
|
%\end{environment}
|
|
%\begin{environment}{authorsignoff}
|
|
% An author can sign off at the end of a chapter (such as a
|
|
% foreword).
|
|
% Each author should be separated with \ics{Author}.
|
|
% \begin{macrocode}
|
|
\newenvironment{authorsignoff}{%
|
|
\def\Author##1{\begin{tabular}{@{}p{\linewidth}@{}}%
|
|
##1%
|
|
\end{tabular}%
|
|
\par\vskip\baselineskip\noindent\ignorespaces
|
|
}%
|
|
\par\vskip\baselineskip\noindent\ignorespaces
|
|
}{%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{environment}
|
|
%
|
|
%\begin{macro}{\zeroextracounters}
|
|
% Reset counters at the start of each imported article
|
|
%\changes{1.15}{2012/05/12}{added algocf and definition to reset}
|
|
% \begin{macrocode}
|
|
\renewcommand{\zeroextracounters}{%
|
|
\@ifundefined{c@theorem}{}{\setcounter{theorem}{0}}%
|
|
\@ifundefined{c@algorithm}{}{\setcounter{algorithm}{0}}%
|
|
\@ifundefined{c@algocf}{}{\setcounter{algocf}{0}}%
|
|
\@ifundefined{c@example}{}{\setcounter{example}{0}}%
|
|
\@ifundefined{c@definition}{}{\setcounter{definition}{0}}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\contentsname}
|
|
% Redcfine title of the table of contents
|
|
% \begin{macrocode}
|
|
\renewcommand*{\contentsname}{Table of Contents}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\theHalgorithm}
|
|
%\changes{1.12}{2012/01/05}{in definition, changed \cs{thechapter}
|
|
%to \cs{theHchapter}}
|
|
% \begin{macrocode}
|
|
\def\theHalgorithm{\theHchapter.\thealgorithm}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
\def\theHexample{\theHchapter.\theexample}
|
|
\def\theHtheorem{\theHchapter.\thetheorem}
|
|
%\begin{macro}{\theHsection}
|
|
% \begin{macrocode}
|
|
\def\theHsection{\theHchapter.\thesection}
|
|
\def\theHsubsection{\theHchapter.\thesubsection}
|
|
\def\theHsubsubsection{\theHchapter.\thesubsubsection}
|
|
\def\theHparagraph{\theHchapter.\theparagraph}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\theHsubfigure}
|
|
% \begin{macrocode}
|
|
\def\theHsubfigure{\theHfigure.\arabic{subfigure}}
|
|
\def\theHsubtable{\theHtable.\arabic{subtable}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\theHfootnote}
|
|
%\changes{1.12}{2012/01/05}{new}
|
|
% \begin{macrocode}
|
|
\def\theHfootnote{\theHchapter.\alpha{footnote}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\theHtable}
|
|
%\changes{1.12}{2012/01/05}{new}
|
|
% \begin{macrocode}
|
|
\def\theHtable{\theHchapter.\arabic{table}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\theHfigure}
|
|
%\changes{1.12}{2012/01/05}{new}
|
|
% \begin{macrocode}
|
|
\def\theHfigure{\theHchapter.\arabic{figure}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\theHalgocf}
|
|
%\changes{1.15}{2012/05/12}{new}
|
|
% \begin{macrocode}
|
|
\def\theHalgocf{\theHchapter.\thealgocf}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\mailto}
|
|
% \begin{macrocode}
|
|
\renewcommand*{\mailto}[1]{%
|
|
\href{mailto:#1}{\nolinkurl{#1}}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
% \begin{macrocode}
|
|
\c@lhaschapterfalse
|
|
\let\c@lthesec\thesection
|
|
% \end{macrocode}
|
|
% Make sure the hyperlinks work
|
|
%\begin{macro}{\doimportchapterHref}
|
|
% \begin{macrocode}
|
|
\newcommand\doimportchapterHref{%
|
|
\edef\@currentHref{chapter.\thechapter}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\toclevel@appendix}
|
|
% Set the toc level for the main appendices
|
|
% \begin{macrocode}
|
|
\def\toclevel@appendix{-1}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
% \sty{hyperref} and \cls{combine} don't play nicely
|
|
% need to fudge the cross-referencing a bit.
|
|
%\begin{macro}{\Xprefix}
|
|
% \begin{macrocode}
|
|
\def\Xprefix{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\Xref}
|
|
% \begin{macrocode}
|
|
\DeclareRobustCommand\Xref{\@ifstar\@Xrefstar\T@Xref}%
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\Xpageref}
|
|
% \begin{macrocode}
|
|
\DeclareRobustCommand\Xpageref{%
|
|
\@ifstar\@Xpagerefstar\T@Xpageref
|
|
}%
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\HyRef@StarSetXRef}
|
|
% \begin{macrocode}
|
|
\def\HyRef@StarSetXRef#1{%
|
|
\begingroup
|
|
\Hy@safe@activestrue
|
|
\edef\x{#1}%
|
|
\@onelevel@sanitize\x
|
|
\edef\x{\endgroup
|
|
\noexpand\HyRef@@StarSetRef
|
|
\expandafter\noexpand\csname r@\Xprefix\x\endcsname{\x}%
|
|
}%
|
|
\x
|
|
}
|
|
% \end{macocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\@Xrefstar}
|
|
% \begin{macrocode}
|
|
\def\@Xrefstar#1{%
|
|
\HyRef@StarSetXRef{#1}\@firstoffive
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@Xpagerefstar}
|
|
% \begin{macrocode}
|
|
\def\@Xpagerefstar#1{%
|
|
\HyRef@StarSetXRef{#1}\@secondoffive
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\T@Xref}
|
|
% \begin{macrocode}
|
|
\def\T@Xref#1{%
|
|
\Hy@safe@activestrue
|
|
\expandafter\@setXref\csname r@\Xprefix#1\endcsname\@firstoffive{#1}%
|
|
\Hy@safe@activesfalse
|
|
}%
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\T@Xpageref}
|
|
% \begin{macrocode}
|
|
\def\T@Xpageref#1{%
|
|
\Hy@safe@activestrue
|
|
\expandafter\@setXref\csname r@\Xprefix#1\endcsname\@secondoffive{#1}%
|
|
\Hy@safe@activesfalse
|
|
}%
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\Xlabel}
|
|
% \begin{macrocode}
|
|
\def\Xlabel#1{%
|
|
\@bsphack
|
|
\begingroup
|
|
\@onelevel@sanitize\@currentlabelname
|
|
\edef\@currentlabelname{%
|
|
\expandafter\strip@period\@currentlabelname\relax.\relax\@@@
|
|
}%
|
|
\protected@write\@mainauxout{}{%
|
|
\string\newlabel{\Xprefix#1}{{\@currentlabel}{\thepage}%
|
|
{\@currentlabelname}{\@currentHref}{}}%
|
|
}%
|
|
\endgroup
|
|
\@esphack
|
|
}
|
|
\let\ltx@label\Xlabel
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@setXref}
|
|
% \begin{macrocode}
|
|
\def\@setXref#1#2#3{% csname, extract group, refname
|
|
\ifx#1\relax
|
|
\protect\G@refundefinedtrue
|
|
\nfss@text{\reset@font\bfseries ??}%
|
|
\@latex@warning{%
|
|
Reference `#3' on page \thepage \space undefined%
|
|
}%
|
|
\else
|
|
\expandafter\Hy@setref@link#1\@empty\@empty\@nil{#2}%
|
|
\fi
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@secondoffive}
|
|
% Something's redefining \cs{@secondoffive} incorrectly at the
|
|
% start of the document when hyperref's draft mode is on. Need
|
|
% to fix it.
|
|
% \begin{macrocode}
|
|
\AtBeginDocument{%
|
|
\renewcommand\@secondoffive[5]{#2}%
|
|
\jmlrwritepdfinfo
|
|
\let\jmlrwritepdfinfo\relax
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
% Need to write imported chapter label to main auxfile.
|
|
%\begin{macro}{\@setimportlabel}
|
|
% \begin{macrocode}
|
|
\def\@setimportlabel{%
|
|
\let\@mainauxout\@auxout
|
|
\let\HRlabel\label
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
% \begin{macrocode}
|
|
\AtBeginDocument{\@jmlrbegindoc}
|
|
% \end{macrocode}
|
|
%\begin{macro}{\@jmlrbegindoc}
|
|
% \begin{macrocode}
|
|
\newcommand*\@jmlrbegindoc{
|
|
\@setimportlabel
|
|
\gdef\@setimportlabel{\let\ref\Xref \let\pageref\Xpageref}%
|
|
\let\ReadBookmarks\relax
|
|
% \end{macrocode}
|
|
% Patch to work with \sty{auxhook} if loaded
|
|
%\changes{1.18}{2013-10-17}{patched to work with auxhook}
|
|
% \begin{macrocode}
|
|
\@ifundefined{@beginmainauxhook}{}{\@beginmainauxhook}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
% Imported papers modify \ics{InputIfFileExists} so save original
|
|
% definition.
|
|
% \begin{macrocode}
|
|
\let\@org@InputIfFileExists\InputIfFileExists
|
|
% \end{macrocode}
|
|
%
|
|
%\begin{environment}{jmlrpapers}
|
|
% \begin{macrocode}
|
|
\newenvironment{jmlrpapers}{%
|
|
% \end{macrocode}
|
|
%\changes{1.09}{2010/12/01}{reset start and end document hook to avoid
|
|
%problems caused by packages defining duplicate commands etc}
|
|
% \begin{macrocode}
|
|
\def\@begindocumenthook{%
|
|
\@jmlrbegindoc
|
|
\let\bibcite\c@lbNATbibcite
|
|
}
|
|
\def\@enddocumenthook{%
|
|
\@jmlrenddoc
|
|
\let\bibcite\c@lbNAT@testdef
|
|
}
|
|
\begin{papers}[]
|
|
% \end{macrocode}
|
|
%\changes{1.07}{2010-07-30}{Added check for two column style}
|
|
% \begin{macrocode}
|
|
\if@twocolumn
|
|
\def\@jmlr@restore{\twocolumn}%
|
|
\else
|
|
\def\@jmlr@restore{\onecolumn}%
|
|
\fi
|
|
\jmlrarticlecommands
|
|
\let\importpubpaper\@importpubpaper
|
|
\let\importpaper\@importpaper
|
|
\let\importarticle\@importarticle
|
|
\let\label\Xlabel
|
|
\let\ref\Xref
|
|
\pagestyle{article}%
|
|
}{%
|
|
\@jmlr@restore
|
|
\end{papers}
|
|
}
|
|
% \end{macrocode}
|
|
%\end{environment}
|
|
%
|
|
%\begin{macro}{\addtomaincontents}
|
|
% \begin{macrocode}
|
|
\newcommand{\addtomaincontents}[2]{%
|
|
\protected@write\@mainauxout{\let\label\@gobble\let\index\@gobble
|
|
\let\glossary\@gobble}{\string\@writefile{#1}{#2}}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@write@author}
|
|
% \begin{macrocode}
|
|
\newcommand*{\@write@author}[2]{%
|
|
\def\@jmlr@authors@sep{ and }%
|
|
\protected@write\@mainauxout{}{%
|
|
\string\@new@articleauthor{#1}{#2}%
|
|
}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@new@articleauthor}
|
|
% \begin{macrocode}
|
|
\newcommand*{\@new@articleauthor}[2]{%
|
|
\expandafter\gdef\csname @jmlr@author@#1\endcsname{%
|
|
\hyperref[#1jmlrstart]{#2}}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\@@write@jmlr@import}
|
|
% The accompanying \app{makejmlrbook} Perl script scans the aux file
|
|
% for information. Any articles imported using \ics{importpubpaper},
|
|
% \ics{importpaper} or \ics{importarticle} need to write the
|
|
% relevant information to the aux file.
|
|
% \begin{macrocode}
|
|
\newcommand*{\@@write@jmlr@import}[3]{%
|
|
\protected@write\@mainauxout{}{\string\@jmlr@import{#1}{#2}{#3}}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@jmlr@import}
|
|
% \LaTeX\ should ignore \cs{@jmlr@import} as it's only needed for
|
|
% \app{makejmlrbook}:
|
|
% \begin{macrocode}
|
|
\newcommand*{\@jmlr@import}[3]{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@@write@jmlr@apdimport}
|
|
%\changes{1.17}{2012/05/30}{new}
|
|
% As above but for files imported in the appendix.
|
|
% \begin{macrocode}
|
|
\newcommand*{\@@write@jmlr@apdimport}[3]{%
|
|
\protected@write\@mainauxout{}{\string\@jmlr@apdimport{#1}{#2}{#3}}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@jmlr@apdimport}
|
|
%\changes{1.17}{2012/05/30}{new}
|
|
% As above but for files imported in the appendix.
|
|
% \LaTeX\ should ignore \cs{@jmlr@apdimport} as it's only needed for
|
|
% \app{makejmlrbookgui}:
|
|
% \begin{macrocode}
|
|
\newcommand*{\@jmlr@apdimport}[3]{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\@write@jmlr@import}
|
|
% Initialise to \cs{@@write@jmlr@import} and switch to
|
|
% \cs{@@write@jmlr@apdimport} in the appendices.
|
|
% \begin{macrocode}
|
|
\def\@write@jmlr@import{\@@write@jmlr@import}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\jmlrpremaketitlehook}
|
|
%\changes{1.09}{2010/12/01}{Moved redefinition outside of import
|
|
%macros}
|
|
% Redefine \cs{jmlrpremaketitlehook}
|
|
% \begin{macrocode}
|
|
\def\jmlrpremaketitlehook{%
|
|
\cleardoublepage
|
|
\phantomsection
|
|
\let\@currentlabelname\@shorttitle
|
|
% \end{macrocode}
|
|
%\changes{1.09}{2010/12/01}{Moved \cs{refstepcounter} from
|
|
%\cs{jmlrmaketitlehook} to \cs{jmlrpremaketitlehook}}
|
|
% \begin{macrocode}
|
|
\refstepcounter{chapter}%
|
|
}%
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\jmlrimporthook}
|
|
% Hook just before document is imported.
|
|
%\changes{1.09}{2010/12/01}{new}
|
|
% \begin{macrocode}
|
|
\newcommand*{\jmlrimporthook}{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\importpubpaper}
|
|
% Import a document that has already been published.
|
|
% Syntax: \cs{importpubpaper}\oarg{label}\marg{dir}\marg{file}\marg{pages}
|
|
% where \meta{dir} is the directory in which the paper is located,
|
|
% \meta{file} is the name of the file and \meta{pages} indicates
|
|
% the page range \emph{for the original version}. The optional
|
|
% argument is a label. This is used to prefix the labels and
|
|
% citations in the document so they don't clash with other imported
|
|
% articles. If omitted, \meta{dir}/\meta{file} is used instead.
|
|
% \begin{macrocode}
|
|
\newcommand*{\@importpubpaper}[4][\@importdir\@importfile]{%
|
|
\bgroup
|
|
\def\@importdir{#2/}%
|
|
\def\@importfile{#3}%
|
|
\@write@jmlr@import{#1}{#2}{#3}%
|
|
\def\@extra@b@citeb{#1}%
|
|
\def\@extra@binfo{#1}%
|
|
\jmlrpages{#4}%
|
|
\graphicspath{{\@importdir}}%
|
|
\def\jmlrmaketitlehook{%
|
|
% \end{macrocode}
|
|
%\changes{1.09}{2010/12/01}{Added \cs{label} to \cs{jmlrmaketitlehook}}
|
|
% \begin{macrocode}
|
|
\label{}%
|
|
\def\titlebreak{ }%
|
|
\addtomaincontents{toc}%
|
|
% \end{macrocode}
|
|
%\changes{1.12}{2012/01/05}{changed \cs{@shorttitle} to \cs{@title}}
|
|
% \begin{macrocode}
|
|
{%
|
|
\protect\contentsline{papertitle}{\@title}{\thepage}%
|
|
{page.\thepage}}%
|
|
\pdfbookmark{\@shorttitle}{chapter.\theHchapter}%
|
|
\def\@jmlr@authors@sep{ \& }%
|
|
% \end{macrocode}
|
|
%\changes{1.12}{2012/01/05}{changed \cs{@jmlrauthors} to \cs{@jmlr@authors}}
|
|
% \begin{macrocode}
|
|
\tocchapterpubauthor{\@jmlr@authors}%
|
|
{%
|
|
\@jmlrabbrvproceedings
|
|
\ifx\@jmlrvolume\@empty
|
|
\ifx\@jmlrpages\@empty\else\space\fi
|
|
\else
|
|
\space\@jmlrvolume
|
|
\ifx\@jmlrissue\@empty
|
|
\else
|
|
(\@jmlrissue)%
|
|
\fi
|
|
\ifx\@jmlrpages\@empty\else:\fi
|
|
\fi
|
|
\ifx\@jmlrpages\@empty
|
|
\else
|
|
\@jmlrpages
|
|
\ifx\@jmlryear\@empty\else,\fi
|
|
\fi
|
|
\space\@jmlryear
|
|
}%
|
|
% \end{macrocode}
|
|
%\changes{1.12}{2012/01/05}{changed \cs{@jmlrauthors} to \cs{@jmlr@authors}}
|
|
% \begin{macrocode}
|
|
\@write@author{#1}{\@jmlr@authors}%
|
|
}%
|
|
\def\InputIfFileExists##1##2##3{%
|
|
\IfFileExists{##1}{%
|
|
\@org@InputIfFileExists{##1}{##2}{##3}%
|
|
}%
|
|
{%
|
|
\@org@InputIfFileExists{\@importdir##1}{##2}{##3}%
|
|
}%
|
|
}%
|
|
\def\Xprefix{#1}%
|
|
\jmlrimporthook
|
|
\import{\@importdir\@importfile}%
|
|
\def\Xprefix{}%
|
|
\egroup
|
|
\gdef\@shortauthor{}%
|
|
\gdef\@shorttitle{}%
|
|
\gdef\@firstauthor{}%
|
|
\gdef\@jmlr@authors{\@jmlrauthors}%
|
|
\gdef\@jmlrauthors{}%
|
|
\gdef\@firstsurname{}%
|
|
}
|
|
\newcommand{\importpubpaper}[4][]{%
|
|
\ClassError{jmlrbook}{\string\importpubpaper\space
|
|
not permitted outside `jmlrpapers' environment}{}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\importpaper}
|
|
% Like \cs{importpubpaper} but sets the pages to the page-range for
|
|
% this book.
|
|
% \begin{macrocode}
|
|
\newcommand{\@importpaper}[3][\@importdir\@importfile]{%
|
|
\bgroup
|
|
\def\@importdir{#2/}%
|
|
\def\@importfile{#3}%
|
|
\@write@jmlr@import{#1}{#2}{#3}%
|
|
\def\@extra@b@citeb{#1}%
|
|
\def\@extra@binfo{#1}%
|
|
\jmlrpages{\protect\@articlepagesref}%
|
|
\graphicspath{{\@importdir}}%
|
|
\def\jmlrmaketitlehook{%
|
|
% \end{macrocode}
|
|
%\changes{1.09}{2010/12/01}{Added \cs{label} to \cs{jmlrmaketitlehook}}
|
|
% \begin{macrocode}
|
|
\label{}%
|
|
\def\titlebreak{ }%
|
|
\addtomaincontents{toc}%
|
|
% \end{macrocode}
|
|
%\changes{1.12}{2012/01/05}{changed \cs{@shorttitle} to \cs{@title}}
|
|
% \begin{macrocode}
|
|
{%
|
|
\protect\contentsline{papertitle}{\@title}{\thepage}%
|
|
{page.\thepage}}%
|
|
\pdfbookmark{\@shorttitle}{chapter.\theHchapter}%
|
|
\def\@jmlr@authors@sep{ \& }%
|
|
% \end{macrocode}
|
|
%\changes{1.12}{2012/01/05}{changed \cs{@jmlrauthors} to \cs{@jmlr@authors}}
|
|
% \begin{macrocode}
|
|
\tocchapterpubauthor{\@jmlr@authors}%
|
|
{%
|
|
\@jmlrabbrvproceedings
|
|
\ifx\@jmlrvolume\@empty
|
|
\space
|
|
\else
|
|
\space\@jmlrvolume
|
|
\ifx\@jmlrissue\@empty
|
|
\else
|
|
(\@jmlrissue)%
|
|
\fi
|
|
:%
|
|
\fi
|
|
\protect\articlepagesref{#1}%
|
|
\ifx\@jmlryear\@empty\else,\fi
|
|
\space\@jmlryear
|
|
}%
|
|
% \end{macrocode}
|
|
%\changes{1.12}{2012/01/05}{changed \cs{@jmlrauthors} to \cs{@jmlr@authors}}
|
|
% \begin{macrocode}
|
|
\@write@author{#1}{\@jmlr@authors}%
|
|
}%
|
|
\def\InputIfFileExists##1##2##3{%
|
|
\IfFileExists{##1}{%
|
|
\@org@InputIfFileExists{##1}{##2}{##3}%
|
|
}%
|
|
{%
|
|
\@org@InputIfFileExists{\@importdir##1}{##2}{##3}%
|
|
}%
|
|
}%
|
|
\def\Xprefix{#1}%
|
|
% \end{macrocode}
|
|
% Disable \ics{jmlrvolume}, \ics{jmlryear}, \ics{jmlrworkshop} etc
|
|
% (since the imported papers belong to the same volume as the
|
|
% book---use \ics{importpubpaper} for papers pre-published in
|
|
%\changes{1.17}{2012/05/30}{disable \cs{jmlrvolume}, \cs{jmlryear}
|
|
%and \cs{jmlrworkshop} in imported papers}
|
|
% another volume).
|
|
% \begin{macrocode}
|
|
\let\jmlrvolume\@gobble
|
|
\let\jmlryear\@gobble
|
|
\let\jmlrworkshop\@gobble
|
|
\let\jmlrissue\@gobble
|
|
\let\jmlrpages\@gobble
|
|
\jmlrimporthook
|
|
\import{\@importdir\@importfile}%
|
|
\def\Xprefix{}%
|
|
\egroup
|
|
\gdef\@shortauthor{}%
|
|
\gdef\@shorttitle{}%
|
|
\gdef\@firstauthor{}%
|
|
\gdef\@jmlr@authors{\@jmlrauthors}%
|
|
\gdef\@jmlrauthors{}%
|
|
\gdef\@firstsurname{}%
|
|
}
|
|
|
|
\newcommand{\importpaper}[3][]{%
|
|
\ClassError{jmlrbook}{\string\importpaper\space
|
|
not permitted outside `jmlrpapers' environment}{}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\importarticle}
|
|
% Import a document that hasn't been published.
|
|
% Syntax: \cs{importarticle}\oarg{label}\marg{dir}\marg{file}
|
|
% where \meta{dir} is the directory in which the paper is located and
|
|
% \meta{file} is the name of the file. The optional
|
|
% argument is a label. This is used to prefix the labels and
|
|
% citations in the document so they don't clash with other imported
|
|
% articles. If omitted, \meta{file} is used instead.
|
|
% \begin{macrocode}
|
|
\newcommand{\@importarticle}[3][\@importdir\@importfile]{%
|
|
\bgroup
|
|
\def\@importdir{#2/}%
|
|
\def\@importfile{#3}%
|
|
\@write@jmlr@import{#1}{#2}{#3}%
|
|
\def\@extra@b@citeb{#1}%
|
|
\def\@extra@binfo{#1}%
|
|
\def\jmlrmaketitlehook{%
|
|
\def\titlebreak{ }%
|
|
\addtomaincontents{toc}%
|
|
% \end{macrocode}
|
|
%\changes{1.12}{2012/01/05}{changed \cs{@shorttitle} to \cs{@title}}
|
|
% \begin{macrocode}
|
|
{%
|
|
\protect\contentsline{papertitle}{\@title}{\thepage}%
|
|
{page.\thepage}}%
|
|
% \end{macrocode}
|
|
%\changes{1.09}{2010/12/01}{Added \cs{label} to \cs{jmlrmaketitlehook}}
|
|
% \begin{macrocode}
|
|
\label{}%
|
|
\pdfbookmark{\@shorttitle}{chapter.\theHchapter}%
|
|
\def\@jmlr@authors@sep{ \& }%
|
|
% \end{macrocode}
|
|
%\changes{1.12}{2012/01/05}{changed \cs{@jmlrauthors} to \cs{@jmlr@authors}}
|
|
% \begin{macrocode}
|
|
\tocchapterauthor{\@jmlr@authors}%
|
|
\@write@author{#1}{\@jmlr@authors}%
|
|
\jmlrpages{}%
|
|
\jmlrvolume{}%
|
|
\jmlryear{}%
|
|
\jmlrsubmitted{}%
|
|
\jmlrpublished{}%
|
|
\jmlrproceedings{}{}%
|
|
}%
|
|
\graphicspath{{\@importdir}}%
|
|
\def\InputIfFileExists##1##2##3{%
|
|
\IfFileExists{##1}{%
|
|
\@org@InputIfFileExists{##1}{##2}{##3}%
|
|
}%
|
|
{%
|
|
\@org@InputIfFileExists{\@importdir##1}{##2}{##3}%
|
|
}%
|
|
}%
|
|
\def\Xprefix{#1}%
|
|
\jmlrimporthook
|
|
% \end{macrocode}
|
|
%\changes{1.17}{2012/15/28}{set title page style for imported
|
|
%articles to articlet style}
|
|
% \begin{macrocode}
|
|
\let\ps@jmlrtps\ps@articlet
|
|
\import{\@importdir\@importfile}%
|
|
\def\Xprefix{}%
|
|
\egroup
|
|
\gdef\@shortauthor{}%
|
|
\gdef\@shorttitle{}%
|
|
\gdef\@firstauthor{}%
|
|
\gdef\@jmlr@authors{\@jmlrauthors}%
|
|
\gdef\@jmlrauthors{}%
|
|
\gdef\@firstsurname{}%
|
|
}
|
|
\newcommand{\importarticle}[3][]{%
|
|
\ClassError{jmlrbook}{\string\importarticle\space
|
|
not permitted outside `jmlrpapers' environment}{}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\addtocpart}
|
|
% Add a part to the TOC without printing anything in the text
|
|
% (but does a \cs{cleardoublepage}).
|
|
% \begin{macrocode}
|
|
\newcommand{\addtocpart}[1]{%
|
|
\cleardoublepage
|
|
\refstepcounter{tocpart}%
|
|
\addtocontents{toc}{\protect\tocpart{#1}}%
|
|
\pdfbookmark[-1]{#1}{part.\thetocpart}%
|
|
}
|
|
\newcounter{tocpart}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\tocpart}
|
|
% Define the appearance of a part in the TOC.
|
|
% \begin{macrocode}
|
|
\newcommand{\tocpart}[1]{%
|
|
\addpenalty{-\@highpenalty}%
|
|
\vskip 1.0ex \@plus\p@
|
|
\setlength\@tempdima{2.25em}%
|
|
\begingroup
|
|
\parindent \z@ \rightskip \@pnumwidth
|
|
\parfillskip -\@pnumwidth
|
|
\leavevmode \large\bfseries
|
|
\advance\leftskip\@tempdima
|
|
\hskip -\leftskip
|
|
#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss \null}\par
|
|
\penalty\@highpenalty
|
|
\endgroup
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
% Set up the layout of the chapter headings
|
|
% \begin{macrocode}
|
|
\setlength{\prechapterskip}{3em}
|
|
\setlength{\postchapterskip}{20pt}
|
|
% \end{macrocode}
|
|
%
|
|
%\begin{macro}{\chapternumberformat}
|
|
% \begin{macrocode}
|
|
\renewcommand{\chapternumberformat}[1]{%
|
|
\Large\bfseries \@chapapp\space#1\par
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\chaptertitleformat}
|
|
% \begin{macrocode}
|
|
\renewcommand{\chaptertitleformat}[1]{%
|
|
\Large\bfseries #1}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\chapterformat}
|
|
% \begin{macrocode}
|
|
\renewcommand*{\chapterformat}{%
|
|
\raggedright
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
% Set up the format of a part in the book (not a part in an
|
|
% article).
|
|
%\begin{macro}{\preparthook}
|
|
% \begin{macrocode}
|
|
\renewcommand{\preparthook}{\cleardoublepage\null\vfil}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\partnumberformat}
|
|
% \begin{macrocode}
|
|
\renewcommand{\partnumberformat}[1]{%
|
|
\Huge\bfseries \@partapp\nobreakspace#1\par\nobreak
|
|
\vskip 20\p@
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\postparthook}
|
|
% \begin{macrocode}
|
|
\def\postparthook{%
|
|
\thispagestyle{empty}%
|
|
\vfil\newpage
|
|
\null
|
|
\thispagestyle{empty}%
|
|
\newpage
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\@curparthead}
|
|
% The heading of the current part
|
|
% \begin{macrocode}
|
|
\newcommand{\@curparthead}{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\parttitleformat}
|
|
% \begin{macrocode}
|
|
\renewcommand{\parttitleformat}[1]{#1%
|
|
\gdef\@curparthead{\@partapp\space \thepart. #1}%
|
|
\@mkboth{\@curparthead}{\@curparthead}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\firstpageno}
|
|
% Change \cs{firstpageno} to do nothing as the page number will
|
|
% be determined by the book.
|
|
% \begin{macrocode}
|
|
\renewcommand{\firstpageno}[1]{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\tocchapterauthor}
|
|
% Add the author of the current chapter to the table of contents.
|
|
% \begin{macrocode}
|
|
\newcommand{\tocchapterauthor}[1]{%
|
|
\addtomaincontents{toc}{\protect\contentsline{chapterauthor}{%
|
|
#1}{}{}}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\tocchapterpubauthor}
|
|
% Add the author of an imported prepublished paper to the
|
|
% table of contents. The first argument is the author (or list
|
|
% of authors). The second argument is the reference to the
|
|
% published article.
|
|
% \begin{macrocode}
|
|
\newcommand{\tocchapterpubauthor}[2]{%
|
|
\addtomaincontents{toc}{\protect\contentsline{chapterauthor}{%
|
|
#1; #2.}{}{}}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
% Set up the formatting in the TOC
|
|
% \begin{macrocode}
|
|
\renewcommand*\@pnumwidth{2em}
|
|
% \end{macrocode}
|
|
%
|
|
%\begin{macro}{\l@part}
|
|
% Format for book parts
|
|
% \begin{macrocode}
|
|
\renewcommand*\l@part[2]{%
|
|
\ifnum \c@tocdepth >\m@ne
|
|
\addpenalty{-\@highpenalty}%
|
|
\vskip 1.0em \@plus\p@
|
|
%\setlength\@tempdima{5em}%
|
|
\settowidth\@tempdima{\large\bfseries \@partapp\space MM}%
|
|
\vbox{%
|
|
\pagerule
|
|
\begingroup
|
|
\parindent \z@ \rightskip \@pnumwidth
|
|
\parfillskip -\@pnumwidth
|
|
\leavevmode \large\bfseries
|
|
\advance\leftskip\@tempdima
|
|
\hskip -\leftskip
|
|
\renewcommand*\numberline[1]{\hb@xt@ \@tempdima
|
|
{\@partapp\space ##1\hfil }}%
|
|
#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss
|
|
\normalfont\normalsize #2}\par
|
|
\penalty\@highpenalty
|
|
\endgroup
|
|
\pagerule
|
|
}%
|
|
\fi}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\l@chapter}
|
|
% \begin{macrocode}
|
|
\renewcommand{\l@chapter}[2]{%
|
|
\ifnum\c@tocdepth>\m@ne
|
|
\addpenalty{-\@highpenalty}%
|
|
\vskip 1.0em \@plus \p@
|
|
\setlength\@tempdima{2em}%
|
|
\begingroup
|
|
\parindent \z@
|
|
\rightskip \@pnumwidth
|
|
\parfillskip -\@pnumwidth
|
|
\leavevmode \large \bfseries
|
|
\advance \leftskip \@tempdima
|
|
\hskip -\leftskip
|
|
\renewcommand*\numberline[1]{\hb@xt@ \@tempdima
|
|
{##1\hfil }}%
|
|
#1\nobreak \hfil \nobreak \hb@xt@ \@pnumwidth {\hss
|
|
\normalfont\normalsize #2}\par
|
|
\penalty \@highpenalty
|
|
\endgroup
|
|
\fi
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\l@papertitle}
|
|
% \begin{macrocode}
|
|
\newcommand*{\l@papertitle}[2]{%
|
|
\ifnum \c@tocdepth >\m@ne
|
|
\addpenalty{-\@highpenalty}%
|
|
\vskip 1.0em \@plus\p@
|
|
\setlength\@tempdima{3em}%
|
|
\begingroup
|
|
\leavevmode \raggedright\itshape
|
|
#1\nobreak\hfill \nobreak\hb@xt@\@pnumwidth{\hss
|
|
\normalfont#2}%
|
|
\par
|
|
\penalty\@highpenalty
|
|
\endgroup
|
|
\fi
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\l@chapterauthor}
|
|
% \begin{macrocode}
|
|
\newcommand*\l@chapterauthor[2]{%
|
|
\ifnum \c@tocdepth >\m@ne
|
|
% \end{macrocode}
|
|
%\changes{1.11}{2011/01/06}{removed penalty}
|
|
% \begin{macrocode}
|
|
\begingroup
|
|
\parindent \z@
|
|
\rightskip \@pnumwidth
|
|
\parfillskip -\@pnumwidth
|
|
\leavevmode \raggedright
|
|
\parbox{\linewidth-\@pnumwidth}{\raggedright#1\par}%
|
|
\par
|
|
\endgroup
|
|
\fi}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\l@section}
|
|
% \begin{macrocode}
|
|
\renewcommand*\l@section[2]{%
|
|
\ifnum \c@tocdepth >\m@ne
|
|
\addpenalty{-\@highpenalty}%
|
|
\vskip 1.0em \@plus\p@
|
|
\setlength\@tempdima{3em}%
|
|
\begingroup
|
|
\parindent \z@ \rightskip \@pnumwidth
|
|
\parfillskip -\@pnumwidth
|
|
\leavevmode \normalsize\mdseries
|
|
\advance\leftskip\@tempdima
|
|
\hskip -\leftskip
|
|
#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
|
|
\penalty\@highpenalty
|
|
\endgroup
|
|
\fi}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\l@subsection}
|
|
% \begin{macrocode}
|
|
\renewcommand*\l@subsection[2]{%
|
|
\ifnum \c@tocdepth >\m@ne
|
|
\addpenalty{-\@highpenalty}%
|
|
\vskip 1.0em \@plus\p@
|
|
\setlength\@tempdima{3.5em}%
|
|
\begingroup
|
|
\parindent \z@ \rightskip \@pnumwidth
|
|
\parfillskip -\@pnumwidth
|
|
\leavevmode \normalsize\mdseries
|
|
\advance\leftskip\@tempdima
|
|
\hskip -\leftskip
|
|
#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
|
|
\penalty\@highpenalty
|
|
\endgroup
|
|
\fi}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\chaptermark}
|
|
% \begin{macrocode}
|
|
\renewcommand*{\chaptermark}[1]{%
|
|
\@mkboth{\@curparthead}{\protect\thechapter. #1}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
% Set up page styles
|
|
%\begin{macro}{\firstpagehead}
|
|
% \begin{macrocode}
|
|
\newcommand{\firstpagehead}{}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\firstpagefoot}
|
|
%\changes{1.09}{2010/12/01}{added \cs{@reprint}}
|
|
% \begin{macrocode}
|
|
\newcommand{\firstpagefoot}{%
|
|
\@reprint\hfill\thepage
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\headfont}
|
|
% Set the header font
|
|
% \begin{macrocode}
|
|
\newcommand*{\headfont}{\reset@font\small\scshape}%
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\footfont}
|
|
% Set the footer font
|
|
% \begin{macrocode}
|
|
\newcommand*{\footfont}{\reset@font\small\itshape}%
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\ps@chplain}
|
|
% Page style for first page of a chapter
|
|
% \begin{macrocode}
|
|
\newcommand*{\ps@chplain}{%
|
|
\let\@mkboth\@gobbletwo
|
|
\renewcommand*{\@oddhead}{\headfont\firstpagehead}%
|
|
\renewcommand*{\@evenhead}{}%
|
|
\renewcommand*{\@oddfoot}{\footfont\firstpagefoot}%
|
|
\renewcommand*{\@evenfoot}{\footfont\thepage\hfill
|
|
}%
|
|
}
|
|
\let\ps@plain\ps@chplain
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\ps@article}
|
|
% Page style for the imported articles.
|
|
% \begin{macrocode}
|
|
\newcommand*{\ps@article}{%
|
|
\let\@mkboth\@gobbletwo
|
|
\renewcommand*{\@oddhead}{\headfont\hfill\@shorttitle}%
|
|
\renewcommand*{\@evenhead}{\headfont\@shortauthor\hfill}%
|
|
\renewcommand*{\@oddfoot}{\footfont\hfill\thepage}
|
|
\renewcommand*{\@evenfoot}{\footfont\thepage\hfill}
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\begin{macro}{\ps@articlet}
|
|
% Title page style for imported articles (imported using
|
|
% \cs{importarticle})
|
|
% \begin{macrocode}
|
|
\newcommand*{\ps@articlet}{%
|
|
\let\@mkboth\@gobbletwo
|
|
\renewcommand*{\@oddhead}{}%
|
|
\renewcommand*{\@evenhead}{}%
|
|
\renewcommand*{\@oddfoot}{\footfont\hfill\thepage}
|
|
\renewcommand*{\@evenfoot}{\footfont\thepage\hfill}
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\ps@jmlrbook}
|
|
% Page style for book
|
|
%\changes{1.15}{2012/05/12}{removed dependence on \cs{ps@headings}
|
|
%(made consistent with article page style)}
|
|
% \begin{macrocode}
|
|
\newcommand*{\ps@jmlrbook}{%
|
|
\renewcommand*{\@oddfoot}{\footfont\hfill\thepage}
|
|
\renewcommand*{\@evenfoot}{\footfont\thepage\hfill}
|
|
\def\@evenhead{\headfont\leftmark\hfill}%
|
|
\def\@oddhead{\hfill\headfont\rightmark}%
|
|
\let\@mkboth\markboth
|
|
\renewcommand*{\sectionmark}[1]{}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\markleft}
|
|
%\changes{1.15}{2012/05/12}{new}
|
|
% Provide a command to set just the left header mark.
|
|
% \begin{macrocode}
|
|
\newcommand*{\markleft}[1]{%
|
|
\begingroup
|
|
\let\label\relax
|
|
\let\index\relax
|
|
\let\glossary\relax
|
|
\expandafter\@markleft\@themark{#1}%
|
|
\@temptokena
|
|
\expandafter{\@themark}%
|
|
\mark{\the\@temptokena}
|
|
\endgroup
|
|
\if@nobreak
|
|
\ifvmode
|
|
\nobreak
|
|
\fi
|
|
\fi
|
|
}
|
|
\newcommand*{\@markleft}[3]{%
|
|
\@temptokena{#2}%
|
|
\unrestored@protected@xdef\@themark{{#3}{\the\@temptokena}}
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\morefrontmatter}
|
|
% \begin{macrocode}
|
|
\renewcommand*{\morefrontmatter}{\pagestyle{jmlrbook}%
|
|
\def\chaptermark##1{%
|
|
\@mkboth{##1\hfill}{\hfill##1}}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\moremainmatter}
|
|
% \begin{macrocode}
|
|
\renewcommand*{\moremainmatter}{\pagestyle{jmlrbook}%
|
|
\def\chaptermark##1{%
|
|
\@mkboth{\@curparthead}{\protect\thechapter. ##1}%
|
|
}%
|
|
}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%
|
|
%\begin{macro}{\bibsection}
|
|
% Set the bibliography headings in the articles
|
|
% \begin{macrocode}
|
|
\renewcommand*\bibsection{\section*{\refname}}
|
|
% \end{macrocode}
|
|
%\end{macro}
|
|
%\changes{1.10}{2011-01-05}{Removed redundant redefinition of
|
|
%\cs{@bookpart}}
|
|
%
|
|
% Set up the book commands:
|
|
% \begin{macrocode}
|
|
\jmlrbookcommands
|
|
% \end{macrocode}
|
|
%
|
|
% In the event that authors have used different versions of
|
|
% \sty{algorithm2e}, define old command names.
|
|
%\changes{1.11}{2011-03-24}{added old algorithm2e commands}
|
|
% \begin{macrocode}
|
|
\providecommand*{\SetNoLine}{\SetAlgoNoLine}
|
|
\providecommand*{\SetVline}{\SetAlgoVlined}
|
|
\providecommand*{\Setvlineskip}{\SetVlineSkip}
|
|
\providecommand*{\SetLine}{\SetAlgoLined}
|
|
\providecommand*{\dontprintsemicolon}{\DontPrintSemicolon}
|
|
\providecommand*{\printsemicolon}{\PrintSemicolon}
|
|
\providecommand*{\incmargin}{\IncMargin}
|
|
\providecommand*{\decmargin}[1]{\DecMargin{-#1}}
|
|
\providecommand*{\setnlskip}{\SetNlSkip}
|
|
\providecommand*{\Setnlskip}{\SetNlSkip}
|
|
\providecommand*{\setalcapskip}{\SetAlCapSkip}
|
|
\providecommand*{\setalcaphskip}{\SetAlCapHSkip}
|
|
\providecommand*{\nlSty}{\NlSty}
|
|
\providecommand*{\Setnlsty}{\SetNlSty}
|
|
\providecommand*{\linesnumbered}{\LinesNumbered}
|
|
\providecommand*{\linesnotnumbered}{\LinesNotNumbered}
|
|
\providecommand*{\linesnumberedhidden}{\LinesNumberedHidden}
|
|
\providecommand*{\showln}{\ShowLn}
|
|
\providecommand*{\showlnlabel}{\ShowLnLabel}
|
|
\providecommand*{\nocaptionofalgo}{\NoCaptionOfAlgo}
|
|
\providecommand*{\restorecaptionofalgo}{\RestoreCaptionOfAlgo}
|
|
\providecommand*{\restylealgo}{\RestyleAlgo}
|
|
\providecommand*{\Titleofalgo}{\TitleOfAlgo}
|
|
% \end{macrocode}
|
|
%\iffalse
|
|
% \begin{macrocode}
|
|
%</jmlrbook.cls>
|
|
% \end{macrocode}
|
|
%\fi
|
|
%\Finale
|
|
\endinput
|