diff options
-rw-r--r-- | Master/texmf-dist/doc/latex/jmlr/CHANGES | 6 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/jmlr/INSTALL | 9 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/jmlr/README | 22 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/jmlr/jmlr.pdf | bin | 600434 -> 615617 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/jmlr/sample-books/jmlrbook-sample.pdf | bin | 319028 -> 319039 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/jmlr/sample-books/proceedings-sample.pdf | bin | 419207 -> 419217 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/jmlr/sample-papers/jmlr-sample.pdf | bin | 308981 -> 308987 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/jmlr/sample-papers/jmlrwcp-sample.pdf | bin | 297479 -> 297750 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/jmlr/sample-papers/jmlrwcp-sample.tex | 12 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/jmlr/jmlr.dtx | 1986 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/jmlr/jmlr.ins | 10 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/jmlr/jmlr.cls | 439 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/jmlr/jmlrbook.cls | 6 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/jmlr/jmlrutils.sty | 495 |
14 files changed, 1699 insertions, 1286 deletions
diff --git a/Master/texmf-dist/doc/latex/jmlr/CHANGES b/Master/texmf-dist/doc/latex/jmlr/CHANGES index 724745bfcc0..27268561aba 100644 --- a/Master/texmf-dist/doc/latex/jmlr/CHANGES +++ b/Master/texmf-dist/doc/latex/jmlr/CHANGES @@ -1,3 +1,9 @@ +v1.24: + + * moved non-class related code into new package jmlrutils.sty + + * fixed bug in \includeteximage + v1.23: * added pmlr class option diff --git a/Master/texmf-dist/doc/latex/jmlr/INSTALL b/Master/texmf-dist/doc/latex/jmlr/INSTALL index 805c257c5b3..0d207a9b8a0 100644 --- a/Master/texmf-dist/doc/latex/jmlr/INSTALL +++ b/Master/texmf-dist/doc/latex/jmlr/INSTALL @@ -31,10 +31,6 @@ Example (on UNIX like systems): unzip jmlr.tds.zip -d ~/texmf/ texhash ~/texmf/ -Move the makejmlrbook Perl script from scripts/jmlr/ to somewhere -on your path. If you are using Windows, you will also need to -move makejmlrbook.bat to the same location. - INSTALLING FROM DTX AND INS =========================== @@ -59,11 +55,8 @@ TEXMF/tex/latex/jmlr Move the documentation to TEXMF/doc/latex/jmlr/ -Move jmlr.cls and jmlrbook.cls to TEXMF/tex/latex/jmlr/ +Move jmlrutils.sty, jmlr.cls and jmlrbook.cls to TEXMF/tex/latex/jmlr/ *Remember to refresh TeX's database* -Move the makejmlrbook Perl script to somewhere on your path. If -you are using Windows, you will also need to move makejmlrbook.bat -to the same location. diff --git a/Master/texmf-dist/doc/latex/jmlr/README b/Master/texmf-dist/doc/latex/jmlr/README index 2a73bcc5443..92ce503fcfd 100644 --- a/Master/texmf-dist/doc/latex/jmlr/README +++ b/Master/texmf-dist/doc/latex/jmlr/README @@ -1,6 +1,6 @@ -LaTeX Class : jmlr bundle v1.23 +LaTeX Class : jmlr bundle v1.24 -Last Modified : 2017-03-09 +Last Modified : 2017-08-01 Author : Nicola L. C. Talbot @@ -8,20 +8,27 @@ This bundle provides: * jmlr class * jmlrbook class + * jmlrutils package -The jmlr class is a LaTeX2e class for articles for the Journal of -Machine Learning Research (JMLR) or the JMLR Workshop and Conference +The jmlr class is a LaTeX class for articles for the Journal of +Machine Learning Research (JMLR) or the Proceedings of Machine +Learning Research (PMLR) formerly JMLR Workshop and Conference Proceedings (JMLR W&CP). It is designed as a replacement for both jmlr2e.sty and jmlrwcp2e.sty. -The jmlrbook class is a LaTeX2e class that can be used to combine +The jmlrutils package is automatically loaded by the jmlr class, but +may be used with other classes. (You may need to additionally load +graphicx and algorithm2e, which jmlr.cls does automatically.) + +The jmlrbook class is a LaTeX class that can be used to combine articles written using the jmlr class into a book. The jmlrbook class uses the combine class and the hyperref package to produce either a colour hyperlinked book for on-line viewing or a greyscale nonhyperlinked book for printing. Production editors can use the makejmlrbookgui application (http://www.dickimaw-books.com/software/makejmlrbookgui/) to -generate the proceedings. +generate the proceedings. The makejmlrbook Perl script is deprecated +and may be removed in future releases. INSTALLATION @@ -31,6 +38,7 @@ REQUIREMENTS jmlr class requirements: + jmlrutils xcolor amsmath amssymb @@ -60,7 +68,7 @@ for the details of that license. RELATED SOFTWARE: -http://www.dickimaw-books.com/apps/makejmlrbookgui/ +http://www.dickimaw-books.com/software/makejmlrbookgui/ Author's home page: http://www.dickimaw-books.com/ diff --git a/Master/texmf-dist/doc/latex/jmlr/jmlr.pdf b/Master/texmf-dist/doc/latex/jmlr/jmlr.pdf Binary files differindex 54d062c23fe..6a75b8d526e 100644 --- a/Master/texmf-dist/doc/latex/jmlr/jmlr.pdf +++ b/Master/texmf-dist/doc/latex/jmlr/jmlr.pdf diff --git a/Master/texmf-dist/doc/latex/jmlr/sample-books/jmlrbook-sample.pdf b/Master/texmf-dist/doc/latex/jmlr/sample-books/jmlrbook-sample.pdf Binary files differindex 35d6c9ce609..4d2cabbda98 100644 --- a/Master/texmf-dist/doc/latex/jmlr/sample-books/jmlrbook-sample.pdf +++ b/Master/texmf-dist/doc/latex/jmlr/sample-books/jmlrbook-sample.pdf diff --git a/Master/texmf-dist/doc/latex/jmlr/sample-books/proceedings-sample.pdf b/Master/texmf-dist/doc/latex/jmlr/sample-books/proceedings-sample.pdf Binary files differindex b8ae83aff41..e71265841b9 100644 --- a/Master/texmf-dist/doc/latex/jmlr/sample-books/proceedings-sample.pdf +++ b/Master/texmf-dist/doc/latex/jmlr/sample-books/proceedings-sample.pdf diff --git a/Master/texmf-dist/doc/latex/jmlr/sample-papers/jmlr-sample.pdf b/Master/texmf-dist/doc/latex/jmlr/sample-papers/jmlr-sample.pdf Binary files differindex d1d1a82f665..4b6c39852fb 100644 --- a/Master/texmf-dist/doc/latex/jmlr/sample-papers/jmlr-sample.pdf +++ b/Master/texmf-dist/doc/latex/jmlr/sample-papers/jmlr-sample.pdf diff --git a/Master/texmf-dist/doc/latex/jmlr/sample-papers/jmlrwcp-sample.pdf b/Master/texmf-dist/doc/latex/jmlr/sample-papers/jmlrwcp-sample.pdf Binary files differindex a7b6567ea37..6115f7cbf25 100644 --- a/Master/texmf-dist/doc/latex/jmlr/sample-papers/jmlrwcp-sample.pdf +++ b/Master/texmf-dist/doc/latex/jmlr/sample-papers/jmlrwcp-sample.pdf diff --git a/Master/texmf-dist/doc/latex/jmlr/sample-papers/jmlrwcp-sample.tex b/Master/texmf-dist/doc/latex/jmlr/sample-papers/jmlrwcp-sample.tex index e64d2fcaf85..1e19ddd4369 100644 --- a/Master/texmf-dist/doc/latex/jmlr/sample-papers/jmlrwcp-sample.tex +++ b/Master/texmf-dist/doc/latex/jmlr/sample-papers/jmlrwcp-sample.tex @@ -552,13 +552,15 @@ both have \verb|[c]| as the second optional argument. Enumerated textual algorithms can be displayed using the \texttt{algorithm} environment. Within this environment, use -\verb|\caption| to set the caption and you can use an -\texttt{enumerate} or nested \texttt{enumerate} environments. +use an \texttt{enumerate} or nested \texttt{enumerate} environments. For example, see \algorithmref{alg:gauss}. Note that algorithms float like figures and tables. \begin{algorithm}[htbp] -\caption{The Gauss-Seidel Algorithm}\label{alg:gauss} +\floatconts +{alg:gauss}% label +{\caption{The Gauss-Seidel Algorithm}} +{% contents \begin{enumerate} \item For $k=1$ to maximum number of iterations \begin{enumerate} @@ -572,8 +574,12 @@ float like figures and tables. \end{enumerate} \end{enumerate} \end{enumerate} +} \end{algorithm} +You can use \verb|\caption| and \verb|\label| without using +\verb|\floatconts| (as in \algorithmref{alg:moore}). + If you'd rather have the same numbering throughout the algorithm but still want the convenient indentation of nested \texttt{enumerate} environments, you can use the diff --git a/Master/texmf-dist/source/latex/jmlr/jmlr.dtx b/Master/texmf-dist/source/latex/jmlr/jmlr.dtx index 59039a18f1e..57d9136911c 100644 --- a/Master/texmf-dist/source/latex/jmlr/jmlr.dtx +++ b/Master/texmf-dist/source/latex/jmlr/jmlr.dtx @@ -1,13 +1,14 @@ %\iffalse -% jmlr.dtx generated using makedtx version 1.1 (c) Nicola Talbot +% 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" -% -section "chapter" % -author "Nicola Talbot" -% -doc "jmlr-manual.tex" +% -section "chapter" % jmlr -% Created on 2017/3/9 9:50 +% Created on 2017/8/1 16:57 %\fi %\iffalse %<*package> @@ -51,8 +52,7 @@ Research (PMLR)}, \doxitem{Option}{option}{package options} -\CheckSum{4965} - +\CheckSum{5030} \newcommand*{\appopt}[1]{\texttt{-{}-#1}} @@ -70,7 +70,7 @@ Research (PMLR)}, % \author{Nicola L. C. Talbot\\[10pt] %\url{http://www.dickimaw-books.com/}} % -% \date{2017-03-09 (version 1.23)} +% \date{2017-08-01 (version 1.24)} % \maketitle %\tableofcontents % @@ -83,10 +83,9 @@ Research (PMLR)}, %\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) -%will soon be renamed PMLR (Proceedings of Machine Learning -%Research). The new \clsopt{pmlr} class option has been added -%in anticipation of this, but only use it once the official -%name change has taken place. +%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 @@ -107,6 +106,13 @@ Research (PMLR)}, %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 @@ -131,23 +137,25 @@ Research (PMLR)}, %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/apps/makejmlrbookgui/} where +%\url{http://www.dickimaw-books.com/software/makejmlrbookgui/} where %there is also a -%\href{http://www.dickimaw-books.com/apps/makejmlrbookgui/manual/troubleshooting.html}{troubleshooting +%\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 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 and may be dropped from future versions of this 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{amsmath}, \sty{amssymb}, +%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, @@ -386,13 +394,17 @@ Research (PMLR)}, %\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}. +%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} % @@ -480,7 +492,42 @@ Research (PMLR)}, % %See the \ctandoc{natbib} for further details. % -%\section{Figures and Tables} +%\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. @@ -507,13 +554,13 @@ Research (PMLR)}, %\caption{A Sample Caption With Some \emph{Emphasized Words}.} %\end{verbatim} % -%The \clsfmt{jmlr} class provides the following command for displaying +%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 centered. For example: +%the contents are centred. For example: %\begin{verbatim} %\begin{table}[htbp] %\floatconts @@ -527,6 +574,11 @@ Research (PMLR)}, % } %\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: @@ -534,6 +586,10 @@ Research (PMLR)}, %\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}: @@ -547,14 +603,15 @@ Research (PMLR)}, %\end{verbatim} % %Note that you shouldn't specify the file extension when including -%the image. It's helpful if you can also provide a grayscale -%version of color images. This should be labeled as the color -%image but with \texttt{-gray} immediately before the extension. -%(The extension need not be the same as that of the color image.) -%For example, if you have an image called \texttt{mypic.pdf}, the -%grayscale can be called \texttt{mypic-gray.pdf}, -%\texttt{mypic-gray.png} or \texttt{mypic-gray.jpg}. -%See \sectionref{sec:color} for further details. +%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} @@ -564,14 +621,19 @@ Research (PMLR)}, %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}. +%\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}. % -%\subsection{Sub-Figures and Sub-Tables} +%\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. +%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} @@ -611,19 +673,23 @@ Research (PMLR)}, %This is an analogous command for sub-tables. The default value %for \meta{valign} is \texttt{t}. % -%\section{Algorithms} +%\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\}\\ +%\cs{begin}\{algorithm\}\oarg{placement}\\ %\meta{contents}\\ %\cs{end}\{algorithm\} %\end{definition} %Enumerated textual algorithms can be displayed using the -%\envfmt{algorithm} environment. Within this environment, use -%\ics{caption} to set the caption (and \ics{label} to cross-reference -%it). Within the body of the environment you can use the -%\env{enumerate} environment. +%\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}\\ @@ -632,9 +698,13 @@ Research (PMLR)}, %\end{definition} %If you want to have nested \env{enumerate} environments but you want %to keep the same numbering throughout the algorithm, you can use the -%\envfmt{enumerate*} environment, provided by the \clsfmt{jmlr} -%class. For example: +%\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$ @@ -652,6 +722,7 @@ Research (PMLR)}, % \end{enumerate*} % \end{enumerate*} %\end{enumerate*} +%} %\end{algorithm} %\end{verbatim} % @@ -668,8 +739,8 @@ Research (PMLR)}, %\begin{algorithm2e} %\caption{Computing Net Activation} %\label{alg:net} -%\dontprintsemicolon -%\linesnumbered +%\DontPrintSemicolon +%\LinesNumbered %\KwIn{$x_1, \ldots, x_n, w_1, \ldots, w_n$} %\KwOut{$y$, the net activation} %$y\leftarrow 0$\; @@ -681,7 +752,7 @@ Research (PMLR)}, % %See the \ctandoc{algorithm2e} for more details. % -%\section{Description Lists} +%\subsection{Description Lists} % %\begin{definition}[\DescribeEnv{altdescription}] %\cs{begin}\{altdescription\}\marg{widest label}\\ @@ -699,9 +770,16 @@ Research (PMLR)}, %\end{altdescription} %\end{verbatim} % -%\section{Theorems, Lemmas etc} +%\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 \clsfmt{jmlr} class provides the following theorem-like +%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 @@ -778,11 +856,11 @@ Research (PMLR)}, %\end{note} %\end{verbatim} % -%\section{Cross-Referencing} +%\subsection{Cross-Referencing} %\label{sec:crossref} % %Always use \ics{label} when cross-referencing, rather than writing -%the number explicitly. The \clsfmt{jmlr} class provides some +%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. % @@ -880,22 +958,41 @@ Research (PMLR)}, %\end{definition} %Used to refer to an example or multiple examples. % -%\section{Mathematics} +%\subsection{Mathematics} % -%The \clsfmt{jmlr} class loads the \sty{amsmath} package so you can use -%any of the commands and environments defined in that package. A -%brief summary of some of the more common commands and environments -%is provided here. See the \ctandoc{amsmath} for further details. +%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{text} +%\cs{set}\marg{maths} %\end{definition} %In addition to the commands provided by \sty{amsmath}, the -%\clsfmt{jmlr} class also provides the \cs{set} command which can +%\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: @@ -909,6 +1006,10 @@ Research (PMLR)}, %\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} @@ -1009,7 +1110,8 @@ Research (PMLR)}, %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). +%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} @@ -1041,8 +1143,10 @@ Research (PMLR)}, %\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: +%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/}), @@ -1088,7 +1192,7 @@ Research (PMLR)}, %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/apps/makejmlrbookgui/} for details. +%\url{http://www.dickimaw-books.com/software/makejmlrbookgui/} for details. % %\section{\clsfmt{jmlrbook} Class Options} %\begin{description} @@ -1626,7 +1730,7 @@ Research (PMLR)}, %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/apps/makejmlrbookgui/manual/troubleshooting.html}{troubleshooting +%\href{http://www.dickimaw-books.com/software/makejmlrbookgui/manual/troubleshooting.html}{troubleshooting %section}. % %\StopEventually{\clearpage\phantomsection @@ -1638,6 +1742,923 @@ Research (PMLR)}, %\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 @@ -1649,7 +2670,7 @@ Research (PMLR)}, % Declare class and required TeX format: % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesClass{jmlr}[2017/03/09 v1.23 (NLCT) Journal of Machine Learning Research] +\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} @@ -1706,15 +2727,45 @@ Research (PMLR)}, \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} -% Determine if the table captions should go at the top. %\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 @@ -1723,13 +2774,18 @@ Research (PMLR)}, \fi } % \end{macrocode} -%\end{macro} +%\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}{\jmlrhtmltrue} +\DeclareOptionX{html}{% + \ClassWarning{jmlr}{html option is now deprecated}% + \jmlrhtmltrue} \DeclareOptionX{nohtml}{\jmlrhtmlfalse} % \end{macrocode} %\end{macro} @@ -1789,7 +2845,7 @@ Research (PMLR)}, } % \end{macrocode} %\end{macro} -% This isn't an article for a workshop: +% This is a journal (non JMLR W\&CP\slash PMLR) article: % \begin{macrocode} \DeclareOptionX{nowcp}{\jmlrnowcp} % \end{macrocode} @@ -1880,7 +2936,8 @@ Research (PMLR)}, \RequirePackage{natbib} \RequirePackage{graphicx} \RequirePackage{url} -\RequirePackage[x11names]{xcolor} +\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 @@ -1891,7 +2948,17 @@ Research (PMLR)}, %\end{verbatim} % I don't know why, but it's outside the control of this class. % \begin{macrocode} -\RequirePackage[algo2e,ruled]{algorithm2e} +\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: @@ -2864,245 +3931,19 @@ Keywords:} \ignorespaces}% \def\belowstrut#1{\rule[-#1]{0in}{#1}\ignorespaces} % \end{macrocode} %\begin{macro}{\acks} -% Acknowledgments +% Acknowledgements % \begin{macrocode} -\long\def\acks#1{\section*{Acknowledgments}#1} +\newcommand{\acks}[1]{\section*{Acknowledgments}#1} % \end{macrocode} %\end{macro} % Research Note %\begin{macro}{\researchnote} % \begin{macrocode} -\long\def\researchnote#1{\noindent {\LARGE\itshape Research Note} #1} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\set} -% \begin{macrocode} -\newcommand*{\set}[1]{\ensuremath{\mathcal{#1}}} -% \end{macrocode} -%\end{macro} -% -% Convenient macros for cross-referencing. -% \begin{macrocode} -\newcommand*{\@jmlr@reflistsep}{, } -\newcommand*{\@jmlr@reflistlastsep}{ and } -\newcommand*{\sectionrefname}{Section} -\newcommand*{\sectionsrefname}{Sections} -\newcommand*{\equationrefname}{Equation} -\newcommand*{\equationsrefname}{Equations} -\newcommand*{\tablerefname}{Table} -\newcommand*{\tablesrefname}{Tables} -\newcommand*{\figurerefname}{Figure} -\newcommand*{\figuresrefname}{Figures} -\newcommand*{\algorithmrefname}{Algorithm} -\newcommand*{\algorithmsrefname}{Algorithms} -\newcommand*{\theoremrefname}{Theorem} -\newcommand*{\theoremsrefname}{Theorems} -\newcommand*{\lemmarefname}{Lemma} -\newcommand*{\lemmasrefname}{Lemmas} -\newcommand*{\remarkrefname}{Remark} -\newcommand*{\remarksrefname}{Remarks} -\newcommand*{\corollaryrefname}{Corollary} -\newcommand*{\corollarysrefname}{Corollaries} -\newcommand*{\definitionrefname}{Definition} -\newcommand*{\definitionsrefname}{Definitions} -\newcommand*{\conjecturerefname}{Conjecture} -\newcommand*{\conjecturesrefname}{Conjectures} -\newcommand*{\axiomrefname}{Axiom} -\newcommand*{\axiomsrefname}{Axioms} -\newcommand*{\examplerefname}{Example} -\newcommand*{\examplesrefname}{Examples} -\newcommand*{\appendixrefname}{Appendix} -\newcommand*{\appendixsrefname}{Appendices} -\newcommand*{\partrefname}{Part} -\newcommand*{\partsrefname}{Parts} -% \end{macrocode} -%\begin{macro}{\objectref} -% Cross-reference a particular structural element. The first -% argument is the list of labels, the second argument is a -% control sequence containing the singular tag, the third -% argument a control sequence containing the plural tag, -% the fourth argument is text to go before the reference number, -% e.g.\ an opening bracket, and the fifth argument is text -% to go after the reference number, e.g.\ a closing bracket. -% \begin{macrocode} -\DeclareRobustCommand*{\objectref}[5]{% - \let\@objectname\@empty - \def\@objectref{}% - \let\@prevsep\@empty - \@for\@thislabel:=#1\do{% - \toks@{\@prevsep}% - \protected@edef\@objectref{\@objectref\the\toks@ - #4\ref{\@thislabel}#5}% - \ifx\@objectname\@empty - \let\@objectname#2% singular tag - \else - \let\@objectname#3% plural tag - \let\@prevsep\@jmlr@reflistsep - \fi - }% - \ifx\@objectname#3% plural tag - \let\@prevsep\@jmlr@reflistlastsep - \fi - \@objectname~\@objectref -} -% \end{macrocode} -%\end{macro} -%\begin{macro}{\sectionref} -% \begin{macrocode} -\newcommand*{\sectionref}[1]{% - \objectref{#1}{\sectionrefname}{\sectionsrefname}{}{}} -% \end{macrocode} -%\end{macro} -%\begin{macro}{\equationref} -% \begin{macrocode} -\newcommand*{\equationref}[1]{% - \objectref{#1}{\equationrefname}{\equationsrefname}()} -% \end{macrocode} -%\end{macro} -%\begin{macro}{\tableref} -% \begin{macrocode} -\newcommand*{\tableref}[1]{% - \objectref{#1}{\tablerefname}{\tablesrefname}{}{}} -% \end{macrocode} -%\end{macro} -%\begin{macro}{\figureref} -% \begin{macrocode} -\newcommand*{\figureref}[1]{% - \objectref{#1}{\figurerefname}{\figuresrefname}{}{}} -% \end{macrocode} -%\end{macro} -%\begin{macro}{\algorithmref} -% \begin{macrocode} -\newcommand*{\algorithmref}[1]{% - \objectref{#1}{\algorithmrefname}{\algorithmsrefname}{}{}} -% \end{macrocode} -%\end{macro} -%\begin{macro}{\theoremmref} -% \begin{macrocode} -\newcommand*{\theoremref}[1]{% - \objectref{#1}{\theoremrefname}{\theoremsrefname}{}{}} -% \end{macrocode} -%\end{macro} -%\begin{macro}{\lemmaref} -% \begin{macrocode} -\newcommand*{\lemmaref}[1]{% - \objectref{#1}{\lemmarefname}{\lemmasrefname}{}{}} -% \end{macrocode} -%\end{macro} -%\begin{macro}{\remarkref} -% \begin{macrocode} -\newcommand*{\remarkref}[1]{% - \objectref{#1}{\remarkrefname}{\remarksrefname}{}{}} -% \end{macrocode} -%\end{macro} -%\begin{macro}{\corollaryref} -% \begin{macrocode} -\newcommand*{\corollaryref}[1]{% - \objectref{#1}{\corollaryrefname}{\corollarysrefname}{}{}} -% \end{macrocode} -%\end{macro} -%\begin{macro}{\definitionref} -% \begin{macrocode} -\newcommand*{\definitionref}[1]{% - \objectref{#1}{\definitionrefname}{\definitionsrefname}{}{}} -% \end{macrocode} -%\end{macro} -%\begin{macro}{\conjectureref} -% \begin{macrocode} -\newcommand*{\conjectureref}[1]{% - \objectref{#1}{\conjecturerefname}{\conjecturesrefname}{}{}} -% \end{macrocode} -%\end{macro} -%\begin{macro}{\axiomref} -% \begin{macrocode} -\newcommand*{\axiomref}[1]{% - \objectref{#1}{\axiomrefname}{\axiomsrefname}{}{}} -% \end{macrocode} -%\end{macro} -%\begin{macro}{\exampleref} -% \begin{macrocode} -\newcommand*{\exampleref}[1]{% - \objectref{#1}{\examplerefname}{\examplesrefname}{}{}} -% \end{macrocode} -%\end{macro} -%\begin{macro}{\appendixref} -% \begin{macrocode} -\newcommand*{\appendixref}[1]{% - \objectref{#1}{\appendixrefname}{\appendixsrefname}{}{}} -% \end{macrocode} -%\end{macro} -%\begin{macro}{\partref} -% \begin{macrocode} -\newcommand*{\partref}[1]{% - \objectref{#1}{\partrefname}{\partsrefname}{}{}} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\floatconts} -% The first argument is the label, the second argument contains the -% caption (using \cs{caption}) and the third argument is the -% contents of the float -% \begin{macrocode} -\newcommand{\floatconts}[3]{% - \@ifundefined{\@captype conts}{\tableconts{#1}{#2}{#3}}% - {\csname\@captype conts\endcsname{#1}{#2}{#3}}% -} -% \end{macrocode} -%\end{macro} -%\begin{macro}{\tableconts} -% \begin{macrocode} -\newcommand{\tableconts}[3]{% - \iftablecaptiontop - #2\label{#1}\vskip\baselineskip - {\centering #3\par}% - \else - {\centering #3\par}% - \vskip\baselineskip - #2\label{#1}% - \fi -} -% \end{macrocode} -%\end{macro} -%\begin{macro}{\figureconts} -% \begin{macrocode} -\newcommand{\figureconts}[3]{% - {\centering #3\par}% - \vskip\baselineskip - #2\label{#1}% -} -% \end{macrocode} -%\end{macro} -%\begin{macro}{\algocfconts} -%\changes{1.09}{2010/12/01}{new} -% \begin{macrocode} -\newcommand{\algocfconts}[3]{% - \@algocf@pre@ruled - #2\label{#1}\kern2pt\hrule height.8pt depth0pt\kern2pt% - #3\@algocf@pre@ruled -} +\newcommand{\researchnote}[1]{\noindent {\LARGE\itshape Research Note} #1} % \end{macrocode} %\end{macro} % -%\begin{macro}{\includeteximage} -% Provide a command like \cs{includegraphics} that includes a -% file containing \LaTeX\ picture code (e.g.\ \sty{pgf}). -% \begin{macrocode} -\newcommand*{\includeteximage}[2][]{% - \def\Gin@req@sizes{% - \Gin@req@height\Gin@nat@height - \Gin@req@width\Gin@nat@width}% - \begingroup - \@tempswafalse - \let\input@path\Ginput@path - \toks@{\InputIfFileExists{#2}{}{\@warning{File `#1' not found}}}% - \setkeys{Gin}{#1}% - \Gin@esetsize - \the\toks@ - \endgroup -} -% \end{macrocode} -%\end{macro} +%Other macros now moved to \sty{jmlrutils}. % %\begin{macro}{\ifprint} % Provide command to check if this is the printed greyscale @@ -3157,29 +3998,6 @@ Keywords:} \ignorespaces}% \fi % \end{macrocode} % -% The \env{algorithm} environment should float like a figure or table. -% It should use the same counter as the \env{algorithm2e} environment. -%\changes{1.09}{2010/12/01}{caption set up so that it doesn't use a -%box} -% \begin{macrocode} -\newenvironment{algorithm}[1][htbp]% -{% - \begin{algocf}[#1]% - \renewcommand\@makecaption[2]{% - \hskip\AlCapHSkip - \parbox[t]{\hsize}{\algocf@captiontext{##1}{##2}}% - }% -}% -{% - \end{algocf}% -} -% \end{macrocode} -% -% Set the algorithm margin to zero. -% \begin{macrocode} -\setlength\algomargin{0pt} -% \end{macrocode} -% %\begin{macro}{\artappendix} % Switch to appendices in an article % \begin{macrocode} @@ -3212,530 +4030,6 @@ Keywords:} \ignorespaces}% % \end{macrocode} %\end{macro} % -%\subsection{Proofs and Theorems} -% This code is taken from jmlr2e.sty -%\begin{macro}{\BlackBox} -% End of proof marker -% \begin{macrocode} -\newcommand{\BlackBox}{\rule{1.5ex}{1.5ex}} -% \end{macrocode} -%\end{macro} -%\begin{macro}{\jmlrQED} -%\changes{1.21}{2015-02-24}{new} -% \begin{macrocode} -\newcommand*{\jmlrQED}{\hfill\BlackBox\\[2mm]} -% \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 this class, provide 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} -% -%\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 -% \begin{macrocode} -\renewcommand*{\vec}[1]{\boldsymbol{#1}} -% \end{macrocode} -%\end{macro} -% -%\begin{environment}{enumerate*} -% Define an enumerate style environment where the nested environments -% all use the same counter. It uses the enumi counter. -% \begin{macrocode} -\newenvironment{enumerate*}% -{% - \ifnum\@enumdepth=0\relax - \setcounter{enumi}{0}% - \fi - \ifnum\@enumdepth>\thr@@ - \@toodeep - \else - \advance\@enumdepth\@ne - \def\@enumctr{enumi}% - \list - {\labelenumi}% - {\@nmbrlisttrue\def\@listctr{enumi}% - \def\makelabel##1{\hss\llap{##1}}}% - \fi -}% -{\endlist} -% \end{macrocode} -%\end{environment} -% -%\begin{environment}{altdescription} -% Define a description like environment where the indent is -% computed from the widest label. The optional argument is -% the widest label. -% \begin{macrocode} -\newenvironment{altdescription}[1]% - {\list{}% - {% - \settowidth{\labelwidth}{\altdescriptionlabel{#1}}% - \setlength{\labelsep}{15pt}% - \setlength{\leftmargin}{2\labelsep}% - \addtolength{\leftmargin}{\labelwidth}% - \setlength{\rightmargin}{\labelsep}% - \let\makelabel\altdescriptionlabel - }% - }% - {\endlist} - -\newcommand*{\altdescriptionlabel}[1]{\normalfont\bfseries #1\hfill} -% \end{macrocode} -%\end{environment} -% -%\begin{macro}{\mailto} -% Syntax: \cs{mailto}\marg{address} -% \begin{macrocode} -\newcommand*{\mailto}[1]{\texttt{#1}} -% \end{macrocode} -%\end{macro} -% -% The \sty{subfig} package breaks jmlrbook.cls, so define \ics{subfig} -% here. (This is fairly primitive.) -%\begin{macro}{\c@subfigure} -% Define subfigure counter: -% \begin{macrocode} -\newcounter{subfigure} -\@addtoreset{subfigure}{figure} -% \end{macrocode} -%\end{macro} -%\begin{macro}{\thesubfigure} -% \begin{macrocode} -\renewcommand*{\thesubfigure}{\alph{subfigure}} -% \end{macrocode} -%\end{macro} -%\begin{macro}{\p@subfigure} -% \begin{macrocode} -\renewcommand*{\p@subfigure}{\expandafter\@p@subfigure} -\newcommand*{\@p@subfigure}[1]{% - \protect\@subfigurelabel{\thefigure}{\thesubfigure}% -} -% \end{macrocode} -%\end{macro} -%\begin{macro}{\@subfigurelabel} -% Define how label appears. -% \begin{macrocode} -\newcommand*\@subfigurelabel[2]{#1\subfigurelabel{#2}} -% \end{macrocode} -%\end{macro} -%\begin{macro}{\subfigref} -% Reference the sub-figure without including the figure number. -% \begin{macrocode} -\newcommand*\@subfigref[1]{% - {% - \def\@subfigurelabel##1##2{\subfigurelabel{##2}}% - \ref{#1}% - }% -} -\newcommand*{\subfigref}[1]{% - \let\@objectname\@empty - \def\@objectref{}% - \let\@prevsep\@empty - \@for\@thislabel:=#1\do{% - \toks@{\@prevsep}% - \protected@edef\@objectref{\@objectref\the\toks@ - \protect\@subfigref{\@thislabel}}% - \ifx\@objectname\@empty - \let\@objectname\@nil - \else - \let\@objectname\relax - \let\@prevsep\@jmlr@reflistsep - \fi - }% - \ifx\@objectname\relax - \let\@prevsep\@jmlr@reflistlastsep - \fi - \@objectref -} -% \end{macrocode} -%\end{macro} -%\begin{macro}{\subfigurelabel} -% \begin{macrocode} -\newcommand*{\subfigurelabel}[1]{(\emph{#1})} -% \end{macrocode} -%\end{macro} -% -%\begin{macro}{\@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} -% %\subsection{Compatibility with combine.cls} % % Define chapters to make this class play nicely with \cls{combine}. @@ -4384,7 +4678,7 @@ Keywords:} \ignorespaces}% % \end{macrocode} % Declare class: % \begin{macrocode} -\ProvidesClass{jmlrbook}[2017/03/09 v1.23 (NLCT) JMLR Book Style] +\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} diff --git a/Master/texmf-dist/source/latex/jmlr/jmlr.ins b/Master/texmf-dist/source/latex/jmlr/jmlr.ins index 4af6c73991a..0fff82ddfd0 100644 --- a/Master/texmf-dist/source/latex/jmlr/jmlr.ins +++ b/Master/texmf-dist/source/latex/jmlr/jmlr.ins @@ -1,4 +1,4 @@ -% jmlr.ins generated using makedtx version 1.1 2017/3/9 9:50 +% jmlr.ins generated using makedtx version 1.2 2017/8/1 16:57 \input docstrip \preamble @@ -8,7 +8,7 @@ This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3 - of this license of (at your option) any later version. + of this license or (at your option) any later version. The latest version of this license is in http://www.latex-project.org/lppl.txt and version 1.3 or later is part of all distributions of LaTeX @@ -18,13 +18,15 @@ The Current Maintainer of this work is Nicola Talbot. - This work consists of the files jmlr.dtx and jmlr.ins and the derived files jmlr.cls, jmlrbook.cls. + This work consists of the files jmlr.dtx and jmlr.ins and the derived files jmlrutils.sty, jmlr.cls, jmlrbook.cls. \endpreamble \askforoverwritefalse -\generate{\file{jmlr.cls}{\usepreamble\defaultpreamble +\generate{\file{jmlrutils.sty}{\usepreamble\defaultpreamble +\usepostamble\defaultpostamble\from{jmlr.dtx}{jmlrutils.sty,package}} +\file{jmlr.cls}{\usepreamble\defaultpreamble \usepostamble\defaultpostamble\from{jmlr.dtx}{jmlr.cls,package}} \file{jmlrbook.cls}{\usepreamble\defaultpreamble \usepostamble\defaultpostamble\from{jmlr.dtx}{jmlrbook.cls,package}} diff --git a/Master/texmf-dist/tex/latex/jmlr/jmlr.cls b/Master/texmf-dist/tex/latex/jmlr/jmlr.cls index 0576e3a24d3..9dab2b8fe3e 100644 --- a/Master/texmf-dist/tex/latex/jmlr/jmlr.cls +++ b/Master/texmf-dist/tex/latex/jmlr/jmlr.cls @@ -11,7 +11,7 @@ %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 -%% of this license of (at your option) any later version. +%% of this license or (at your option) any later version. %% The latest version of this license is in %% http://www.latex-project.org/lppl.txt %% and version 1.3 or later is part of all distributions of LaTeX @@ -21,7 +21,7 @@ %% %% The Current Maintainer of this work is Nicola Talbot. %% -%% This work consists of the files jmlr.dtx and jmlr.ins and the derived files jmlr.cls, jmlrbook.cls. +%% This work consists of the files jmlr.dtx and jmlr.ins and the derived files jmlrutils.sty, jmlr.cls, jmlrbook.cls. %% %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -41,7 +41,7 @@ %% First editor: %% Second editor: \NeedsTeXFormat{LaTeX2e} -\ProvidesClass{jmlr}[2017/03/09 v1.23 (NLCT) Journal of Machine Learning Research] +\ProvidesClass{jmlr}[2017/08/01 v1.24 (NLCT) Journal of Machine Learning Research] \RequirePackage{xkeyval} \RequirePackage{calc} \RequirePackage{etoolbox} @@ -60,9 +60,18 @@ \DeclareOptionX{final}{\setlength\overfullrule{0pt}} \newif\iftablecaptiontop \tablecaptiontoptrue +\newcommand{\tableconts}[3]{% + \iftablecaptiontop + #2\label{#1}\vskip\baselineskip + {\centering #3\par}% + \else + {\centering #3\par}% + \vskip\baselineskip + #2\label{#1}% + \fi +} \DeclareOptionX{tablecaptiontop}{\tablecaptiontoptrue} \DeclareOptionX{tablecaptionbottom}{\tablecaptiontopfalse} - \define@choicekey{jmlr.cls}{tablecaption}[\val\nr]{top,bottom}{% \ifcase\nr\relax \tablecaptiontoptrue @@ -72,7 +81,9 @@ } \newif\ifjmlrhtml \jmlrhtmlfalse -\DeclareOptionX{html}{\jmlrhtmltrue} +\DeclareOptionX{html}{% + \ClassWarning{jmlr}{html option is now deprecated}% + \jmlrhtmltrue} \DeclareOptionX{nohtml}{\jmlrhtmlfalse} \def\pt@size{11pt} \DeclareOptionX{10pt}{\renewcommand{\pt@size}{10pt}} @@ -134,8 +145,12 @@ \RequirePackage{natbib} \RequirePackage{graphicx} \RequirePackage{url} -\RequirePackage[x11names]{xcolor} -\RequirePackage[algo2e,ruled]{algorithm2e} +\PassOptionsToPackage{x11names}{xcolor} +\RequirePackage{xcolor} +\PassOptionsToPackage{algo2e,ruled}{algorithm2e} +\RequirePackage{algorithm2e} +\setlength\algomargin{0pt} +\RequirePackage{jmlrutils} \jmlrprehyperref \@ifundefined{@pre@hyperref}{}{\@pre@hyperref} \RequirePackage{hyperref} @@ -570,128 +585,8 @@ Keywords:} \ignorespaces}% \fi} \def\abovestrut#1{\rule[0in]{0in}{#1}\ignorespaces} \def\belowstrut#1{\rule[-#1]{0in}{#1}\ignorespaces} -\long\def\acks#1{\section*{Acknowledgments}#1} -\long\def\researchnote#1{\noindent {\LARGE\itshape Research Note} #1} -\newcommand*{\set}[1]{\ensuremath{\mathcal{#1}}} -\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} -\DeclareRobustCommand*{\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 -} -\newcommand*{\sectionref}[1]{% - \objectref{#1}{\sectionrefname}{\sectionsrefname}{}{}} -\newcommand*{\equationref}[1]{% - \objectref{#1}{\equationrefname}{\equationsrefname}()} -\newcommand*{\tableref}[1]{% - \objectref{#1}{\tablerefname}{\tablesrefname}{}{}} -\newcommand*{\figureref}[1]{% - \objectref{#1}{\figurerefname}{\figuresrefname}{}{}} -\newcommand*{\algorithmref}[1]{% - \objectref{#1}{\algorithmrefname}{\algorithmsrefname}{}{}} -\newcommand*{\theoremref}[1]{% - \objectref{#1}{\theoremrefname}{\theoremsrefname}{}{}} -\newcommand*{\lemmaref}[1]{% - \objectref{#1}{\lemmarefname}{\lemmasrefname}{}{}} -\newcommand*{\remarkref}[1]{% - \objectref{#1}{\remarkrefname}{\remarksrefname}{}{}} -\newcommand*{\corollaryref}[1]{% - \objectref{#1}{\corollaryrefname}{\corollarysrefname}{}{}} -\newcommand*{\definitionref}[1]{% - \objectref{#1}{\definitionrefname}{\definitionsrefname}{}{}} -\newcommand*{\conjectureref}[1]{% - \objectref{#1}{\conjecturerefname}{\conjecturesrefname}{}{}} -\newcommand*{\axiomref}[1]{% - \objectref{#1}{\axiomrefname}{\axiomsrefname}{}{}} -\newcommand*{\exampleref}[1]{% - \objectref{#1}{\examplerefname}{\examplesrefname}{}{}} -\newcommand*{\appendixref}[1]{% - \objectref{#1}{\appendixrefname}{\appendixsrefname}{}{}} -\newcommand*{\partref}[1]{% - \objectref{#1}{\partrefname}{\partsrefname}{}{}} -\newcommand{\floatconts}[3]{% - \@ifundefined{\@captype conts}{\tableconts{#1}{#2}{#3}}% - {\csname\@captype conts\endcsname{#1}{#2}{#3}}% -} -\newcommand{\tableconts}[3]{% - \iftablecaptiontop - #2\label{#1}\vskip\baselineskip - {\centering #3\par}% - \else - {\centering #3\par}% - \vskip\baselineskip - #2\label{#1}% - \fi -} -\newcommand{\figureconts}[3]{% - {\centering #3\par}% - \vskip\baselineskip - #2\label{#1}% -} -\newcommand{\algocfconts}[3]{% - \@algocf@pre@ruled - #2\label{#1}\kern2pt\hrule height.8pt depth0pt\kern2pt% - #3\@algocf@pre@ruled -} -\newcommand*{\includeteximage}[2][]{% - \def\Gin@req@sizes{% - \Gin@req@height\Gin@nat@height - \Gin@req@width\Gin@nat@width}% - \begingroup - \@tempswafalse - \let\input@path\Ginput@path - \toks@{\InputIfFileExists{#2}{}{\@warning{File `#1' not found}}}% - \setkeys{Gin}{#1}% - \Gin@esetsize - \the\toks@ - \endgroup -} +\newcommand{\acks}[1]{\section*{Acknowledgments}#1} +\newcommand{\researchnote}[1]{\noindent {\LARGE\itshape Research Note} #1} \providecommand{\ifprint}[2]{\ifgrayscale#1\else#2\fi} %% \begin{macrocode} \ifjmlrhtml @@ -734,18 +629,6 @@ Keywords:} \ignorespaces}% \fi \endgroup} \fi -\newenvironment{algorithm}[1][htbp]% -{% - \begin{algocf}[#1]% - \renewcommand\@makecaption[2]{% - \hskip\AlCapHSkip - \parbox[t]{\hsize}{\algocf@captiontext{##1}{##2}}% - }% -}% -{% - \end{algocf}% -} -\setlength\algomargin{0pt} \newcommand{\artappendix}{\par \setcounter{section}{0} \setcounter{subsection}{0} @@ -755,280 +638,6 @@ Keywords:} \ignorespaces}% } \let\appendix\artappendix \newcommand{\booklinebreak}[1][]{} -\newcommand{\BlackBox}{\rule{1.5ex}{1.5ex}} -\newcommand*{\jmlrQED}{\hfill\BlackBox\\[2mm]} -\newenvironment{proof}% -{% - \par\noindent{\bfseries\upshape Proof\ }% -}% -{\jmlrQED} -\newcommand*{\theorembodyfont}[1]{% - \renewcommand*{\@theorembodyfont}{#1}% -} -\newcommand*{\@theorembodyfont}{\normalfont\itshape}% -\newcommand*{\theoremheaderfont}[1]{% - \renewcommand*{\@theoremheaderfont}{#1}% -} -\newcommand*{\@theoremheaderfont}{\normalfont\bfseries }% -\newcommand*{\theoremsep}[1]{% - \renewcommand*{\@theoremsep}{#1}% -} -\newcommand*{\@theoremsep}{}% -\newcommand*{\theorempostheader}[1]{% - \renewcommand*{\@theorempostheader}{#1}% -} -\newcommand*{\@theorempostheader}{}% -\let\jmlr@org@newtheorem\newtheorem -\renewcommand*{\newtheorem}{\@ifstar\jmlr@snewtheorem\jmlr@newtheorem} -\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 - }% -} -\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}% -} -\renewcommand*{\@xthm}[2]{% - \def\@jmlr@currentthm{#1}% - \@begintheorem{#2}{\csname the#1\endcsname}% - \ignorespaces -} -\def\@ythm#1#2[#3]{% - \def\@jmlr@currentthm{#1}% - \@opargbegintheorem{#2}{\csname the#1\endcsname}{#3}% - \ignorespaces -} -\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 -} -\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 -} -\newtheorem{example}{Example} -\newtheorem{theorem}{Theorem} -\newtheorem{lemma}[theorem]{Lemma} -\newtheorem{proposition}[theorem]{Proposition} -\newtheorem{remark}[theorem]{Remark} -\newtheorem{corollary}[theorem]{Corollary} -\newtheorem{definition}[theorem]{Definition} -\newtheorem{conjecture}[theorem]{Conjecture} -\newtheorem{axiom}[theorem]{Axiom} -\let\orgvec\vec -\renewcommand*{\vec}[1]{\boldsymbol{#1}} -\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} -\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} -\newcommand*{\mailto}[1]{\texttt{#1}} -\newcounter{subfigure} -\@addtoreset{subfigure}{figure} -\renewcommand*{\thesubfigure}{\alph{subfigure}} -\renewcommand*{\p@subfigure}{\expandafter\@p@subfigure} -\newcommand*{\@p@subfigure}[1]{% - \protect\@subfigurelabel{\thefigure}{\thesubfigure}% -} -\newcommand*\@subfigurelabel[2]{#1\subfigurelabel{#2}} -\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 -} -\newcommand*{\subfigurelabel}[1]{(\emph{#1})} -\newsavebox\@subfloatcapbox -\newsavebox\@subfloatcontsbox -\newcommand*{\subfigure}[1][]{% - \bgroup - \def\@subfigcap{#1}% - \@subfigure -} -\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 -} -\newcounter{subtable} -\@addtoreset{subtable}{table} -\renewcommand*{\thesubtable}{\alph{subtable}} -\renewcommand*{\p@subtable}{\expandafter\@p@subtable} -\newcommand*{\@p@subtable}[1]{% - \protect\@subtablelabel{\thetable}{\thesubtable}% -} -\newcommand*\@subtablelabel[2]{#1\subtablelabel{#2}} -\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 -} -\newcommand*{\subtablelabel}[1]{(\emph{#1})} -\newcommand*{\subtable}[1][]{% - \def\@subtabcap{#1}% - \@subtable -} -\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} -} \newcounter{chapter} \renewcommand\thechapter{\@arabic\c@chapter} \newcommand\@chapapp{\chaptername} diff --git a/Master/texmf-dist/tex/latex/jmlr/jmlrbook.cls b/Master/texmf-dist/tex/latex/jmlr/jmlrbook.cls index b74c1ab12ff..71423d3b34a 100644 --- a/Master/texmf-dist/tex/latex/jmlr/jmlrbook.cls +++ b/Master/texmf-dist/tex/latex/jmlr/jmlrbook.cls @@ -11,7 +11,7 @@ %% %% This work may be distributed and/or modified under the %% conditions of the LaTeX Project Public License, either version 1.3 -%% of this license of (at your option) any later version. +%% of this license or (at your option) any later version. %% The latest version of this license is in %% http://www.latex-project.org/lppl.txt %% and version 1.3 or later is part of all distributions of LaTeX @@ -21,7 +21,7 @@ %% %% The Current Maintainer of this work is Nicola Talbot. %% -%% This work consists of the files jmlr.dtx and jmlr.ins and the derived files jmlr.cls, jmlrbook.cls. +%% This work consists of the files jmlr.dtx and jmlr.ins and the derived files jmlrutils.sty, jmlr.cls, jmlrbook.cls. %% %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z @@ -41,7 +41,7 @@ %% First editor: %% Second editor: \NeedsTeXFormat{LaTeX2e} -\ProvidesClass{jmlrbook}[2017/03/09 v1.23 (NLCT) JMLR Book Style] +\ProvidesClass{jmlrbook}[2017/08/01 v1.24 (NLCT) JMLR Book Style] \RequirePackage{xkeyval} \RequirePackage{setspace} \newcommand*\jmlrprefacepath{} diff --git a/Master/texmf-dist/tex/latex/jmlr/jmlrutils.sty b/Master/texmf-dist/tex/latex/jmlr/jmlrutils.sty new file mode 100644 index 00000000000..8c6d6209bf2 --- /dev/null +++ b/Master/texmf-dist/tex/latex/jmlr/jmlrutils.sty @@ -0,0 +1,495 @@ +%% +%% This is file `jmlrutils.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% jmlr.dtx (with options: `jmlrutils.sty,package') +%% +%% jmlr.dtx +%% Copyright 2017 Nicola Talbot +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `maintained'. +%% +%% The Current Maintainer of this work is Nicola Talbot. +%% +%% This work consists of the files jmlr.dtx and jmlr.ins and the derived files jmlrutils.sty, jmlr.cls, jmlrbook.cls. +%% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +%% First editor: +%% Second editor: +\ProvidesPackage{jmlrutils}[2017/08/01] +\newif\ifjmlrutilsmaths +\jmlrutilsmathstrue +\DeclareOption{maths}{\jmlrutilsmathstrue} +\DeclareOption{nomaths}{\jmlrutilsmathsfalse} +\newif\ifjmlrutilstheorems +\jmlrutilstheoremstrue +\DeclareOption{theorems}{\jmlrutilstheoremstrue} +\DeclareOption{notheorems}{\jmlrutilstheoremsfalse} +\newif\ifjmlrutilssubfloats +\jmlrutilssubfloatstrue +\DeclareOption{subfloats}{\jmlrutilssubfloatstrue} +\DeclareOption{nosubfloats}{\jmlrutilssubfloatsfalse} +\ProcessOptions +\RequirePackage{etoolbox} +\ifjmlrutilsmaths + \RequirePackage{amsmath} +\fi +\@ifundefined{iftablecaptiontop} +{\newif\iftablecaptiontop +\tablecaptiontoptrue} +{} +\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} +\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 +} +\newcommand*{\sectionref}[1]{% + \objectref{#1}{\sectionrefname}{\sectionsrefname}{}{}} +\newcommand*{\equationref}[1]{% + \objectref{#1}{\equationrefname}{\equationsrefname}()} +\newcommand*{\tableref}[1]{% + \objectref{#1}{\tablerefname}{\tablesrefname}{}{}} +\newcommand*{\figureref}[1]{% + \objectref{#1}{\figurerefname}{\figuresrefname}{}{}} +\newcommand*{\algorithmref}[1]{% + \objectref{#1}{\algorithmrefname}{\algorithmsrefname}{}{}} +\newcommand*{\theoremref}[1]{% + \objectref{#1}{\theoremrefname}{\theoremsrefname}{}{}} +\newcommand*{\lemmaref}[1]{% + \objectref{#1}{\lemmarefname}{\lemmasrefname}{}{}} +\newcommand*{\remarkref}[1]{% + \objectref{#1}{\remarkrefname}{\remarksrefname}{}{}} +\newcommand*{\corollaryref}[1]{% + \objectref{#1}{\corollaryrefname}{\corollarysrefname}{}{}} +\newcommand*{\definitionref}[1]{% + \objectref{#1}{\definitionrefname}{\definitionsrefname}{}{}} +\newcommand*{\conjectureref}[1]{% + \objectref{#1}{\conjecturerefname}{\conjecturesrefname}{}{}} +\newcommand*{\axiomref}[1]{% + \objectref{#1}{\axiomrefname}{\axiomsrefname}{}{}} +\newcommand*{\exampleref}[1]{% + \objectref{#1}{\examplerefname}{\examplesrefname}{}{}} +\newcommand*{\appendixref}[1]{% + \objectref{#1}{\appendixrefname}{\appendixsrefname}{}{}} +\newcommand*{\partref}[1]{% + \objectref{#1}{\partrefname}{\partsrefname}{}{}} +\newcommand{\floatconts}[3]{% + \@ifundefined{\@captype conts}{\tableconts{#1}{#2}{#3}}% + {\csname\@captype conts\endcsname{#1}{#2}{#3}}% +} +\providecommand{\tableconts}[3]{% + #2\label{#1}\vskip\baselineskip + {\centering #3\par}% +} +\newcommand{\figureconts}[3]{% + {\centering #3\par}% + \vskip\baselineskip + #2\label{#1}% +} +\newcommand{\algocfconts}[3]{% + \@algocf@pre@ruled + #2\label{#1}\kern2pt\hrule height.8pt depth0pt\kern2pt% + #3\@algocf@pre@ruled +} +\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}% +} +\AtBeginDocument{% + \@ifpackageloaded{graphicx}% + {\let\@jmlr@ifgraphicxloaded\@firstoftwo}% + {\let\@jmlr@ifgraphicxloaded\@secondoftwo}% +} +\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}{}}% +} +\ifjmlrutilssubfloats + \newcounter{subfigure} + \@addtoreset{subfigure}{figure} + \renewcommand*{\thesubfigure}{\alph{subfigure}} + \renewcommand*{\p@subfigure}{\expandafter\@p@subfigure} + \newcommand*{\@p@subfigure}[1]{% + \protect\@subfigurelabel{\thefigure}{\thesubfigure}% + } + \newcommand*\@subfigurelabel[2]{#1\subfigurelabel{#2}} + \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 + } + \newcommand*{\subfigurelabel}[1]{(\emph{#1})} + \newsavebox\@subfloatcapbox + \newsavebox\@subfloatcontsbox + \newcommand*{\subfigure}[1][]{% + \bgroup + \def\@subfigcap{#1}% + \@subfigure + } + \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 + } + \newcounter{subtable} + \@addtoreset{subtable}{table} + \renewcommand*{\thesubtable}{\alph{subtable}} + \renewcommand*{\p@subtable}{\expandafter\@p@subtable} + \newcommand*{\@p@subtable}[1]{% + \protect\@subtablelabel{\thetable}{\thesubtable}% + } + \newcommand*\@subtablelabel[2]{#1\subtablelabel{#2}} + \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 + } + \newcommand*{\subtablelabel}[1]{(\emph{#1})} + \newcommand*{\subtable}[1][]{% + \def\@subtabcap{#1}% + \@subtable + } + \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} + } +\fi +\ifjmlrutilsmaths + \newcommand*{\set}[1]{\ensuremath{\mathcal{#1}}} + \let\orgvec\vec + \renewcommand*{\vec}[1]{\boldsymbol{#1}} +\fi +\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} +\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} +\newcommand*{\mailto}[1]{\texttt{#1}} +\ifjmlrutilstheorems + \newcommand{\jmlrBlackBox}{\rule{1.5ex}{1.5ex}} + \providecommand{\BlackBox}{\jmlrBlackBox} + \newcommand{\jmlrQED}{\hfill\jmlrBlackBox\par\bigskip} + \newenvironment{proof}% + {% + \par\noindent{\bfseries\upshape Proof\ }% + }% + {\jmlrQED} + \newcommand*{\theorembodyfont}[1]{% + \renewcommand*{\@theorembodyfont}{#1}% + } + \newcommand*{\@theorembodyfont}{\normalfont\itshape}% + \newcommand*{\theoremheaderfont}[1]{% + \renewcommand*{\@theoremheaderfont}{#1}% + } + \newcommand*{\@theoremheaderfont}{\normalfont\bfseries }% + \newcommand*{\theoremsep}[1]{% + \renewcommand*{\@theoremsep}{#1}% + } + \newcommand*{\@theoremsep}{}% + \newcommand*{\theorempostheader}[1]{% + \renewcommand*{\@theorempostheader}{#1}% + } + \newcommand*{\@theorempostheader}{}% + \let\jmlr@org@newtheorem\newtheorem + \renewcommand*{\newtheorem}{\@ifstar\jmlr@snewtheorem\jmlr@newtheorem} + \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 + }% + } + \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}% + } + \renewcommand*{\@xthm}[2]{% + \def\@jmlr@currentthm{#1}% + \@begintheorem{#2}{\csname the#1\endcsname}% + \ignorespaces + } + \def\@ythm#1#2[#3]{% + \def\@jmlr@currentthm{#1}% + \@opargbegintheorem{#2}{\csname the#1\endcsname}{#3}% + \ignorespaces + } + \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 + } + \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 + } + \newtheorem{example}{Example} + \newtheorem{theorem}{Theorem} + \newtheorem{lemma}[theorem]{Lemma} + \newtheorem{proposition}[theorem]{Proposition} + \newtheorem{remark}[theorem]{Remark} + \newtheorem{corollary}[theorem]{Corollary} + \newtheorem{definition}[theorem]{Definition} + \newtheorem{conjecture}[theorem]{Conjecture} + \newtheorem{axiom}[theorem]{Axiom} +\fi +\endinput +%% +%% End of file `jmlrutils.sty'. |