%% %% This is file `dccpaper-base.tex', %% generated with the docstrip utility. %% %% The original source files were: %% %% dccpaper.dtx (with options: `base') %% %% ---------------------------------------------------------------- %% The dccpaper bundle: Classes for submissions to IJDC and IDCC %% Author: Alex Ball %% E-mail: a.ball@ukoln.ac.uk %% License: Released under the LaTeX Project Public License v1.3c or later %% See: http://www.latex-project.org/lppl.txt %% ---------------------------------------------------------------- %% \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 \leftskip\z@skip \parindent\RaggedParindent} \AtBeginDocument{\raggedyright} % % The |\flushleftright| layout restores full justification, in case it is % needed. % \newcommand*{\flushleftright}{% \let\\\OrigLineBreak \leftskip\z@skip \rightskip\leftskip \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 \ifnum\theauthors=1% \def\OtherMainAuthors{ and #1}% \appto\MainAuthor{\OtherMainAuthors}% \else \ifnum\theauthors=2% \def\OtherMainAuthors{ et al.}% \fi \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}% \ifnum\theblock>1\appto\AuthorBlock{\quad}\fi \appto\AuthorBlock{% \stepcounter{block}% \begin{minipage}[t]{0.45\textwidth}\centering \csname block\roman{block}@auth\endcsname \ifx\undefined\csname block\roman{block}@affil\endcsname \else \\[\affilsep]\csname block\roman{block}@affil\endcsname \fi \end{minipage}% \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% \renewcommand*{\HeadTitle}{#2}% \else \renewcommand*{\HeadTitle}{#1}% \fi% \begingroup\let\footnote\@gobble \ProperTitle{#2}% \begingroup \renewcommand{\thanks}[1]{} \protected@xdef\thetitle{#2} \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 \renewcommand{\thanks}[1]{} \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} \newcommand*{\issue}[1]{\renewcommand*{\theissue}{#1}} \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}{% \if@filesw \addtocounter{page}{-1}% \immediate\write\@auxout% {\string\setcounter{lastpage}{\the\c@page}}% \stepcounter{page}% \fi } \AtBeginDocument{\AtEndDocument{\clearpage\dol@stpage}} % % 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}% } \newcommand*{\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.}% } % % 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 \divide\@tempcnta\@tempcntb \setlength\@tempdimb{\baselineskip}% \multiply\@tempdimb\@tempcnta \advance\@tempdima-\@tempdimb \multiply\@tempdima\tw@ \ifdim\@tempdima>\baselineskip \addtolength\@tempdimb{\baselineskip}% \fi \addtolength\@tempdimb{\topskip}% \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}% \centering \LARGE\bfseries\color{struct}% \ifx\dccp@type\dccp@editorial \dccp@publ@long \else \dccp@publ@short\space\space\textbar\space\space\emph{\dccp@type}% \fi \par \end{minipage}% }% \let\@evenhead=\@oddhead \let\TitleHead=\@oddhead \def\@oddfoot{% \begin{minipage}[b]{\textwidth}% \fontsize{9pt}{11pt}\selectfont \ifx\dccp@type\dccp@editorial \else {\centering\dccp@dates\par} \bigskip Correspondence should be addressed to \thecorrespondence\par \bigskip \fi \ifx\empty\dccp@conf \else \dccp@conf\par \bigskip \fi \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/}% \end{minipage}\hfill \begin{minipage}[b]{19mm} \href{http://creativecommons.org/licenses/by/4.0/}% {\includegraphics[width=\hsize]{dccpaper-by}}% \end{minipage} \par \bigskip \makebox[0pt][l]{\parbox{0.4\hsize}{% \ifx\undefined\dccp@titlefoot@bib\else\dccp@titlefoot@bib\fi }}\hfill \makebox[0pt][c]{\normalsize\thepage}\hfill \makebox[0pt][r]{\parbox{0.4\hsize}{% \raggedleft\ifx\undefined\dccp@titlefoot@doi\else\dccp@titlefoot@doi\fi }}% \end{minipage}% }% \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 \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 \vskip6pt\color{struct}{\hrule height 1bp}\par \end{minipage} }% \let\NormalHead=\@oddhead \def\@oddfoot{\begin{minipage}[b]{\textwidth} \centering\bfseries\normalsize\color{struct} \ifx\dccp@type\dccp@editorial \dccp@publ@long \else \dccp@publ@short\space\space\textbar\space\space\emph{\dccp@type}% \fi \par \end{minipage}}% \let\@evenfoot=\@oddfoot \let\NormalFoot=\@oddfoot } \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} \newsavebox{\dccp@firstpagefoot} \sbox\dccp@firstpagehead{\normalfont \def\email#1{#1}\def\url#1{#1}\def\href#1#2{#2}\TitleFoot} \newsavebox{\dccp@restpagehead} \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 } \setlength{\textheight}{% \paperheight - 30mm % 15mm top and bottom - \headheight - \headsep - \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}{% 2\baselineskip + \ht\dccp@firstpagefoot + \dp\dccp@firstpagefoot } \setlength{\textheight}{% \paperheight - 30mm % 15mm top and bottom - \headheight - \headsep - \footskip + \baselineskip } \FixTextHeight } } % % 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 \centering { \Large\thetitle\par} \vspace{0.7\baselineskip} \AuthorBlock\par \vspace{1.7\baselineskip} \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}% \setlength{\leftmargin}{2\parindent}% }% \flushleftright\item[]% }{% \endlist } \def\afterabstract{} \renewenvironment{abstract}{% \vskip1em% \begin{center}% {\bfseries\abstractname\vspace{-.5em}\vspace{\z@}}% \end{center}% \widequote\footnotesize }{% \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] {% \vspace{2\baselineskip}% \nobreak \vspace*{-0.528\baselineskip}% \setcounter{sectionpars}{0}% \filcenter\normalfont\Large\bfseries } {\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% \vspace{2\baselineskip}% \else \vspace{\baselineskip}% \fi\nobreak \vspace*{-0.6\baselineskip}% \normalfont\normalsize\bfseries } {\thesubsection} {\quad} {} \titleformat{\subsubsection} [block] {\normalfont\normalsize\bfseries} {\thesubsubsection} {\quad} {} \titleformat{\paragraph} [block] {\normalfont\normalsize\bfseries\itshape} {\thesubsubsection} {\quad} {} \titleformat{\subparagraph} [block] {\normalfont\normalsize\itshape} {\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 , font=small , labelfont=bf , figureposition=bottom , 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}{% % % 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 , anchorcolor=black , citecolor=links , filecolor=black , menucolor=black , 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 }% \def\url@apa@questionmark{\mathchar"3F }% \def\url@apa@exclamation{\mathchar"21 }% \def\url@apa@hyphen{\mathchar"2D }% \def\url@apa@underscore{\_}% \def\UrlBreaks{\do\@\do\\\do\|\do\;\do\>\do\]\do\)\do\'\do+\do\=\do\#}% \def\UrlBigBreaks{\do\/\do\:\do@url@hyp}% \def\UrlNoBreaks{\do\(\do\[\do\{\do\<}% \)} \def\UrlOrds{\do\*\do\~\do\'\do\"}% \def\UrlSpecials{% \do\.{\mathbin{}\url@apa@dot }% \do\,{\mathbin{}\url@apa@comma }% \do\-{\mathbin{}\url@apa@hyphen }% \do\?{\mathbin{}\url@apa@questionmark }% \do\!{\mathbin{}\url@apa@exclamation }% \do\_{\mathbin{}\url@apa@underscore }% \do\ {\Url@space}\do\%{\Url@percent}\do\^^M{\Url@space}% \Url@force@Tilde}% \def\Url@OTnonTT{\do\<{\langle}\do\>{\mathbin{\rangle}}\do \_{\mathbin{}\_}\do\|{\mid}\do\{{\lbrace}\do\}{\mathbin{\rbrace}}\do \\{\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 \catcode`\#=12 \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{% ^^J% ^^J% ^^J% \sp^^J% \sp\spTrue^^J% \sp^^J% \sp^^J% \sp\sp^^J% \sp\sp\sp^^J% \sp\sp\sp\spThis work is licensed under a Creative Commons Attribution 4.0 International Licence.^^J% \sp\sp\sp^^J% \sp\sp^^J% \sp^^J% \sp^^J% \sp\sp^^J% \sp^^J% ^^J% ^^J% ^^J% }% } \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 \immediate\pdfobj stream attr {% /Type /Metadata /Subtype /XML }{\cc@xmp@packet}% \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 }% \pdfmark{% pdfmark=/OBJ, Raw={/_objdef \string{ccxmp@packet\string} /type /stream}% }% \pdfmark{% pdfmark=/PUT, Raw={\string{ccxmp@packet\string} 2 dict begin /Type /Metadata def /Subtype /XML def currentdict end }% }% \pdfmark{% pdfmark=/PUT, Raw={\string{ccxmp@packet\string} (\cc@xmp@packet)}% }% \pdfmark{% pdfmark=/Metadata, Raw={\string{Catalog\string} \string{ccxmp@packet\string}}% }% \pdfmark{% 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 \advance\@tempcnta by -1 \else \advance\@tempcnta by 1 \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 \else \advance\@tempcnta by 1 \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 << /Type /Metadata /Subtype /XML /Length \the\@tempcnta >> stream^^J\cc@xmp@packet endstream% }% \special{pdf: docview << /Metadata @ccxmp@packet >> }% } % % \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) << /Type /Metadata /Subtype /XML >> }% \special{pdf:put @catalog << /Metadata @ccxmp@packet >> }% } % % 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}% \ifx\ccxmp@driver\Hy@driver \ccxmp@embed@packet@pdftex \else \def\ccxmp@driver{hdvipdfm}% \ifx\ccxmp@driver\Hy@driver \ccxmp@embed@packet@dvipdfm \else \def\ccxmp@driver{hxetex}% \ifx\ccxmp@driver\Hy@driver \ccxmp@embed@packet@xetex \else \@ifundefined{pdfmark}{}{% \ccxmp@embed@packet@pdfmark }% \fi \fi \fi \endgroup } %% %% Copyright (C) 2014 Digital Curation Centre, University of Edinburgh %% %% %% End of file `dccpaper-base.tex'.