From 1421f3557eb7d3fbb2baea644579434d290bb587 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 23 Apr 2014 21:37:27 +0000 Subject: dccpaper (23apr14) git-svn-id: svn://tug.org/texlive/trunk@33643 c570f23f-e606-0410-a88d-b1316a301751 --- .../tex/latex/dccpaper/dccpaper-base.tex | 553 +++++++++++++++++++-- Master/texmf-dist/tex/latex/dccpaper/idcc.cls | 63 +-- Master/texmf-dist/tex/latex/dccpaper/ijdc-v9.cls | 61 +-- 3 files changed, 557 insertions(+), 120 deletions(-) (limited to 'Master/texmf-dist/tex/latex/dccpaper') 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{% ^^J% ^^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 %% -%% -%% 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 %% -%% -%% 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 %% -%% -%% 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'. -- cgit v1.2.3