summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/dccpaper
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2014-04-23 21:37:27 +0000
committerKarl Berry <karl@freefriends.org>2014-04-23 21:37:27 +0000
commit1421f3557eb7d3fbb2baea644579434d290bb587 (patch)
tree320ed76d21a216737e5608d1bfc983f26702a4e7 /Master/texmf-dist/tex/latex/dccpaper
parent79890bb9b6bae4d32a5e2c75b9a20cf4aca8084e (diff)
dccpaper (23apr14)
git-svn-id: svn://tug.org/texlive/trunk@33643 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/dccpaper')
-rw-r--r--Master/texmf-dist/tex/latex/dccpaper/dccpaper-base.tex553
-rw-r--r--Master/texmf-dist/tex/latex/dccpaper/idcc.cls63
-rw-r--r--Master/texmf-dist/tex/latex/dccpaper/ijdc-v9.cls61
3 files changed, 557 insertions, 120 deletions
diff --git a/Master/texmf-dist/tex/latex/dccpaper/dccpaper-base.tex b/Master/texmf-dist/tex/latex/dccpaper/dccpaper-base.tex
index 37ee1cb0e9b..86b8537b341 100644
--- a/Master/texmf-dist/tex/latex/dccpaper/dccpaper-base.tex
+++ b/Master/texmf-dist/tex/latex/dccpaper/dccpaper-base.tex
@@ -5,6 +5,7 @@
%% The original source files were:
%%
%% dccpaper.dtx (with options: `base')
+%%
%% ----------------------------------------------------------------
%% The dccpaper bundle: Classes for submissions to IJDC and IDCC
%% Author: Alex Ball
@@ -13,31 +14,71 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2014/03/06 v1.1}
+\def\Version{2014/04/11 v1.2}
\ProvidesFile{dccpaper-base.tex}
[\Version\space Common class code for IJDC and IDCC papers.]
+%
+% The \textsf{dccpaper} classes are deliberately very similar. This file
+% contains the common code. All the classes are based on the \textsf{article}
+% class, and use A4 paper.
+%
\LoadClass[a4paper,12pt,twoside]{article}
+%
+% We use British English orthography.
+%
\RequirePackage[british]{babel}
+%
+% The macro patching commands from \textsf{etoolbox} come in useful for handling
+% author and date information, and also for compatibility with \textsf{apacite}.
+%
\RequirePackage{etoolbox}
+%
+% The \textsf{dccpaper} classes use Times as the main text font. We prefer
+% \textsf{newtx} as it provides support for mathematics, but the standard
+% \textsf{times} package will do. In case they are needed, we also provide
+% Helvetica for the sans serif font and Computer Modern Teletype for the
+% monospaced.
+%
\RequirePackage[T1]{fontenc}
\IfFileExists{newtxtext.sty}%
{\RequirePackage{newtxtext,newtxmath}}%
{\RequirePackage{times}}
\RequirePackage[scaled=0.92]{helvet}
\renewcommand{\ttdefault}{cmtt}
+%
+% We will need support for included graphics and colour. The structural elements
+% are a medium turquoise, while the links are slightly darker to make them
+% easier to read on screen.
+%
\RequirePackage{graphicx}
\IfFileExists{xcolor.sty}%
{\RequirePackage{xcolor}}%
{\RequirePackage{color}}
\definecolor[named]{struct}{rgb}{0,0.5,0.5}
\definecolor[named]{links}{rgb}{0,0.4,0.4}
+%
+% We will calculate some lengths later.
+%
\RequirePackage{calc}
+%
+% Ragged right text is easier to read on screen, but fully justified text looks
+% better. The |\raggedyright| layout from Peter Wilson's \textsf{memoir} class
+% (2005/09/25 v1.618) is an excellent compromise. The code below replicates it.
+%
+% First we save the original definitions of |\\| and |\parindent| as
+% |\OrigLineBreak| and |\RaggedParindent| respectively.
+%
\let\OrigLineBreak\\
\newdimen\RaggedParindent
\setlength{\RaggedParindent}{\parindent}
+%
+% The |\raggedyright| layout more or less lays text out as with full
+% justification, but then lets the shorter lines relax a bit from the right
+% margin. It is the default for DCC papers.
+%
\newcommand{\raggedyright}[1][2em]{%
\let\\\@centercr\@rightskip \z@ \@plus #1\relax
\rightskip\@rightskip
@@ -45,6 +86,10 @@
\parindent\RaggedParindent}
\AtBeginDocument{\raggedyright}
+%
+% The |\flushleftright| layout restores full justification, in case it is
+% needed.
+%
\newcommand*{\flushleftright}{%
\let\\\OrigLineBreak
\leftskip\z@skip
@@ -52,19 +97,69 @@
\parfillskip\@flushglue
\everypar{}}
+%
+% The classes have some special metadata requirements. We start with the author
+% information.
+%
+% The macro |\thecorrespondence| is used in the title page footer for the name,
+% postal address and email address of the corresponding author.
+%
\def\thecorrespondence{}
\newcommand*{\correspondence}[1]{\def\thecorrespondence{#1}}
+%
+% The handling of authors here is inspired by Patrick W Daly's \textsf{authblk},
+% (2001/02/27 1.3), and defines the familiar user commands. Authors are
+% presented in blocks, one affiliation but perhaps several authors per block.
+%
+% We make the presentation of the author information configurable (just in case)
+% with some hooks and lengths:
+% \begin{itemize}
+% \item |\Authfont| is the font used for author names;
+% \item |\Affilfont| is the font used for affiliations;
+% \item |\affilsep| is the line spacing between author names and affiliations;
+% \item |\authblksep| is the line spacing between author name/affiliation
+% blocks.
+% \end{itemize}
+%
\newcommand*{\Authfont}{\normalfont}
\newcommand*{\Affilfont}{\normalfont\small}
\newlength{\affilsep}\setlength{\affilsep}{0pt}
\newlength{\authblksep}\setlength{\authblksep}{1.5\baselineskip}
+%
+% The |\AuthorBlock| command will be used to collect all the author information.
+%
\newcommand{\AuthorBlock}{}
+%
+% The |\MainAuthor| command collects abbreviated author information for use in
+% the headers.
+%
\newcommand{\MainAuthor}{}
+%
+% We define counters for
+% \begin{itemize}
+% \item the total number of authors defined;
+% \item the number of authors in the current block;
+% \item the number of blocks defined.
+% \end{itemize}
+%
\newcounter{authors}
\newcounter{authorsinblock}
\newcounter{block}
+%
+% The |block| counter will increase once in the preamble, and again when the
+% information is typeset, so we need to reset it at the beginning of the
+% document.
+%
\AtBeginDocument{\setcounter{block}{0}}
+%
+% The new definition of the author command starts here.
+%
\renewcommand{\author}[1]{%
+%
+% If this is the first or second |\author| command, we add the name to our
+% abbreviated list of authors. Otherwise, we replace the name of the second
+% and subsequent authors with `et al.' in that list.
+%
\ifnum\theauthors=0
\def\MainAuthor{#1}%
\else
@@ -78,6 +173,15 @@
\fi
\fi
\stepcounter{authors}%
+%
+% Each block has its author names collected in a macro like |\blocki@auth|,
+% and its affiliation collected in a macro like |\blocki@affil| (the `i' is a
+% serial number).
+%
+% If this is the first author in a block, we need to create the block and add it
+% to |\AuthorBlock|; second and subsequent blocks are preceded by a |\quad| of
+% space.
+%
\ifnum\theauthorsinblock=0%
\stepcounter{block}%
\expandafter\def\csname block\roman{block}@auth\endcsname{#1}%
@@ -94,16 +198,31 @@
\rule{0pt}{2\baselineskip}%
}
\else
+%
+% Otherwise we just add the name to the right |\blocki@auth|-style macro.
+%
\csappto{block\roman{block}@auth}{, #1}%
\fi
\stepcounter{authorsinblock}%
}
+%
+% The |\affil| command adds an affiliation to the current block and closes it by
+% resetting the |authorsinblock| counter.
+%
\newcommand{\affil}[1]{%
\expandafter\def\csname block\roman{block}@affil\endcsname{\Affilfont#1}%
\setcounter{authorsinblock}{0}%
}
+%
+% The |\HeadTitle| collects the abbreviated title for use in the headers.
+%
\newcommand*{\HeadTitle}{}
+%
+% We wrap the normal |\title| command with code to populate |\HeadTitle| with
+% the optional argument if provided, or the mandatory one otherwise. We also
+% provide a persistent |\thetitle| macro, stripped of any |\thanks|.
+%
\let\ProperTitle=\title
\renewcommand{\title}[2][\empty]{
\ifx\empty #1%
@@ -119,6 +238,10 @@
\endgroup\endgroup
}
+%
+% We make |\thedate| persistent, borrowing the technique used in Peter Wilson's
+% \textsf{memoir} class (2005/09/25 v1.618).
+%
\pretocmd{\date}{\begingroup\let\footnote\@gobble}{}{}%
\apptocmd{\date}{%
\begingroup
@@ -126,8 +249,21 @@
\protected@xdef\thedate{#1}
\endgroup\endgroup%
}{}{}
+%
+% We ensure |\thedate| is defined using a dummy date.
+%
\date{20xx}
+%
+% IJDC articles have extra bibliographic information:
+% \begin{itemize}
+% \item |\volume| sets the volume number, |\thevolume|;
+% \item |\issue| sets the issue number, |\theissue|;
+% \item |\subno| sets the submission number, |\thesubno|.
+% \end{itemize}
+%
+% These numbers are used to build the DOI, |\thedoi|.
+%
\newcommand*{\thevolume}{0}
\newcommand*{\volume}[1]{\renewcommand*{\thevolume}{#1}}
\newcommand*{\theissue}{0}
@@ -135,6 +271,11 @@
\newcommand*{\thesubno}{0}
\newcommand*{\subno}[1]{\renewcommand*{\thesubno}{#1}}
\newcommand*{\thedoi}{10.2218/ijdc.v\thevolume i\theissue .\thesubno}
+%
+% They also display the page range. The following code was borrowed from Peter
+% Wilson's \textsf{memoir} class (2005/09/25 v1.618). It defines a counter
+% |lastpage| which, on the second run, will contain the number of the last page.
+%
\newcounter{lastpage}
\setcounter{lastpage}{0}
\newcommand{\dol@stpage}{%
@@ -147,21 +288,54 @@
}
\AtBeginDocument{\AtEndDocument{\clearpage\dol@stpage}}
-\def\dccp@dates{Draft from \today}
+%
+% DCC papers display some important dates. We collect these in |\dccp@dates|,
+% initially setting the value to something sensible for papers in draft.
+%
+\def\dccp@dates{\emph{Draft from} \today}
+%
+% Several types of date can be added:
+% \begin{itemize}
+% \item |\submitted| for when the authors submitted the paper (intended for
+% IDCC papers).
+% \item |\received| for when the paper was received by the editorial board
+% (intended for IJDC papers).
+% \item |\revised| for when the most recent version was received by the
+% editorial board.
+% \item |\accepted| for when the paper was accepted by the editorial board.
+% \end{itemize}
+%
\newcommand*{\submitted}[1]{%
\def\dccp@dates{\emph{Submitted} #1}}
\newcommand*{\received}[1]{%
\def\dccp@dates{\emph{Received} #1}}
\newcommand*{\revised}[1]{%
- \appto\dccp@dates{\space\space\space\textbar\space\space\space\emph{Revision received} #1}}
+ \appto\dccp@dates{%
+ \space\space\space\textbar\space\space\space
+ \emph{Revision received} #1}%
+ }
\newcommand*{\accepted}[1]{%
- \appto\dccp@dates{\space\space\space\textbar\space\space\space\emph{Accepted} #1}}
+ \appto\dccp@dates{%
+ \space\space\space\textbar\space\space\space
+ \emph{Accepted} #1}%
+ }
+%
+% IJDC papers need to say if they had a previous life as a conference paper.
+% This statement goes in |\dccp@conf|, which is initially empty. The user
+% command for setting this text is |\conference|.
+%
\let\dccp@conf=\empty
\newcommand*{\conference}[1]{%
\renewcommand*{\dccp@conf}{An earlier version of this paper was presented at #1.}%
}
-\newcommand{\FixTextHeight}{\setlength\@tempdima{\textheight}%
+%
+% The macro |\FixTextHeight| will be useful when switching from the first page
+% geometry to the regular geometry for the rest of the paper. It is based on
+% code from Hideo Umeki's \textsf{geometry} package (2002/07/08 v3.2).
+%
+\newcommand{\FixTextHeight}{%
+ \setlength\@tempdima{\textheight}%
\addtolength\@tempdima{-\topskip}%
\@tempcnta\@tempdima
\@tempcntb\baselineskip
@@ -174,15 +348,40 @@
\addtolength\@tempdimb{\baselineskip}%
\fi
\addtolength\@tempdimb{\topskip}%
- \textheight\@tempdimb}
+ \textheight\@tempdimb
+}
+%
+% The width of the textblock (on all pages) is 150mm, which on A4 paper implies
+% margins of 30mm each. (Making both horizontal margins the same in a two-sided
+% context makes the paper more pleasant to read on screen).
+%
\setlength{\textwidth}{150mm}
\setlength{\oddsidemargin}{30mm - \hoffset - 1in}
\setlength{\evensidemargin}{30mm - \hoffset - 1in}
+%
+% We also want a distance of 15mm from the top of the page to the top of the
+% header, and two blank lines between the bottom of the header and the top of
+% the textblock.
+%
\setlength{\topmargin}{15mm - \voffset - 1in}
\setlength{\headsep}{2\baselineskip}
+%
+% IJDC editorials have slightly different headers and footers. This requires
+% testing for |\dccp@editorial| if it exists. In case it doesn't, we provide it.
+%
\providecommand{\dccp@editorial}{Editorial}
+%
+% The height of the footer can vary a lot. To keep it a fixed distance from the
+% bottom of the page rather than the top, we need to vary the |\textheight|
+% accordingly. This means we need to measure the height of the footer. (The
+% header is more predictable but we may as well measure it while we are at it).
+%
+% Here we define the header and footer of the title page (i.e.\ the
+% \textsf{title} page style), making sure we save them to auxiliary macros
+% |\TitleHead| and |\TitleFoot| so we can measure them.
+%
\def\ps@title{%
\def\@oddhead{%
\begin{minipage}{\textwidth}%
@@ -216,10 +415,13 @@
\dccp@publ@msg\par
\bigskip
\begin{minipage}[b]{\linewidth - 25mm}
- Copyright rests with the authors. This work is released under a Creative Commons Attribution 4.0 International Licence. For details please see \url{http://creativecommons.org/licenses/by/4.0/}%
+ Copyright rests with the authors. This work is released under a Creative
+ Commons Attribution 4.0 International Licence. For details please see
+ \url{http://creativecommons.org/licenses/by/4.0/}%
\end{minipage}\hfill
\begin{minipage}[b]{19mm}
- \href{http://creativecommons.org/licenses/by/4.0/}{\includegraphics[width=\hsize]{dccpaper-by}}%
+ \href{http://creativecommons.org/licenses/by/4.0/}%
+ {\includegraphics[width=\hsize]{dccpaper-by}}%
\end{minipage}
\par
\bigskip
@@ -235,21 +437,44 @@
\let\@evenfoot=\@oddfoot
\let\TitleFoot=\@oddfoot
}
+%
+% We set the normal page style to \textsf{title} here so that |\TitleHead| and
+% |\TitleFoot| are defined, but we will override it with the \textsf{dccpaper}
+% page style later.
+%
\pagestyle{title}
+%
+% The first page should use the \textsf{title} page style, however.
+%
\AtBeginDocument{\thispagestyle{title}}
+%
+% Here are the normal headers and footers (i.e.\ the \textsf{dccpaper} page
+% style). We save them to |\NormalHead| and |\NormalFoot|, again so we can
+% measure them.
+%
\def\ps@dccpaper{%
\def\@oddhead{%
\begin{minipage}{\textwidth}\frenchspacing
- {\fontsize{9pt}{11pt}\selectfont\ifx\undefined\dccp@normhead@doi\else\dccp@normhead@doi\fi}\hfill
- {\MainAuthor}\space\space\space\textcolor{struct}{\textbar}\space\space\space\thepage\par
+ {%
+ \fontsize{9pt}{11pt}\selectfont
+ \ifx\undefined\dccp@normhead@doi\else\dccp@normhead@doi\fi
+ }\hfill
+ {\MainAuthor}\space\space\space
+ \textcolor{struct}{\textbar}\space\space\space
+ \thepage\par
\vskip6pt\color{struct}{\hrule height 1bp}\par
\end{minipage}
}%
\def\@evenhead{%
\begin{minipage}{\textwidth}
- \thepage\space\space\space\textcolor{struct}{\textbar}\space\space\space{\HeadTitle}\hfill
- {\fontsize{9pt}{11pt}\selectfont\ifx\undefined\dccp@normhead@doi\else\dccp@normhead@doi\fi}\par
+ \thepage\space\space\space
+ \textcolor{struct}{\textbar}\space\space\space
+ {\HeadTitle}\hfill
+ {%
+ \fontsize{9pt}{11pt}\selectfont
+ \ifx\undefined\dccp@normhead@doi\else\dccp@normhead@doi\fi
+ }\par
\vskip6pt\color{struct}{\hrule height 1bp}\par
\end{minipage}
}%
@@ -268,6 +493,13 @@
}
\pagestyle{dccpaper}
+%
+% We need to wait until the author has supplied the necessary information before
+% we can do our measuring and set the remainder of the geometry, so we do it at
+% the end of the preamble. First we put our saved macros into boxes we can
+% measure (i.e.\ |\dccp@firstpagehead|, |\dccp@firstpagefoot|,
+% |\dccp@restpagehead|, |\dccp@restpagefoot|).
+%
\AtEndPreamble{
\newsavebox{\dccp@firstpagehead}
\sbox\dccp@firstpagehead{\normalfont\TitleHead}
@@ -278,6 +510,9 @@
\sbox\dccp@restpagehead{\normalfont\NormalHead}
\newsavebox{\dccp@restpagefoot}
\sbox\dccp@restpagefoot{\normalfont\NormalFoot}
+%
+% We can now set the geometry of the title page\dots
+%
\setlength{\headheight}{\ht\dccp@firstpagehead + \dp\dccp@firstpagehead}
\setlength{\footskip}{%
2\baselineskip + \ht\dccp@firstpagefoot + \dp\dccp@firstpagefoot
@@ -290,6 +525,10 @@
- \footskip
+ \baselineskip
}
+%
+% {\dots}and provide a macro that will reset the geometry for the remaining
+% pages.
+%
\def\dccp@resetgeometry{%
\setlength{\headheight}{\ht\dccp@restpagehead + \dp\dccp@restpagehead}
\setlength{\footskip}{%
@@ -307,6 +546,12 @@
}
}
+%
+% The |\maketitle| command is redefined to to correct formatting. At the end it
+% resets the geometry, but this only takes effect on the second page. It is here
+% rather than at the end of the abstract in case the abstract itself spills over
+% to the second page.
+%
\renewcommand{\maketitle}{%
\null\nobreak\vspace*{-0.528\baselineskip}%
\begingroup
@@ -318,6 +563,12 @@
\endgroup\dccp@resetgeometry
}
+%
+% The \textsf{abstract} environment is redefined in terms of an environment
+% \textsf{widequote}, which mimics the \textsf{quote} environment, but is a bit
+% wider. We also provide a hook, |\afterabstract|, so that if some annotation
+% needs to be appended to the title page after the abstract, we can do that.
+%
\newenvironment{widequote}{%
\list{}{%
\setlength{\rightmargin}{2\parindent}%
@@ -338,16 +589,37 @@
\endwidequote\afterabstract\newpage
}
+%
+% We use the \textsf{titlesec} package to give headings the correct formatting.
+% The settings below try to space out headings so they occupy an integer number
+% of normal lines (an attempt at grid typesetting). They are a little
+% complicated because we want it to work even if the heading appears at the top
+% of the page.
+%
\RequirePackage{titlesec}
\titlespacing*{\section}{0pt}{0pt}{\baselineskip}
\titlespacing*{\subsection}{0pt}{0pt}{0.6\baselineskip}
\titlespacing{\subsubsection}{\parindent}{\baselineskip}{0pt}
\titlespacing{\paragraph}{\parindent}{\baselineskip}{0pt}
\titlespacing{\subparagraph}{\parindent}{\baselineskip}{0pt}
+%
+% An unfortunate side effect of spacing headings like this is that if a
+% |\subsection| immediately follows a |\section| it forms an unsightly gap. To
+% remedy this, we count how many paragraphs there have been since the last
+% |\section|. Note that as we do not normally number the sections, an automatic
+% reset of the |sectionpars| counter within the |section| counter won't work.
+%
\newcounter{sectionpars}
\let\dccp@old@ep\everypar
\newtoks\everypar
\dccp@old@ep{\the\everypar\stepcounter{sectionpars}}
+%
+% We need to manually reset |sectionpars| when |\section| is called. Also,
+% the normal font size is 12pt/14.5pt, while |\Large| is 17pt/22pt;
+% so the |\Large| line height = 1.5172 $\times$ normal line height. Nevertheless
+% it seems to work better if we let the heading eat 0.528|\baselineskip| into
+% the 2|\baselineskip| of padding above it.
+%
\titleformat{\section}
[block]
{%
@@ -360,6 +632,12 @@
{\thesection}
{\quad}
{}
+%
+% The others use a |\normalsize| font so that makes life easier. The format
+% for |\subsection| command includes conditional spacing: if the |sectionpars|
+% counter equals 2, this means the heading immediately follows a |\section|, so
+% less white space is needed.
+%
\titleformat{\subsection}
{%
\ifnum\thesectionpars>2%
@@ -391,11 +669,22 @@
{\thesubsubsection}
{\quad}
{}
+%
+% DCC papers do not typically number their sections.
+%
\setcounter{secnumdepth}{0}
+%
+% To help with the display of tables we load the \textsf{array} and
+% \textsf{booktabs} packages. As we don't like lines between rows in the table
+% body, we stretch them out a bit so that white space does the job instead.
+%
\RequirePackage{array,booktabs}
\renewcommand{\arraystretch}{1.25}
+%
+% We use the \textsf{caption} package to give captions the right format.
+%
\RequirePackage
[ format=hang
, labelsep=period
@@ -405,32 +694,159 @@
, tableposition=top
]{caption}
+%
+% Footnotes should be set right up against the left margin
+%
\renewcommand\@makefntext[1]{%
\parindent 1em%
\noindent
\@makefnmark~#1%
}
+%
+% By default lists are quite loose. These settings help to tighten them.
+%
\topsep = \z@
\partopsep = \z@
+%
+% A DCC paper should either be using \textsf{biblatex} or \textsf{apacite} for
+% references.
+%
+% If \textsf{biblatex} is used, we need to ensure that the reference list
+% heading is a normal section rather than a starred one so it appears in the
+% PDF bookmarks.
+%
\AtBeginDocument{
\@ifpackageloaded{biblatex}{%
\defbibheading{bibliography}[\refname]{\section{#1}}%
}{%
+%
+% If \textsf{apacite} is used, we can do the same with a package option (see
+% below). But there are a few other adaptations we need to make.
+%
\@ifpackageloaded{apacite}{%
- \AfterEndPreamble{\urlstyle{APACrm}}%
+%
+% With \textsf{hyperref} loaded, \textsf{apacite} makes the whole of a citation
+% a link to the reference list item. We patch |\@ifauthorsunequalc@de| so only
+% the year portion gets linked.
+%
+ \def\@ifauthorsunequalc@de#1{%
+ \if@F@cite
+ \@F@citefalse
+ \else
+ \if@Y@cite
+ {\@BAY}%
+ \fi
+ {\@BBC}%
+ \fi
+ \edef\@cite@undefined{?}%
+ \def\BBA{\@BBA}%
+ \if@A@cite
+ %%\hyper@natlinkstart{#1}% We remove this line...
+ {\csname b@\@citeb\APAC@extra@b@citeb\endcsname}%
+ %%\hyper@natlinkend% ...and this one.
+ \if@Y@cite
+ {\@BBAY}%
+ \fi
+ \fi
+ \if@Y@cite
+ \hyper@natlinkstart{#1}%
+ {\csname Y@\@citeb\APAC@extra@b@citeb\endcsname}%
+ \hyper@natlinkend
+ \fi
+ \let\BBA\relax
+ }
+%
+% The Spanish language support file defines a different version of
+% |\@ifauthorsunequalc@de|, which might override the patch we have just
+% introduced. So we employ the same test that \textsf{apacite} uses when
+% deciding whether to load that file; if successful, we patch the Spanish
+% version. Note that as \textsf{apacite} loads language support files
+% |\AtBeginDocument|, we have to do our thing after that, |\AfterEndPreamble|.
+%
+% (Note that as we set the language to British English earlier, this should
+% never be needed, but we try to be resilient to tinkering!)
+%
+ \AfterEndPreamble{%
+ \@ifundefined{iflanguage}{%
+ \relax
+ }{%
+ \edef\APAC@tmp{nohyphenation}%
+ \ifx\languagename\APAC@tmp
+ \else
+ \edef\APAC@tmp{spanish}%
+ \ifx\languagename\APAC@tmp
+ \def\@ifauthorsunequalc@de#1{%
+ \if@F@cite
+ \@F@citefalse
+ \else
+ \if@Y@cite
+ {\@BAY}%
+ \fi
+ {\@BBC}%
+ \fi
+ \edef\@cite@undefined{?}%
+ \def\BBA{\@BBA}%
+ \@ifundefined{spanishe@\@citeb\APAC@extra@b@citeb}%
+ {}% skip
+ {{% Use `e' instead of `y' in Spanish
+ \global\let\oldBBA\BBA
+ \global\def\BBA{e\global\let\BBA\oldBBA}%
+ }}%
+ \if@A@cite
+ %%\hyper@natlinkstart{#1}% We remove this line...
+ {\csname b@\@citeb\APAC@extra@b@citeb\endcsname}%
+ %%\hyper@natlinkend% ...and this one.
+ \if@Y@cite
+ {\@BBAY}%
+ \fi
+ \fi
+ \if@Y@cite
+ \hyper@natlinkstart{#1}%
+ {\csname Y@\@citeb\APAC@extra@b@citeb\endcsname}%
+ \hyper@natlinkend
+ \fi
+ \let\BBA\relax
+ }%
+ \fi
+ \fi
+ }%
+%
+% Another thing \textsf{apacite} does |\AtBeginDocument| is set the URL style
+% to monospaced. So we reset it back to normal roman type |\AfterEndPreamble|.
+%
+ \urlstyle{APACrm}
+ }%
+%
+% We pre-empt \textsf{apacite}'s |\providecommand| of |\doi| with our own
+% definition that includes the `doi' URI scheme label in the link, remembering
+% to remove the one inserted by |\doiprefix|.
+%
\newcommand{\doi}[1]{\href{http://dx.doi.org/#1}{\nolinkurl{doi:#1}}}%
\renewcommand{\doiprefix}{\unskip}%
}{}%
}%
+%
+% Both \textsf{biblatex} and \textsf{apacite} use |\bibitemsep| for the space
+% between bibliography items. Just in case they haven't been loaded, though, we
+% protect our setting of that length with an |\ifx| test.
+%
\ifx\undefined\bibitemsep
\else
\setlength{\bibitemsep}{1em plus 1ex minus 1ex}%
\fi
}
+%
+% As mentioned above, if \textsf{apacite} is used, we can use a package option
+% to ensure that the reference list heading appears in the PDF bookmarks.
+%
\PassOptionsToPackage{numberedbib}{apacite}
+%
+% We, of course, use \textsf{hyperref} for enhancing the PDF with working links,
+% bookmarks, metadata, etc.
+%
\usepackage
[ colorlinks=true
, linkcolor=black
@@ -441,14 +857,30 @@
, runcolor=black
, urlcolor=links
]{hyperref}
+%
+% Links should be in roman type, not monospaced.
+%
\urlstyle{rm}
+%
+% We provide an |\email| command for displaying the email address of the
+% corresponding author.
+%
\newcommand*{\email}[1]{\href{mailto:#1}{#1}}
+%
+% Once the user has had a chance to provide the metadata, we can add it to the
+% PDF metadata.
+%
\AtBeginDocument{%
\hypersetup
{ pdftitle={\thetitle}
, pdfauthor={\MainAuthor}
, pdfsubject={\dccp@subject}
}
+%
+% The APA has its own style for line breaks in URLs. The \textsf{apacite}
+% package provides the code for this, but in case \textsf{biblatex} is used
+% instead, we repeat the settings (from 2013/07/21 v6.03) here.
+%
\@ifundefined{Url@force@Tilde}{\def\Url@force@Tilde{\relax}}{}%
\def\url@apa@dot{\mathchar"2E }%
\def\url@apa@comma{\mathchar"2C }%
@@ -474,6 +906,18 @@
\\{\mathbin{\backslash}}\UrlTildeSpecial}
}
+%
+% We now embed the Creative Commons licence information in the PDF using an XMP
+% packet. To do this, we employ the same technique as Scott Pakin's
+% \textsf{hyperxmp} (2014/01/02 v2.4). In order to avoid avoid a bug whereby
+% Adobe Acrobat confuses the XMP author information and the regular author
+% information, though, we \emph{only} embed the licence information.
+%
+% We need to make sure that any characters to appear verbatim in the XMP packet
+% are treated as ordinary characters and not active ones. The likely active
+% characters are symbols and punctuation, so should be treated as `other'
+% (category 12).
+%
\begingroup
\catcode`\"=12
\catcode`\&=12
@@ -481,8 +925,19 @@
\catcode`\<=12
\catcode`\>=12
\catcode`\_=12
+%
+% We construct the XMP packet as the document begins.
+%
\AtBeginDocument{%
+%
+% For convenience we define |\sp| to be a level of indent, translating to three
+% spaces.
+%
\def\sp{\space\space\space}
+%
+% The text of the XMP packet is recorded in |\cc@xmp@packet|. We use |^^J| to
+% break lines.
+%
\long\gdef\cc@xmp@packet{%
<?xpacket begin='' id=''?>^^J%
<x:xmpmeta xmlns:x='adobe:ns:meta/'>^^J%
@@ -509,6 +964,11 @@
}%
}
\endgroup
+%
+% Different workflows require the XMP packet to be embedded in different ways.
+%
+% Pdf\TeX\ can inject objects into PDFs natively.
+%
\newcommand*{\ccxmp@embed@packet@pdftex}{%
\bgroup
\pdfcompresslevel=0
@@ -519,6 +979,10 @@
\pdfcatalog {/Metadata \the\pdflastobj\space 0 R}%
\egroup
}
+%
+% The |\pdfmark| command defined by \textsf{hyperref} is respected by tools such
+% as Dvipdf, Dvips, Dvipsone, etc.
+%
\newcommand*{\ccxmp@embed@packet@pdfmark}{%
\pdfmark{%
pdfmark=/NamespacePush
@@ -549,6 +1013,14 @@
pdfmark=/NamespacePop
}%
}
+%
+% Dvipdfm has its own |\special| command for inserting PDF objects, but
+% it is a bit basic and requires advance knowledge of how long (in characters)
+% the object is.
+%
+% The |\ccxmp@count@spaces| macro counts the number of spaces in its parameter
+% through a process of iteration, adding this figure to |\@tempcnta|.
+%
\def\ccxmp@count@spaces#1 {%
\def\ccxmp@one@token{#1}%
\ifx\ccxmp@one@token\@empty
@@ -558,6 +1030,10 @@
\expandafter\ccxmp@count@spaces
\fi
}
+%
+% The |\ccxmp@count@non@spaces| command counts the number of non-spaces in its
+% argument through a process of iteration, adding this figure to |\@tempcnta|.
+%
\newcommand*{\ccxmp@count@non@spaces}[1]{%
\def\ccxmp@one@token{#1}%
\ifx\ccxmp@one@token\@empty
@@ -566,11 +1042,18 @@
\expandafter\ccxmp@count@non@spaces
\fi
}
+%
+% The |\ccxmp@string@len| command sets |\@tempcnta| to the number of characters
+% (spaces + non-spaces) in its argument.
+%
\newcommand*{\ccxmp@string@len}[1]{%
\@tempcnta=0
\expandafter\ccxmp@count@spaces#1 {} %
\expandafter\ccxmp@count@non@spaces#1{}%
}
+%
+% So now, finally, is the command for embedding the packet using Dvipdfm.
+%
\newcommand*{\ccxmp@embed@packet@dvipdfm}{%
\ccxmp@string@len{\cc@xmp@packet}%
\special{pdf: object @ccxmp@packet
@@ -587,6 +1070,10 @@
>>
}%
}
+%
+% \XeTeX\ creates PDFs with Xdvipdfmx, which supports a simpler |\special| for
+% inserting objects that does not require us to count characters.
+%
\newcommand*{\ccxmp@embed@packet@xetex}{%
\special{pdf:stream @ccxmp@packet (\cc@xmp@packet)
<<
@@ -600,6 +1087,11 @@
>>
}%
}
+%
+% We rely on \textsf{hyperref} to tell us how the PDF will be generated (after
+% all, it may not be done in the current pass) and use the respective technique
+% to embed the XMP packet.
+%
\AtBeginDocument{%
\begingroup
\def\ccxmp@driver{hpdftex}%
@@ -625,40 +1117,5 @@
%%
%% Copyright (C) 2014 Digital Curation Centre, University of Edinburgh
%% <info@dcc.ac.uk>
-%%
-%% The text files contained in this work may be distributed and/or modified under
-%% the conditions of the LaTeX Project Public License (LPPL), either version 1.3c
-%% of this license or (at your option) any later version. The latest version of
-%% this license is in the file:
-%%
-%% http://www.latex-project.org/lppl.txt
-%%
-%% The image files dccpaper-by.eps and dccpaper-by.pdf derive from the file by.eps,
-%% available from the following URL:
-%% http://mirrors.creativecommons.org/presskit/buttons/88x31/eps/by.eps
-%%
-%% The images remain a trademark of Creative Commons and are subject to the
-%% Creative Commons trademark policy:
-%% http://creativecommons.org/policies
-%%
-%% This work is "maintained" (as per LPPL maintenance status) by Alex Ball.
-%%
-%% This work consists of the aforementioned image files, the file dccpaper.dtx and
-%% a Makefile.
-%%
-%% Running `make' generates the derived files
-%%
-%% * README
-%% * dccpaper.pdf
-%% * ijdc-v9.cls
-%% * idcc.cls
-%% * dccpaper-base.tex
-%% * dccpaper-apacite.bib
-%% * dccpaper-biblatex.bib
-%%
-%% Running `make inst' installs the files in the user's TeX tree.
-%%
-%% Running `make install' installs the files in the local TeX tree.
-%%
%%
%% End of file `dccpaper-base.tex'.
diff --git a/Master/texmf-dist/tex/latex/dccpaper/idcc.cls b/Master/texmf-dist/tex/latex/dccpaper/idcc.cls
index 38cc7aee77e..77174125970 100644
--- a/Master/texmf-dist/tex/latex/dccpaper/idcc.cls
+++ b/Master/texmf-dist/tex/latex/dccpaper/idcc.cls
@@ -5,6 +5,7 @@
%% The original source files were:
%%
%% dccpaper.dtx (with options: `idcc')
+%%
%% ----------------------------------------------------------------
%% The dccpaper bundle: Classes for submissions to IJDC and IDCC
%% Author: Alex Ball
@@ -13,22 +14,44 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2014/03/06 v1.1}
+\def\Version{2014/04/11 v1.2}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesClass{idcc}
[\Version\space Class for submissions to the International Digital Curation Conference.]
+%
+% These definitions are used to fill out the headers and footers.
+% The ones for |\dccp@publ@short| and |\dccp@publ@msg| are a fallback,
+% defined here but ordinarily overridden using a package option.
+%
\def\dccp@publ@long{International Digital Curation Conference}
\def\dccp@publ@short{IDCC}
\def\dccp@publ@msg{The \dccp@publ@long\ takes place on [TBC] in [TBC]. URL:
\url{http://www.dcc.ac.uk/events/international-digital-curation-conference-idcc}}
+%
+% |\dccp@subject| will be used for the PDF subject. The value here is again a
+% fallback, ordinarily overridden using a package option.
+%
\def\dccp@subject{\dccp@publ@long}
+%
+% Paper type is recorded in |\def\dccp@type|. The values can be
+% `Research Paper', `Practice Paper', `Poster', `Demonstration', or `Workshop'.
+%
\def\dccp@type{Practice Paper}
+%
+% These options set the value of |\def\dccp@type| appropriately.
+% The |practice| option is redundant, but included for symmetry.
+%
\DeclareOption{research}{\def\dccp@type{Research Paper}}
\DeclareOption{poster}{\def\dccp@type{Poster}}
\DeclareOption{demo}{\def\dccp@type{Demonstration}}
\DeclareOption{workshop}{\def\dccp@type{Workshop}}
\DeclareOption{practice}{\def\dccp@type{Practice Paper}}
+%
+% The details for each conference are slightly different, so they each have an
+% associated option for overriding the fallback definitions for
+% |\dccp@publ@short|, |\dccp@publ@msg| and |\dccp@subject|.
+%
\DeclareOption{15}{%
\def\dccp@publ@short{IDCC15}
\def\dccp@publ@msg{The 10th \dccp@publ@long\ takes place on [TBC] in [TBC].
@@ -37,44 +60,12 @@
}
\ProcessOptions\relax
+%
+% The rest of the formatting happens in the following file.
+%
\input{dccpaper-base}
%%
%% Copyright (C) 2014 Digital Curation Centre, University of Edinburgh
%% <info@dcc.ac.uk>
-%%
-%% The text files contained in this work may be distributed and/or modified under
-%% the conditions of the LaTeX Project Public License (LPPL), either version 1.3c
-%% of this license or (at your option) any later version. The latest version of
-%% this license is in the file:
-%%
-%% http://www.latex-project.org/lppl.txt
-%%
-%% The image files dccpaper-by.eps and dccpaper-by.pdf derive from the file by.eps,
-%% available from the following URL:
-%% http://mirrors.creativecommons.org/presskit/buttons/88x31/eps/by.eps
-%%
-%% The images remain a trademark of Creative Commons and are subject to the
-%% Creative Commons trademark policy:
-%% http://creativecommons.org/policies
-%%
-%% This work is "maintained" (as per LPPL maintenance status) by Alex Ball.
-%%
-%% This work consists of the aforementioned image files, the file dccpaper.dtx and
-%% a Makefile.
-%%
-%% Running `make' generates the derived files
-%%
-%% * README
-%% * dccpaper.pdf
-%% * ijdc-v9.cls
-%% * idcc.cls
-%% * dccpaper-base.tex
-%% * dccpaper-apacite.bib
-%% * dccpaper-biblatex.bib
-%%
-%% Running `make inst' installs the files in the user's TeX tree.
-%%
-%% Running `make install' installs the files in the local TeX tree.
-%%
%%
%% End of file `idcc.cls'.
diff --git a/Master/texmf-dist/tex/latex/dccpaper/ijdc-v9.cls b/Master/texmf-dist/tex/latex/dccpaper/ijdc-v9.cls
index d50e9f621b5..9662ddf5747 100644
--- a/Master/texmf-dist/tex/latex/dccpaper/ijdc-v9.cls
+++ b/Master/texmf-dist/tex/latex/dccpaper/ijdc-v9.cls
@@ -5,6 +5,7 @@
%% The original source files were:
%%
%% dccpaper.dtx (with options: `ijdc9')
+%%
%% ----------------------------------------------------------------
%% The dccpaper bundle: Classes for submissions to IJDC and IDCC
%% Author: Alex Ball
@@ -13,12 +14,23 @@
%% See: http://www.latex-project.org/lppl.txt
%% ----------------------------------------------------------------
%%
-\def\Version{2014/03/06 v1.1}
+\def\Version{2014/04/11 v1.2}
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesClass{ijdc-v9}
[\Version\space Class for submissions to the International Journal of Digital Curation, volume 9 onwards.]
+%
+% The type of paper is recorded in |\dccp@type|. The possible values are
+% `General Article', `Peer-Reviewed Paper', or `Editorial'.
+% The latter is provided through the constant |\dccp@editorial| so we can
+% test for it later with ease.
+%
\def\dccp@type{General Article}
\def\dccp@editorial{Editorial}
+%
+% These three options set |\dccp@type| appropriately. The |editorial|
+% option additionally switches page numbers to roman numerals.
+% The |article| option is redundant, but included for symmetry.
+%
\DeclareOption{editorial}{\let\dccp@type=\dccp@editorial%
\AtBeginDocument{% Editorials use Roman numerals for page numbers
\pagenumbering{roman}%
@@ -29,6 +41,11 @@
\DeclareOption{article}{\def\dccp@type{General Article}}
\ProcessOptions\relax
+%
+% These definitions are used to fill out the headers and footers. They include
+% some details that are defined in \textsf{dccpaper-base.tex} and provided by
+% the user: |\thedate|, |\thevolume|, |\theissue|, |\thelastpage|, |\thedoi|.
+%
\def\dccp@publ@long{International Journal of Digital Curation}
\def\dccp@publ@short{IJDC}
\def\dccp@publ@msg{The \emph{\dccp@publ@long} is an international journal
@@ -45,46 +62,18 @@ the University of Edinburgh on behalf of the Digital Curation Centre. ISSN:
DOI: \thedoi
}
\def\dccp@normhead@doi{doi:\thedoi}
+%
+% |\dccp@subject| will be used for the PDF subject, and will specify the journal
+% and the issue.
+%
\def\dccp@subject{\dccp@publ@long, \thedate, Vol.\ \thevolume, Iss.\ \theissue}
+%
+% The rest of the formatting happens in the following file.
+%
\input{dccpaper-base}
%%
%% Copyright (C) 2014 Digital Curation Centre, University of Edinburgh
%% <info@dcc.ac.uk>
-%%
-%% The text files contained in this work may be distributed and/or modified under
-%% the conditions of the LaTeX Project Public License (LPPL), either version 1.3c
-%% of this license or (at your option) any later version. The latest version of
-%% this license is in the file:
-%%
-%% http://www.latex-project.org/lppl.txt
-%%
-%% The image files dccpaper-by.eps and dccpaper-by.pdf derive from the file by.eps,
-%% available from the following URL:
-%% http://mirrors.creativecommons.org/presskit/buttons/88x31/eps/by.eps
-%%
-%% The images remain a trademark of Creative Commons and are subject to the
-%% Creative Commons trademark policy:
-%% http://creativecommons.org/policies
-%%
-%% This work is "maintained" (as per LPPL maintenance status) by Alex Ball.
-%%
-%% This work consists of the aforementioned image files, the file dccpaper.dtx and
-%% a Makefile.
-%%
-%% Running `make' generates the derived files
-%%
-%% * README
-%% * dccpaper.pdf
-%% * ijdc-v9.cls
-%% * idcc.cls
-%% * dccpaper-base.tex
-%% * dccpaper-apacite.bib
-%% * dccpaper-biblatex.bib
-%%
-%% Running `make inst' installs the files in the user's TeX tree.
-%%
-%% Running `make install' installs the files in the local TeX tree.
-%%
%%
%% End of file `ijdc-v9.cls'.