2
0
Fork 0
CVE/LaTeX/jss.cls

491 lines
15 KiB
TeX

%%
%% This is file `jss.cls'
\def\fileversion{3.2}
\def\filename{jss}
\def\filedate{2020/12/09}
%%
%% Package `jss' to use with LaTeX2e for JSS publications (http://www.jstatsoft.org/)
%% License: GPL-2 | GPL-3
%% Copyright: (C) Achim Zeileis
%% Please report errors to Achim.Zeileis@R-project.org
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{jss}[\filedate\space\fileversion\space jss class by Achim Zeileis]
%% options
\newif\if@article
\newif\if@codesnippet
\newif\if@bookreview
\newif\if@softwarereview
\newif\if@review
\newif\if@shortnames
\newif\if@nojss
\newif\if@notitle
\newif\if@noheadings
\newif\if@nofooter
\@articletrue
\@codesnippetfalse
\@bookreviewfalse
\@softwarereviewfalse
\@reviewfalse
\@shortnamesfalse
\@nojssfalse
\@notitlefalse
\@noheadingsfalse
\@nofooterfalse
\DeclareOption{article}{\@articletrue%
\@codesnippetfalse \@bookreviewfalse \@softwarereviewfalse}
\DeclareOption{codesnippet}{\@articlefalse%
\@codesnippettrue \@bookreviewfalse \@softwarereviewfalse}
\DeclareOption{bookreview}{\@articlefalse%
\@codesnippetfalse \@bookreviewtrue \@softwarereviewfalse}
\DeclareOption{softwarereview}{\@articlefalse%
\@codesnippetfalse \@bookreviewfalse \@softwarereviewtrue}
\DeclareOption{shortnames}{\@shortnamestrue}
\DeclareOption{nojss}{\@nojsstrue}
\DeclareOption{notitle}{\@notitletrue}
\DeclareOption{noheadings}{\@noheadingstrue}
\DeclareOption{nofooter}{\@nofootertrue}
\ProcessOptions
\LoadClass[11pt,a4paper,twoside]{article}
%% required packages
\RequirePackage{graphicx,color,ae,fancyvrb}
\RequirePackage[T1]{fontenc}
\IfFileExists{upquote.sty}{\RequirePackage{upquote}}{}
\IfFileExists{lmodern.sty}{\RequirePackage{lmodern}}{}
%% bibliography
\if@shortnames
\usepackage[authoryear,round]{natbib}
\else
\usepackage[authoryear,round,longnamesfirst]{natbib}
\fi
\bibpunct{(}{)}{;}{a}{}{,}
\bibliographystyle{jss}
%% page layout
\topmargin 0pt
\textheight 46\baselineskip
\advance\textheight by \topskip
\oddsidemargin 0.1in
\evensidemargin 0.15in
\marginparwidth 1in
\oddsidemargin 0.125in
\evensidemargin 0.125in
\marginparwidth 0.75in
\textwidth 6.125in
%% paragraphs
\setlength{\parskip}{0.7ex plus0.1ex minus0.1ex}
\setlength{\parindent}{0em}
%% for all publications
\newcommand{\Address}[1]{\def\@Address{#1}}
\newcommand{\Plaintitle}[1]{\def\@Plaintitle{#1}}
\newcommand{\Shorttitle}[1]{\def\@Shorttitle{#1}}
\newcommand{\Plainauthor}[1]{\def\@Plainauthor{#1}}
\newcommand{\Volume}[1]{\def\@Volume{#1}}
\newcommand{\Year}[1]{\def\@Year{#1}}
\newcommand{\Month}[1]{\def\@Month{#1}}
\newcommand{\Issue}[1]{\def\@Issue{#1}}
\newcommand{\Submitdate}[1]{\def\@Submitdate{#1}}
%% for articles and code snippets
\newcommand{\Acceptdate}[1]{\def\@Acceptdate{#1}}
\newcommand{\Abstract}[1]{\def\@Abstract{#1}}
\newcommand{\Keywords}[1]{\def\@Keywords{#1}}
\newcommand{\Plainkeywords}[1]{\def\@Plainkeywords{#1}}
%% for book and software reviews
\newcommand{\Reviewer}[1]{\def\@Reviewer{#1}}
\newcommand{\Booktitle}[1]{\def\@Booktitle{#1}}
\newcommand{\Bookauthor}[1]{\def\@Bookauthor{#1}}
\newcommand{\Publisher}[1]{\def\@Publisher{#1}}
\newcommand{\Pubaddress}[1]{\def\@Pubaddress{#1}}
\newcommand{\Pubyear}[1]{\def\@Pubyear{#1}}
\newcommand{\ISBN}[1]{\def\@ISBN{#1}}
\newcommand{\Pages}[1]{\def\@Pages{#1}}
\newcommand{\Price}[1]{\def\@Price{#1}}
\newcommand{\Plainreviewer}[1]{\def\@Plainreviewer{#1}}
\newcommand{\Softwaretitle}[1]{\def\@Softwaretitle{#1}}
\newcommand{\URL}[1]{\def\@URL{#1}}
\newcommand{\DOI}[1]{\def\@DOI{#1}}
%% for internal use
\newcommand{\Seriesname}[1]{\def\@Seriesname{#1}}
\newcommand{\Hypersubject}[1]{\def\@Hypersubject{#1}}
\newcommand{\Hyperauthor}[1]{\def\@Hyperauthor{#1}}
\newcommand{\Footername}[1]{\def\@Footername{#1}}
\newcommand{\Firstdate}[1]{\def\@Firstdate{#1}}
\newcommand{\Seconddate}[1]{\def\@Seconddate{#1}}
\newcommand{\Reviewauthor}[1]{\def\@Reviewauthor{#1}}
%% defaults
\author{Firstname Lastname\\Affiliation}
\title{Title}
\Abstract{---!!!---an abstract is required---!!!---}
\Plainauthor{\@author}
\Volume{VV}
\Year{YYYY}
\Month{MMMMMM}
\Issue{II}
\Submitdate{yyyy-mm-dd}
\Acceptdate{yyyy-mm-dd}
\Address{
Firstname Lastname\\
Affiliation\\
Address, Country\\
E-mail: \email{name@address}\\
URL: \url{http://link/to/webpage/}
}
\Reviewer{Firstname Lastname\\Affiliation}
\Plainreviewer{Firstname Lastname}
\Booktitle{Book Title}
\Bookauthor{Book Author}
\Publisher{Publisher}
\Pubaddress{Publisher's Address}
\Pubyear{YYY}
\ISBN{x-xxxxx-xxx-x}
\Pages{xv + 123}
\Price{USD 69.95 (P)}
\URL{http://link/to/webpage/}
\DOI{10.18637/jss.v000.i00}
\if@article
\Seriesname{Issue}
\Hypersubject{Journal of Statistical Software}
\Plaintitle{\@title}
\Shorttitle{\@title}
\Plainkeywords{\@Keywords}
\fi
\if@codesnippet
\Seriesname{Code Snippet}
\Hypersubject{Journal of Statistical Software -- Code Snippets}
\Plaintitle{\@title}
\Shorttitle{\@title}
\Plainkeywords{\@Keywords}
\fi
\if@bookreview
\Seriesname{Book Review}
\Hypersubject{Journal of Statistical Software -- Book Reviews}
\Plaintitle{\@Booktitle}
\Shorttitle{\@Booktitle}
\Reviewauthor{\@Bookauthor\\
\@Publisher, \@Pubaddress, \@Pubyear.\\
ISBN~\@ISBN. \@Pages~pp. \@Price.\\
\url{\@URL}}
\Plainkeywords{}
\@reviewtrue
\fi
\if@softwarereview
\Seriesname{Software Review}
\Hypersubject{Journal of Statistical Software -- Software Reviews}
\Plaintitle{\@Softwaretitle}
\Shorttitle{\@Softwaretitle}
\Booktitle{\@Softwaretitle}
\Reviewauthor{\@Publisher, \@Pubaddress. \@Price.\\
\url{\@URL}}
\Plainkeywords{}
\@reviewtrue
\fi
\if@review
\Hyperauthor{\@Plainreviewer}
\Keywords{}
\Footername{Reviewer}
\Firstdate{\textit{Published:} \@Submitdate}
\Seconddate{}
\else
\Hyperauthor{\@Plainauthor}
\Keywords{---!!!---at least one keyword is required---!!!---}
\Footername{Affiliation}
\Firstdate{\textit{Submitted:} \@Submitdate}
\Seconddate{\textit{Accepted:} \@Acceptdate}
\fi
%% Sweave(-like)
\DefineVerbatimEnvironment{Sinput}{Verbatim}{fontshape=sl}
\DefineVerbatimEnvironment{Soutput}{Verbatim}{}
\DefineVerbatimEnvironment{Scode}{Verbatim}{fontshape=sl}
\newenvironment{Schunk}{}{}
\DefineVerbatimEnvironment{Code}{Verbatim}{}
\DefineVerbatimEnvironment{CodeInput}{Verbatim}{fontshape=sl}
\DefineVerbatimEnvironment{CodeOutput}{Verbatim}{}
\newenvironment{CodeChunk}{}{}
\setkeys{Gin}{width=0.8\textwidth}
%% footer
\newlength{\footerskip}
\setlength{\footerskip}{2.5\baselineskip plus 2ex minus 0.5ex}
\newcommand{\makefooter}{%
\vspace{\footerskip}
\if@nojss
\begin{samepage}
\textbf{\large \@Footername: \nopagebreak}\\[.3\baselineskip] \nopagebreak
\@Address \nopagebreak
\end{samepage}
\else
\begin{samepage}
\textbf{\large \@Footername: \nopagebreak}\\[.3\baselineskip] \nopagebreak
\@Address \nopagebreak
\vfill
\hrule \nopagebreak
\vspace{.1\baselineskip}
{\fontfamily{pzc} \fontsize{13}{15} \selectfont Journal of Statistical Software}
\hfill
\url{http://www.jstatsoft.org/}\\ \nopagebreak
published by the Foundation for Open Access Statistics
\hfill
\url{http://www.foastat.org/}\\[.3\baselineskip] \nopagebreak
{\@Month{} \@Year, Volume~\@Volume, \@Seriesname~\@Issue}
\hfill
\@Firstdate\\ \nopagebreak
{\href{https://doi.org/\@DOI}{\tt doi:\@DOI}}
\hfill
\@Seconddate \nopagebreak
\vspace{.3\baselineskip}
\hrule
\end{samepage}
\fi
}
\if@nofooter
%% \AtEndDocument{\makefooter}
\else
\AtEndDocument{\makefooter}
\fi
%% required packages
\RequirePackage{hyperref}
%% new \maketitle
\def\@myoddhead{
{\color{white} JSS}\\[-1.42cm]
\hspace{-2em} \includegraphics[height=23mm,keepaspectratio]{jsslogo} \hfill
\parbox[b][23mm]{118mm}{\hrule height 3pt
\center{
{\fontfamily{pzc} \fontsize{28}{32} \selectfont Journal of Statistical Software}
\vfill
{\it \small \@Month{} \@Year, Volume~\@Volume, \@Seriesname~\@Issue.%
\hfill \href{https://doi.org/\@DOI}{doi:\,\@DOI}}}\\[0.1cm]
\hrule height 3pt}}
\if@review
\renewcommand{\maketitle}{
\if@nojss
%% \@oddhead{\@myoddhead}\\[3\baselineskip]
\else
\@oddhead{\@myoddhead}\\[3\baselineskip]
\fi
{\large
\noindent
Reviewer: \@Reviewer
\vspace{\baselineskip}
\hrule
\vspace{\baselineskip}
\textbf{\@Booktitle}
\begin{quotation} \noindent
\@Reviewauthor
\end{quotation}
\vspace{0.7\baselineskip}
\hrule
\vspace{1.3\baselineskip}
}
\thispagestyle{empty}
\if@nojss
\markboth{\centerline{\@Shorttitle}}{\centerline{\@Hyperauthor}}
\else
\markboth{\centerline{\@Shorttitle}}{\centerline{\@Hypersubject}}
\fi
\pagestyle{myheadings}
}
\else
\def\maketitle{
\if@nojss
%% \@oddhead{\@myoddhead} \par
\else
\@oddhead{\@myoddhead} \par
\fi
\begingroup
\def\thefootnote{\fnsymbol{footnote}}
\def\@makefnmark{\hbox to 0pt{$^{\@thefnmark}$\hss}}
\long\def\@makefntext##1{\parindent 1em\noindent
\hbox to1.8em{\hss $\m@th ^{\@thefnmark}$}##1}
\@maketitle \@thanks
\endgroup
\setcounter{footnote}{0}
\if@noheadings
%% \markboth{\centerline{\@Shorttitle}}{\centerline{\@Hypersubject}}
\else
\thispagestyle{empty}
\if@nojss
\markboth{\centerline{\@Shorttitle}}{\centerline{\@Hyperauthor}}
\else
\markboth{\centerline{\@Shorttitle}}{\centerline{\@Hypersubject}}
\fi
\pagestyle{myheadings}
\fi
\let\maketitle\relax \let\@maketitle\relax
\gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax
}
\def\@maketitle{\vbox{\hsize\textwidth \linewidth\hsize
\if@nojss
%% \vskip 1in
\else
\vskip 1in
\fi
{\centering
{\LARGE\bf \@title\par}
\vskip 0.2in plus 1fil minus 0.1in
{
\def\and{\unskip\enspace{\rm and}\enspace}%
\def\And{\end{tabular}\hss \egroup \hskip 1in plus 2fil
\hbox to 0pt\bgroup\hss \begin{tabular}[t]{c}\large\bf\rule{\z@}{24pt}\ignorespaces}%
\def\AND{\end{tabular}\hss\egroup \hfil\hfil\egroup
\vskip 0.1in plus 1fil minus 0.05in
\hbox to \linewidth\bgroup\rule{\z@}{10pt} \hfil\hfil
\hbox to 0pt\bgroup\hss \begin{tabular}[t]{c}\large\bf\rule{\z@}{24pt}\ignorespaces}
\hbox to \linewidth\bgroup\rule{\z@}{10pt} \hfil\hfil
\hbox to 0pt\bgroup\hss \begin{tabular}[t]{c}\large\bf\rule{\z@}{24pt}\@author
\end{tabular}\hss\egroup
\hfil\hfil\egroup}
\vskip 0.3in minus 0.1in
\hrule
\begin{abstract}
\@Abstract
\end{abstract}}
\textit{Keywords}:~\@Keywords.
\vskip 0.1in minus 0.05in
\hrule
\vskip 0.2in minus 0.1in
}}
\fi
%% sections, subsections, and subsubsections
\newlength{\preXLskip}
\newlength{\preLskip}
\newlength{\preMskip}
\newlength{\preSskip}
\newlength{\postMskip}
\newlength{\postSskip}
\setlength{\preXLskip}{1.8\baselineskip plus 0.5ex minus 0ex}
\setlength{\preLskip}{1.5\baselineskip plus 0.3ex minus 0ex}
\setlength{\preMskip}{1\baselineskip plus 0.2ex minus 0ex}
\setlength{\preSskip}{.8\baselineskip plus 0.2ex minus 0ex}
\setlength{\postMskip}{.5\baselineskip plus 0ex minus 0.1ex}
\setlength{\postSskip}{.3\baselineskip plus 0ex minus 0.1ex}
\newcommand{\jsssec}[2][default]{\vskip \preXLskip%
\pdfbookmark[1]{#1}{Section.\thesection.#1}%
\refstepcounter{section}%
\centerline{\textbf{\Large \thesection. #2}} \nopagebreak
\vskip \postMskip \nopagebreak}
\newcommand{\jsssecnn}[1]{\vskip \preXLskip%
\centerline{\textbf{\Large #1}} \nopagebreak
\vskip \postMskip \nopagebreak}
\newcommand{\jsssubsec}[2][default]{\vskip \preMskip%
\pdfbookmark[2]{#1}{Subsection.\thesubsection.#1}%
\refstepcounter{subsection}%
\textbf{\large \thesubsection. #2} \nopagebreak
\vskip \postSskip \nopagebreak}
\newcommand{\jsssubsecnn}[1]{\vskip \preMskip%
\textbf{\large #1} \nopagebreak
\vskip \postSskip \nopagebreak}
\newcommand{\jsssubsubsec}[2][default]{\vskip \preSskip%
\pdfbookmark[3]{#1}{Subsubsection.\thesubsubsection.#1}%
\refstepcounter{subsubsection}%
{\large \textit{#2}} \nopagebreak
\vskip \postSskip \nopagebreak}
\newcommand{\jsssubsubsecnn}[1]{\vskip \preSskip%
{\textit{\large #1}} \nopagebreak
\vskip \postSskip \nopagebreak}
\newcommand{\jsssimplesec}[2][default]{\vskip \preLskip%
%% \pdfbookmark[1]{#1}{Section.\thesection.#1}%
\refstepcounter{section}%
\textbf{\large #1} \nopagebreak
\vskip \postSskip \nopagebreak}
\newcommand{\jsssimplesecnn}[1]{\vskip \preLskip%
\textbf{\large #1} \nopagebreak
\vskip \postSskip \nopagebreak}
\if@review
\renewcommand{\section}{\secdef \jsssimplesec \jsssimplesecnn}
\renewcommand{\subsection}{\secdef \jsssimplesec \jsssimplesecnn}
\renewcommand{\subsubsection}{\secdef \jsssimplesec \jsssimplesecnn}
\else
\renewcommand{\section}{\secdef \jsssec \jsssecnn}
\renewcommand{\subsection}{\secdef \jsssubsec \jsssubsecnn}
\renewcommand{\subsubsection}{\secdef \jsssubsubsec \jsssubsubsecnn}
\fi
%% colors
\definecolor{Red}{rgb}{0.5,0,0}
\definecolor{Blue}{rgb}{0,0,0.5}
\if@review
\hypersetup{%
hyperindex = {true},
colorlinks = {true},
linktocpage = {true},
plainpages = {false},
linkcolor = {Blue},
citecolor = {Blue},
urlcolor = {Red},
pdfstartview = {Fit},
pdfpagemode = {None},
pdfview = {XYZ null null null}
}
\else
\hypersetup{%
hyperindex = {true},
colorlinks = {true},
linktocpage = {true},
plainpages = {false},
linkcolor = {Blue},
citecolor = {Blue},
urlcolor = {Red},
pdfstartview = {Fit},
pdfpagemode = {UseOutlines},
pdfview = {XYZ null null null}
}
\fi
\if@nojss
\AtBeginDocument{
\hypersetup{%
pdfauthor = {\@Hyperauthor},
pdftitle = {\@Plaintitle},
pdfkeywords = {\@Plainkeywords}
}
}
\else
\AtBeginDocument{
\hypersetup{%
pdfauthor = {\@Hyperauthor},
pdftitle = {\@Plaintitle},
pdfsubject = {\@Hypersubject},
pdfkeywords = {\@Plainkeywords}
}
}
\fi
\if@notitle
%% \AtBeginDocument{\maketitle}
\else
\@ifundefined{AddToHook}{\AtBeginDocument{\maketitle}}{\AddToHook{begindocument}[maketitle]{\maketitle}}
\fi
%% commands
\newcommand\code{\bgroup\@makeother\_\@makeother\~\@makeother\$\@codex}
\def\@codex#1{{\normalfont\ttfamily\hyphenchar\font=-1 #1}\egroup}
%%\let\code=\texttt
\let\proglang=\textsf
\newcommand{\pkg}[1]{{\fontseries{m}\fontseries{b}\selectfont #1}}
\newcommand{\email}[1]{\href{mailto:#1}{\normalfont\texttt{#1}}}
\ifx\csname urlstyle\endcsname\relax
\newcommand\@doi[1]{doi:\discretionary{}{}{}#1}\else
\newcommand\@doi{doi:\discretionary{}{}{}\begingroup
\urlstyle{tt}\Url}\fi
\newcommand{\doi}[1]{\href{https://doi.org/#1}{\normalfont\texttt{\@doi{#1}}}}
\newcommand{\E}{\mathsf{E}}
\newcommand{\VAR}{\mathsf{VAR}}
\newcommand{\COV}{\mathsf{COV}}
\newcommand{\Prob}{\mathsf{P}}
\endinput
%%
%% End of file `jss.cls'.