A LaTeX style for producing author self-archiving copies of (academic) papers.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

263 lines
8.1 KiB

%% Copyright (C) 2008-2018 Achim D. Brucker, https://www.brucker.ch
%%
%% License:
%% This program can be redistributed and/or modified under the terms
%% of the LaTeX Project Public License Distributed from CTAN
%% archives in directory macros/latex/base/lppl.txt; either
%% version 1 of the License, or any later version.
%% OR
%% The 2-clause BSD-style license.
\NeedsTeXFormat{LaTeX2e}\relax
\ProvidesClass{authorarchive}
[2018/02/21 v1.0.0%
Self-archiving information for scientific publications.]
%
\RequirePackage{ifthen}
\RequirePackage{graphicx}
\RequirePackage{hyperref}
\RequirePackage{eso-pic}
\RequirePackage{embedfile}
\RequirePackage{kvoptions}
\RequirePackage{calc}
\RequirePackage{qrcode}
%
% Option declarations
% -------------------
\SetupKeyvalOptions{
family=AA,
prefix=AA@
}
\DeclareStringOption[.]{bibtexdir}
\DeclareStringOption[https://duckduckgo.com/?q=]{baseurl}
\DeclareStringOption[.pdf]{suffix}
\DeclareStringOption[UNKOWN PUBLISHER]{publisher}[]
\DeclareStringOption[UNKOWN YEAR]{year}[]
\DeclareStringOption[]{key}[]
\DeclareStringOption[]{doi}[]
\DeclareStringOption[]{doiText}[]
\DeclareStringOption[]{publisherurl}[]
\DeclareStringOption[1]{startpage}[]
\DeclareStringOption[UNKNOWN PUBLICATION]{publication}[]
\DeclareBoolOption{ACM}
\DeclareBoolOption{IEEE}
\DeclareBoolOption{LNCS}
\DeclareBoolOption{LNI}
\DeclareBoolOption{nocopyright}
\DeclareBoolOption{nourl}
\DeclareBoolOption{nobib}
\DeclareBoolOption{ENTCS}
%\ProcessOptions\relax
% Default option rule
\DeclareDefaultOption{%
\ifx\CurrentOptionValue\relax
\PackageWarningNoLine{\@currname}{%
Unknown option `\CurrentOption'\MessageBreak
is passed to package `authorarchive'%
}%
% Pass the option to package color.
% Again it is better to expand \CurrentOption.
\expandafter\PassOptionsToPackage\expandafter{\CurrentOption}{color}%
\else
% Package color does not take options with values.
% We provide the standard LaTeX error.
\@unknownoptionerror
\fi
}
\ProcessKeyvalOptions*
% Provide command for dynamic configuration seutp
\def\authorsetup{\kvsetkeys{AA}}
% Load local configuration
\InputIfFileExists{authorarchive.config}{}{}
\newlength\AA@x
\newlength\AA@y
\newlength\AA@width
\newcommand{\authorcrfont}{\footnotesize}
\newcommand{\authorat}[1]{\put(100,100){#1}}
\newcommand{\authorwidth}[1]{\setlength{\AA@width}{#1}}
\setlength{\AA@width}{\textwidth}
\setcounter{page}{\AA@startpage}
\ifAA@ACM%
\setkeys{AA}{publisher=ACM}
\global\boilerplate={}
\global\copyrightetc={}
\renewcommand{\conferenceinfo}[2]{}
\renewcommand{\authorcrfont}{\crnotice}
\setlength\AA@x{1in+\hoffset+\oddsidemargin}
\setlength\AA@y{-\textheight+\topmargin+\headheight} % -\voffset-\topmargin-\headheight-\footskip}
\renewcommand{\authorat}[1]{\put(\LenToUnit{\AA@x},\LenToUnit{\AA@y}){#1}}
\setlength{\AA@width}{\columnwidth}
\fi
%%%% LNCS
\ifAA@LNCS%
\setkeys{AA}{publisher=Springer-Verlag}
\setlength\AA@x{1in+\hoffset+\oddsidemargin}
\renewcommand{\authorat}[1]{\put(\LenToUnit{\AA@x},27){#1}}
\renewcommand{\authorcrfont}{\scriptsize}
\pdfpagesattr{/CropBox [92 65 523 731]}% LNCS page: 152x235 mm
\setlength{\AA@width}{\textwidth}
\setcounter{tocdepth}{2}
\fi
%
%%%% LNI
\ifAA@LNI%
\setkeys{AA}{publisher=GI}
\setlength\AA@x{1in+\hoffset+\oddsidemargin}
\renewcommand{\authorat}[1]{\put(\LenToUnit{\AA@x},35){#1}}
\renewcommand{\authorcrfont}{\scriptsize}
\pdfpagesattr{/CropBox [70 65 526.378 748.15]} % TODO
\setlength{\AA@width}{\textwidth}
\setcounter{tocdepth}{2}
\fi
%
%%%% ENTCS
\ifAA@ENTCS%
\addtolength{\voffset}{1cm}
\setkeys{AA}{publisher=Elsevier Science B.~V.}
\setlength\AA@x{1in+\hoffset+\oddsidemargin}
\renewcommand{\authorat}[1]{\put(\LenToUnit{\AA@x},-250){#1}}
\renewcommand{\authorcrfont}{\scriptsize}
\def\@oddfoot{}
\def\@evenfoot{}
\def\firstfootline{}
\headsep 8pt
\renewcommand\rightheadline{\ifnum\value{page}=\hypergetpageref{FirstPage}\relax
\else{\hfil\scriptsize\emph{\lastname / \AA@publication} \hfil {\rmfamily\thepage}}\fi}
\renewcommand\leftheadline{\scriptsize{\rmfamily\thepage} \hfil \emph{\lastname /
\AA@publication}\hfil}
% 467.717 x 680.315 pts
% \pdfpagesattr{/CropBox [70 110 535 850]}
\pdfpagesattr{/CropBox [70 95 535 775]}
\setlength{\AA@width}{\textwidth}
\fi
%
%%%% IEEE
\ifAA@IEEE%
\setkeys{AA}{publisher=IEEE Computer Society}
\setlength\AA@x{1in+\hoffset+\oddsidemargin}
\renewcommand{\authorat}[1]{\put(\LenToUnit{\AA@x},12){#1}}
\renewcommand{\authorcrfont}{\scriptsize}
\setlength{\AA@width}{\textwidth}
\setcounter{tocdepth}{2}
\fi
%
\hypersetup{%
draft = false,
bookmarksopen = true,
bookmarksnumbered= true,
pdfauthor = {\@author},
pdftitle = {\@title},
}
\ifAA@nobib\relax\else%
\AtBeginDocument{%
\IfFileExists{\AA@bibtexdir/\AA@key.bib}{%
\embedfile[filespec=\AA@key.bib,%
desc={BibTeX entry of this paper.},%
stringmethod=escape,%
mimetype=plain/text,%
]{\AA@bibtexdir/\AA@key.bib}}{
\typeout{No file \AA@bibtexdir/\AA@key.bib found. Not embedded reference in BibTeX format.}
}%
\IfFileExists{\AA@bibtexdir/\AA@key.enw}{%
\embedfile[filespec=\AA@key.enw,%
desc={Endnote entry of this paper.},%
stringmethod=escape,%
mimetype=plain/text,%
]{\AA@bibtexdir/\AA@key.enw}}{
\typeout{No file \AA@bibtexdir/\AA@key.enw found. Not embedded reference in Endnote format.}
}%
\IfFileExists{\AA@bibtexdir/\AA@key.ris}{%
\embedfile[filespec=\AA@key.ris,%
desc={RIS entry of this paper.},%
stringmethod=escape,%
mimetype=plain/text,%
]{\AA@bibtexdir/\AA@key.ris}}{
\typeout{No file \AA@bibtexdir/\AA@key.ris found. Not embedded reference in RIS format.}
}%
\IfFileExists{\AA@bibtexdir/\AA@key.word.xml}{%
\embedfile[filespec=\AA@key.word.xml,%
desc={XML entry of this paper (e.g., for Word 2007 and later).},%
stringmethod=escape,%
mimetype=plain/text,%
]{\AA@bibtexdir/\AA@key.word.xml}}{
\typeout{No file \AA@bibtexdir/\AA@key.word.xml found. Not embedded reference for Word 2007 and later.}
}%
}%
\fi
\AtEndDocument{\label{LastPage}}
\AddToShipoutPicture*{%
\setlength{\unitlength}{1mm}%
\authorat{%
\ifAA@nourl\relax\else%
\raisebox{.5cm}[.5cm]{\qrcode[hyperlink,height=1.17cm,padding]{\AA@baseurl/\AA@key\AA@suffix}}%
\fi%
\authorcrfont\parbox[b]{\AA@width-1.4cm}{
\ifAA@LNCS%
\AA@publication, pp. \thepage--\pageref{LastPage}, \AA@year.\\%
\ifAA@nocopyright\relax\else
\textcopyright~\AA@year~\AA@publisher.
\fi
This is the author's
version of the work. It is posted
\ifAA@nourl\relax\else%
at \url{\AA@baseurl/\AA@key\AA@suffix} %
\fi
\ifAA@nocopyright\relax\else
by permission of \AA@publisher{}
\fi
for your personal use.
\ifx\AA@doi\@empty%
\relax
\else
The definitive
version was published with doi:
\ifx\AA@doiText\@empty%
\href{https://doi.org/\AA@doi}{\AA@doi}.
\else
\href{https://doi.org/\AA@doi}{\AA@doiText}.
\fi
\fi
\else
\ifAA@nocopyright\relax\else
\textcopyright~\AA@year~\AA@publisher. %
\fi%
This is the author's
version of the work. It is posted
\ifAA@nourl\relax\else%
at \url{\AA@baseurl/\AA@key\AA@suffix} %
\fi
\ifAA@nocopyright\relax\else
by permission of \AA@publisher{} %
\fi
for your personal use. Not for redistribution. The definitive
version was published in \emph{\AA@publication}, pp.~\thepage--\pageref{LastPage}, \AA@year%
\ifx\AA@doi\@empty%
\ifx\AA@publisherurl\@empty%
.%
\else
\url{\AA@publisherurl}.%
\fi
\else
\ifx\AA@doiText\@empty%
, doi: \href{https://doi.org/\AA@doi}{\AA@doi}.%
\else
, doi: \href{https://doi.org/\AA@doi}{\AA@doiText}.%
\fi
\fi
\fi
}
}
}