summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/dccpaper
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/dccpaper
Initial commit
Diffstat (limited to 'macros/latex/contrib/dccpaper')
-rw-r--r--macros/latex/contrib/dccpaper/Makefile71
-rw-r--r--macros/latex/contrib/dccpaper/README.md93
-rw-r--r--macros/latex/contrib/dccpaper/dccpaper-by.eps3225
-rw-r--r--macros/latex/contrib/dccpaper/dccpaper-by.pdfbin0 -> 5012 bytes
-rw-r--r--macros/latex/contrib/dccpaper/dccpaper.dtx2989
-rw-r--r--macros/latex/contrib/dccpaper/dccpaper.pdfbin0 -> 255950 bytes
6 files changed, 6378 insertions, 0 deletions
diff --git a/macros/latex/contrib/dccpaper/Makefile b/macros/latex/contrib/dccpaper/Makefile
new file mode 100644
index 0000000000..74787deb29
--- /dev/null
+++ b/macros/latex/contrib/dccpaper/Makefile
@@ -0,0 +1,71 @@
+NAME = dccpaper
+SHELL = bash
+PWD = $(shell pwd)
+TEMP := $(shell mktemp -d -t tmp.XXXXXXXXXX)
+TDIR = $(TEMP)/$(NAME)
+VERS = $(shell ltxfileinfo -v $(NAME).dtx)
+LOCAL = $(shell kpsewhich --var-value TEXMFLOCAL)
+UTREE = $(shell kpsewhich --var-value TEXMFHOME)
+
+.PHONY: source clean distclean inst install uninst uninstall zip ctan
+
+all: $(NAME).pdf clean
+ @exit 0
+
+source: $(NAME).dtx
+ tex -interaction=batchmode $(NAME).dtx >/dev/null
+
+ijdc-v9.cls idcc.cls $(NAME)-base.sty $(NAME)-apacite.bib $(NAME)-biblatex.bib README.md: source
+
+$(NAME).pdf: $(NAME).dtx ijdc-v9.cls $(NAME)-biblatex.bib $(NAME)-by.pdf
+ lualatex -recorder -interaction=batchmode $(NAME).dtx >/dev/null
+ biber $(NAME)
+ lualatex -recorder -interaction=batchmode $(NAME).dtx >/dev/null
+ lualatex -recorder -interaction=batchmode $(NAME).dtx >/dev/null
+ @echo "Compilation of PDF finished."
+
+apacitetest.pdf: clean $(NAME).dtx ijdc-v9.cls $(NAME)-apacite.bib $(NAME)-by.pdf
+ lualatex -recorder -interaction=batchmode '\newif\ifapacite\input $(NAME).dtx' >/dev/null
+ bibtex $(NAME)
+ lualatex -recorder -interaction=batchmode '\newif\ifapacite\input $(NAME).dtx' >/dev/null
+ lualatex -recorder -interaction=batchmode '\newif\ifapacite\input $(NAME).dtx' >/dev/null
+ mv $(NAME).pdf apacitetest.pdf
+ $(MAKE) clean
+ @echo "Compilation of PDF finished."
+
+clean:
+ rm -f $(NAME).{aux,bbl,bcf,blg,fdb_latexmk,fls,glo,gls,hd,idx,ilg,ind,ins,lsttemp,log,markdown.in,markdown.lua,markdown.out,out,run.xml,synctex.gz} $(NAME)-base.doc ijdc-v9.doc idcc.doc
+ rm -rf _markdown_$(NAME)
+
+distclean: clean
+ rm -f $(NAME).pdf apacitetest.pdf ijdc-v9.cls idcc.cls $(NAME)-base.sty $(NAME)-{biblatex,apacite}.bib
+
+inst: all
+ mkdir -p $(UTREE)/{tex,source,doc}/latex/$(NAME)
+ cp $(NAME).dtx $(UTREE)/source/latex/$(NAME)
+ cp {ijdc-v9,idcc}.cls $(NAME)-base.sty $(NAME)-by.{eps,pdf} $(UTREE)/tex/latex/$(NAME)
+ cp $(NAME).pdf $(NAME)-{biblatex,apacite}.bib README.md $(UTREE)/doc/latex/$(NAME)
+ mktexlsr
+uninst:
+ rm -r $(UTREE)/{tex,source,doc}/latex/$(NAME)
+ mktexlsr
+
+install: all
+ sudo mkdir -p $(LOCAL)/{tex,source,doc}/latex/$(NAME)
+ sudo cp $(NAME).dtx $(LOCAL)/source/latex/$(NAME)
+ sudo cp {ijdc-v9,idcc}.cls $(NAME)-base.sty $(NAME)-by.{eps,pdf} $(LOCAL)/tex/latex/$(NAME)
+ sudo cp $(NAME).pdf $(NAME)-{biblatex,apacite}.bib README.md $(LOCAL)/doc/latex/$(NAME)
+ mktexlsr
+uninstall:
+ sudo rm -r $(LOCAL)/{tex,source,doc}/latex/$(NAME)
+ mktexlsr
+
+zip: all
+ mkdir $(TDIR)
+ cp {ijdc-v9,idcc}.cls $(NAME)-base.sty $(NAME)-by.{eps,pdf} $(NAME).{dtx,pdf} README.md Makefile $(TDIR)
+ cd $(TEMP); zip -Drq $(PWD)/$(NAME)-$(VERS).zip $(NAME)
+
+ctan: all
+ mkdir $(TDIR)
+ cp $(NAME).{dtx,pdf} $(NAME)-by.{eps,pdf} README.md Makefile $(TDIR)
+ cd $(TEMP); zip -Drq $(PWD)/$(NAME)-$(VERS).zip $(NAME)
diff --git a/macros/latex/contrib/dccpaper/README.md b/macros/latex/contrib/dccpaper/README.md
new file mode 100644
index 0000000000..2cf7919175
--- /dev/null
+++ b/macros/latex/contrib/dccpaper/README.md
@@ -0,0 +1,93 @@
+# The dccpaper bundle: LaTeX classes for submissions to IJDC and IDCC
+
+The dccpaper bundle consists of two very similar classes.
+
+ijdc-v9.cls corresponds to the template used by the
+[International Journal of Digital Curation], beginning with volume 9.
+
+idcc.cls corresponds to the template used for the
+[International Digital Curation Conference], beginning with IDCC15.
+
+As the classes are so similar, their common features are abstracted out
+into dccpaper-base.sty; please do not attempt to use this package
+independently of the above classes.
+
+The classes are suitable for submissions to the respective review
+boards, but can also be used to produce the final camera-ready papers.
+
+[International Journal of Digital Curation]: http://www.ijdc.net/index.php/ijdc
+[International Digital Curation Conference]: http://www.dcc.ac.uk/events/international-digital-curation-conference-idcc
+
+## Installation
+
+### Managed way
+
+The latest stable release of the dccpaper bundle has been packaged for
+TeX Live and MiKTeX. If you are running TeX Live and have `tlmgr`
+installed, you can install the bundle simply by running
+`tlmgr install dccpaper`. If you are running MiKTeX, you can install the
+bundle by running `mpm --install=dccpaper`. Both `tlmgr` and `mpm` have
+GUI versions that you might find friendlier.
+
+### Automated way
+
+A makefile is provided which you can use with the Make utility:
+
+ * Running `make source` generates the derived files
+ - README.md
+ - ijdc-v9.cls
+ - idcc.cls
+ - dccpaper-base.sty
+ - dccpaper-apacite.bib
+ - dccpaper-biblatex.bib
+ * Running `make` generates the above files and also dccpaper.pdf.
+ * Running `make inst` installs the files in the user's TeX tree.
+ * Running `make install` installs the files in the local TeX tree.
+
+### Manual way
+
+ 1. Run `tex dccpaper.dtx` to generate the source files.
+ 2. Compile dccpaper.dtx with (any version of) LaTeX and Biber to generate the
+ documentation. Due to a dependency on the markdown package, you will need
+ either to use LuaLaTeX or to enable shell escape.
+ 3. Move the files to your TeX tree as follows:
+ - `source/latex/dccpaper`:
+ dccpaper.dtx,
+ dccpaper.ins
+ - `tex/latex/dccpaper`:
+ ijdc-v9.cls,
+ idcc.cls,
+ dccpaper-base.sty,
+ dccpaper-by.eps,
+ dccpaper-by.pdf
+ - `doc/latex/dccpaper`:
+ dccpaper.pdf,
+ dccpaper-apacite.bib,
+ dccpaper-biblatex.bib,
+ README.md
+
+ 4. You may then have to update your installation's file name database
+ before TeX and friends can see the files.
+
+## Licence
+
+Copyright 2019 Digital Curation Centre, University of Edinburgh.
+
+This work consists of the image files dccpaper-by.eps and
+dccpaper-by.pdf, the documented LaTeX file dccpaper.dtx and a Makefile.
+
+The text files contained in this work may be distributed and/or modified
+under the conditions of the [LaTeX Project Public License (LPPL)][lppl],
+either version 1.3c of this license or (at your option) any later
+version.
+
+The image files distributed with this bundle derive from the file
+[by.eps] distributed by Creative Commons. The image is a trademark of
+Creative Commons and is subject to the [Creative Commons trademark policy][cctp].
+
+This work is “maintained” (as per LPPL maintenance status) by [Alex Ball][me].
+
+[lppl]: http://www.latex-project.org/lppl.txt "LaTeX Project Public License (LPPL)"
+[by.eps]: http://mirrors.creativecommons.org/presskit/buttons/88x31/eps/by.eps "CC BY licence badge"
+[cctp]: http://creativecommons.org/policies "Creative Commons trademark policy"
+[me]: http://alexball.me.uk/ "Alex Ball"
diff --git a/macros/latex/contrib/dccpaper/dccpaper-by.eps b/macros/latex/contrib/dccpaper/dccpaper-by.eps
new file mode 100644
index 0000000000..5b5c60050a
--- /dev/null
+++ b/macros/latex/contrib/dccpaper/dccpaper-by.eps
@@ -0,0 +1,3225 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: Adobe Illustrator(R) 8.0
+%%AI8_CreatorVersion: 13.0.1
+%%For: (Alex Roberts) ()
+%%Title: (by.eps)
+%%CreationDate: 3/27/08 4:26 PM
+%%BoundingBox: 340 278 461 321
+%%HiResBoundingBox: 340.5 278.5 460.5 320.5
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%%DocumentSuppliedResources: procset Adobe_level2_AI5 1.2 0
+%%+ procset Adobe_ColorImage_AI6 1.3 0
+%%+ procset Adobe_Illustrator_AI5 1.3 0
+%%+ procset Adobe_cshow 2.0 8
+%%+ procset Adobe_shading_AI8 1.0 0
+%AI5_FileFormat 4.0
+%AI3_ColorUsage: Color
+%AI3_IncludePlacedImages
+%AI7_ImageSettings: 1
+%%CMYKProcessColor: 0.74902 0.678431 0.670588 0.901961 ([Registration])
+%%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set)
+%%+ Options: 1 16 0 1 1 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 2 3 4
+%%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 -1 -1 ()
+%AI3_Cropmarks: 340.5 278.5 460.5 320.5
+%AI3_TemplateBox: 400.5 299.5 400.5 299.5
+%AI3_TileBox: 112 -56 688 678
+%AI3_DocumentPreview: Macintosh_ColorPic
+%AI5_ArtSize: 800 600
+%AI5_RulerUnits: 6
+%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0
+%AI5_TargetResolution: 800
+%AI5_NumLayers: 1
+%AI8_OpenToView: -381 756 1 1566 923 26 0 0 73 75 0 0
+%AI5_OpenViewLayers: 7
+%%PageOrigin:0 0
+%AI7_GridSettings: 48 8 48 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9
+%AI9_Flatten: 1
+%AI12_CMSettings: 00.MS
+%AI7_Thumbnail: 128 48 8
+%%BeginData: 7956 Hex Bytes
+%0000330000660000990000CC0033000033330033660033990033CC0033FF
+%0066000066330066660066990066CC0066FF009900009933009966009999
+%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
+%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
+%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
+%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
+%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
+%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
+%6666006666336666666666996666CC6666FF669900669933669966669999
+%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
+%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
+%9933009933339933669933999933CC9933FF996600996633996666996699
+%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
+%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
+%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
+%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
+%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
+%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
+%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
+%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
+%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
+%000011111111220000002200000022222222440000004400000044444444
+%550000005500000055555555770000007700000077777777880000008800
+%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
+%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
+%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
+%524C45A8FD7DF827A8F8275258527D5258527D5258527D5258527D525852
+%7D5258527D5258527D5258527D5258527D5258527D5258527D5258527D52
+%58527D5258527D5258527D5258527D5258527D5258527D5258527D525852
+%7D5258527D5258527D5258527D5258527D5258527D5258527D5258527D52
+%58527D5258527D5258527D5258527DF8F8F852A87D837DA87D837DA87D83
+%7DA87D837DA87D847DA87D837DA87D837DA87D837DA87D837DA87D837DA8
+%7D837DA87D837DA87D837DA87D837DA87D837DA87D837DA87D837DA87D83
+%7DA87D837DA883A87DA883A87DA87D837DA87D837DA87D837DA87D837DA8
+%7D837DA87D837DA87D837DA87D837DA87D837DA87D837D7DF8F8FD127D83
+%FD3A7DFD05525858FD297D52F8F852A87D837D837D837D837D837DA87D83
+%5258275227272752527D7DA87D837D837D837D837D837D837D837D837D83
+%7D837D837D837D837D837D837D837D837D837D837D837D837D837DA87D52
+%2727FD05F827277D7DA87D837D837D837D837D837D837D837D837D837D83
+%7D837D837D837D837D837D837D837D837D7DF8F8FD0C7D837D52FD0BF827
+%2DFD2D7D5227FD0BF8275883FD247D52F8F858837D837D7D7D837D7D7DA8
+%5227FD0FF8527DA87D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D
+%7D837D7D7D837D7D7D837D7D7D837D7D7DA82DFD04F8527DA8A8A87D52F8
+%F8F82752A87D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D
+%837D7D7D837D7D7D837D7DF8F8FD0B7D27FD06F82727525227FD07F82758
+%83FD267D27F8F8F852FD08FFA827F8F8F85283FD227D52F8F858A87D837D
+%837D837D7DFD05F8277DFD07FFA87D27FD04F8277DA87D837D837D837D83
+%7D837D837D837D837D837D837D837D837D837D837D837D837D837DA852F8
+%F827A8FD04FF7D27A8FD04FF7DF8F8F852A87D837D837D837D837D837D83
+%7D837D837D837D837D837D837D837D837D837D837D7DF8F8FD097DFD05F8
+%7DFD0CFF7D27F8F8F827FD237D8352F8F8F8A8FD04FF7DF8F8F8A8FD04FF
+%7DF8F827FD217D8352F8F852A87D7D7D837D8327F8F8F827FD0FFFA852F8
+%F8F8277D837D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D
+%837D7D7D837D7D7D27F8F87DFD05FF52F8F8F8A8FD05FF52F8F8527D837D
+%7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D83FD047D
+%F8F859FD057D8327F8F8F827FD12FF52F8F8F827FD227DF8F827FD07FF27
+%2752FD07FFF8F8F8FD217D52F8F852A87D837DA852F8F8F827FD14FF52F8
+%F8F8587D837D837D837D837D837D837D837D837D837D837D837D837D837D
+%837D837DA827F8F8A8FD05FFA8527D527D52FD06FF7DF8F852A87D837D83
+%7D837D837D837D837D837D837D837D837D837D837D837D837D837D7DF8F8
+%FD067D27F8F8F8A8FD14FFA827F8F8F8FD207D27F827FD06FFFD06F827FD
+%05FFA8F8F852FD207D52F8F858837D837D58F8F8F87DFD16FF7DF8F8F852
+%A87D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D83FD047D
+%F8F852FD06FFFD06F827FD06FF27F827837D837D7D7D837D7D7D837D7D7D
+%837D7D7D837D7D7D837D7D7D837D7D7D837D7DF8F8FD047D8327F8F827FD
+%18FF27F8F827FD1E7D52F8F87DFD06FFFD06F827FD06FF52F827FD207D52
+%F8F858A87DA87D27F8F87DFD05FF7D5227527DFD05FF7D52277DA8FD04FF
+%7DF8F8F87D7D837D837D837D837D837D837D837D837D837D837D837D837D
+%837D837D7DF8F87DFD06FF27FD05F852FD06FF52F827837D837D837D837D
+%837D837D837D837D837D837D837D837D837D837D837D837D7DF8F8FD047D
+%52F8F8F8FD05FF27FD05F827FFFFA8FD06F852FFFFFFA8F8F8F852FD1D7D
+%52F8F87DFD06FFFD06F827FD06FF52F827FD1F7D8352F8F852A87DA827F8
+%F827FD04FF27F8F8F82727F8F852FFF8F8F82727F8F8F87DFFFFFF27F8F8
+%527D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D
+%7DF8F87DFD06FF52FD05F87DFD06FF27F827A87D7D7D837D7D7D837D7D7D
+%837D7D7D837D7D7D837D7D7D837D7D7D83FD047DF8F8597D7D7D27F8F852
+%FFFFFFA8F8F8F87DFFA82727A852F8F827A8FF7DF827A8FFFFFF52F8F827
+%83FD1D7D27F852FD07FF52F8F8F87DFD06FFA827F827FD207D52F8F852A8
+%7D8327F8F87DFFFFFF7DF8F827FFFFFFA8FFFF27F8F87DFFFFFFA8FD05FF
+%7DF8F8277D837D837D837D837D837D837D837D837D837D837D837D837D83
+%7D837DA827F8F8FD07FF52F8F8F87DFD06FFA8F8F852A87D837D837D837D
+%837D837D837D837D837D837D837D837D837D837D837D837D7DF8F8FD047D
+%27F8F87DFFFFFF52F8F852FD06FFF8F8F8A8FD09FF7DF8F8F8FD1E7D52F8
+%F852FD06FF52F8F8F87DFD06FF27F8F8FD217D52F8F858837D8327F8F87D
+%FFFFFF7DF8F852FD06FF27F8F8A8FD09FF7DF8F8277D837D7D7D837D7D7D
+%837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D27F827A8FD05FF52
+%F8F8F87DFD05FF7DF8F8527D7D7D837D7D7D837D7D7D837D7D7D837D7D7D
+%837D7D7D837D7D7D837D7D7D837D7DF8F8FD047D27F8F852FFFFFF52F8F8
+%27FFFFFF7D52FF27F8F87DFFFFFF7D7DFD04FF7DF8F827FD1E7D8352F8F8
+%27FD05FF52F8F8F87DFD04FFA8F8F8F852FD217D52F8F858A87DA827F8F8
+%52FD04FFF8F8F852A87DF8F8527DF8F8F87DA852F8F87DFFFFFF52F8F852
+%7D837D837D837D837D837D837D837D837D837D837D837D837D837D837D83
+%7DA827F8F852FD04FF52F8F8F87DFFFFFFA827F8F852A87D837D837D837D
+%837D837D837D837D837D837D837D837D837D837D837D837D837D7DF8F8FD
+%047D52F8F8F8FD04FF7DFD07F87DFF27FD07F8A8FFFFFF27F8F82D83FD20
+%7DF8F8F8277DFFFFFFA8FFA8FFFFFF7DF8F8F827FD227D8352F8F852A87D
+%8352F8F8F8A8FD04FF7DFD05F8A8FFFFFF52FD04F827FD05FFF8F8F8FD04
+%7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D83
+%7D7D27F8F8F827A8A8FFFFFFA87D27F8F8F827A87D7D7D837D7D7D837D7D
+%7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D83FD047DF8F859FD04
+%7DF8F8F852FD06FF7D7D7DFFFFFFA8FFFFA87DA8A8FD05FF52F8F8F859FD
+%237D27FD06F827FD06F852FD257D52F8F852A87D837D52F8F8F8FD18FF27
+%F8F827A87D837D837D837D837D837D837D837D837D837D837D837D837D83
+%7D837D837D837D837DA85227FD09F8527DA87D837D837D837D837D837D83
+%7D837D837D837D837D837D837D837D837D837D837D837D837D7DF8F8FD05
+%7D52F8F8F827FD16FF52F8F8F8FD267D837D7D525227272752527D7D83FD
+%267D52F8F858837D837DA827F8F8F87DFD14FFA8F8F8F8277D7D7D837D7D
+%7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D83
+%7D7D7D837D847DA87D847DA87D7D7D837D7D7D837D7D7D837D7D7D837D7D
+%7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7DF8F8FD077DFD
+%04F87DFD12FFA8FD04F852FD047D837D7D7D837D7D7D837D7D7D837D7D7D
+%837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D
+%7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D837D7D7D
+%837D7D7D837D7D7DA852F8F8527D52587D847D7DFD04F87DFD10FFA8FD04
+%F852A87D7D527D5258527D5258527D5258527D5258527D5258527D525852
+%7D5258527D5258527D5258527D5258527D5258527D5258527D5258527D52
+%58527D5258527D5258527D5258527D5258527D5258527D5258527D525852
+%7D5252FD06F8277D7D7D52FD04F852FD0EFF7DFD04F827837D7DFD60F852
+%7D837D52FD04F827A8FD0AFFA852FD04F827A87DA827FD61F8587D7D7D52
+%FD05F82752A8A8FFA8A87D7D27FD05F8277D7D8352FD63F87D7DA87D7DFD
+%09F827FD07F82752A87DA858FD27F852A87DA87D2727A852F8F8527D27FD
+%30F8FD057D27FD0EF85258A87D8352FD28F87DFFA8A8FFA8F8A8FFF8F8FF
+%FFFD32F87D7D837DA87D522727FD07F827527D7D837DA85227FD28F87DFF
+%F8F87DFFF852FF7D7DFF27FD33F8527D837D7D7D83587DFD0552FD077D27
+%FD2AF87DFF7D7DFF52F8F8A8FFFF7DFD35F82758A87DA87D847DA87DA87D
+%A87D837DA87D7D27FD2BF87DFF7DA8FFFFF8F827FFFF27FD37F827527D83
+%7D7D7D837D7D7D837D7D5227FD2DF87DFFF8F852FF52F8F8A8A8FD3AF827
+%2752527D587D587D5252FD30F87DFF7D7DA8FF27F8F8FFA8FD75F87DFD04
+%A852F8F8F87DA8FDFCF8FD2EF852FD7F27FD7FFFFF
+%%EndData
+%%EndComments
+%%BeginProlog
+%%BeginResource: procset Adobe_level2_AI5 1.2 0
+%%Title: (Adobe Illustrator (R) Version 5.0 Level 2 Emulation)
+%%Version: 1.2 0
+%%CreationDate: (04/10/93) ()
+%%Copyright: ((C) 1987-1996 Adobe Systems Incorporated All Rights Reserved)
+userdict /Adobe_level2_AI5 26 dict dup begin
+ put
+ /packedarray where not
+ {
+ userdict begin
+ /packedarray
+ {
+ array astore readonly
+ } bind def
+ /setpacking /pop load def
+ /currentpacking false def
+ end
+ 0
+ } if
+ pop
+ userdict /defaultpacking currentpacking put true setpacking
+ /initialize
+ {
+ Adobe_level2_AI5 begin
+ } bind def
+ /terminate
+ {
+ currentdict Adobe_level2_AI5 eq
+ {
+ end
+ } if
+ } bind def
+ mark
+ /setcustomcolor where not
+ {
+ /findcmykcustomcolor
+ {
+ (AI8_CMYK_CustomColor)
+ 6 packedarray
+ } bind def
+ /findrgbcustomcolor
+ {
+ (AI8_RGB_CustomColor)
+ 5 packedarray
+ } bind def
+ /setcustomcolor
+ {
+ exch
+ aload pop dup
+ (AI8_CMYK_CustomColor) eq
+ {
+ pop pop
+ 4
+ {
+ 4 index mul
+ 4 1 roll
+ } repeat
+ 5 -1 roll pop
+ setcmykcolor
+ }
+ {
+ dup (AI8_RGB_CustomColor) eq
+ {
+ pop pop
+ 3
+ {
+ 1 exch sub
+ 3 index mul
+ 1 exch sub
+ 3 1 roll
+ } repeat
+ 4 -1 roll pop
+ setrgbcolor
+ }
+ {
+ pop
+ 4
+ {
+ 4 index mul 4 1 roll
+ } repeat
+ 5 -1 roll pop
+ setcmykcolor
+ } ifelse
+ } ifelse
+ }
+ def
+ } if
+ /setAIseparationgray
+ {
+ false setoverprint
+ 0 setgray
+ /setseparationgray where{
+ pop setseparationgray
+ }{
+ /setcolorspace where{
+ pop
+ [/Separation (All) /DeviceCMYK {dup dup dup}] setcolorspace
+ 1 exch sub setcolor
+ }{
+ setgray
+ }ifelse
+ }ifelse
+ } def
+
+ /gt38? mark {version cvr cvx exec} stopped {cleartomark true} {38 gt exch pop} ifelse def
+ userdict /deviceDPI 72 0 matrix defaultmatrix dtransform dup mul exch dup mul add sqrt put
+ userdict /level2?
+ systemdict /languagelevel known dup
+ {
+ pop systemdict /languagelevel get 2 ge
+ } if
+ put
+/level2ScreenFreq
+{
+ begin
+ 60
+ HalftoneType 1 eq
+ {
+ pop Frequency
+ } if
+ HalftoneType 2 eq
+ {
+ pop GrayFrequency
+ } if
+ HalftoneType 5 eq
+ {
+ pop Default level2ScreenFreq
+ } if
+ end
+} bind def
+userdict /currentScreenFreq
+ level2? {currenthalftone level2ScreenFreq} {currentscreen pop pop} ifelse put
+level2? not
+ {
+ /setcmykcolor where not
+ {
+ /setcmykcolor
+ {
+ exch .11 mul add exch .59 mul add exch .3 mul add
+ 1 exch sub setgray
+ } def
+ } if
+ /currentcmykcolor where not
+ {
+ /currentcmykcolor
+ {
+ 0 0 0 1 currentgray sub
+ } def
+ } if
+ /setoverprint where not
+ {
+ /setoverprint /pop load def
+ } if
+ /selectfont where not
+ {
+ /selectfont
+ {
+ exch findfont exch
+ dup type /arraytype eq
+ {
+ makefont
+ }
+ {
+ scalefont
+ } ifelse
+ setfont
+ } bind def
+ } if
+ /cshow where not
+ {
+ /cshow
+ {
+ [
+ 0 0 5 -1 roll aload pop
+ ] cvx bind forall
+ } bind def
+ } if
+ } if
+ cleartomark
+ /anyColor?
+ {
+ add add add 0 ne
+ } bind def
+ /testColor
+ {
+ gsave
+ setcmykcolor currentcmykcolor
+ grestore
+ } bind def
+ /testCMYKColorThrough
+ {
+ testColor anyColor?
+ } bind def
+ userdict /composite?
+ 1 0 0 0 testCMYKColorThrough
+ 0 1 0 0 testCMYKColorThrough
+ 0 0 1 0 testCMYKColorThrough
+ 0 0 0 1 testCMYKColorThrough
+ and and and
+ put
+ composite? not
+ {
+ userdict begin
+ gsave
+ /cyan? 1 0 0 0 testCMYKColorThrough def
+ /magenta? 0 1 0 0 testCMYKColorThrough def
+ /yellow? 0 0 1 0 testCMYKColorThrough def
+ /black? 0 0 0 1 testCMYKColorThrough def
+ grestore
+ /isCMYKSep? cyan? magenta? yellow? black? or or or def
+ /customColor? isCMYKSep? not def
+ end
+ } if
+ end defaultpacking setpacking
+%%EndResource
+%%BeginProcSet: Adobe_ColorImage_AI6 1.3 0
+userdict /Adobe_ColorImage_AI6 known not
+{
+ userdict /Adobe_ColorImage_AI6 53 dict put
+} if
+userdict /Adobe_ColorImage_AI6 get begin
+/initialize {
+ Adobe_ColorImage_AI6 begin
+ Adobe_ColorImage_AI6 {
+ dup type /arraytype eq {
+ dup xcheck {
+ bind
+ } if
+ } if
+ pop pop
+ } forall
+} def
+/terminate { end } def
+currentdict /Adobe_ColorImage_AI6_Vars known not {
+ /Adobe_ColorImage_AI6_Vars 41 dict def
+} if
+Adobe_ColorImage_AI6_Vars begin
+ /plateindex -1 def
+ /_newproc null def
+ /_proc1 null def
+ /_proc2 null def
+ /sourcearray 4 array def
+ /_ptispace null def
+ /_ptiname null def
+ /_pti0 0 def
+ /_pti1 0 def
+ /_ptiproc null def
+ /_ptiscale 0 def
+ /_pticomps 0 def
+ /_ptibuf 0 string def
+ /_gtigray 0 def
+ /_cticmyk null def
+ /_rtirgb null def
+ /XIEnable true def
+ /XIType 0 def
+ /XIEncoding 0 def
+ /XICompression 0 def
+ /XIChannelCount 0 def
+ /XIBitsPerPixel 0 def
+ /XIImageHeight 0 def
+ /XIImageWidth 0 def
+ /XIImageMatrix null def
+ /XIRowBytes 0 def
+ /XIFile null def
+ /XIBuffer1 null def
+ /XIBuffer2 null def
+ /XIBuffer3 null def
+ /XIDataProc null def
+ /XIColorSpace /DeviceGray def
+ /XIColorValues 0 def
+ /XIPlateList false def
+end
+/ci6colorimage /colorimage where {/colorimage get}{null} ifelse def
+/ci6image systemdict /image get def
+/ci6curtransfer systemdict /currenttransfer get def
+/ci6curoverprint /currentoverprint where {/currentoverprint get}{{_of}} ifelse def
+/ci6foureq {
+ 4 index ne {
+ pop pop pop false
+ }{
+ 4 index ne {
+ pop pop false
+ }{
+ 4 index ne {
+ pop false
+ }{
+ 4 index eq
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6testplate {
+ Adobe_ColorImage_AI6_Vars begin
+ /plateindex -1 def
+ /setcmykcolor where {
+ pop
+ gsave
+ 1 0 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+ 0 1 0 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+ 0 0 1 0 setcmykcolor systemdict /currentgray get exec 1 exch sub
+ 0 0 0 1 setcmykcolor systemdict /currentgray get exec 1 exch sub
+ grestore
+ 1 0 0 0 ci6foureq {
+ /plateindex 0 def
+ }{
+ 0 1 0 0 ci6foureq {
+ /plateindex 1 def
+ }{
+ 0 0 1 0 ci6foureq {
+ /plateindex 2 def
+ }{
+ 0 0 0 1 ci6foureq {
+ /plateindex 3 def
+ }{
+ 0 0 0 0 ci6foureq {
+ /plateindex 5 def
+ } if
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+ pop pop pop pop
+ } if
+ plateindex
+ end
+} def
+/ci6concatprocs {
+ /packedarray where {
+ pop dup type /packedarraytype eq 2 index type
+ /packedarraytype eq or
+ }{
+ false
+ } ifelse
+ {
+ /_proc2 exch cvlit def
+ /_proc1 exch cvlit def
+ _proc1 aload pop
+ _proc2 aload pop
+ _proc1 length
+ _proc2 length add
+ packedarray cvx
+ }{
+ /_proc2 exch cvlit def
+ /_proc1 exch cvlit def
+ /_newproc _proc1 length _proc2 length add array def
+ _newproc 0 _proc1 putinterval
+ _newproc _proc1 length _proc2 putinterval
+ _newproc cvx
+ } ifelse
+} def
+/ci6istint {
+ type /arraytype eq
+} def
+/ci6isspot {
+ dup type /arraytype eq {
+ dup length 1 sub get /Separation eq
+ }{
+ pop false
+ } ifelse
+} def
+/ci6spotname {
+ dup ci6isspot {dup length 2 sub get}{pop ()} ifelse
+} def
+/ci6altspace {
+ aload pop pop pop ci6colormake
+} def
+/ci6numcomps {
+ dup /DeviceGray eq {
+ pop 1
+ }{
+ dup /DeviceRGB eq {
+ pop 3
+ }{
+ /DeviceCMYK eq {
+ 4
+ }{
+ 1
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6marksplate {
+ dup /DeviceGray eq {
+ pop plateindex 3 eq
+ }{
+ dup /DeviceRGB eq {
+ pop plateindex 5 ne
+ }{
+ dup /DeviceCMYK eq {
+ pop plateindex 5 ne
+ }{
+ dup ci6isspot {
+ /findcmykcustomcolor where {
+ pop
+ dup length 2 sub get
+ 0.1 0.1 0.1 0.1 5 -1 roll
+ findcmykcustomcolor 1 setcustomcolor
+ systemdict /currentgray get exec
+ 1 ne
+ }{
+ pop plateindex 5 ne
+ } ifelse
+ }{
+ pop plateindex 5 ne
+ } ifelse
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6colormake {
+ dup ci6numcomps
+ exch 1 index 2 add 1 roll
+ dup 1 eq {pop}{array astore} ifelse
+ exch
+} def
+/ci6colorexpand {
+ dup ci6spotname exch
+ dup ci6istint {
+ ci6altspace
+ exch 4 1 roll
+ }{
+ 1 3 1 roll
+ } ifelse
+} def
+/ci6colortint {
+ dup /DeviceGray eq {
+ 3 1 roll 1 exch sub mul 1 exch sub exch
+ }{
+ dup /DeviceRGB eq {
+ 3 1 roll {1 exch sub 1 index mul 1 exch sub exch} forall pop 3 array astore exch
+ }{
+ dup /DeviceCMYK eq {
+ 3 1 roll {1 index mul exch} forall pop 4 array astore exch
+ }{
+ 3 1 roll mul exch
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6colortocmyk {
+ dup /DeviceGray eq {
+ pop 1 exch sub 0 0 0 4 -1 roll 4 array astore
+ }{
+ dup /DeviceRGB eq {
+ pop aload pop _rgbtocmyk 4 array astore
+ }{
+ dup /DeviceCMYK eq {
+ pop
+ }{
+ ci6altspace ci6colortint ci6colortocmyk
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6makeimagedict {
+ 7 dict begin
+ /ImageType 1 def
+ /Decode exch def
+ /DataSource exch def
+ /ImageMatrix exch def
+ /BitsPerComponent exch def
+ /Height exch def
+ /Width exch def
+ currentdict end
+} def
+/ci6stringinvert {
+ 0 1 2 index length 1 sub {
+ dup 2 index exch get 255 exch sub 2 index 3 1 roll put
+ } for
+} def
+/ci6stringknockout {
+ 0 1 2 index length 1 sub {
+ 255 2 index 3 1 roll put
+ } for
+} def
+/ci6stringapply {
+ 0 1 4 index length 1 sub {
+ dup
+ 4 index exch get
+ 3 index 3 1 roll
+ 3 index exec
+ } for
+ pop exch pop
+} def
+/ci6walkrgbstring {
+ 0 3 index
+ dup length 1 sub 0 3 3 -1 roll {
+ 3 getinterval {} forall
+ 5 index exec
+ 3 index
+ } for
+
+ 5 {pop} repeat
+} def
+/ci6walkcmykstring
+{
+ 0 3 index
+ dup length 1 sub 0 4 3 -1 roll {
+ 4 getinterval {} forall
+
+ 6 index exec
+
+ 3 index
+
+ } for
+
+ 5 { pop } repeat
+
+} def
+/ci6putrgbtograystr
+{
+ .11 mul exch
+
+ .59 mul add exch
+
+ .3 mul add
+
+ cvi 3 copy put
+
+ pop 1 add
+} def
+/ci6putcmyktograystr
+{
+ exch .11 mul add
+
+ exch .59 mul add
+
+ exch .3 mul add
+
+ dup 255 gt { pop 255 } if
+
+ 255 exch sub cvi 3 copy put
+
+ pop 1 add
+} def
+/ci6rgbtograyproc {
+ Adobe_ColorImage_AI6_Vars begin
+ sourcearray 0 get exec
+ XIBuffer3
+ dup 3 1 roll
+
+ /ci6putrgbtograystr load exch
+ ci6walkrgbstring
+ end
+} def
+/ci6cmyktograyproc {
+ Adobe_ColorImage_AI6_Vars begin
+ sourcearray 0 get exec
+ XIBuffer3
+ dup 3 1 roll
+
+ /ci6putcmyktograystr load exch
+ ci6walkcmykstring
+ end
+} def
+/ci6separatecmykproc {
+ Adobe_ColorImage_AI6_Vars begin
+ sourcearray 0 get exec
+
+ XIBuffer3
+
+ 0 2 index
+
+ plateindex 4 2 index length 1 sub {
+ get 255 exch sub
+
+ 3 copy put pop 1 add
+
+ 2 index
+ } for
+ pop pop exch pop
+ end
+} def
+
+/ci6compositeimage {
+ dup 1 eq {
+ pop pop image
+ }{
+ /ci6colorimage load null ne {
+ ci6colorimage
+ }{
+ 3 1 roll pop
+ sourcearray 0 3 -1 roll put
+ 3 eq {/ci6rgbtograyproc}{/ci6cmyktograyproc} ifelse load
+ image
+ } ifelse
+ } ifelse
+} def
+/ci6knockoutimage {
+ gsave
+ 0 ci6curtransfer exec 1 ci6curtransfer exec
+ eq {
+ 0 ci6curtransfer exec 0.5 lt
+ }{
+ 0 ci6curtransfer exec 1 ci6curtransfer exec gt
+ } ifelse
+ {{pop 0}}{{pop 1}} ifelse
+ systemdict /settransfer get exec
+ ci6compositeimage
+ grestore
+} def
+/ci6drawimage {
+ ci6testplate -1 eq {
+ pop ci6compositeimage
+ }{
+ dup type /arraytype eq {
+ dup length plateindex gt {plateindex get}{pop false} ifelse
+ }{
+ {
+ true
+ }{
+ dup 1 eq {plateindex 3 eq}{plateindex 3 le} ifelse
+ } ifelse
+ } ifelse
+ {
+ dup 1 eq {
+ pop pop ci6image
+ }{
+ dup 3 eq {
+ ci6compositeimage
+ }{
+ pop pop
+ sourcearray 0 3 -1 roll put
+ /ci6separatecmykproc load
+ ci6image
+ } ifelse
+ } ifelse
+ }{
+ ci6curoverprint {
+ 7 {pop} repeat
+ }{
+ ci6knockoutimage
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6proctintimage {
+ /_ptispace exch store /_ptiname exch store /_pti1 exch store /_pti0 exch store /_ptiproc exch store
+ /_pticomps _ptispace ci6numcomps store
+ /_ptiscale _pti1 _pti0 sub store
+ level2? {
+ _ptiname length 0 gt version cvr 2012 ge and {
+ [/Separation _ptiname _ptispace {_ptiproc}] setcolorspace
+ [_pti0 _pti1] ci6makeimagedict ci6image
+ }{
+ [/Indexed _ptispace 255 {255 div _ptiscale mul _pti0 add _ptiproc}] setcolorspace
+ [0 255] ci6makeimagedict ci6image
+ } ifelse
+ }{
+ _pticomps 1 eq {
+ {
+ dup
+ {
+ 255 div _ptiscale mul _pti0 add _ptiproc 255 mul cvi put
+ } ci6stringapply
+ } ci6concatprocs ci6image
+ }{
+ {
+ dup length _pticomps mul dup _ptibuf length ne {/_ptibuf exch string store}{pop} ifelse
+ _ptibuf {
+ exch _pticomps mul exch 255 div _ptiscale mul _pti0 add _ptiproc
+ _pticomps 2 add -2 roll
+ _pticomps 1 sub -1 0 {
+ 1 index add 2 index exch
+ 5 -1 roll
+ 255 mul cvi put
+ } for
+ pop pop
+ } ci6stringapply
+ } ci6concatprocs false _pticomps
+ /ci6colorimage load null eq {7 {pop} repeat}{ci6colorimage} ifelse
+ } ifelse
+ } ifelse
+} def
+/ci6graytintimage {
+ /_gtigray 5 -1 roll store
+ {1 _gtigray sub mul 1 exch sub} 4 1 roll
+ /DeviceGray ci6proctintimage
+} def
+/ci6cmyktintimage {
+ /_cticmyk 5 -1 roll store
+ {_cticmyk {1 index mul exch} forall pop} 4 1 roll
+ /DeviceCMYK ci6proctintimage
+} def
+/ci6rgbtintimage {
+ /_rtirgb 5 -1 roll store
+ {_rtirgb {1 exch sub 1 index mul 1 exch sub exch} forall pop} 4 1 roll
+ /DeviceRGB ci6proctintimage
+} def
+/ci6tintimage {
+ ci6testplate -1 eq {
+ ci6colorexpand
+ 3 -1 roll 5 -1 roll {0}{0 exch} ifelse 4 2 roll
+ dup /DeviceGray eq {
+ pop ci6graytintimage
+ }{
+ dup /DeviceRGB eq {
+ pop ci6rgbtintimage
+ }{
+ pop ci6cmyktintimage
+ } ifelse
+ } ifelse
+ }{
+ dup ci6marksplate {
+ plateindex 5 lt {
+ ci6colortocmyk plateindex get
+ dup 0 eq ci6curoverprint and {
+ 7 {pop} repeat
+ }{
+ 1 exch sub
+ exch {1 0}{0 1} ifelse () ci6graytintimage
+ } ifelse
+ }{
+ pop exch {0}{0 exch} ifelse 0 3 1 roll () ci6graytintimage
+ } ifelse
+ }{
+ ci6curoverprint {
+ 8 {pop} repeat
+ }{
+ pop pop pop
+ {pop 1} 0 1 () /DeviceGray ci6proctintimage
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/XINullImage {
+} def
+/XIImageMask {
+ XIImageWidth XIImageHeight false
+ [XIImageWidth 0 0 XIImageHeight neg 0 0]
+ /XIDataProc load
+ imagemask
+} def
+/XIImageTint {
+ XIImageWidth XIImageHeight XIBitsPerPixel
+ [XIImageWidth 0 0 XIImageHeight neg 0 0]
+ /XIDataProc load
+ XIType 3 eq XIColorValues XIColorSpace ci6tintimage
+} def
+/XIImage {
+ XIImageWidth XIImageHeight XIBitsPerPixel
+ [XIImageWidth 0 0 XIImageHeight neg 0 0]
+ /XIDataProc load
+ false XIChannelCount XIPlateList ci6drawimage
+} def
+/XG {
+ pop pop
+} def
+/XF {
+ 13 {pop} repeat
+} def
+/Xh {
+ Adobe_ColorImage_AI6_Vars begin
+ gsave
+ /XIType exch def
+ /XIImageHeight exch def
+ /XIImageWidth exch def
+ /XIImageMatrix exch def
+ 0 0 moveto
+ XIImageMatrix concat
+ XIImageWidth XIImageHeight scale
+
+ /_lp /null ddef
+ _fc
+ /_lp /imagemask ddef
+ end
+} def
+/XH {
+ Adobe_ColorImage_AI6_Vars begin
+ grestore
+ end
+} def
+/XIEnable {
+ Adobe_ColorImage_AI6_Vars /XIEnable 3 -1 roll put
+} def
+/XC {
+ Adobe_ColorImage_AI6_Vars begin
+ ci6colormake
+ /XIColorSpace exch def
+ /XIColorValues exch def
+ end
+} def
+/XIPlates {
+ Adobe_ColorImage_AI6_Vars begin
+ /XIPlateList exch def
+ end
+} def
+/XI
+{
+ Adobe_ColorImage_AI6_Vars begin
+ gsave
+ /XIType exch def
+ cvi dup
+ 256 idiv /XICompression exch store
+ 256 mod /XIEncoding exch store
+ pop pop
+ /XIChannelCount exch def
+ /XIBitsPerPixel exch def
+ /XIImageHeight exch def
+ /XIImageWidth exch def
+ pop pop pop pop
+ /XIImageMatrix exch def
+ XIBitsPerPixel 1 eq {
+ XIImageWidth 8 div ceiling cvi
+ }{
+ XIImageWidth XIChannelCount mul
+ } ifelse
+ /XIRowBytes exch def
+ XIEnable {
+ /XIBuffer3 XIImageWidth string def
+ XICompression 0 eq {
+ /XIBuffer1 XIRowBytes string def
+ XIEncoding 0 eq {
+ {currentfile XIBuffer1 readhexstring pop}
+ }{
+ {currentfile XIBuffer1 readstring pop}
+ } ifelse
+ }{
+ /XIBuffer1 256 string def
+ /XIBuffer2 XIRowBytes string def
+ {currentfile XIBuffer1 readline pop (%) anchorsearch {pop} if}
+ /ASCII85Decode filter /DCTDecode filter
+ /XIFile exch def
+ {XIFile XIBuffer2 readstring pop}
+ } ifelse
+ /XIDataProc exch def
+
+ XIType 1 ne {
+ 0 setgray
+ } if
+ XIType 1 eq {
+ XIImageMask
+ }{
+ XIType 2 eq XIType 3 eq or {
+ XIImageTint
+ }{
+ XIImage
+ } ifelse
+ } ifelse
+ }{
+ XINullImage
+ } ifelse
+ /XIPlateList false def
+ grestore
+ end
+} def
+end
+%%EndProcSet
+%%BeginResource: procset Adobe_Illustrator_AI5 1.3 0
+%%Title: (Adobe Illustrator (R) Version 8.0 Full Prolog)
+%%Version: 1.3 0
+%%CreationDate: (3/7/1994) ()
+%%Copyright: ((C) 1987-1998 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_Illustrator_AI5_vars 112 dict dup begin
+put
+/_?cmyk false def
+/_eo false def
+/_lp /none def
+/_pf
+{
+} def
+/_ps
+{
+} def
+/_psf
+{
+} def
+/_pss
+{
+} def
+/_pjsf
+{
+} def
+/_pjss
+{
+} def
+/_pola 0 def
+/_doClip 0 def
+/cf currentflat def
+/_lineorientation 0 def
+/_charorientation 0 def
+/_yokoorientation 0 def
+/_tm matrix def
+/_renderStart
+[
+/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0
+] def
+/_renderEnd
+[
+null null null null /i1 /i1 /i1 /i1
+] def
+/_render -1 def
+/_shift [0 0] def
+/_ax 0 def
+/_ay 0 def
+/_cx 0 def
+/_cy 0 def
+/_leading
+[
+0 0
+] def
+/_ctm matrix def
+/_mtx matrix def
+/_sp 16#020 def
+/_hyphen (-) def
+/_fontSize 0 def
+/_fontAscent 0 def
+/_fontDescent 0 def
+/_fontHeight 0 def
+/_fontRotateAdjust 0 def
+/Ss 256 string def
+Ss 0 (fonts/) putinterval
+/_cnt 0 def
+/_scale [1 1] def
+/_nativeEncoding 0 def
+/_useNativeEncoding 0 def
+/_tempEncode 0 def
+/_pntr 0 def
+/_tDict 2 dict def
+/_hfname 100 string def
+/_hffound false def
+/Tx
+{
+} def
+/Tj
+{
+} def
+/CRender
+{
+} def
+/_AI3_savepage
+{
+} def
+/_gf null def
+/_cf 4 array def
+/_rgbf 3 array def
+/_if null def
+/_of false def
+/_fc
+{
+} def
+/_gs null def
+/_cs 4 array def
+/_rgbs 3 array def
+/_is null def
+/_os false def
+/_sc
+{
+} def
+/_pd 1 dict def
+/_ed 15 dict def
+/_pm matrix def
+/_fm null def
+/_fd null def
+/_fdd null def
+/_sm null def
+/_sd null def
+/_sdd null def
+/_i null def
+/_lobyte 0 def
+/_hibyte 0 def
+/_cproc null def
+/_cscript 0 def
+/_hvax 0 def
+/_hvay 0 def
+/_hvwb 0 def
+/_hvcx 0 def
+/_hvcy 0 def
+/_bitfont null def
+/_bitlobyte 0 def
+/_bithibyte 0 def
+/_bitkey null def
+/_bitdata null def
+/_bitindex 0 def
+/discardSave null def
+/buffer 256 string def
+/beginString null def
+/endString null def
+/endStringLength null def
+/layerCnt 1 def
+/layerCount 1 def
+/perCent (%) 0 get def
+/perCentSeen? false def
+/newBuff null def
+/newBuffButFirst null def
+/newBuffLast null def
+/clipForward? false def
+end
+userdict /Adobe_Illustrator_AI5 known not {
+ userdict /Adobe_Illustrator_AI5 100 dict put
+} if
+userdict /Adobe_Illustrator_AI5 get begin
+/initialize
+{
+ Adobe_Illustrator_AI5 dup begin
+ Adobe_Illustrator_AI5_vars begin
+ /_aicmykps where {pop /_?cmyk _aicmykps def}if
+ discardDict
+ {
+ bind pop pop
+ } forall
+ dup /nc get begin
+ {
+ dup xcheck 1 index type /operatortype ne and
+ {
+ bind
+ } if
+ pop pop
+ } forall
+ end
+ newpath
+} def
+/terminate
+{
+ end
+ end
+} def
+/_
+null def
+/ddef
+{
+ Adobe_Illustrator_AI5_vars 3 1 roll put
+} def
+/xput
+{
+ dup load dup length exch maxlength eq
+ {
+ dup dup load dup
+ length 2 mul dict copy def
+ } if
+ load begin
+ def
+ end
+} def
+/npop
+{
+ {
+ pop
+ } repeat
+} def
+/hswj
+{
+ dup stringwidth 3 2 roll
+ {
+ _hvwb eq { exch _hvcx add exch _hvcy add } if
+ exch _hvax add exch _hvay add
+ } cforall
+} def
+/vswj
+{
+ 0 0 3 -1 roll
+ {
+ dup 255 le
+ _charorientation 1 eq
+ and
+ {
+ dup cstring stringwidth 5 2 roll
+ _hvwb eq { exch _hvcy sub exch _hvcx sub } if
+ exch _hvay sub exch _hvax sub
+ 4 -1 roll sub exch
+ 3 -1 roll sub exch
+ }
+ {
+ _hvwb eq { exch _hvcy sub exch _hvcx sub } if
+ exch _hvay sub exch _hvax sub
+ _fontHeight sub
+ } ifelse
+ } cforall
+} def
+/swj
+{
+ 6 1 roll
+ /_hvay exch ddef
+ /_hvax exch ddef
+ /_hvwb exch ddef
+ /_hvcy exch ddef
+ /_hvcx exch ddef
+ _lineorientation 0 eq { hswj } { vswj } ifelse
+} def
+/sw
+{
+ 0 0 0 6 3 roll swj
+} def
+/vjss
+{
+ 4 1 roll
+ {
+ dup cstring
+ dup length 1 eq
+ _charorientation 1 eq
+ and
+ {
+ -90 rotate
+ currentpoint
+ _fontRotateAdjust add
+ moveto
+ gsave
+ false charpath currentpoint
+ 5 index setmatrix stroke
+ grestore
+ _fontRotateAdjust sub
+ moveto
+ _sp eq
+ {
+ 5 index 5 index rmoveto
+ } if
+ 2 copy rmoveto
+ 90 rotate
+ }
+ {
+ currentpoint
+ _fontHeight sub
+ 5 index sub
+ 3 index _sp eq
+ {
+ 9 index sub
+ } if
+
+ currentpoint
+ exch 4 index stringwidth pop 2 div sub
+ exch _fontAscent sub
+ moveto
+
+ gsave
+ 2 index false charpath
+ 6 index setmatrix stroke
+ grestore
+
+ moveto pop pop
+ } ifelse
+ } cforall
+ 6 npop
+} def
+/hjss
+{
+ 4 1 roll
+ {
+ dup cstring
+ gsave
+ false charpath currentpoint
+ 5 index setmatrix stroke
+ grestore
+ moveto
+ _sp eq
+ {
+ 5 index 5 index rmoveto
+ } if
+ 2 copy rmoveto
+ } cforall
+ 6 npop
+} def
+/jss
+{
+ _lineorientation 0 eq { hjss } { vjss } ifelse
+} def
+/ss
+{
+ 0 0 0 7 3 roll jss
+} def
+/vjsp
+{
+ 4 1 roll
+ {
+ dup cstring
+ dup length 1 eq
+ _charorientation 1 eq
+ and
+ {
+ -90 rotate
+ currentpoint
+ _fontRotateAdjust add
+ moveto
+ false charpath
+ currentpoint
+ _fontRotateAdjust sub
+ moveto
+ _sp eq
+ {
+ 5 index 5 index rmoveto
+ } if
+ 2 copy rmoveto
+ 90 rotate
+ }
+ {
+ currentpoint
+ _fontHeight sub
+ 5 index sub
+ 3 index _sp eq
+ {
+ 9 index sub
+ } if
+
+ currentpoint
+ exch 4 index stringwidth pop 2 div sub
+ exch _fontAscent sub
+ moveto
+
+ 2 index false charpath
+
+ moveto pop pop
+ } ifelse
+ } cforall
+ 6 npop
+} def
+/hjsp
+{
+ 4 1 roll
+ {
+ dup cstring
+ false charpath
+ _sp eq
+ {
+ 5 index 5 index rmoveto
+ } if
+ 2 copy rmoveto
+ } cforall
+ 6 npop
+} def
+/jsp
+{
+ matrix currentmatrix
+ _lineorientation 0 eq {hjsp} {vjsp} ifelse
+} def
+/sp
+{
+ matrix currentmatrix
+ 0 0 0 7 3 roll
+ _lineorientation 0 eq {hjsp} {vjsp} ifelse
+} def
+/pl
+{
+ transform
+ 0.25 sub round 0.25 add exch
+ 0.25 sub round 0.25 add exch
+ itransform
+} def
+/setstrokeadjust where
+{
+ pop true setstrokeadjust
+ /c
+ {
+ curveto
+ } def
+ /C
+ /c load def
+ /v
+ {
+ currentpoint 6 2 roll curveto
+ } def
+ /V
+ /v load def
+ /y
+ {
+ 2 copy curveto
+ } def
+ /Y
+ /y load def
+ /l
+ {
+ lineto
+ } def
+ /L
+ /l load def
+ /m
+ {
+ moveto
+ } def
+}
+{
+ /c
+ {
+ pl curveto
+ } def
+ /C
+ /c load def
+ /v
+ {
+ currentpoint 6 2 roll pl curveto
+ } def
+ /V
+ /v load def
+ /y
+ {
+ pl 2 copy curveto
+ } def
+ /Y
+ /y load def
+ /l
+ {
+ pl lineto
+ } def
+ /L
+ /l load def
+ /m
+ {
+ pl moveto
+ } def
+} ifelse
+/d
+{
+ setdash
+} def
+/cf
+{
+} def
+/i
+{
+ dup 0 eq
+ {
+ pop cf
+ } if
+ setflat
+} def
+/j
+{
+ setlinejoin
+} def
+/J
+{
+ setlinecap
+} def
+/M
+{
+ setmiterlimit
+} def
+/w
+{
+ setlinewidth
+} def
+/XR
+{
+ 0 ne
+ /_eo exch ddef
+} def
+/H
+{
+} def
+/h
+{
+ closepath
+} def
+/N
+{
+ _pola 0 eq
+ {
+ _doClip 1 eq
+ {
+ _eo {eoclip} {clip} ifelse /_doClip 0 ddef
+ } if
+ newpath
+ }
+ {
+ /CRender
+ {
+ N
+ } ddef
+ } ifelse
+} def
+/n
+{
+ N
+} def
+/F
+{
+ _pola 0 eq
+ {
+ _doClip 1 eq
+ {
+ gsave _pf grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _fc
+ /_doClip 0 ddef
+ }
+ {
+ _pf
+ } ifelse
+ }
+ {
+ /CRender
+ {
+ F
+ } ddef
+ } ifelse
+} def
+/f
+{
+ closepath
+ F
+} def
+/S
+{
+ _pola 0 eq
+ {
+ _doClip 1 eq
+ {
+ gsave _ps grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc
+ /_doClip 0 ddef
+ }
+ {
+ _ps
+ } ifelse
+ }
+ {
+ /CRender
+ {
+ S
+ } ddef
+ } ifelse
+} def
+/s
+{
+ closepath
+ S
+} def
+/B
+{
+ _pola 0 eq
+ {
+ _doClip 1 eq
+ gsave F grestore
+ {
+ gsave S grestore _eo {eoclip} {clip} ifelse newpath /_lp /none ddef _sc
+ /_doClip 0 ddef
+ }
+ {
+ S
+ } ifelse
+ }
+ {
+ /CRender
+ {
+ B
+ } ddef
+ } ifelse
+} def
+/b
+{
+ closepath
+ B
+} def
+/W
+{
+ /_doClip 1 ddef
+} def
+/*
+{
+ count 0 ne
+ {
+ dup type /stringtype eq
+ {
+ pop
+ } if
+ } if
+ newpath
+} def
+/u
+{
+} def
+/U
+{
+} def
+/q
+{
+ _pola 0 eq
+ {
+ gsave
+ } if
+} def
+/Q
+{
+ _pola 0 eq
+ {
+ grestore
+ } if
+} def
+/*u
+{
+ _pola 1 add /_pola exch ddef
+} def
+/*U
+{
+ _pola 1 sub /_pola exch ddef
+ _pola 0 eq
+ {
+ CRender
+ } if
+} def
+/D
+{
+ pop
+} def
+/*w
+{
+} def
+/*W
+{
+} def
+/`
+{
+ /_i save ddef
+ clipForward?
+ {
+ nulldevice
+ } if
+ 6 1 roll 4 npop
+ concat pop
+ userdict begin
+ /showpage
+ {
+ } def
+ 0 setgray
+ 0 setlinecap
+ 1 setlinewidth
+ 0 setlinejoin
+ 10 setmiterlimit
+ [] 0 setdash
+ /setstrokeadjust where {pop false setstrokeadjust} if
+ newpath
+ 0 setgray
+ false setoverprint
+} def
+/~
+{
+ end
+ _i restore
+} def
+/_rgbtocmyk
+{
+ 3
+ {
+ 1 exch sub 3 1 roll
+ } repeat
+ 3 copy 1 4 1 roll
+ 3
+ {
+ 3 index 2 copy gt
+ {
+ exch
+ } if
+ pop 4 1 roll
+ } repeat
+ pop pop pop
+ 4 1 roll
+ 3
+ {
+ 3 index sub
+ 3 1 roll
+ } repeat
+ 4 -1 roll
+} def
+/setrgbfill
+{
+ _rgbf astore pop
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _rgbf aload pop setrgbcolor
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/setrgbstroke
+{
+ _rgbs astore pop
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _rgbs aload pop setrgbcolor
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/O
+{
+ 0 ne
+ /_of exch ddef
+ /_lp /none ddef
+} def
+/R
+{
+ 0 ne
+ /_os exch ddef
+ /_lp /none ddef
+} def
+/g
+{
+ /_gf exch ddef
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _gf setgray
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/G
+{
+ /_gs exch ddef
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _gs setgray
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/k
+{
+ _cf astore pop
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _cf aload pop setcmykcolor
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/K
+{
+ _cs astore pop
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _cs aload pop setcmykcolor
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/Xa
+{
+ _?cmyk {
+ 3 npop k
+ }{
+ setrgbfill 4 npop
+ } ifelse
+} def
+/XA
+{
+ _?cmyk {
+ 3 npop K
+ }{
+ setrgbstroke 4 npop
+ } ifelse
+} def
+/Xs
+{
+ /_gf exch ddef
+ 5 npop
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _gf setAIseparationgray
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/XS
+{
+ /_gs exch ddef
+ 5 npop
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _gs setAIseparationgray
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/Xx
+{
+ exch
+ /_gf exch ddef
+ 0 eq {
+ findcmykcustomcolor
+ }{
+ _?cmyk {true}{/findrgbcustomcolor where{pop false}{true}ifelse}ifelse
+ {
+ 4 1 roll 3 npop
+ findcmykcustomcolor
+ }{
+ 8 -4 roll 4 npop
+ findrgbcustomcolor
+ } ifelse
+ } ifelse
+ /_if exch ddef
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _if _gf 1 exch sub setcustomcolor
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/XX
+{
+ exch
+ /_gs exch ddef
+ 0 eq {
+ findcmykcustomcolor
+ }{
+ _?cmyk {true}{/findrgbcustomcolor where{pop false}{true}ifelse}ifelse
+ {
+ 4 1 roll 3 npop
+ findcmykcustomcolor
+ }{
+ 8 -4 roll 4 npop
+ findrgbcustomcolor
+ } ifelse
+ } ifelse
+ /_is exch ddef
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _is _gs 1 exch sub setcustomcolor
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/x
+{
+ /_gf exch ddef
+ findcmykcustomcolor
+ /_if exch ddef
+ /_fc
+ {
+ _lp /fill ne
+ {
+ _of setoverprint
+ _if _gf 1 exch sub setcustomcolor
+ /_lp /fill ddef
+ } if
+ } ddef
+ /_pf
+ {
+ _fc
+ _eo {eofill} {fill} ifelse
+ } ddef
+ /_psf
+ {
+ _fc
+ hvashow
+ } ddef
+ /_pjsf
+ {
+ _fc
+ hvawidthshow
+ } ddef
+ /_lp /none ddef
+} def
+/X
+{
+ /_gs exch ddef
+ findcmykcustomcolor
+ /_is exch ddef
+ /_sc
+ {
+ _lp /stroke ne
+ {
+ _os setoverprint
+ _is _gs 1 exch sub setcustomcolor
+ /_lp /stroke ddef
+ } if
+ } ddef
+ /_ps
+ {
+ _sc
+ stroke
+ } ddef
+ /_pss
+ {
+ _sc
+ ss
+ } ddef
+ /_pjss
+ {
+ _sc
+ jss
+ } ddef
+ /_lp /none ddef
+} def
+/XK
+{
+ 3 -1 roll pop
+ 0 eq
+ {
+ 1 exch sub
+ 3 {dup 3 1 roll mul 5 1 roll} repeat
+ mul 4 1 roll
+ K
+ }
+ {
+ 1 exch sub 4 1 roll
+ 3 {1 exch sub 3 index mul 1 exch sub 3 1 roll} repeat
+ 4 -1 roll pop
+ XA
+ } ifelse
+} def
+/Xk
+{
+ 3 -1 roll pop
+ 0 eq
+ {
+ 1 exch sub
+ 3 {dup 3 1 roll mul 5 1 roll} repeat
+ mul 4 1 roll
+ k
+ }
+ {
+ 1 exch sub 4 1 roll
+ 3 {1 exch sub 3 index mul 1 exch sub 3 1 roll} repeat
+ 4 -1 roll pop
+ Xa
+ } ifelse
+} def
+/A
+{
+ pop
+} def
+/annotatepage
+{
+userdict /annotatepage 2 copy known {get exec} {pop pop} ifelse
+} def
+/XT {
+ pop pop
+} def
+/Xt {
+ pop
+} def
+/discard
+{
+ save /discardSave exch store
+ discardDict begin
+ /endString exch store
+ gt38?
+ {
+ 2 add
+ } if
+ load
+ stopped
+ pop
+ end
+ discardSave restore
+} bind def
+userdict /discardDict 7 dict dup begin
+put
+/pre38Initialize
+{
+ /endStringLength endString length store
+ /newBuff buffer 0 endStringLength getinterval store
+ /newBuffButFirst newBuff 1 endStringLength 1 sub getinterval store
+ /newBuffLast newBuff endStringLength 1 sub 1 getinterval store
+} def
+/shiftBuffer
+{
+ newBuff 0 newBuffButFirst putinterval
+ newBuffLast 0
+ currentfile read not
+ {
+ stop
+ } if
+ put
+} def
+0
+{
+ pre38Initialize
+ mark
+ currentfile newBuff readstring exch pop
+ {
+ {
+ newBuff endString eq
+ {
+ cleartomark stop
+ } if
+ shiftBuffer
+ } loop
+ }
+ {
+ stop
+ } ifelse
+} def
+1
+{
+ pre38Initialize
+ /beginString exch store
+ mark
+ currentfile newBuff readstring exch pop
+ {
+ {
+ newBuff beginString eq
+ {
+ /layerCount dup load 1 add store
+ }
+ {
+ newBuff endString eq
+ {
+ /layerCount dup load 1 sub store
+ layerCount 0 eq
+ {
+ cleartomark stop
+ } if
+ } if
+ } ifelse
+ shiftBuffer
+ } loop
+ } if
+} def
+2
+{
+ mark
+ {
+ currentfile buffer {readline} stopped {
+ % assume error was due to overfilling the buffer
+ }{
+ not
+ {
+ stop
+ } if
+ endString eq {
+ cleartomark stop
+ } if
+ }ifelse
+ } loop
+} def
+3
+{
+ /beginString exch store
+ /layerCnt 1 store
+ mark
+ {
+ currentfile buffer {readline} stopped {
+ % assume error was due to overfilling the buffer
+ }{
+ not
+ {
+ stop
+ } if
+ dup beginString eq
+ {
+ pop /layerCnt dup load 1 add store
+ }
+ {
+ endString eq
+ {
+ layerCnt 1 eq
+ {
+ cleartomark stop
+ }
+ {
+ /layerCnt dup load 1 sub store
+ } ifelse
+ } if
+ } ifelse
+ }ifelse
+ } loop
+} def
+end
+userdict /clipRenderOff 15 dict dup begin
+put
+{
+ /n /N /s /S /f /F /b /B
+}
+{
+ {
+ _doClip 1 eq
+ {
+ /_doClip 0 ddef _eo {eoclip} {clip} ifelse
+ } if
+ newpath
+ } def
+} forall
+/Tr /pop load def
+/Bb {} def
+/BB /pop load def
+/Bg {12 npop} def
+/Bm {6 npop} def
+/Bc /Bm load def
+/Bh {4 npop} def
+end
+/Lb
+{
+ 6 npop
+ 7 2 roll
+ 5 npop
+ 0 eq
+ {
+ 0 eq
+ {
+ (%AI5_BeginLayer) 1 (%AI5_EndLayer--) discard
+ }
+ {
+
+ /clipForward? true def
+
+ /Tx /pop load def
+ /Tj /pop load def
+
+ currentdict end clipRenderOff begin begin
+ } ifelse
+ }
+ {
+ 0 eq
+ {
+ save /discardSave exch store
+ } if
+ } ifelse
+} bind def
+/LB
+{
+ discardSave dup null ne
+ {
+ restore
+ }
+ {
+ pop
+ clipForward?
+ {
+ currentdict
+ end
+ end
+ begin
+
+ /clipForward? false ddef
+ } if
+ } ifelse
+} bind def
+/Pb
+{
+ pop pop
+ 0 (%AI5_EndPalette) discard
+} bind def
+/Np
+{
+ 0 (%AI5_End_NonPrinting--) discard
+} bind def
+/Ln /pop load def
+/Ap
+/pop load def
+/Ar
+{
+ 72 exch div
+ 0 dtransform dup mul exch dup mul add sqrt
+ dup 1 lt
+ {
+ pop 1
+ } if
+ setflat
+} def
+/Mb
+{
+ q
+} def
+/Md
+{
+} def
+/MB
+{
+ Q
+} def
+/nc 4 dict def
+nc begin
+/setgray
+{
+ pop
+} bind def
+/setcmykcolor
+{
+ 4 npop
+} bind def
+/setrgbcolor
+{
+ 3 npop
+} bind def
+/setcustomcolor
+{
+ 2 npop
+} bind def
+currentdict readonly pop
+end
+/XP
+{
+ 4 npop
+} bind def
+/XD
+{
+ pop
+} bind def
+end
+setpacking
+%%EndResource
+%%BeginResource: procset Adobe_cshow 2.0 8
+%%Title: (Writing System Operators)
+%%Version: 2.0 8
+%%CreationDate: (1/23/89) ()
+%%Copyright: ((C) 1992-1996 Adobe Systems Incorporated All Rights Reserved)
+currentpacking true setpacking
+userdict /Adobe_cshow 14 dict dup begin put
+/initialize
+{
+ Adobe_cshow begin
+ Adobe_cshow
+ {
+ dup xcheck
+ {
+ bind
+ } if
+ pop pop
+ } forall
+ end
+ Adobe_cshow begin
+} def
+/terminate
+{
+currentdict Adobe_cshow eq
+ {
+ end
+ } if
+} def
+/cforall
+{
+ /_lobyte 0 ddef
+ /_hibyte 0 ddef
+ /_cproc exch ddef
+ /_cscript currentfont /FontScript known { currentfont /FontScript get } { -1 } ifelse ddef
+ {
+ /_lobyte exch ddef
+ _hibyte 0 eq
+ _cscript 1 eq
+ _lobyte 129 ge _lobyte 159 le and
+ _lobyte 224 ge _lobyte 252 le and or and
+ _cscript 2 eq
+ _lobyte 161 ge _lobyte 254 le and and
+ _cscript 3 eq
+ _lobyte 161 ge _lobyte 254 le and and
+ _cscript 25 eq
+ _lobyte 161 ge _lobyte 254 le and and
+ _cscript -1 eq
+ or or or or and
+ {
+ /_hibyte _lobyte ddef
+ }
+ {
+ _hibyte 256 mul _lobyte add
+ _cproc
+ /_hibyte 0 ddef
+ } ifelse
+ } forall
+} def
+/cstring
+{
+ dup 256 lt
+ {
+ (s) dup 0 4 3 roll put
+ }
+ {
+ dup 256 idiv exch 256 mod
+ (hl) dup dup 0 6 5 roll put 1 4 3 roll put
+ } ifelse
+} def
+/clength
+{
+ 0 exch
+ { 256 lt { 1 } { 2 } ifelse add } cforall
+} def
+/hawidthshow
+{
+ {
+ dup cstring
+ show
+ _hvax _hvay rmoveto
+ _hvwb eq { _hvcx _hvcy rmoveto } if
+ } cforall
+} def
+/vawidthshow
+{
+ {
+ dup 255 le
+ _charorientation 1 eq
+ and
+ {
+ -90 rotate
+ 0 _fontRotateAdjust rmoveto
+ cstring
+ _hvcx _hvcy _hvwb _hvax _hvay 6 -1 roll awidthshow
+ 0 _fontRotateAdjust neg rmoveto
+ 90 rotate
+ }
+ {
+ currentpoint
+ _fontHeight sub
+ exch _hvay sub exch _hvax sub
+ 2 index _hvwb eq { exch _hvcy sub exch _hvcx sub } if
+ 3 2 roll
+ cstring
+ dup stringwidth pop 2 div neg _fontAscent neg rmoveto
+ show
+ moveto
+ } ifelse
+ } cforall
+} def
+/hvawidthshow
+{
+ 6 1 roll
+ /_hvay exch ddef
+ /_hvax exch ddef
+ /_hvwb exch ddef
+ /_hvcy exch ddef
+ /_hvcx exch ddef
+ _lineorientation 0 eq { hawidthshow } { vawidthshow } ifelse
+} def
+/hvwidthshow
+{
+ 0 0 3 -1 roll hvawidthshow
+} def
+/hvashow
+{
+ 0 0 0 6 -3 roll hvawidthshow
+} def
+/hvshow
+{
+ 0 0 0 0 0 6 -1 roll hvawidthshow
+} def
+currentdict readonly pop end
+setpacking
+%%EndResource
+%%BeginResource: procset Adobe_shading_AI8 1.0 0
+%%Title: (Adobe Illustrator 8 Shading Procset)
+%%Version: 1.0 0
+%%CreationDate: (12/17/97) ()
+%%Copyright: ((C) 1987-1997 Adobe Systems Incorporated All Rights Reserved)
+userdict /defaultpacking currentpacking put true setpacking
+userdict /Adobe_shading_AI8 10 dict dup begin put
+/initialize {
+ Adobe_shading_AI8 begin
+ Adobe_shading_AI8 bdprocs
+ Mesh /initialize get exec
+} def
+/terminate {
+ currentdict Adobe_shading_AI8 eq {
+ end
+ } if
+} def
+/bdprocs {
+ {
+ dup xcheck 1 index type /arraytype eq and {
+ bind
+ } if
+ pop pop
+ } forall
+} def
+/X! {pop} def
+/X# {pop pop} def
+/Mesh 40 dict def
+Mesh begin
+/initialize {
+ Mesh bdprocs
+ Mesh begin
+ /emulate? /AI8MeshEmulation where {
+ pop AI8MeshEmulation
+ }{
+ systemdict /shfill known not
+ } ifelse def
+ end
+} def
+/bd {
+ shadingdict begin
+} def
+/paint {
+ emulate? {
+ end
+ }{
+ /_lp /none ddef _fc /_lp /none ddef
+
+ /AIColorSpace AIColorSpace tocolorspace store
+ /ColorSpace AIColorSpace topsspace store
+
+ version_ge_3010.106 not systemdict /setsmoothness known and {
+ 0.0001 setsmoothness
+ } if
+
+ composite? {
+ /DataSource getdatasrc def
+ Matrix concat
+ currentdict end
+ shfill
+ }{
+ AIColorSpace makesmarks AIPlateList markingplate and not isoverprint and {
+ end
+ }{
+ /ColorSpace /DeviceGray store
+ /Decode [0 1 0 1 0 1] store
+ /DataSource getplatesrc def
+ Matrix concat
+ currentdict end
+ shfill
+ } ifelse
+ } ifelse
+ } ifelse
+} def
+/shadingdict 12 dict def
+shadingdict begin
+ /ShadingType 6 def
+ /BitsPerCoordinate 16 def
+ /BitsPerComponent 8 def
+ /BitsPerFlag 8 def
+end
+/datafile null def
+/databuf 256 string def
+/dataptr 0 def
+/srcspace null def
+/srcchannels 0 def
+/dstchannels 0 def
+/dstplate 0 def
+/srctodstcolor null def
+/getplatesrc {
+ /srcspace AIColorSpace store
+ /srcchannels AIColorSpace getnchannels store
+ /dstchannels 1 store
+ /dstplate getplateindex store
+ /srctodstcolor srcspace makesmarks {
+ dstplate 4 eq {
+ {1 exch sub}
+ }{
+ {srcspace tocmyk 3 dstplate sub index 1 exch sub 5 1 roll 4 {pop} repeat}
+ } ifelse
+ }{
+ {srcchannels {pop} repeat 1}
+ } ifelse store
+ /datafile getdatasrc store
+ /rdpatch168 load DataLength () /SubFileDecode filter
+} def
+/getdatasrc {
+ /rdcmntline load /ASCII85Decode filter
+} def
+/rdpatch168 {
+ /dataptr 0 store
+ 49 rdcount
+ 4 {
+ dup {pop srcchannels getint8} if
+ dup {pop srctodstcolor dstchannels putint8 true} if
+ } repeat
+ {databuf 0 dataptr getinterval}{()} ifelse
+} def
+/rdpatch3216 {
+ /dataptr 0 store
+ 97 rdcount
+ 4 {
+ dup {pop srcchannels getint16} if
+ dup {pop srctodstcolor dstchannels putint16 true} if
+ } repeat
+ {databuf 0 dataptr getinterval}{()} ifelse
+} def
+/rdcount {
+ dup 0 gt {
+ datafile databuf dataptr 4 -1 roll getinterval readstring
+ exch length dataptr add /dataptr exch store
+ }{
+ true
+ } ifelse
+} def
+/getint8 {
+ mark true 3 -1 roll
+ {
+ dup {pop datafile read} if
+ dup {pop 255 div true} if
+ } repeat
+ {
+ counttomark 1 add -1 roll pop true
+ }{
+ cleartomark false
+ } ifelse
+} def
+/putint8 {
+ dup dataptr add /dataptr exch store
+ dataptr exch
+ {
+ 1 sub exch
+ 255 mul cvi
+ databuf 2 index
+ 3 -1 roll put
+ } repeat
+ pop
+} def
+/getint16 {
+ mark true 3 -1 roll
+ {
+ dup {pop datafile read} if
+ dup {pop 256 mul datafile read} if
+ dup {pop add 65535 div true} if
+ } repeat
+ {
+ counttomark 1 add -1 roll pop true
+ }{
+ cleartomark false
+ } ifelse
+} def
+/putint16 {
+ dup 2 mul dataptr add /dataptr exch store
+ dataptr exch
+ {
+ 2 sub exch
+ 65535 mul cvi dup
+ 256 idiv databuf 3 index 3 -1 roll put
+ 256 mod databuf 2 index 1 add 3 -1 roll put
+ } repeat
+ pop
+} def
+/srcbuf 256 string def
+/rdcmntline {
+ currentfile srcbuf readline pop
+ (%) anchorsearch {pop} if
+} def
+/getplateindex {
+ 0 [cyan? magenta? yellow? black? customColor?] {{exit} if 1 add} forall
+} def
+/aicsarray 4 array def
+/aicsaltvals 4 array def
+/aicsaltcolr aicsaltvals def
+/tocolorspace {
+ dup type /arraytype eq {
+ mark exch aload pop
+ aicsarray 0 3 -1 roll put
+ aicsarray 1 3 -1 roll put
+ dup aicsarray 2 3 -1 roll put
+ gettintxform aicsarray 3 3 -1 roll put
+ counttomark aicsaltvals 0 3 -1 roll getinterval /aicsaltcolr exch store
+ aicsaltcolr astore pop pop
+ aicsarray
+ } if
+} def
+/subtintxform {aicsaltcolr {1 index mul exch} forall pop} def
+/addtintxform {aicsaltcolr {1 sub 1 index mul 1 add exch} forall pop} def
+/gettintxform {
+ /DeviceRGB eq {/addtintxform}{/subtintxform} ifelse load
+} def
+/getnchannels {
+ dup type /arraytype eq {0 get} if
+ colorspacedict exch get begin Channels end
+} def
+/makesmarks {
+ composite? {
+ pop true
+ }{
+ dup dup type /arraytype eq {0 get} if
+ colorspacedict exch get begin MarksPlate end
+ } ifelse
+} def
+/markingplate {
+ composite? {
+ pop true
+ }{
+ dup type /arraytype eq {
+ dup length getplateindex gt {getplateindex get}{pop false} ifelse
+ } if
+ } ifelse
+} def
+/tocmyk {
+ dup dup type /arraytype eq {0 get} if
+ colorspacedict exch get begin ToCMYK end
+} def
+/topsspace {
+ dup dup type /arraytype eq {0 get} if
+ colorspacedict exch get begin ToPSSpace end
+} def
+/colorspacedict 5 dict dup begin
+ /DeviceGray 4 dict dup begin
+ /Channels 1 def
+ /MarksPlate {pop black?} def
+ /ToCMYK {pop 1 exch sub 0 0 0 4 -1 roll} def
+ /ToPSSpace {} def
+ end def
+ /DeviceRGB 4 dict dup begin
+ /Channels 3 def
+ /MarksPlate {pop isCMYKSep?} def
+ /ToCMYK {pop _rgbtocmyk} def
+ /ToPSSpace {} def
+ end def
+ /DeviceCMYK 4 dict dup begin
+ /Channels 4 def
+ /MarksPlate {pop isCMYKSep?} def
+ /ToCMYK {pop} def
+ /ToPSSpace {} def
+ end def
+ /Separation 4 dict dup begin
+ /Channels 1 def
+ /MarksPlate {
+ /findcmykcustomcolor where {
+ pop dup 1 exch ToCMYK 5 -1 roll 1 get
+ findcmykcustomcolor 1 setcustomcolor
+ systemdict /currentgray get exec
+ 1 ne
+ }{
+ pop false
+ } ifelse
+ } def
+ /ToCMYK {
+ dup 2 get mark exch 4 2 roll
+ 3 get exec
+ counttomark -1 roll tocmyk
+ 5 -1 roll pop
+ } def
+ /ToPSSpace {} def
+ end def
+ /Process 4 dict dup begin
+ /Channels 1 def
+ /MarksPlate {
+ isCMYKSep? {
+ 1 exch ToCMYK 4 array astore getplateindex get 0 ne
+ }{
+ pop false
+ } ifelse
+ } def
+ /ToCMYK {
+ dup 2 get mark exch 4 2 roll
+ 3 get exec
+ counttomark -1 roll tocmyk
+ 5 -1 roll pop
+ } def
+ /ToPSSpace {
+ 4 array copy dup 0 /Separation put
+ } def
+ end def
+end def
+/isoverprint {
+ /currentoverprint where {pop currentoverprint}{_of} ifelse
+} def
+/version_ge_3010.106 {
+ version {cvr} stopped {
+ pop
+ false
+ }{
+ 3010.106 ge
+ } ifelse
+} def
+end
+end
+defaultpacking setpacking
+%%EndResource
+%%EndProlog
+%%BeginSetup
+userdict /_useSmoothShade false put
+userdict /_aicmykps true put
+userdict /_forceToCMYK true put
+Adobe_level2_AI5 /initialize get exec
+Adobe_cshow /initialize get exec
+Adobe_ColorImage_AI6 /initialize get exec
+Adobe_shading_AI8 /initialize get exec
+Adobe_Illustrator_AI5 /initialize get exec
+%AI3_BeginRider
+currentpacking true setpacking
+setpacking
+%AI3_EndRider
+%AI5_Begin_NonPrinting
+Np
+%AI8_PluginGroupInfo
+(Adobe Path Blends) (Adobe Blends Plugin) (LiveBlends.aip)
+%AI8_PluginGroupInfo
+(Adobe Tracing Object) (Tracing) (TracingSuite.aip)
+%AI8_PluginGroupInfo
+(Adobe Scatter Brush Tool) (Adobe Scatter Brush Plugin) (ScatterBrushTool.aip)
+%AI8_PluginGroupInfo
+(Adobe Scatter Brush Tool) (Adobe Scatter Brush Plugin) (ScatterBrushTool.aip)
+%AI8_PluginGroupInfo
+(Adobe PatternOnPath Brush Tool) (Adobe Pattern Brush Plugin) (ArtBrushTool.aip)
+%AI8_PluginGroupInfo
+(Adobe PatternOnPath Brush Tool) (Adobe Pattern Brush Plugin) (ArtBrushTool.aip)
+%AI8_PluginGroupInfo
+(Adobe ArtOnPath Brush Tool) (Adobe Art Brush Plugin) (ArtBrushTool.aip)
+%AI8_PluginGroupInfo
+(Adobe ArtOnPath Brush Tool) (Adobe Art Brush Plugin) (ArtBrushTool.aip)
+%AI8_PluginGroupInfo
+(Adobe Calligraphic Brush Tool) (Adobe Calligraphic Brush Plugin) (CalligBrushTool.aip)
+%AI8_PluginGroupInfo
+(Adobe Flare Plugin) (Flare) (Flare.aip)
+%AI8_PluginGroupInfo
+(Adobe Symbolism) (Adobe Symbolism) (ParticleSystem.aip)
+%AI8_PluginGroupInfo
+(Adobe Deform Plugin) (Adobe Envelope Plugin) (Envelope and Warp.aip)
+%AI8_PluginGroupInfo
+(Pathfinder Suite) (Adobe Compound Shape) (PathFinderS.aip)
+%AI8_PluginGroupInfo
+(Adobe Planar Group) (Adobe Live Paint Plugin) (Live Paint.aip)
+%AI5_End_NonPrinting--
+%AI5_BeginPalette
+0 0 Pb
+0.74902 0.678431 0.670588 0.901961 ([Registration]) 0 Xs
+([Registration])
+Pc
+PB
+%AI5_EndPalette
+%%EndSetup
+%AI5_BeginLayer
+1 1 1 1 0 0 1 0 79 128 255 0 50 Lb
+(svg2759) Ln
+0 A
+u
+U
+u
+u
+0 O
+0.34902 0.231373 0.305882 0 0.666667 0.698039 0.670588 Xa
+0 J 0 j 1 w 4 M []0 d
+0 XR
+343.6401 319.9927 m
+456.9941 319.791 L
+458.5781 319.791 459.9922 320.0259 459.9922 316.6309 C
+459.8535 279.3018 L
+340.7793 279.3018 L
+340.7793 316.7695 L
+340.7793 318.4438 340.9414 319.9927 343.6401 319.9927 C
+f
+*u
+1 D
+0.74902 0.678431 0.670588 0.901961 0 0 0 Xa
+458.252 320.5 m
+342.7471 320.5 L
+341.5083 320.5 340.5 319.4922 340.5 318.2534 C
+340.5 279.0068 L
+340.5 278.7266 340.7275 278.5 341.0073 278.5 C
+459.9922 278.5 L
+460.2725 278.5 460.5 278.7266 460.5 279.0068 C
+460.5 318.2534 L
+460.5 319.4922 459.4922 320.5 458.252 320.5 C
+f
+0 D
+342.7471 319.4849 m
+458.252 319.4849 L
+458.9316 319.4849 459.4844 318.9326 459.4844 318.2534 C
+459.4844 302.4063 459.4844 290.9775 V
+376.6597 290.9775 L
+373.6338 285.5068 367.8042 281.792 361.1133 281.792 c
+354.4199 281.792 348.5918 285.5039 345.5674 290.9775 C
+341.5151 290.9775 L
+341.5151 302.4063 341.5151 318.2534 Y
+341.5151 318.9326 342.0679 319.4849 342.7471 319.4849 C
+f
+*U
+u
+*u
+0 0 0 0 1 1 1 Xa
+414.3086 287.752 m
+414.625 287.752 414.9121 287.7246 415.1738 287.6689 C
+415.4336 287.6133 415.6563 287.5225 415.8418 287.3955 C
+416.0273 287.2695 416.1719 287.1006 416.2744 286.8906 C
+416.376 286.6797 416.4277 286.4219 416.4277 286.1113 c
+416.4277 285.7773 416.3516 285.5 416.1992 285.2783 C
+416.0479 285.0547 415.8223 284.873 415.5254 284.7305 C
+415.9355 284.6133 416.2412 284.4082 416.4434 284.1133 c
+416.6445 283.8203 416.7461 283.4648 416.7461 283.0508 c
+416.7461 282.7168 416.6807 282.4277 416.5508 282.1836 C
+416.4209 281.9395 416.2451 281.7402 416.0254 281.5859 C
+415.8057 281.4307 415.5547 281.3164 415.2725 281.2422 C
+414.9902 281.168 414.7012 281.1309 414.4033 281.1309 C
+411.1875 281.1309 L
+411.1875 287.752 L
+414.3086 287.752 L
+414.3086 287.752 L
+f
+1 D
+414.123 285.0742 m
+414.3828 285.0742 414.5957 285.1367 414.7637 285.2598 C
+414.9316 285.3828 415.0146 285.583 415.0146 285.8604 c
+415.0146 286.0146 414.9863 286.1416 414.9316 286.2402 C
+414.875 286.3389 414.8008 286.416 414.708 286.4717 C
+414.6152 286.5273 414.5078 286.5664 414.3877 286.5869 c
+414.2676 286.6084 414.1406 286.6191 414.0117 286.6191 C
+412.6465 286.6191 L
+412.6465 285.0742 L
+414.123 285.0742 L
+f
+414.208 282.2637 m
+414.3506 282.2637 414.4863 282.2773 414.6172 282.3057 c
+414.7461 282.334 414.8613 282.3809 414.9609 282.4443 C
+415.0605 282.5098 415.1387 282.5977 415.1973 282.709 C
+415.2578 282.8203 415.2861 282.9629 415.2861 283.1357 c
+415.2861 283.4746 415.1895 283.7178 414.998 283.8633 C
+414.8057 284.0078 414.5518 284.0801 414.2363 284.0801 C
+412.6465 284.0801 L
+412.6465 282.2637 L
+414.208 282.2637 L
+f
+*U
+0 D
+417.0029 287.752 m
+418.6367 287.752 L
+420.1875 285.1367 L
+421.7285 287.752 L
+423.3516 287.752 L
+420.8936 283.6719 L
+420.8936 281.1309 L
+419.4336 281.1309 L
+419.4336 283.709 L
+417.0029 287.752 L
+f
+U
+u
+374.7539 300.894 m
+374.7588 293.3643 368.6577 287.2578 361.1274 287.252 C
+353.5977 287.248 347.4888 293.3477 347.4844 300.8774 C
+347.4844 300.8828 347.4844 300.8882 347.4844 300.894 C
+347.48 308.4238 353.5811 314.5308 361.1108 314.5352 C
+368.6421 314.54 374.7495 308.4395 374.7539 300.9102 C
+374.7539 300.9053 374.7539 300.8994 374.7539 300.894 C
+f
+u
+*u
+0.74902 0.678431 0.670588 0.901961 0 0 0 Xa
+372.2031 311.9985 m
+375.2266 308.9751 376.7388 305.2729 376.7388 300.894 c
+376.7388 296.5137 375.2529 292.8516 372.2813 289.9063 C
+369.1279 286.8037 365.4004 285.2529 361.1001 285.2529 c
+356.8511 285.2529 353.1885 286.791 350.1133 289.8672 C
+347.0371 292.9424 345.4995 296.6182 345.4995 300.894 c
+345.4995 305.1689 347.0371 308.8706 350.1133 311.9985 C
+353.1104 315.0225 356.7729 316.5347 361.1001 316.5347 c
+365.479 316.5347 369.1797 315.0225 372.2031 311.9985 C
+f
+1 D
+352.1484 309.9648 m
+349.5923 307.3828 348.3149 304.3589 348.3149 300.8896 c
+348.3149 297.4219 349.5801 294.4229 352.1094 291.8945 C
+354.6396 289.3643 357.6514 288.0996 361.146 288.0996 c
+364.6406 288.0996 367.6782 289.377 370.2603 291.9326 C
+372.7119 294.3066 373.938 297.291 373.938 300.8896 c
+373.938 304.4614 372.6919 307.4937 370.2012 309.9839 C
+367.7109 312.4741 364.6924 313.7197 361.146 313.7197 c
+357.5996 313.7197 354.5996 312.4678 352.1484 309.9648 C
+f
+0 D
+358.8755 302.4155 m
+358.4849 303.2671 357.9004 303.6929 357.1206 303.6929 c
+355.7417 303.6929 355.0527 302.7646 355.0527 300.9092 c
+355.0527 299.0537 355.7417 298.127 357.1206 298.127 c
+358.0308 298.127 358.6812 298.5781 359.0713 299.4834 C
+360.9819 298.4658 L
+360.0713 296.8477 358.7046 296.0391 356.8828 296.0391 c
+355.4775 296.0391 354.3516 296.4697 353.5063 297.3301 C
+352.6597 298.1914 352.2373 299.3799 352.2373 300.894 c
+352.2373 302.3813 352.6733 303.5625 353.5454 304.4375 c
+354.417 305.312 355.5029 305.749 356.8052 305.749 c
+358.731 305.749 360.1099 304.9902 360.9438 303.4741 C
+358.8755 302.4155 L
+f
+367.8657 302.4155 m
+367.4746 303.2671 366.9014 303.6929 366.146 303.6929 c
+364.7397 303.6929 364.0361 302.7646 364.0361 300.9092 c
+364.0361 299.0537 364.7397 298.127 366.146 298.127 c
+367.0576 298.127 367.6963 298.5781 368.0605 299.4834 C
+370.0142 298.4658 L
+369.105 296.8477 367.7402 296.0391 365.9219 296.0391 c
+364.5186 296.0391 363.395 296.4697 362.5503 297.3301 C
+361.707 298.1914 361.2842 299.3799 361.2842 300.894 c
+361.2842 302.3813 361.7134 303.5625 362.5708 304.4375 C
+363.4277 305.312 364.5186 305.749 365.8442 305.749 c
+367.7666 305.749 369.1436 304.9902 369.9746 303.4741 C
+367.8657 302.4155 L
+f
+*U
+U
+/AdobeObjectMatrix (1.000000 0.000000 0.000000 1.000000 -289.615692 99.065300) XT
+U
+/AdobeObjectMatrix (0.872921 0.000000 0.000000 0.872921 50.125359 143.214401) XT
+u
+0 0 0 0 1 1 1 Xa
+416.7676 316.0215 m
+422.6982 316.0215 427.5059 311.2139 427.5059 305.2832 c
+427.5059 299.353 422.6982 294.5449 416.7676 294.5449 c
+410.8359 294.5449 406.0273 299.353 406.0273 305.2832 c
+406.0273 311.2139 410.8359 316.0215 416.7676 316.0215 c
+f
+u
+1 D
+0.74902 0.678431 0.670588 0.901961 0 0 0 Xa
+419.875 308.3901 m
+419.875 308.8042 419.5391 309.1392 419.127 309.1392 C
+414.3828 309.1392 L
+413.9707 309.1392 413.6348 308.8042 413.6348 308.3901 C
+413.6348 303.6475 L
+414.957 303.6475 L
+414.957 298.0313 L
+418.5518 298.0313 L
+418.5518 303.6475 L
+419.875 303.6475 L
+419.875 308.3901 L
+419.875 308.3901 L
+f
+0 D
+416.7539 313.0083 m
+417.6504 313.0083 418.377 312.2817 418.377 311.3857 c
+418.377 310.4897 417.6504 309.7632 416.7539 309.7632 c
+415.8584 309.7632 415.1318 310.4897 415.1318 311.3857 c
+415.1318 312.2817 415.8584 313.0083 416.7539 313.0083 c
+f
+U
+*u
+1 D
+416.7402 317.1143 m
+413.5273 317.1143 410.8086 315.9937 408.583 313.752 C
+406.2998 311.4331 405.1582 308.6885 405.1582 305.5195 c
+405.1582 302.3511 406.2998 299.6255 408.583 297.3457 C
+410.8672 295.0654 413.5859 293.9258 416.7402 293.9258 c
+419.9336 293.9258 422.7012 295.0742 425.041 297.375 C
+427.248 299.5576 428.3516 302.2729 428.3516 305.5195 c
+428.3516 308.7666 427.2285 311.5103 424.9844 313.752 C
+422.7383 315.9937 419.9912 317.1143 416.7402 317.1143 c
+f
+0 D
+416.7695 315.0278 m
+419.4004 315.0278 421.6367 314.0996 423.4746 312.2446 C
+425.332 310.4092 426.2598 308.1675 426.2598 305.5195 c
+426.2598 302.853 425.3516 300.6401 423.5322 298.8818 C
+421.6152 296.9883 419.3623 296.041 416.7695 296.041 c
+414.1748 296.041 411.9395 296.9785 410.0645 298.8525 C
+408.1855 300.7275 407.248 302.9497 407.248 305.5195 c
+407.248 308.0903 408.1973 310.3315 410.0938 312.2446 C
+411.9121 314.0996 414.1367 315.0278 416.7695 315.0278 c
+f
+*U
+U
+U
+/AdobeObjectMatrix (0.993773 0.000000 0.000000 0.993670 -177.692673 0.000001) XT
+U
+LB
+%AI5_EndLayer--
+%AI3_BeginCrops
+userdict /AI3_noCropMarks known not {
+0 A
+u
+u
+0 R
+0 G
+0 J 0 j 0.5 w 4 M []0 d
+0 XR
+331.5 278.5 m
+304.5 278.5 L
+S
+340.5 269.5 m
+340.5 242.5 L
+S
+U
+u
+331.5 320.5 m
+304.5 320.5 L
+S
+340.5 329.5 m
+340.5 356.5 L
+S
+U
+u
+469.5 320.5 m
+496.5 320.5 L
+S
+460.5 329.5 m
+460.5 356.5 L
+S
+U
+u
+469.5 278.5 m
+496.5 278.5 L
+S
+460.5 269.5 m
+460.5 242.5 L
+S
+U
+U
+} if
+%AI3_EndCrops
+%%PageTrailer
+gsave annotatepage grestore showpage
+%%Trailer
+Adobe_Illustrator_AI5 /terminate get exec
+Adobe_shading_AI8 /terminate get exec
+Adobe_ColorImage_AI6 /terminate get exec
+Adobe_cshow /terminate get exec
+Adobe_level2_AI5 /terminate get exec
+%%EOF
diff --git a/macros/latex/contrib/dccpaper/dccpaper-by.pdf b/macros/latex/contrib/dccpaper/dccpaper-by.pdf
new file mode 100644
index 0000000000..debedde274
--- /dev/null
+++ b/macros/latex/contrib/dccpaper/dccpaper-by.pdf
Binary files differ
diff --git a/macros/latex/contrib/dccpaper/dccpaper.dtx b/macros/latex/contrib/dccpaper/dccpaper.dtx
new file mode 100644
index 0000000000..d92ca942a9
--- /dev/null
+++ b/macros/latex/contrib/dccpaper/dccpaper.dtx
@@ -0,0 +1,2989 @@
+% \iffalse meta-comment
+%<*internal|ijdc9|idcc|base>
+\def\Version{2019/03/08 v1.8}
+%</internal|ijdc9|idcc|base>
+%<*internal>
+\iffalse
+%</internal>
+%<*readme>
+# The dccpaper bundle: LaTeX classes for submissions to IJDC and IDCC
+
+The dccpaper bundle consists of two very similar classes.
+
+ijdc-v9.cls corresponds to the template used by the
+[International Journal of Digital Curation], beginning with volume 9.
+
+idcc.cls corresponds to the template used for the
+[International Digital Curation Conference], beginning with IDCC15.
+
+As the classes are so similar, their common features are abstracted out
+into dccpaper-base.sty; please do not attempt to use this package
+independently of the above classes.
+
+The classes are suitable for submissions to the respective review
+boards, but can also be used to produce the final camera-ready papers.
+
+[International Journal of Digital Curation]: http://www.ijdc.net/index.php/ijdc
+[International Digital Curation Conference]: http://www.dcc.ac.uk/events/international-digital-curation-conference-idcc
+
+%</readme>
+%<ijdc9|idcc|base>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<*ijdc9>
+\ProvidesClass{ijdc-v9}
+ [\Version\space Class for submissions to the International Journal of Digital Curation, volume 9 onwards.]
+%</ijdc9>
+%<*idcc>
+\ProvidesClass{idcc}
+ [\Version\space Class for submissions to the International Digital Curation Conference.]
+%</idcc>
+%<*base>
+\ProvidesPackage{dccpaper-base}
+ [\Version\space Common class code for IJDC and IDCC papers.]
+%</base>
+%<*biblatex|apacite>
+@book{apa6ed,
+ author = {{American Psychological Association}},
+ shortauthor = {{APA}},
+ publisher = {Author},
+%<biblatex> date = {2010},
+%<apacite> year = {2010},
+ title = {Publication manual of the {American} {Psychological} {Association}},
+ edition = {6},
+%<biblatex> location = {Washington, DC}
+%<apacite> address = {Washington, DC}
+}
+
+@book{borgman2007sda,
+ author = {Borgman, C. L.},
+%<biblatex> date = {2007},
+%<apacite> year = {2007},
+%<biblatex> title = {Scholarship in the digital age},
+%<biblatex> subtitle = {Information, infrastructure, and the {Internet}},
+%<apacite> title = {Scholarship in the digital age: Information, infrastructure, and the {Internet}},
+%<biblatex> location = {Cambridge, MA},
+%<apacite> address = {Cambridge, MA},
+ publisher = {MIT Press}
+}
+
+@inbook{borgman.etal2006bdl,
+ author = {Borgman, C. L. and Wallis, J. C. and Enyedy, N.},
+%<biblatex> date = {2006},
+%<apacite> year = {2006},
+%<biblatex> title = {Building digital libraries for scientific data},
+%<biblatex> subtitle = {An exploratory study of data practices in habitat ecology},
+%<apacite> title = {Building digital libraries for scientific data: An exploratory study of data practices in habitat ecology},
+ editor = {J. Gonzalo and C. Thanos and M. F. Verdejo and R. C. Carrasco},
+%<biblatex> booktitle = {{Lecture} {Notes} in {Computer} {Science}},
+%<biblatex> booksubtitle = {Vol. 4172. {Research} and {Advanced} {Technology} for {Digital} {Libraries}},
+%<apacite> booktitle = {{Lecture} {Notes} in {Computer} {Science:} {Vol.} 4172. {Research} and {Advanced} {Technology} for {Digital} {Libraries}},
+ pages = {170--183},
+ doi = {10.1007/11863878_15}
+}
+
+%<biblatex>@report{ccsds2012oais,
+%<apacite>@techreport{ccsds2012oais,
+ author = {{Consultative Committee for Space Data Systems}},
+ shortauthor = {{CCSDS}},
+%<biblatex> date = {2012},
+%<apacite> year = {2012},
+ title = {Reference model for an {Open} {Archival} {Information} {System} {(OAIS)}},
+ type = {Magenta Book},
+ number = {CCSDS 650.0-M-2},
+ url = {http://public.ccsds.org/publications/archive/650x0m2.pdf}
+}
+
+%<biblatex>@report{dcc2005dcp,
+%<apacite>@techreport{dcc2005dcp,
+ author = {{Digital Curation Centre}},
+%<biblatex> date = {2005},
+%<apacite> year = {2005},
+%<biblatex> title = {Digital curation and preservation},
+%<biblatex> subtitle = {Defining the research agenda for the next decade},
+%<apacite> title = {Digital curation and preservation: Defining the research agenda for the next decade},
+%<apacite> type = {\bibnotype},
+%<biblatex> note = {Report of the Warwick Workshop, November 7–8, 2005},
+%<apacite> howpublished = {Report of the Warwick Workshop, November 7–8, 2005},
+ url = {http://www.dcc.ac.uk/webfm_send/346}
+}
+
+@article{esanu.etal2004sar,
+ author = {Esanu, J. and Davidson, J. and Ross, S. and Anderson, W.},
+%<biblatex> date = {2004},
+%<apacite> year = {2004},
+%<biblatex> title = {Selection, appraisal, and retention of digital scientific data},
+%<biblatex> subtitle = {Highlights of an {ERPANET\slash CODATA} workshop},
+%<apacite> title = {Selection, appraisal, and retention of digital scientific data: Highlights of an {ERPANET\slash CODATA} workshop},
+%<biblatex> journaltitle = {Data Science Journal},
+%<apacite> journal = {Data Science Journal},
+ volume = {3},
+ pages = {227--232},
+ url = {http://www.jstage.jst.go.jp/browse/dsj}
+}
+
+@article{mazairac.beetzIPboq,
+ author = {Mazairac, W. and Beetz, J.},
+%<biblatex> pubstate = {inpress},
+%<apacite> year = {\BIP},
+%<biblatex> title = {{BIMQL}},
+%<biblatex> subtitle = {An Open Query Language for Building Information Models},
+%<apacite> title = {{BIMQL}: An Open Query Language for Building Information Models},
+%<biblatex> journaltitle = {Advanced Engineering Informatics},
+%<apacite> journal = {Advanced Engineering Informatics},
+ doi = {10.1016/j.aei.2013.06.001}
+}
+
+%<biblatex>@report{nsf2003rse,
+%<apacite>@techreport{nsf2003rse,
+ author = {{National Science Foundation, Blue-Ribbon Advisory Panel on Cyberinfrastructure}},
+%<biblatex> date = {2003},
+%<apacite> year = {2003},
+ title = {Revolutionizing science and engineering through cyberinfrastructure},
+%<apacite> type = {\bibnotype},
+ url = {http://www.nsf.gov/publications/pub_summ.jsp?ods_key=cise051203}
+}
+
+@article{rinaldo.etal2011rsc,
+ author = {Rinaldo, C. and Warnement, J. and Baione, T. and Kalfatovic, M. R. and Fraser, S.},
+%<biblatex> date = {2011-07},
+%<apacite> year = {2011},
+%<apacite> month = jul,
+ title = {Retooling special collections digitisation in the age of mass scanning},
+%<biblatex> journaltitle = {Ariadne},
+%<apacite> journal = {Ariadne},
+ volume = {67},
+ url = {http://www.ariadne.ac.uk/issue67/rinaldo-et-al/}
+}
+
+@unpublished{santini2004sas,
+ author = {Santini, M.},
+%<biblatex> date = {2004},
+%<apacite> year = {2004},
+ title = {A shallow approach to syntactic feature extraction for genre classification},
+ howpublished = {Paper presented at the Seventh Annual Colloquium for the UK Special Interest Group for Computational Linguistics, Birmingham, UK},
+ url = {ftp://ftp.itri.bton.ac.uk/reports/ITRI-04-02.pdf}
+}
+
+%<biblatex>@report{santini2004saa,
+%<apacite>@techreport{santini2004saa,
+ author = {Santini, M.},
+%<biblatex> date = {2004},
+%<apacite> year = {2004},
+ title = {State-of-the-art on automatic genre identification},
+ type = {Technical Report},
+ number = {ITRI-04-03},
+ institution = {Information Technology Research Institute},
+ url = {ftp://ftp.itri.bton.ac.uk/reports/ITRI-04-03.pdf}
+}
+
+@article{smith.etal2003das,
+ author = {Smith, M. and Barton, M. and Bass, M. and Branschofsky, M. and McClellan, G. and Stuve, D. and Walker, J. H.},
+%<biblatex> date = {2003},
+%<apacite> year = {2003},
+%<biblatex> title = {{DSpace}},
+%<biblatex> subtitle = {An open source dynamic digital repository},
+%<apacite> title = {{DSpace}: An open source dynamic digital repository},
+%<biblatex> journaltitle = {D-Lib Magazine},
+%<apacite> journal = {D-Lib Magazine},
+ volume = {9},
+ number = {1},
+ doi = {10.1045/january2003-smith}
+}
+
+%<biblatex>@data{waterton.etal2013ual,
+%<apacite>@misc{waterton.etal2013ual,
+ author = {Waterton, C. and Watson, N. and Norton, L.},
+ title = {Understanding and Acting in {Loweswater}, 2007–2010},
+%<biblatex> entrysubtype = {Data set},
+%<apacite> type = {Data set},
+%<biblatex> date = {2013},
+%<apacite> year = {2013},
+ publisher = {UK Data Archive},
+%<biblatex> location = {Colchester, UK},
+%<apacite> address = {Colchester, UK},
+ doi = {10.5255/UKDA-SN-7359-1}
+}
+
+@book{witten.frank2005dmp,
+ author = {Witten, I. H. and Frank, E.},
+%<biblatex> date = {2005},
+%<apacite> year = {2005},
+%<biblatex> title = {Data mining},
+%<biblatex> subtitle = {Practical machine learning tools and techniques},
+%<apacite> title = {Data mining: Practical machine learning tools and techniques},
+ edition = {2},
+%<biblatex> location = {San Francisco, CA},
+%<apacite> address = {San Francisco, CA},
+ publisher = {Morgan Kaufmann}
+}
+%</biblatex|apacite>
+%<*internal>
+\fi
+\def\nameofplainTeX{plain}
+\ifx\fmtname\nameofplainTeX\else
+ \expandafter\begingroup
+\fi
+%</internal>
+%<*install>
+\input docstrip.tex
+\keepsilent
+\askforoverwritefalse
+\preamble
+
+----------------------------------------------------------------
+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
+----------------------------------------------------------------
+
+\endpreamble
+\postamble
+
+Copyright (C) 2019 Digital Curation Centre, University of Edinburgh
+<info@dcc.ac.uk>
+\endpostamble
+
+\usedir{tex/latex/dccpaper}
+\generate{
+ \file{ijdc-v9.cls}{\from{\jobname.dtx}{ijdc9}}
+ \file{idcc.cls}{\from{\jobname.dtx}{idcc}}
+ \file{dccpaper-base.sty}{\from{\jobname.dtx}{base}}
+}
+%</install>
+%<install>\endbatchfile
+%<*internal>
+\usedir{source/latex/dccpaper}
+\generate{
+ \file{\jobname.ins}{\from{\jobname.dtx}{install}}
+}
+\nopreamble\nopostamble
+\usedir{doc/latex/dccpaper}
+\generate{
+ \file{README.md}{\from{\jobname.dtx}{readme}}
+ \file{dccpaper-biblatex.bib}{\from{\jobname.dtx}{biblatex}}
+ \file{dccpaper-apacite.bib}{\from{\jobname.dtx}{apacite}}
+}
+\ifx\fmtname\nameofplainTeX
+ \expandafter\endbatchfile
+\else
+ \expandafter\endgroup
+\fi
+%</internal>
+%<*driver>
+\ProvidesFile{dccpaper.dtx}
+ [\Version\ Classes for submissions to IJDC and IDCC]
+\documentclass{ijdc-v9}
+\let\DccpaperMaketitle=\maketitle
+
+% For typesetting the documentation generally
+\usepackage{doc}
+\usepackage{enumitem}
+\usepackage{listings}
+\colorlet{Command}{red!75!black}
+\colorlet{Environment}{blue!75!black}
+\colorlet{Option}{violet}
+\colorlet{Value}{olive!75!black}
+\lstloadlanguages{[LaTeX]TeX}
+\lstset
+ { columns=fullflexible
+ , basicstyle=\ttfamily
+ , language={[LaTeX]TeX}
+ , texcsstyle=*\color{Command}
+ , moretexcs=
+ { affil
+ , conference
+ , correspondence
+ , submitted
+ , received
+ , revised
+ , accepted
+ , subno
+ , volume
+ , issue
+ , maketitle
+ , sisetup
+ , toprule
+ , cmidrule
+ , midrule
+ , bottomrule
+ , DeclareLanguageMapping
+ , printbibliography
+ , addbibresource
+ , subsection
+ , subparagraph
+ }
+ , moredelim=**[s][\color{Option}]{[}{]}
+ , moredelim=**[s][\color{Environment}]{\{}{\}}
+ , mathescape
+ }
+\newcommand*{\pkg}[1]{\href{http://www.ctan.org/pkg/#1}{\textsf{#1}}}
+\newcommand*{\cs}[1]{\textcolor{Command}{\texttt{\textbackslash#1}}}
+\newcommand*{\env}[1]{\textcolor{Environment}{\ttfamily #1}}
+\newcommand*{\key}[1]{\textcolor{Option}{\ttfamily #1}}
+\newcommand*{\val}[1]{\textcolor{Value}{\ttfamily #1}}
+\let\myrmfamily=\rmfamily
+\renewcommand*{\meta}[1]{\ensuremath{\langle\textrm{\emph{#1}}\rangle}}
+\def\brackets#1{%
+ \texttt{\textcolor{Environment}{\char`\{}#1\textcolor{Environment}{\char`\}}}}
+\def\marg#1{%
+ \textcolor{Environment}{\ttfamily\char`\{}\meta{#1}\textcolor{Environment}{\ttfamily\char`\}}}
+\def\sqbrackets#1{%
+ \texttt{\textcolor{Option}{[}#1\textcolor{Option}{]}}}
+\def\oarg#1{%
+ \textcolor{Option}{\ttfamily\char`\{}\meta{#1}\textcolor{Option}{\ttfamily\char`\}}}
+\makeatletter
+\let\PrintMacroName=\@gobble
+\let\PrintEnvName=\@gobble
+\makeatother
+\newenvironment{optionkey}[1]{}{}
+\newenvironment{optionvalue}[1]{}{}
+
+% For typesetting the implementation
+\usepackage{metalogo}
+% This bit inspired by ydoc
+\makeatletter
+\newwrite\ydocwrite
+\def\ydocfname{\jobname.lsttemp}
+\def\ydoc@catcodes{%
+ \let\do\@makeother
+ \dospecials
+ \catcode`\\=\active
+ \catcode`\^^M=\active
+ \catcode`\ =\active
+}
+\def\macrocode{%
+ \begingroup
+ \ydoc@catcodes
+ \macro@code
+}
+\def\endmacrocode{}
+\begingroup
+\endlinechar\m@ne
+\@firstofone{%
+\catcode`\|=0\relax
+\catcode`\(=1\relax
+\catcode`\)=2\relax
+\catcode`\*=14\relax
+\catcode`\{=12\relax
+\catcode`\}=12\relax
+\catcode`\ =12\relax
+\catcode`\%=12\relax
+\catcode`\\=\active
+\catcode`\^^M=\active
+\catcode`\ =\active
+}*
+|gdef|macro@code#1^^M% \end{macrocode}(*
+|endgroup|expandafter|macro@@code|expandafter(|ydoc@removeline#1|noexpand|lastlinemacro)*
+)*
+|gdef|ydoc@removeline#1^^M(|noexpand|firstlinemacro)*
+|gdef|ydoc@defspecialmacros(*
+|def^^M(|noexpand|newlinemacro)*
+|def (|noexpand|spacemacro)*
+|def\(|noexpand|bslashmacro)*
+)*
+|gdef|ydoc@defrevspecialmacros(*
+|def|newlinemacro(|noexpand^^M)*
+|def|spacemacro(|noexpand )*
+|def|bslashmacro(|noexpand\)*
+)*
+|endgroup
+\def\macro@@code#1{%
+ {\ydoc@defspecialmacros
+ \xdef\themacrocode{#1}}%
+ \PrintMacroCode
+ \end{macrocode}%
+}
+\def\PrintMacroCode{%
+ \begingroup
+ \let\firstlinemacro\empty
+ \let\lastlinemacro\empty
+ \def\newlinemacro{^^J}%
+ \let\bslashmacro\bslash
+ \let\spacemacro\space
+ \immediate\openout\ydocwrite=\ydocfname\relax
+ \immediate\write\ydocwrite{\themacrocode}%
+ \immediate\closeout\ydocwrite
+ \let\input\@input
+ \lstinputlisting[firstnumber=last]{\ydocfname}%
+ \endgroup
+}
+\makeatother
+
+\let\maketitle=\DccpaperMaketitle
+
+\usepackage{dcolumn,csquotes}
+\usepackage[iso,british]{isodate}
+% The following line is only needed for microtype 2.7a
+\usepackage{luatexbase}
+\usepackage[expansion=false]{microtype}
+\ifXeTeX\else\DisableLigatures{family=tt*}\fi
+\usepackage[tightLists=false]{markdown}
+\markdownSetup{rendererPrototypes={%
+ link = {#1\footnote{\ifx\empty#4\empty\else#4:
+ \fi\url{#3}}}%
+}}
+\def\T#1{} % Work around bug where \T1 inserted as control sequence
+\usepackage{fnpct}
+
+\ifx\undefined\apacitefalse
+ \usepackage[style=apa]{biblatex}
+ \addbibresource{dccpaper-biblatex.bib}
+ \DeclareLanguageMapping{british}{british-apa}
+\else
+ \usepackage{apacite}
+ \bibliographystyle{apacite}
+ \let\textcite=\citeA
+ \let\autocite=\cite
+\fi
+
+\title[The \textsf{dccpaper} bundle]{The \protect\textsf{dccpaper} bundle: Classes for submissions to IJDC and IDCC}
+
+\author{Alex Ball}
+\affil{University of Bath}
+\correspondence{Alex Ball, University of Bath, Claverton Down, Bath BA2 7AY. Email: \email{a.j.ball@bath.ac.uk}}
+
+\received{4 July 2013}
+\revised{10 December 2013}
+\accepted{1 January 2014}
+
+\GetFileInfo{dccpaper-base.sty}
+
+\begin{document}
+\maketitle
+
+\begin{abstract}
+This is the documentation for the \pkg{dccpaper} bundle, consisting of the following classes:
+\begin{itemize}
+\item\textsf{ijdc-v9}, which corresponds to the template used by the International Journal of Digital Curation, beginning with volume 9.
+\item\textsf{idcc}, which corresponds to the template used for the International Digital Curation Conference, beginning with IDCC15.
+\end{itemize}
+
+The version to which it relates is \fileversion, last revised \printdateTeX{\filedate}.
+
+The code for this bundle is maintained at \url{https://github.com/DigitalCurationCentre/dccpaper}.
+
+Versions of the templates are also available that target Microsoft Word and LibreOffice\slash OpenOffice.org.
+
+Please note that the DOI attached to this document is fake and should not be used for identification purposes.
+\end{abstract}
+
+\section{Introduction}
+
+The \LaTeX\ class \textsf{ijdc-v9} produces camera-ready papers and articles suitable for inclusion in the International Journal of Digital Curation, with applicability from volume 9 onwards. The similar \textsf{idcc} class can be used for submissions to the International Digital Curation Conference, beginning with the 2015 conference. This document explains how to use these classes.
+
+\section{Dependencies}
+
+Certain aspects of the template design have been implemented using third-party packages, aside from those that are required parts of the \LaTeX\ system. Therefore you should ensure that you have these packages installed on your system before attempting to use the class.
+
+\begin{itemize}
+\item\pkg{atbegshi} is used for switching geometry between pages.
+\item Tables in your document must be formatted according to the design principles promoted and supported by the \pkg{booktabs} package.
+\item\pkg{caption} is used to format the figure and table captions.
+\item\pkg{etoolbox} is used behind the scenes for patching commands.
+\item\pkg{footmisc} is used to format the footnotes.
+\item\pkg{titlesec} is used to format the section headings.
+\item\pkg{iftex} is used to test which \TeX\ engine you are using.
+If you use Lua\LaTeX\ or \XeLaTeX\, you will also need \pkg{fontspec}.
+\end{itemize}
+
+In some cases the class prefers to use packages that are not part of the base installation (but are nevertheless commonly available in \TeX\ distributions), but will fall back to their base equivalents if necessary.
+
+\begin{itemize}
+\item
+\pkg{newtx} will be used if available in place of \pkg{mathptmx}, and
+\pkg{tgheros} will be used in place of \pkg{helvet}.
+\item
+\pkg{xcolor} will be used if available in place of \pkg{color}.
+\end{itemize}
+
+For referencing, you are encouraged to use either \pkg{biblatex-apa} (preferred) or \pkg{apacite}.
+
+\section{Loading the Classes}
+
+\subsection{International Journal of Digital Curation}
+
+The class is loaded in the usual way with
+\lstinline|\documentclass[$\meta{options}$]{ijdc-v9}|.
+The following options are available:
+
+\begin{description}[font=\normalfont\key]
+\item[paper]
+Use this for peer-reviewed papers.
+\item[article]
+Use this for general (non-peer-reviewed) articles if you like, but you do not have to as the class defaults to this state.
+\item[editorial]
+Use this for an editorial.
+\end{description}
+
+\subsection{International Digital Curation Conference}
+
+The class is loaded in the usual way with
+\lstinline|\documentclass[$\meta{options}$]{idcc}|.
+Two types of option are available. The first relates to the conference to which the submission will be made:
+\begin{description}[font=\normalfont]
+ \item[\key{15}, \key{16}, \key{17}, \key{18}, \key{19}, \key{20}]
+ Use this to select the year of the conference, e.g.\@ \key{20} for 2020.
+\end{description}
+
+The second relates to the type of submission:
+\begin{description}[font=\normalfont\key]
+\item[abstract]
+Use this for research and practice paper extended abstracts. It is normally the default.
+\item[research]
+Use this for full research papers.
+\item[practice]
+Use this for full practice papers. This becomes the default if you select one of the options for the 2015 to 2018 conferences inclusive.
+\item[lightning]
+Use this for lightning talk proposals.
+\item[data]
+(Legacy.) Use this for data paper abstracts and full data papers.
+\item[poster]
+Use this for poster proposals.
+\item[demo]
+Use this for demonstration proposals.
+\item[bof]
+(Legacy.) Use this for Birds of a Feather session proposals.
+\item[workshop]
+Use this for workshop proposals.
+\end{description}
+
+\section{Preamble Commands}
+
+The following commands should be given in the preamble to fill out the document metadata.
+
+The following command should be used in all submissions.
+
+\begin{description}
+\item[]
+\hskip-\labelsep
+\lstinline|\title[$\meta{name}$]{$\meta{full version}$}|
+\hskip\labelsep
+The long version of the title is shown on the cover page of the submission, while the short version appears in the (even page) headers.
+\end{description}
+
+The following commands should be given in general articles and IDCC submissions. They should \emph{not} be given in peer-reviewed IJDC papers until after the peer review process is complete.
+
+\begin{description}
+\item[]
+\hskip-\labelsep
+\lstinline|\author{$\meta{name}$}|
+\hskip\labelsep
+The name of one author. Repeat the command for each additional author.
+
+It is customary in IJDC and IDCC papers to group authors by institution. Within each institution, the authors are ordered by the level of contribution (or alphabetically where this is equal), and the institutional groups are ordered by the level of contribution of the first author in the group (or alphabetically by first author where this is equal). A different convention may be used if appropriate.
+
+\item[]
+\hskip-\labelsep
+\lstinline|\affil{$\meta{name}$}|
+\hskip\labelsep
+The affiliation (institution, company) of the immediately preceding author(s). This command may be repeated as necessary.
+
+\item[]
+\hskip-\labelsep
+\lstinline|\correspondence{$\meta{name, postal address.}$ Email: \email{$\meta{email address}$}}|
+\hskip\labelsep
+Name, address and email address of the corresponding author. This information appears in the footer of the cover page.
+\end{description}
+
+If an IJDC submission is a reworked conference paper (that has not already been formally published), for reasons of transparency the name of the conference should be given.
+
+\begin{description}
+\item[]
+\hskip-\labelsep
+\lstinline|\conference{$\meta{name of conference}$}|
+\hskip\labelsep
+The conference at which the earlier version of the paper was presented, e.g.\ ‘the 10th International Digital Curation Conference’.
+\end{description}
+
+For IDCC papers, authors are invited to record the date on which they made their submission.
+
+\begin{description}
+\item[]
+\hskip-\labelsep
+\lstinline|\submitted{$\meta{date}$}|
+\hskip\labelsep
+The date on which the initial submission was made to the conference by the authors.
+\end{description}
+
+Some additional commands are used by the editorial team when preparing a submission for publication. Though authors would not normally need to use them, here they are for completeness.
+
+\begin{description}
+\item[]
+\hskip-\labelsep
+\lstinline|\received{$\meta{date}$}|
+\hskip\labelsep
+The date on which the initial submission was received by the editorial team (IJDC papers only).
+
+\item[]
+\hskip-\labelsep
+\lstinline|\revised{$\meta{date}$}|
+\hskip\labelsep
+The date on which the latest revision was received by the editorial team.
+
+\item[]
+\hskip-\labelsep
+\lstinline|\accepted{$\meta{date}$}|
+\hskip\labelsep
+The date on which the submission was accepted for publication.
+
+\item[]
+\hskip-\labelsep
+\lstinline|\subno{$\meta{number}$}|
+\hskip\labelsep
+The submission number allocated by the IJDC Open Journal System.
+
+\item[]
+\hskip-\labelsep
+\lstinline|\volume{$\meta{number}$}|
+\hskip\labelsep
+The number of the IJDC volume in which the submission will be published.
+
+\item[]
+\hskip-\labelsep
+\lstinline|\issue{$\meta{number}$}|
+\hskip\labelsep
+The number of the IJDC issue in which the submission will be published.
+
+\item[]
+\hskip-\labelsep
+\lstinline|\date{$\meta{year}$}|
+\hskip\labelsep
+The year in which the submission will be published.
+\end{description}
+
+\newpage
+\section{Document Body}
+
+When it comes to writing the body of the submission, the template should allow you to use the usual \LaTeX\ markup without much adaptation. So, for example, for a full paper or an IDCC extended abstract, you would start as in Figure~\ref{fig:start-paper}.
+
+\begin{figure}[ht]
+\begin{lstlisting}[frame=single]
+\begin{document}
+\maketitle
+
+\begin{abstract}
+Text of the abstract\dots
+\end{abstract}
+
+\section{Introduction}
+
+The text of the introduction starts here\dots
+\end{lstlisting}
+\caption{Sample code for the beginning of an IJDC submission or IDCC paper.}
+\label{fig:start-paper}
+\end{figure}
+
+Please note that if submitting a poster, lightning talk or demonstration proposal to the IDCC instead of a paper, you should \emph{not} use the \texttt{abstract} environment. Instead, start with a section headed `Abstract' as in Figure~\ref{fig:start-abstract} (for posters or lightning talks) or Figure~\ref{fig:start-demo} (overleaf, for demonstrations). Further guidance on how to write such submissions is given on the conference website.
+
+If submitting a workshop proposal, please see the second document template in \hyperref[sec:samples]{Appendix~D}.
+
+\begin{figure}[ht]
+\begin{lstlisting}[frame=single]
+\begin{document}
+\maketitle
+
+\section{Abstract}
+
+The text of the proposal starts here\dots
+\end{lstlisting}
+\caption{Sample code for the beginning of an IDCC proposal.}
+\label{fig:start-abstract}
+\end{figure}
+
+\begin{figure}[ht]
+\begin{lstlisting}[frame=single]
+\begin{document}
+\maketitle
+
+\begin{description}
+\item[Demo Organiser(s):]~\\
+Name, position, organization.
+\end{description}
+
+\section{Abstract}
+
+The text of the proposal starts here\dots
+\end{lstlisting}
+\caption{Sample code for the beginning of an IDCC demonstration proposal.}
+\label{fig:start-demo}
+\end{figure}
+
+\noindent
+IJDC and IDCC papers follow the formatting conventions specified by the \textcite{apa6ed}, with a few minor changes. There are some instances where this affects how you write your submission.
+
+\subsection{Headings}
+
+Five levels of heading are defined (\lstinline|\section| down to \lstinline|\subparagraph|) but most authors only need the first one or two levels. \lstinline|\section| and \lstinline|\subsection| headings should be written in title case, that is, with Each Significant Word Given an Initial Capital, while the remaining headers should be written in sentence case as if running text. Do not end your heading names with full stops\slash periods.
+
+\subsection{Quotations}
+
+Quotations should be put in a \texttt{quote} environment, wrapped in inverted commas, with the citation placed in parentheses at the end.
+
+\begin{quote}
+‘Cras porttitor dictum lacus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. In consectetuer, diam at volutpat elementum, libero lectus pulvinar sem.’ (Borgman, 2007)
+\end{quote}
+
+\subsection{Tables}
+
+\begin{itemize}
+\item
+Table text should be in the \lstinline|\small| font size.
+\item
+Tables should not use vertical lines to separate columns, and ideally should not use horizontal lines to separate rows in the body of the table; white space and text alignment should be sufficient. The top and bottom rules should be drawn with \lstinline|\toprule| and \lstinline|\bottomrule| respectively, with other rules drawn with \lstinline|\midrule| or \lstinline|\cmidrule|. See the documentation of the \pkg{booktabs} package for more information.
+\item
+Text in the body of tables should normally be left-aligned. Numeric data should be aligned at the decimal point among itself but centred with respect to the heading; the \texttt{D} column type from the \pkg{dcolumn} package and the \texttt{S} column type from the \pkg{siunitx} package are particularly useful for this.
+\item
+Where decked (subdivided) headings are used, there should be a border beneath the upper-level heading (column spanner) indicating to which of the lower-level headings it applies.
+\item
+Empty cells can either be left blank or represented by an em dash. A blank cell indicates non-applicability, while an em dash signifies that the data was not collected or has been omitted.
+\item
+Captions should end in a full stop\slash period and appear above the table.
+\end{itemize}
+
+Table~\ref{tab:issues} on the following page demonstrates these features. The code used to produce the table is shown in Figure~\ref{fig:table} (the \pkg{dcolumn} package was loaded in the preamble). Note the different relative positions of the table and figure captions.
+
+\begin{table}[p!]
+\caption{Papers and articles published in the IJDC in 2008 and 2009.}
+\label{tab:issues}
+\centering\small
+\begin{tabular}{lD..{2.0}D..{2.0}D..{2.1}D..{2.1}}
+\toprule
+ & \multicolumn{2}{c}{Frequency} & \multicolumn{2}{c}{Percentage} \\
+\cmidrule(lr){2-3}\cmidrule(l){4-5}
+Issue
+ & \multicolumn{1}{c}{Peer-reviewed} & \multicolumn{1}{c}{General}
+ & \multicolumn{1}{c}{Peer-reviewed} & \multicolumn{1}{c}{General} \\
+\midrule
+3(1) & 9 & 7 & 56.3 & 43.8 \\
+3(2) & 5 & 7 & 41.7 & 58.3 \\
+4(1) & 10 & 4 & 71.4 & 28.6 \\
+4(2) & 8 & 6 & 57.1 & 42.9 \\
+4(3) & 3 & 15 & 16.7 & 83.3 \\
+\bottomrule
+\end{tabular}
+\end{table}
+
+\begin{figure}[p!]
+\begin{lstlisting}[frame=single]
+\begin{table}
+\caption{Papers and articles published in the IJDC in 2008 and 2009.}
+\label{tab:issues}
+\centering\small
+\begin{tabular}{lD..{2.0}D..{2.0}D..{2.1}D..{2.1}}
+\toprule
+& \multicolumn{2}{c}{Frequency} & \multicolumn{2}{c}{Percentage} \\
+\cmidrule(lr){2-3}\cmidrule(l){4-5}
+Issue
+& \multicolumn{1}{c}{Peer-reviewed} & \multicolumn{1}{c}{General}
+& \multicolumn{1}{c}{Peer-reviewed} & \multicolumn{1}{c}{General} \\
+\midrule
+3(1) & 9 & 7 & 56.3 & 43.8 \\
+3(2) & 5 & 7 & 41.7 & 58.3 \\
+4(1) & 10 & 4 & 71.4 & 28.6 \\
+4(2) & 8 & 6 & 57.1 & 42.9 \\
+4(3) & 3 & 15 & 16.7 & 83.3 \\
+\bottomrule
+\end{tabular}
+\end{table}
+\end{lstlisting}
+\caption{Code used to typeset Table~\ref{tab:issues}.}
+\label{fig:table}
+\end{figure}
+
+\subsection{Reference List and Citations}
+
+As mentioned above, you are encouraged to use either \pkg{biblatex-apa} (with \pkg{biblatex}\slash\pkg{biber}) or \pkg{apacite} (with Bib\TeX) to generate your reference list and citations.
+
+\begin{itemize}
+\item
+To use \pkg{biblatex} for your reference list, add the following to your preamble:
+\begin{lstlisting}
+\usepackage[style=apa]{biblatex}
+\addbibresource{$\meta{bib file}$.bib}
+\end{lstlisting}
+Prior to the release of \pkg{biblatex-apa} v7.5, you also needed this line:
+\begin{lstlisting}
+\DeclareLanguageMapping{british}{british-apa}
+\end{lstlisting}
+Include \lstinline|\printbibliography| at the end of the document to print the list.
+\item
+To use \pkg{apacite} for your reference list, add the following to your preamble:
+\begin{lstlisting}
+\usepackage{apacite}
+\bibliographystyle{apacite}
+\end{lstlisting}
+and include \lstinline|\bibliography{$\meta{bib file}$}| at the end of the document.
+\end{itemize}
+
+In-text citations are given parenthetically in author–date format. If author forms part of the narrative, as with \textcite{rinaldo.etal2011rsc}, only the date is added in parenthesis, otherwise both author and date are given \autocite{smith.etal2003das}. Where multiple citations are given at once, the order should be the same as in the reference list, i.e.\ alphabetically by author, with co-authored works coming after singly-authored works, then chronologically \autocite{borgman.etal2006bdl, dcc2005dcp, mazairac.beetzIPboq, santini2004sas, santini2004saa, smith.etal2003das, witten.frank2005dmp}. Please consult the documentation of the package you are using for how to achieve this.
+
+Please \textbf{do not cite entire websites} through the reference list mechanism. Instead, provide the title of the website (in English) and the URL in a footnote.\footnote{Digital Curation Centre: \url{http://www.dcc.ac.uk/}} If the title of the website is not clear from the visible pages, the contents of the HTML title element may be used. Other explanatory notes, whether about the body text or cited items, should also be given as footnotes rather than as endnotes or reference list annotations.\footnote{This avoids unnecessary page turning or scrolling.}
+
+Please \textbf{provide digital object identifiers} (DOIs) for referenced items where available.
+
+The data underlying the results presented in the submission should be placed in an appropriate custodial environment and cited \autocite{waterton.etal2013ual}, with the reference placed in the reference list. The \pkg{biblatex-apa} package provides a \texttt{data} entry type which should be used for datasets; the \texttt{entrysubtype} value should be \enquote{\texttt{Data set}} or similar. If using \pkg{apacite}, use the \texttt{misc} entry type with a \texttt{type} value of \enquote{\texttt{Data set}} or similar.
+
+\section{Acknowledgements}
+
+Any acknowledgements should be placed in a section immediately before the references.\nocite{*}
+
+\ifx\undefined\apacitefalse
+ \printbibliography
+\else
+ \bibliography{dccpaper-apacite.bib}
+\fi
+
+\newpage
+\section{Appendix A: Change History}
+
+\begin{description}
+\item[v1.8] 2019-03-08\\
+Added details of IDCC 2020.
+\item[v1.7.1] 2018-05-14\\
+Fixed loading of maths fonts. Reverted experimental formatting.
+\item[v1.7] 2018-05-01\\
+Added details of IDCC 2019, along with new formatting and submission types.
+\item[v1.6] 2017-10-20\\
+Added details of IDCC 2018. Allowed files to be unpacked by \TeX\ without compiling. Refactored some documentation commands for efficiency.
+\item[v1.5] 2016-08-05\\
+Added details of IDCC 2017. Slightly refactored code to convert dccpaper-base.tex into a package, dccpaper-base.sty.
+\item[v1.4.1] 2015-06-22\\
+Fixed bug preventing compilation in DVI mode.
+\item[v1.4] 2015-05-22\\
+Added details of IDCC 2016. Improved whitespace handling. Fixed bug triggered by \texttt{demo} option. Fixed missing use of \lstinline|\Authfont|. Added missing DOI tweak for \pkg{biblatex-apa}.
+\item[v1.3.2] 2015-01-21\\
+Removed dependence on user supplying a title. Fixed bug triggered by numbered sections.
+\item[v1.3.1] 2014-10-14\\
+Fixed typographical error relating to details of IDCC 2015.
+\item[v1.3] 2014-08-07\\
+Added documentation of \lstinline|\conference| command. Improved display of footnotes, footnote markers and \texttt{itemize}\slash \texttt{enumerate} lists. Fixed a bug in the handling of author information. Fixed and improved how the transition from first to subsequent page geometry is achieved. Updated the details of IDCC 2015.
+\item[v1.2] 2014-04-11\\
+Added implementation, installation and licence sections to the Appendix of the documentation. Moved the majority of the file postamble information to the README, and synchronized the latter with the GitHub version. Improved the adaptation of \pkg{apacite} referencing to the house style.
+\item[v1.1] 2014-03-06\\
+Refactored the source for distribution through CTAN, and to allow the addition of the \textsf{idcc} class.
+\item[v1.0] 2013-12-18\\
+First public release of \textsf{ijdc-v9} class.
+\end{description}
+
+\newpage
+\section{Appendix B: Implementation}
+
+\lstset
+ { aboveskip=1em plus 0.5em minus 0.2em
+ , belowskip=1em plus 0.5em minus 0.2em
+ , frame=single
+ , numbers=left
+ , numberstyle=\color{gray}\footnotesize\itshape
+ , basicstyle=\footnotesize\ttfamily
+ , breaklines=true
+ , escapechar=
+ }%
+\MakeShortVerb{\|}%
+\DocInput{\jobname.dtx}
+
+\newpage
+\section{Appendix C: Installation}
+
+\begin{markdown*}{hybrid=true}
+%</driver>
+%<readme>## Installation
+%<readme>
+%<*driver|readme>
+### Managed way
+
+The latest stable release of the dccpaper bundle has been packaged for
+TeX Live and MiKTeX. If you are running TeX Live and have `tlmgr`
+installed, you can install the bundle simply by running
+`tlmgr install dccpaper`. If you are running MiKTeX, you can install the
+bundle by running `mpm --install=dccpaper`. Both `tlmgr` and `mpm` have
+GUI versions that you might find friendlier.
+
+### Automated way
+
+A makefile is provided which you can use with the Make utility:
+
+ * Running `make source` generates the derived files
+ - README.md
+ - ijdc-v9.cls
+ - idcc.cls
+ - dccpaper-base.sty
+ - dccpaper-apacite.bib
+ - dccpaper-biblatex.bib
+ * Running `make` generates the above files and also dccpaper.pdf.
+ * Running `make inst` installs the files in the user's TeX tree.
+ * Running `make install` installs the files in the local TeX tree.
+
+### Manual way
+
+ 1. Run `tex dccpaper.dtx` to generate the source files.
+ 2. Compile dccpaper.dtx with (any version of) LaTeX and Biber to generate the
+ documentation. Due to a dependency on the markdown package, you will need
+ either to use LuaLaTeX or to enable shell escape.
+ 3. Move the files to your TeX tree as follows:
+ - `source/latex/dccpaper`:
+ dccpaper.dtx,
+ dccpaper.ins
+ - `tex/latex/dccpaper`:
+ ijdc-v9.cls,
+ idcc.cls,
+ dccpaper-base.sty,
+ dccpaper-by.eps,
+ dccpaper-by.pdf
+ - `doc/latex/dccpaper`:
+ dccpaper.pdf,
+ dccpaper-apacite.bib,
+ dccpaper-biblatex.bib,
+ README.md
+
+ 4. You may then have to update your installation's file name database
+ before TeX and friends can see the files.
+
+%</driver|readme>
+%<*driver>
+\end{markdown*}
+
+\newpage
+\section{Appendix D: Sample Documents}
+\label{sec:samples}
+
+The following code demonstrates how to use \pkg{dccpaper} to write an IDCC conference paper.
+
+\begin{lstlisting}[frame=single]
+\documentclass[research,15]{idcc}
+
+\title{How to write a conference paper}
+\author{First Author}
+\affil{First Author's Affiliation}
+\author{Second Author}
+\affil{Second Author's Affiliation}
+\correspondence{Your Name, Institution, Postal address. Email: \email{ab@example.com}}
+
+\submitted{1 October 2014}
+
+\usepackage[style=apa]{biblatex}
+\addbibresource{references.bib}
+
+\begin{document}
+\maketitle
+
+\begin{abstract}
+Text of the abstract\dots
+\end{abstract}
+
+\section{Introduction}
+
+The text of the introduction starts here\dots
+
+\section{Conclusions}
+
+The text of the conclusions starts here\dots
+
+\section{Acknowledgements}
+
+Any acknowledgements should be placed here\dots
+
+\printbibliography
+\end{document}
+\end{lstlisting}
+
+\newpage
+If submitting a workshop proposal to the IDCC, there is a specific set of information you need to include. The following code provides the bare bones of the template you will need to fill out, but please refer to the corresponding Word template for guidance on how to complete it.
+
+\begin{lstlisting}[frame=single]
+\documentclass[workshop,19]{idcc}
+
+\title{Getting your workshop accepted}
+\author{First Author}
+\affil{First Author's Affiliation}
+\author{Second Author}
+\affil{Second Author's Affiliation}
+\correspondence{Your Name, Institution, Postal address. Email: \email{ab@example.com}}
+
+\submitted{1 July 2018}
+
+\usepackage[style=apa]{biblatex}
+\addbibresource{references.bib}
+
+\begin{document}
+\begin{description}
+\item[Workshop Organiser(s):]~\\
+Name, position, organization.
+
+\item[Workshop title:]~\\
+Title.
+
+\item[Brief description:]~\\
+60 words or fewer.
+
+\item[Long description:]~\\
+About 500 words.
+
+\item[Room layout/workshop style:]~\\
+Cabaret, classroom, boardroom, other.
+
+\item[Minimum/maximum number of delegates:]~\\
+Minimum for viability, maximum for workability.
+
+\item[Number of speakers:]~\\
+Number.
+
+\item[Equipment requirements:]~\\
+Projectors, sound, flipcharts, whiteboards etc.
+
+\item[Workshop length:]~\\
+Half day or full day.
+
+\item[Funding model:]~\\
+Fully funded, part funded (subsidised) or delegate fee.
+\end{description}
+\end{document}
+\end{lstlisting}
+
+\newpage
+\section{Appendix E: Licence}
+
+\begin{markdown*}{hybrid=true}
+%</driver>
+%<readme>## Licence
+%<readme>
+%<*driver|readme>
+Copyright 2019 Digital Curation Centre, University of Edinburgh.
+
+This work consists of the image files dccpaper-by.eps and
+dccpaper-by.pdf, the documented LaTeX file dccpaper.dtx and a Makefile.
+
+The text files contained in this work may be distributed and/or modified
+under the conditions of the [LaTeX Project Public License (LPPL)][lppl],
+either version 1.3c of this license or (at your option) any later
+version.
+
+The image files distributed with this bundle derive from the file
+[by.eps] distributed by Creative Commons. The image is a trademark of
+Creative Commons and is subject to the [Creative Commons trademark policy][cctp].
+
+This work is “maintained” (as per LPPL maintenance status) by [Alex Ball][me].
+
+[lppl]: http://www.latex-project.org/lppl.txt "LaTeX Project Public License (LPPL)"
+[by.eps]: http://mirrors.creativecommons.org/presskit/buttons/88x31/eps/by.eps "CC BY licence badge"
+[cctp]: http://creativecommons.org/policies "Creative Commons trademark policy"
+[me]: http://alexball.me.uk/ "Alex Ball"
+%</driver|readme>
+%<*driver>
+\end{markdown*}
+
+The file dccpaper.pdf, generated by this work, is licensed as shown on page 1.
+\end{document}
+%</driver>
+% \fi
+% \iffalse
+%<*ijdc9>
+% \fi
+%
+% \subsection{ijdc-v9.cls}
+% \setcounter{lstnumber}{21}
+%
+% \begin{macro}{dccp@type}
+% \begin{macro}{dccp@editorial}
+% The type of paper is recorded in \cs{dccp@type}. The possible values are
+% `General Article', `Peer-Reviewed Paper', or `Editorial'.
+% The latter is provided through the constant \cs{dccp@editorial} so we can
+% test for it later with ease.
+%
+% \begin{macrocode}
+\def\dccp@type{General Article}
+\def\dccp@editorial{Editorial}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{ifdcp@proposal}
+% \begin{macro}{dcp@proposaltrue}
+% \begin{macro}{dcp@proposalfalse}
+% We provide a boolean for switching formatting depending on whether this
+% document is an IDCC proposal or not.
+%
+% \begin{macrocode}
+\newif\ifdcp@proposal
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{optionkey}{editorial}
+% \begin{optionkey}{paper}
+% \begin{optionkey}{article}
+% These three options set \cs{dccp@type} appropriately. The \key{editorial}
+% option additionally switches page numbers to roman numerals.
+% The \key{article} option is redundant, but included for symmetry with
+% \key{paper}.
+%
+% \begin{macrocode}
+\DeclareOption{editorial}{\let\dccp@type=\dccp@editorial%
+ \AtBeginDocument{% Editorials use Roman numerals for page numbers
+ \pagenumbering{roman}%
+ \renewcommand{\thelastpage}{\@roman\c@lastpage}%
+ }%
+}
+\DeclareOption{paper}{\def\dccp@type{Peer-Reviewed Paper}}
+\DeclareOption{article}{\def\dccp@type{General Article}}
+\ProcessOptions\relax
+
+% \end{macrocode}
+% \end{optionkey}
+% \end{optionkey}
+% \end{optionkey}
+%
+% \begin{macro}{dccp@publ@long}
+% \begin{macro}{dccp@publ@short}
+% \begin{macro}{dccp@publ@msg}
+% \begin{macro}{dccp@titlefoot@bib}
+% \begin{macro}{dccp@titlefoot@doi}
+% \begin{macro}{dccp@normhead@doi}
+% These definitions are used to fill out the headers and footers. They include
+% some details that are defined in \textsf{dccpaper-base} and provided by
+% the user: \cs{thedate}, \cs{thevolume}, \cs{theissue}, \cs{thelastpage}, \cs{thedoi}.
+%
+% \begin{macrocode}
+\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
+committed to scholarly excellence and dedicated to the advancement of digital
+curation across a wide range of sectors. The \dccp@publ@short\ is published by
+the University of Edinburgh on behalf of the Digital Curation Centre. ISSN:
+1746-8256. URL: \url{http://www.ijdc.net/}}
+\def\dccp@titlefoot@bib{%
+ \dccp@publ@long\\
+ \thedate, Vol.\ \thevolume, Iss.\ \theissue, \thepage--\thelastpage.%
+}
+\def\dccp@titlefoot@doi{%
+ \url{https://doi.org/\thedoi}\\
+ DOI: \thedoi
+}
+\def\dccp@normhead@doi{doi:\thedoi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \cs{dccp@subject} will be used for the PDF subject, and will specify the journal
+% and the issue.
+%
+% \begin{macro}{dccp@subject}
+% \begin{macrocode}
+\def\dccp@subject{\dccp@publ@long, \thedate, Vol.\ \thevolume, Iss.\ \theissue}
+
+% \end{macrocode}
+% \end{macro}
+%
+% The class is based on the \pkg{article} class, and uses A4 paper.
+%
+% \begin{macrocode}
+\LoadClass[a4paper,12pt,twoside]{article}
+
+% \end{macrocode}
+%
+% The rest of the formatting happens in the following file.
+%
+% \begin{macrocode}
+\RequirePackage{dccpaper-base}
+% \end{macrocode}
+% \iffalse
+%</ijdc9>
+%<*idcc>
+% \fi
+%
+% \subsection{idcc.cls}
+% \setcounter{lstnumber}{21}
+%
+% \begin{macro}{dccp@publ@long}
+% \begin{macro}{dccp@publ@short}
+% \begin{macro}{dccp@publ@msg}
+% These definitions are used to fill out the headers and footers.
+% The ones for \cs{dccp@publ@short} and \cs{dccp@publ@msg} are a fallback,
+% defined here but ordinarily overridden using a package option.
+%
+% \begin{macrocode}
+\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}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{dccp@subject}
+% \cs{dccp@subject} will be used for the PDF subject. The value here is again a
+% fallback, ordinarily overridden using a package option.
+%
+% \begin{macrocode}
+\def\dccp@subject{\dccp@publ@long}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{dccp@type@fallback}
+% \begin{macro}{dccp@type}
+% Paper type is recorded in \cs{dccp@type}. The values can be
+% `Research Paper', `Practice Paper', `Poster', `Demonstration', or `Workshop'.
+%
+% \begin{macrocode}
+\def\dccp@type@fallback{Extended Abstract}
+\def\dccp@type{\dccp@type@fallback}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{ifdcp@proposal}
+% \begin{macro}{dcp@proposaltrue}
+% \begin{macro}{dcp@proposalfalse}
+% We provide a boolean for switching formatting depending on whether this
+% document is an IDCC proposal or not.
+%
+% \begin{macrocode}
+\newif\ifdcp@proposal
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{optionkey}{abstract}
+% \begin{optionkey}{research}
+% \begin{optionkey}{lightning}
+% \begin{optionkey}{data}
+% \begin{optionkey}{poster}
+% \begin{optionkey}{demo}
+% \begin{optionkey}{bof}
+% \begin{optionkey}{workshop}
+% \begin{optionkey}{practice}
+% These options set the value of \cs{dccp@type} appropriately.
+% The \key{practice} option is redundant, but included for symmetry.
+%
+% \begin{macrocode}
+\DeclareOption{abstract}{\def\dccp@type{Extended Abstract}}
+\DeclareOption{research}{\def\dccp@type{Research Paper}}
+\DeclareOption{lightning}{\def\dccp@type{Lightning Talk}\dcp@proposaltrue}
+\DeclareOption{data}{\def\dccp@type{Data Paper}}
+\DeclareOption{poster}{\def\dccp@type{Poster}\dcp@proposaltrue}
+\DeclareOption{demo}{\def\dccp@type{Demonstration}\dcp@proposaltrue}
+\DeclareOption{bof}{\def\dccp@type{Birds of a Feather}\dcp@proposaltrue}
+\DeclareOption{workshop}{\def\dccp@type{Workshop}\dcp@proposaltrue}
+\DeclareOption{practice}{\def\dccp@type{Practice Paper}\dcp@proposaltrue}
+% \end{macrocode}
+% \end{optionkey}
+% \end{optionkey}
+% \end{optionkey}
+% \end{optionkey}
+% \end{optionkey}
+% \end{optionkey}
+% \end{optionkey}
+% \end{optionkey}
+% \end{optionkey}
+%
+% \begin{optionkey}{15}
+% \begin{optionkey}{16}
+% \begin{optionkey}{17}
+% \begin{optionkey}{18}
+% \begin{optionkey}{19}
+% \begin{optionkey}{20}
+% The details for each conference are slightly different, so they each have an
+% associated option for overriding the fallback definitions for
+% \cs{dccp@publ@short}, \cs{dccp@publ@msg} and \cs{dccp@subject}.
+%
+% \begin{macrocode}
+\DeclareOption{15}{%
+ \def\dccp@publ@short{IDCC15}
+ \def\dccp@publ@msg{The 10th \dccp@publ@long\ takes place on 9--12 February
+ 2015 in London. URL: \url{http://www.dcc.ac.uk/events/idcc15/}}
+ \def\dccp@subject{10th \dccp@publ@long, 2015}
+ \def\dccp@type@fallback{Practice Paper}
+}
+\DeclareOption{16}{%
+ \def\dccp@publ@short{IDCC16}
+ \def\dccp@publ@msg{The 11th \dccp@publ@long\ takes place on 22--25 February
+ 2016 in Amsterdam. URL: \url{http://www.dcc.ac.uk/events/idcc16/}}
+ \def\dccp@subject{11th \dccp@publ@long, 2016}
+ \def\dccp@type@fallback{Practice Paper}
+}
+\DeclareOption{17}{%
+ \def\dccp@publ@short{IDCC17}
+ \def\dccp@publ@msg{The 12th \dccp@publ@long\ takes place on 20--23 February
+ 2017 in Edinburgh. URL: \url{http://www.dcc.ac.uk/events/idcc17/}}
+ \def\dccp@subject{12th \dccp@publ@long, 2017}
+ \def\dccp@type@fallback{Practice Paper}
+}
+\DeclareOption{18}{%
+ \def\dccp@publ@short{IDCC18}
+ \def\dccp@publ@msg{The 13th \dccp@publ@long\ takes place on 19--22 February
+ 2018 in Barcelona. URL: \url{http://www.dcc.ac.uk/events/idcc18/}}
+ \def\dccp@subject{13th \dccp@publ@long, 2018}
+ \def\dccp@type@fallback{Practice Paper}
+}
+\DeclareOption{19}{%
+ \def\dccp@publ@short{IDCC19}
+ \def\dccp@publ@msg{The 14th \dccp@publ@long\ takes place on 4--7 February
+ 2019 in Melbourne. URL: \url{http://www.dcc.ac.uk/events/idcc19/}}
+ \def\dccp@subject{14th \dccp@publ@long, 2019}
+}
+\DeclareOption{20}{%
+ \def\dccp@publ@short{IDCC20}
+ \def\dccp@publ@msg{The 15th \dccp@publ@long\ takes place on 17--20 February
+ 2020 in Dublin. URL: \url{http://www.dcc.ac.uk/events/idcc20/}}
+ \def\dccp@subject{15th \dccp@publ@long, 2020}
+}
+\ProcessOptions\relax
+
+% \end{macrocode}
+% \end{optionkey}
+% \end{optionkey}
+% \end{optionkey}
+% \end{optionkey}
+% \end{optionkey}
+% \end{optionkey}
+%
+% \begin{macro}{@clearglobaloption}
+% The \key{demo} option, if passed, would be passed on to the \pkg{graphics}
+% package wreaking havoc with each and every included image. To avoid this,
+% we clear it from the list of class options using
+% \href{http://tex.stackexchange.com/q/33245}{code from Enrico Gregorio}.
+%
+% \begin{macrocode}
+\def\@clearglobaloption#1{%
+ \def\@tempa{#1}%
+ \def\@tempb{\@gobble}%
+ \@for\next:=\@classoptionslist\do{%
+ \ifx\next\@tempa
+ \message{Option \next\space has been hidden from subsequent packages}%
+ \else
+ \edef\@tempb{\@tempb,\next}%
+ \fi
+ }%
+ \let\@classoptionslist\@tempb
+ \expandafter\ifx\@tempb\@gobble
+ \let\@classoptionslist\@empty
+ \fi
+}
+\@clearglobaloption{demo}
+
+% \end{macrocode}
+% \end{macro}
+%
+% The class is based on the \pkg{article} class, and uses A4 paper.
+%
+% \begin{macrocode}
+\LoadClass[a4paper,12pt,twoside]{article}
+
+% \end{macrocode}
+%
+% The rest of the formatting happens in the following file.
+%
+% \begin{macrocode}
+\RequirePackage{dccpaper-base}
+% \end{macrocode}
+% \iffalse
+%</idcc>
+%<*base>
+% \fi
+%
+% \subsection{dccpaper-base.sty}
+% \setcounter{lstnumber}{21}
+%
+% The \pkg{dccpaper} classes are deliberately very similar. This package
+% contains the common code.
+%
+% We use British English orthography.
+%
+% \begin{macrocode}
+\RequirePackage[british]{babel}
+% \end{macrocode}
+%
+% The macro patching commands from \pkg{etoolbox} come in useful for handling
+% author and date information, and also for compatibility with \pkg{apacite}.
+%
+% \begin{macrocode}
+\RequirePackage{etoolbox}
+% \end{macrocode}
+%
+% The \pkg{dccpaper} classes use Times as the main text font. We prefer
+% \pkg{newtx} as it is available in both legacy form (for PDF\LaTeX) and OTF
+% (for Lua\LaTeX and \XeLaTeX), but the standard \pkg{mathptmx} package will do.
+% In case they are needed, we also provide \TeX\ Gyre Heros\slash Helvetica for
+% the sans serif font and Latin\slash Computer Modern Teletype for the
+% monospaced. The code is a little complicated to cope with several variations of
+% what people might have installed.
+%
+% Please note that \textsf{newtxmath} v1.55 is incompatible with \pkg{biblatex},
+% but earlier and later versions (starting v1.551) are compatible.
+%
+% Things are straightforward when PDF\LaTeX\ is used. Note that \textsf{newtxtext}
+% emulates \pkg{tgheros} so all we have to do is set the scaling factor. It also
+% switches the monospaced font, so we switch it back.
+%
+% \begin{macrocode}
+\RequirePackage{iftex}
+\ifPDFTeX
+ \RequirePackage[T1]{fontenc}
+ \IfFileExists{newtxtext.sty}{%
+ \RequirePackage{newtxtext,newtxmath}
+ }{%
+ \RequirePackage{mathptmx}}
+ \IfFileExists{tgheros.sty}{%
+ \ifx\undefined\qhv@scale
+ \RequirePackage[scale=0.92]{tgheros}\else
+ \def\qhv@scale{0.92}\fi
+ }{%
+ \RequirePackage[scaled=0.92]{helvet}}
+ \renewcommand{\ttdefault}{cmtt}
+% \end{macrocode}
+%
+% To avoid problems with input and output encodings, if \LuaTeX\ or \XeLaTeX\ is used,
+% we switch to using the \textsf{newtxtext} OTF font for text, if available.
+%
+% \begin{macrocode}
+\else
+ \RequirePackage{fontspec}
+ \IfFileExists{newtxtext.sty}{%
+ \setmainfont{TeXGyreTermesX}
+% \end{macrocode}
+%
+% Using \textsf{newtxmath} for mathematics generally works, but the package assumes
+% certain characters will fall back to text equivalents, which works under T1 encoding
+% but not under the TU encoding used by \pkg{fontspec}. This solution is from egreg's
+% answer on TeX.se: \url{https://tex.stackexchange.com/a/394139}.
+%
+% \begin{macrocode}
+ \RequirePackage{newtxmath}
+ \DeclareSymbolFont{oldoperators}{OT1}{ntxtlf}{m}{n}
+ \SetSymbolFont{oldoperators}{bold}{OT1}{ntxtlf}{b}{n}
+ \AtBeginDocument{%
+\DeclareMathSymbol{0}{\mathalpha}{operators}{`0}%
+\DeclareMathSymbol{1}{\mathalpha}{operators}{`1}%
+\DeclareMathSymbol{2}{\mathalpha}{operators}{`2}%
+\DeclareMathSymbol{3}{\mathalpha}{operators}{`3}%
+\DeclareMathSymbol{4}{\mathalpha}{operators}{`4}%
+\DeclareMathSymbol{5}{\mathalpha}{operators}{`5}%
+\DeclareMathSymbol{6}{\mathalpha}{operators}{`6}%
+\DeclareMathSymbol{7}{\mathalpha}{operators}{`7}%
+\DeclareMathSymbol{8}{\mathalpha}{operators}{`8}%
+\DeclareMathSymbol{9}{\mathalpha}{operators}{`9}%
+\DeclareMathSymbol{\Gamma}{\mathalpha}{oldoperators}{"00}%
+\DeclareMathSymbol{\Delta}{\mathalpha}{oldoperators}{"01}%
+\DeclareMathSymbol{\Theta}{\mathalpha}{oldoperators}{"02}%
+\DeclareMathSymbol{\Lambda}{\mathalpha}{oldoperators}{"03}%
+\DeclareMathSymbol{\Xi}{\mathalpha}{oldoperators}{"04}%
+\DeclareMathSymbol{\Pi}{\mathalpha}{oldoperators}{"05}%
+\DeclareMathSymbol{\Sigma}{\mathalpha}{oldoperators}{"06}%
+\DeclareMathSymbol{\Upsilon}{\mathalpha}{oldoperators}{"07}%
+\DeclareMathSymbol{\Phi}{\mathalpha}{oldoperators}{"08}%
+\DeclareMathSymbol{\Psi}{\mathalpha}{oldoperators}{"09}%
+\DeclareMathSymbol{\Omega}{\mathalpha}{oldoperators}{"0A}%
+\DeclareMathSymbol{!}{\mathclose}{operators}{"21}%
+\DeclareMathSymbol{+}{\mathbin}{operators}{"2B}%
+\DeclareMathSymbol{:}{\mathrel}{operators}{"3A}%
+\DeclareMathSymbol{;}{\mathpunct}{operators}{"3B}%
+\DeclareMathSymbol{=}{\mathrel}{operators}{"3D}%
+\DeclareMathSymbol{?}{\mathclose}{operators}{"3F}%
+\DeclareMathDelimiter{(}{\mathopen} {operators}{"28}{largesymbols}{"00}%
+\DeclareMathDelimiter{)}{\mathclose}{operators}{"29}{largesymbols}{"01}%
+\DeclareMathDelimiter{[}{\mathopen} {operators}{"5B}{largesymbols}{"02}%
+\DeclareMathDelimiter{]}{\mathclose}{operators}{"5D}{largesymbols}{"03}%
+\DeclareMathAccent{\acute}{\mathalpha}{operators}{"B4}%
+\ifLuaTeX\DeclareMathAccent{\grave}{\mathalpha}{operators}{"60}\fi
+\DeclareMathAccent{\ddot}{\mathalpha}{operators}{"A8}%
+\DeclareMathAccent{\tilde}{\mathalpha}{oldoperators}{"7E}%
+\DeclareMathAccent{\bar}{\mathalpha}{oldoperators}{"16}%
+\DeclareMathAccent{\breve}{\mathalpha}{oldoperators}{"15}%
+\DeclareMathAccent{\check}{\mathalpha}{oldoperators}{"14}%
+\DeclareMathAccent{\hat}{\mathalpha}{oldoperators}{"5E}%
+\DeclareMathAccent{\dot}{\mathalpha}{oldoperators}{"5F}%
+\DeclareMathAccent{\mathring}{\mathalpha}{oldoperators}{"17}%
+\DeclareMathSymbol{\mathdollar}{\mathord}{operators}{"24}%
+ }
+% \end{macrocode}
+%
+% If \pkg{newtx} is not installed we admit defeat and revert to \pkg{mathptmx}.
+% If \TeX\ Gyre Heros is available in OTF form we use that, otherwise we fall
+% back to \pkg{helvet}; we use a gentle hack to force the the right encoding.
+% The monospaced font is left untouched as the \pkg{fontspec} default.
+%
+% \begin{macrocode}
+ }{%
+ \RequirePackage[T1]{fontenc}
+ \RequirePackage{mathptmx}
+ }
+ \IfFontExistsTF{texgyreheros-regular.otf}{%
+ \setsansfont{texgyreheros}%
+ [ Extension = .otf
+ , UprightFont = *-regular
+ , ItalicFont = *-italic
+ , BoldFont = *-bold
+ , BoldItalicFont = *-bolditalic
+ , Scale = 0.92
+ ]
+ }{%
+ \IfFileExists{newtxtext.sty}{%
+ \appto\sffamily{\fontencoding{T1}\selectfont}%
+ }{}
+ \RequirePackage[scaled=0.92]{helvet}
+ }
+\fi
+% \end{macrocode}
+%
+% 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.
+%
+% \begin{macrocode}
+\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}
+% \end{macrocode}
+%
+% We will calculate some lengths later.
+%
+% \begin{macrocode}
+\RequirePackage{calc}
+
+% \end{macrocode}
+%
+% Ragged right text is easier to read on screen, but fully justified text looks
+% better. The \cs{raggedyright} layout from Peter Wilson's \pkg{memoir} class
+% (2005/09/25 v1.618) is an excellent compromise. The code below replicates it.
+%
+% First we save the original definitions of \cs{\textbackslash} and
+% \cs{parindent} as \cs{OrigLineBreak} and \cs{RaggedParindent} respectively.
+%
+% \begin{macrocode}
+\let\OrigLineBreak\\
+\newdimen\RaggedParindent
+\setlength{\RaggedParindent}{\parindent}
+
+% \end{macrocode}
+%
+% \begin{macro}{raggedyright}
+% The \cs{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.
+%
+% \begin{macrocode}
+\newcommand{\raggedyright}[1][2em]{%
+ \let\\\@centercr\@rightskip \z@ \@plus #1\relax
+ \rightskip\@rightskip
+ \leftskip\z@skip
+ \parindent\RaggedParindent}
+\AtBeginDocument{\raggedyright}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{flushleftright}
+% The \cs{flushleftright} layout restores full justification, in case it is
+% needed.
+%
+% \begin{macrocode}
+\newcommand*{\flushleftright}{%
+ \let\\\OrigLineBreak
+ \leftskip\z@skip
+ \rightskip\leftskip
+ \parfillskip\@flushglue
+ \everypar{}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% Pdf\TeX\ 1.40.15 introduced the facility to include dummy interword spaces
+% to improve text extraction and reflow. It would be really, really nice if
+% we could switch this on if available, but unfortunately it triggers a
+% long-standing bug in MikTeX: https://tex.stackexchange.com/q/318425
+%
+% \begin{macrocode}
+\RequirePackage{ifpdf}
+\newtoggle{dccp@dummyspaces}
+\def\fixspaces{\toggletrue{dccp@dummyspaces}}
+\def\nofixspaces{\togglefalse{dccp@dummyspaces}}
+\AtBeginDocument{%
+\iftoggle{dccp@dummyspaces}{%
+ \ifpdf
+ \ifdef{\pdfinterwordspaceon}{\pdfinterwordspaceon}{}%
+ \fi
+}{}%
+}
+
+% \end{macrocode}
+%
+% The classes have some special metadata requirements. We start with the author
+% information.
+%
+% \begin{macro}{thecorrespondence}
+% \begin{macro}{correspondence}
+% The macro \cs{thecorrespondence} is used in the title page footer for the name,
+% postal address and email address of the corresponding author.
+%
+% \begin{macrocode}
+\def\thecorrespondence{}
+\newcommand*{\correspondence}[1]{\def\thecorrespondence{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% The handling of authors here is inspired by Patrick W Daly's \pkg{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.
+%
+% \begin{macro}{Authfont}
+% \begin{macro}{Affilfont}
+% \begin{macro}{affilsep}
+% \begin{macro}{authblksep}
+% We make the presentation of the author information configurable (just in case)
+% with some hooks and lengths:
+% \begin{itemize}
+% \item \cs{Authfont} is the font used for author names;
+% \item \cs{Affilfont} is the font used for affiliations;
+% \item \cs{affilsep} is the line spacing between author names and affiliations;
+% \item \cs{authblksep} is the line spacing between author name/affiliation
+% blocks.
+% \end{itemize}
+%
+% \begin{macrocode}
+\newcommand*{\Authfont}{\normalfont}
+\newcommand*{\Affilfont}{\normalfont\small}
+\newlength{\affilsep}\setlength{\affilsep}{0pt}
+\newlength{\authblksep}\setlength{\authblksep}{1.5\baselineskip}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{AuthorBlock}
+% The \cs{AuthorBlock} command will be used to collect all the author information.
+%
+% \begin{macrocode}
+\newcommand{\AuthorBlock}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{MainAuthor}
+% The \cs{MainAuthor} command collects abbreviated author information for use in
+% the headers.
+%
+% \begin{macrocode}
+\newcommand{\MainAuthor}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{dccp@author}
+% The \cs{dccp@author} command, meanwhile, collects a full list of authors for the
+% PDF metatdata.
+%
+% \begin{macrocode}
+\newcommand{\dccp@author}{}
+% \end{macrocode}
+% \end{macro}
+%
+% 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}
+%
+% \begin{macrocode}
+\newcounter{authors}
+\newcounter{authorsinblock}
+\newcounter{block}
+% \end{macrocode}
+%
+% 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.
+%
+% \begin{macrocode}
+\AtBeginDocument{\setcounter{block}{0}}
+% \end{macrocode}
+%
+% \begin{macro}{author}
+% The new definition of the author command starts here.
+%
+% \begin{macrocode}
+\renewcommand{\author}[1]{%
+% \end{macrocode}
+%
+% If this is the first or second \cs{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.
+%
+% At the same time, we use a simpler technique to populate \cs{dccp@author}.
+%
+% \begin{macrocode}
+ \ifnum\theauthors=0
+ \def\dccp@author{#1}%
+ \def\MainAuthor{#1}%
+ \else
+ \appto\dccp@author{, #1}%
+ \ifnum\theauthors=1%
+ \def\OtherMainAuthors{ and #1}%
+ \appto\MainAuthor{\OtherMainAuthors}%
+ \else
+ \ifnum\theauthors=2%
+ \def\OtherMainAuthors{ et al.}%
+ \fi
+ \fi
+ \fi
+ \stepcounter{authors}%
+% \end{macrocode}
+%
+% Each block has its author names collected in a macro like \cs{blocki@auth},
+% and its affiliation collected in a macro like \cs{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 \cs{AuthorBlock}; second and subsequent blocks are preceded by a \cs{quad} of
+% space.
+%
+% \begin{macrocode}
+ \ifnum\theauthorsinblock=0%
+ \stepcounter{block}%
+ \expandafter\def\csname block\roman{block}@auth\endcsname{\Authfont#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
+% \end{macrocode}
+%
+% Otherwise we just add the name to the right \cs{blocki@auth}-style macro.
+%
+% \begin{macrocode}
+ \csappto{block\roman{block}@auth}{, #1}%
+ \fi
+ \stepcounter{authorsinblock}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{affil}
+% The \cs{affil} command adds an affiliation to the current block and closes it by
+% resetting the |authorsinblock| counter.
+%
+% \begin{macrocode}
+\newcommand{\affil}[1]{%
+ \expandafter\def\csname block\roman{block}@affil\endcsname{\Affilfont#1}%
+ \setcounter{authorsinblock}{0}%
+}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{HeadTitle}
+% The \cs{HeadTitle} collects the abbreviated title for use in the headers.
+%
+% \begin{macrocode}
+\newcommand*{\HeadTitle}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{title}
+% We wrap the normal \cs{title} command with code to populate \cs{HeadTitle} with
+% the optional argument if provided, or the mandatory one otherwise. We also
+% provide a persistent \cs{thetitle} macro, stripped of any \cs{thanks}.
+%
+% \begin{macrocode}
+\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
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{thetitle}
+% To prevent \LaTeX\ throwing an error if no title is supplied, we supply a
+% fallback value and issue a warning instead.
+%
+% \begin{macrocode}
+\def\thetitle{%
+ Please supply a title
+ \ClassWarning{dccpaper}{%
+ Please supply a title in the preamble with \noexpand\title{}%
+ }
+}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{date}
+% \begin{macro}{thedate}
+% We make \cs{thedate} persistent, borrowing the technique used in Peter Wilson's
+% \pkg{memoir} class (2005/09/25 v1.618).
+%
+% \begin{macrocode}
+\pretocmd{\date}{\begingroup\let\footnote\@gobble}{}{}%
+\apptocmd{\date}{%
+ \begingroup
+ \renewcommand{\thanks}[1]{}
+ \protected@xdef\thedate{#1}
+ \endgroup\endgroup%
+}{}{}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% We ensure \cs{thedate} is defined using a dummy date.
+%
+% \begin{macrocode}
+\date{20xx}
+
+% \end{macrocode}
+%
+% \begin{macro}{thevolume}
+% \begin{macro}{volume}
+% \begin{macro}{theissue}
+% \begin{macro}{issue}
+% \begin{macro}{thesubno}
+% \begin{macro}{subno}
+% \begin{macro}{thedoi}
+% IJDC articles have extra bibliographic information:
+% \begin{itemize}
+% \item \cs{volume} sets the volume number, \cs{thevolume};
+% \item \cs{issue} sets the issue number, \cs{theissue};
+% \item \cs{subno} sets the submission number, \cs{thesubno}.
+% \end{itemize}
+%
+% These numbers are used to build the DOI, \cs{thedoi}.
+%
+% \begin{macrocode}
+\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}\fixspaces}
+\newcommand*{\thedoi}{10.2218/ijdc.v\thevolume i\theissue .\thesubno}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{dol@stpage}
+% They also display the page range. The following code was borrowed from Peter
+% Wilson's \pkg{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.
+%
+% \begin{macrocode}
+\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}}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{dccp@dates}
+% DCC papers display some important dates. We collect these in \cs{dccp@dates},
+% initially setting the value to something sensible for papers in draft.
+%
+% \begin{macrocode}
+\def\dccp@dates{\emph{Draft from} \today}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{submitted}
+% \begin{macro}{received}
+% \begin{macro}{revised}
+% \begin{macro}{accepted}
+% Several types of date can be added:
+% \begin{itemize}
+% \item \cs{submitted} for when the authors submitted the paper (intended for
+% IDCC papers).
+% \item \cs{received} for when the paper was received by the editorial board
+% (intended for IJDC papers).
+% \item \cs{revised} for when the most recent version was received by the
+% editorial board.
+% \item \cs{accepted} for when the paper was accepted by the editorial board.
+% \end{itemize}
+%
+% \begin{macrocode}
+\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}%
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{dccp@conf}
+% \begin{macro}{conference}
+% IJDC papers need to say if they had a previous life as a conference paper.
+% This statement goes in \cs{dccp@conf}, which is initially empty. The user
+% command for setting this text is \cs{conference}.
+%
+% \begin{macrocode}
+\let\dccp@conf=\empty
+\newcommand*{\conference}[1]{%
+ \renewcommand*{\dccp@conf}{An earlier version of this paper was presented at #1.}%
+}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{FixTextHeight}
+% The macro \cs{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 \pkg{geometry} package (2002/07/08 v3.2).
+%
+% \begin{macrocode}
+\newcommand{\FixTextHeight}{%
+ \setlength\@tempdima{\textheight}%
+ \addtolength\@tempdima{-\topskip}%
+ \@tempcnta\@tempdima
+ \@tempcntb\baselineskip
+ \divide\@tempcnta\@tempcntb
+ \setlength\@tempdimb{\baselineskip}%
+ \multiply\@tempdimb\@tempcnta
+ \advance\@tempdima-\@tempdimb
+ \global\advance\footskip\@tempdima
+ \multiply\@tempdima\tw@
+ \ifdim\@tempdima>\baselineskip
+ \addtolength\@tempdimb{\baselineskip}%
+ \global\advance\footskip-\baselineskip
+ \fi
+ \addtolength\@tempdimb{\topskip}%
+ \global\textheight\@tempdimb
+}
+
+% \end{macrocode}
+% \end{macro}
+%
+% 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).
+%
+% \begin{macrocode}
+\setlength{\textwidth}{150mm}
+\setlength{\oddsidemargin}{30mm - \hoffset - 1in}
+\setlength{\evensidemargin}{30mm - \hoffset - 1in}
+% \end{macrocode}
+%
+% It is rare to have marginal notes, but in case we ever do, we centre them in
+% the margin.
+%
+% \begin{macrocode}
+\setlength{\marginparwidth}{30mm - 2\marginparsep}
+% \end{macrocode}
+%
+% 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.
+%
+% \begin{macrocode}
+\setlength{\topmargin}{15mm - \voffset - 1in}
+\setlength{\headsep}{2\baselineskip}
+
+% \end{macrocode}
+%
+% \begin{macro}{dccp@editorial}
+% IJDC editorials have slightly different headers and footers. This requires
+% testing for \cs{dccp@editorial} if it exists. In case it doesn't, we provide it.
+%
+% \begin{macrocode}
+\providecommand{\dccp@editorial}{Editorial}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{ps@title}
+% \begin{macro}{TitleHead}
+% \begin{macro}{TitleFoot}
+% 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 \cs{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
+% \val{title} page style), making sure we save them to auxiliary macros
+% \cs{TitleHead} and \cs{TitleFoot} so we can measure them.
+%
+% \begin{macrocode}
+\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
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% We set the normal page style to \val{title} here so that \cs{TitleHead} and
+% \cs{TitleFoot} are defined, but we will override it with the \val{dccpaper}
+% page style later.
+%
+% \begin{macrocode}
+\pagestyle{title}
+% \end{macrocode}
+%
+% The first page should use the \val{title} page style, however.
+%
+% \begin{macrocode}
+\AtBeginDocument{\thispagestyle{title}}
+
+% \end{macrocode}
+%
+% \begin{macro}{ps@dccpaper}
+% \begin{macro}{NormalHead}
+% \begin{macro}{NormalFoot}
+% Here are the normal headers and footers (i.e.\ the \val{dccpaper} page
+% style). We save them to \cs{NormalHead} and \cs{NormalFoot}, again so we can
+% measure them.
+%
+% \begin{macrocode}
+\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}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{dccp@firstpagehead}
+% \begin{macro}{dccp@firstpagefoot}
+% \begin{macro}{dccp@restpagehead}
+% \begin{macro}{dccp@restpagefoot}
+% 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.\ \cs{dccp@firstpagehead}, \cs{dccp@firstpagefoot},
+% \cs{dccp@restpagehead}, \cs{dccp@restpagefoot}).
+%
+% \begin{macrocode}
+\AtEndPreamble{
+ \newsavebox{\dccp@firstpagehead}
+ \sbox\dccp@firstpagehead{\normalfont\TitleHead}
+ \newsavebox{\dccp@firstpagefoot}
+ \sbox\dccp@firstpagefoot{\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}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% We can now set the geometry of the title page\dots
+%
+% \begin{macrocode}
+ \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
+ }
+% \end{macrocode}
+%
+% \begin{macro}{dccp@resetgeometry}
+% {\dots}and provide a macro that will reset the geometry for the remaining
+% pages.
+%
+% \begin{macrocode}
+ \def\dccp@resetgeometry{%
+ \setlength{\headheight}{\ht\dccp@restpagehead + \dp\dccp@restpagehead}
+ \global\headheight=\headheight
+ \setlength{\footskip}{%
+ 2\baselineskip + \ht\dccp@restpagefoot
+ }
+ \global\footskip=\footskip
+ \setlength{\textheight}{%
+ \paperheight
+ - 30mm % 15mm top and bottom
+ - \headheight
+ - \headsep
+ - \footskip
+ }
+ \FixTextHeight
+ \global\textheight=\textheight
+ }
+}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{maketitle}
+% The \cs{maketitle} command is redefined to the correct formatting. At the end it
+% sets a hook that will reset the geometry when the first page is shipped out,
+% i.e.\ with effect from 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.
+%
+% \begin{macrocode}
+\RequirePackage{atbegshi}
+\renewcommand{\maketitle}{%
+ \null\nobreak\vspace*{-0.528\baselineskip}%
+ \begingroup
+ \centering
+ {\Large\thetitle\par}
+ \vspace{0.7\baselineskip}
+ \AuthorBlock\par
+ \vspace{1.7\baselineskip}
+ \endgroup
+ \AtBeginShipoutNext{\dccp@resetgeometry}%
+}
+
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{widequote}
+% \begin{macro}{afterabstract}
+% \begin{environment}{abstract}
+% The \env{abstract} environment is redefined in terms of an environment
+% \env{widequote}, which mimics the \env{quote} environment, but is a bit
+% wider. We also provide a hook, \cs{afterabstract}, so that if some annotation
+% needs to be appended to the title page after the abstract, we can do that.
+%
+% \begin{macrocode}
+\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
+}
+
+% \end{macrocode}
+% \end{environment}
+% \end{macro}
+% \end{environment}
+%
+% We use the \pkg{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.
+%
+% \begin{macrocode}
+\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}
+% \end{macrocode}
+%
+% \begin{macro}{dccp@old@ep}
+% An unfortunate side effect of spacing headings like this is that if a
+% \cs{subsection} immediately follows a \cs{section} it forms an unsightly gap. To
+% remedy this, we count how many paragraphs there have been since the last
+% \cs{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.
+%
+% \begin{macrocode}
+\newcounter{sectionpars}
+\let\dccp@old@ep\everypar
+\newtoks\everypar
+\dccp@old@ep{\the\everypar\stepcounter{sectionpars}}
+% \end{macrocode}
+% \end{macro}
+%
+% We need to manually reset |sectionpars| when \cs{section} is called. Also,
+% the normal font size is 12pt/14.5pt, while \cs{Large} is 17pt/22pt;
+% so the \cs{Large} line height = 1.5172 $\times$ normal line height. Nevertheless
+% it seems to work better if we let the heading eat 0.528\cs{baselineskip} into
+% the 2\cs{baselineskip} of padding above it.
+%
+% \begin{macrocode}
+\titleformat{\section}
+ [block]
+ {%
+ \vspace{2\baselineskip}%
+ \nobreak
+ \vspace*{-0.528\baselineskip}%
+ \setcounter{sectionpars}{0}%
+ \filcenter\normalfont\Large\bfseries
+ }
+ {\thesection}
+ {1em}
+ {}
+% \end{macrocode}
+%
+% The others use a \cs{normalsize} font so that makes life easier. The format
+% for \cs{subsection} command includes conditional spacing: if the |sectionpars|
+% counter equals 2, this means the heading immediately follows a \cs{section}, so
+% less white space is needed.
+%
+% \begin{macrocode}
+\titleformat{\subsection}
+ {%
+ \ifnum\thesectionpars>2%
+ \vspace{2\baselineskip}%
+ \else
+ \vspace{\baselineskip}%
+ \fi\nobreak
+ \vspace*{-0.6\baselineskip}%
+ \normalfont\normalsize\bfseries
+ }
+ {\thesubsection}
+ {1em}
+ {}
+\titleformat{\subsubsection}
+ [block]
+ {\normalfont\normalsize\bfseries}
+ {\thesubsubsection}
+ {1em}
+ {}
+\titleformat{\paragraph}
+ [block]
+ {\normalfont\normalsize\bfseries\itshape}
+ {\thesubsubsection}
+ {1em}
+ {}
+\titleformat{\subparagraph}
+ [block]
+ {\normalfont\normalsize\itshape}
+ {\thesubsubsection}
+ {1em}
+ {}
+% \end{macrocode}
+%
+% DCC papers do not typically number their sections.
+%
+% \begin{macrocode}
+\setcounter{secnumdepth}{0}
+
+% \end{macrocode}
+%
+% To help with the display of tables we load the \pkg{array} and
+% \pkg{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.
+%
+% \begin{macrocode}
+\RequirePackage{array,booktabs}
+\renewcommand{\arraystretch}{1.25}
+
+% \end{macrocode}
+%
+% We use the \pkg{caption} package to give captions the right format.
+%
+% \begin{macrocode}
+\RequirePackage
+ [ format=hang
+ , labelsep=period
+ , font=small
+ , labelfont=bf
+ , figureposition=bottom
+ , tableposition=top
+ ]{caption}
+
+% \end{macrocode}
+%
+% \begin{macro}{footnotelayout}
+% Footnotes should be set right up against the left margin. They should be
+% set hung and in the same half-ragged style as the main text. They should also,
+% for neatness, be at the bottom of the page regardless of how short it is. The
+% \pkg{footmisc} package helps here.
+%
+% \begin{macrocode}
+\RequirePackage[hang,bottom]{footmisc}
+\settowidth{\footnotemargin}{\footnotesize\textsuperscript{99}\space}
+\renewcommand{\footnotelayout}{\raggedyright}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{dccp@footnote}
+% \begin{macro}{dccp@next@token}
+% \begin{macro}{dccp@supercomma}
+% \begin{macro}{dccp@check@for@footnote}
+% Also, if multiple footnotes are set at once, the markers should be separated
+% with superscript commas. The \pkg{footmisc} package should help here but
+% its solution is clobbered by \pkg{hyperref}. So after a footnote is set,
+% we check to see if the next token is also a footnote, and if so, slip a comma
+% in before it.\footnote{This solution was provided at
+% \url{http://tex.stackexchange.com/q/40072}} This tweak needs to be done late,
+% \cs{AtBeginDocument}. Note that the \pkg{newtx} superior figures are a bit
+% lower than normal superscript text.
+%
+% \begin{macrocode}
+\AtBeginDocument{
+ \let\dccp@footnote\footnote
+ \def\dccp@next@token{\relax}%
+ \def\dccp@supercomma{\textsuperscript{,}}%
+ \IfFileExists{newtxtext.sty}%
+ {\def\dccp@supercomma{\raisebox{-0.2ex}{\textsuperscript{,}}}}%
+ {}
+
+ \newcommand\dccp@check@for@footnote{%
+ \ifx\footnote\dccp@next@token
+ \dccp@supercomma
+ \fi
+ }
+
+ \renewcommand\footnote[1]{%
+ \dccp@footnote{#1}%
+ \futurelet\dccp@next@token\dccp@check@for@footnote
+ }
+}
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% By default lists are quite loose. These settings help to tighten them.
+%
+% \begin{macrocode}
+\topsep = \z@
+\partopsep = \z@
+\appto{\enumerate}{\itemsep = 0.5ex plus 0.25ex minus 0.25ex}
+\appto{\itemize}{\itemsep = 0.5ex plus 0.25ex minus 0.25ex}
+
+% \end{macrocode}
+%
+% A DCC paper should either be using \pkg{biblatex} or \pkg{apacite} for
+% references.
+%
+% If \pkg{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.
+%
+% \begin{macrocode}
+\AtBeginDocument{
+ \@ifpackageloaded{biblatex}{%
+ \defbibheading{bibliography}[\refname]{\section{#1}}%
+% \end{macrocode}
+%
+% We also move the ‘doi:’ portion of a DOI inside the hyperlink.
+%
+% \begin{macrocode}
+ \DeclareFieldFormat{doi}{%
+ \ifhyperref{%
+ \href{https://doi.org/#1}{\nolinkurl{doi:#1}}%
+ }{%
+ \nolinkurl{doi:#1}%
+ }%
+ }
+ }{%
+% \end{macrocode}
+%
+% If \pkg{apacite} is used, there are a few other adaptations we need to
+% make.
+%
+% \begin{macrocode}
+ \@ifpackageloaded{apacite}{%
+% \end{macrocode}
+%
+% \begin{macro}{@ifauthorsunequalc@de}
+% With \pkg{hyperref} loaded, \pkg{apacite} makes the whole of a citation
+% a link to the reference list item. We patch \cs{@ifauthorsunequalc@de} so only
+% the year portion gets linked.
+%
+% \begin{macrocode}
+ \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
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% The Spanish language support file defines a different version of
+% \cs{@ifauthorsunequalc@de}, which might override the patch we have just
+% introduced. So we employ the same test that \pkg{apacite} uses when
+% deciding whether to load that file; if successful, we patch the Spanish
+% version. Note that as \pkg{apacite} loads language support files
+% \cs{AtBeginDocument}, we have to do our thing after that, \cs{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!)
+%
+% \begin{macrocode}
+ \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
+ }%
+% \end{macrocode}
+%
+% Another thing \pkg{apacite} does \cs{AtBeginDocument} is set the URL style
+% to monospaced. So we reset it back to normal roman type \cs{AfterEndPreamble}.
+%
+% \begin{macrocode}
+ \urlstyle{APACrm}
+ }%
+% \end{macrocode}
+%
+% \begin{macro}{doi}
+% \begin{macro}{doiprefix}
+% We pre-empt \pkg{apacite}'s \cs{providecommand} of \cs{doi} with our own
+% definition that includes the `doi' URI scheme label in the link, remembering
+% to remove the one inserted by \cs{doiprefix}.
+%
+% \begin{macrocode}
+ \newcommand{\doi}[1]{\href{https://doi.org/#1}{\nolinkurl{doi:#1}}}%
+ \renewcommand{\doiprefix}{\unskip}%
+ }{}%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{bibitemsep}
+% Both \pkg{biblatex} and \pkg{apacite} use \cs{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 \cs{ifx} test.
+%
+% \begin{macrocode}
+ \ifx\undefined\bibitemsep
+ \else
+ \setlength{\bibitemsep}{1em plus 1ex minus 1ex}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% As mentioned above, if \pkg{apacite} is used, we can use a package option
+% to ensure that the reference list heading appears in the PDF bookmarks.
+%
+% \begin{macrocode}
+\PassOptionsToPackage{numberedbib}{apacite}
+
+% \end{macrocode}
+%
+% We, of course, use \pkg{hyperref} for enhancing the PDF with working links,
+% bookmarks, metadata, etc.
+%
+% \begin{macrocode}
+\RequirePackage
+ [ colorlinks=true
+ , linkcolor=black
+ , anchorcolor=black
+ , citecolor=links
+ , filecolor=black
+ , menucolor=black
+ , runcolor=black
+ , urlcolor=links
+ ]{hyperref}
+% \end{macrocode}
+%
+% Links should be in roman type, not monospaced.
+%
+% \begin{macrocode}
+\urlstyle{rm}
+% \end{macrocode}
+%
+% \begin{macro}{email}
+% We provide an \cs{email} command for displaying the email address of the
+% corresponding author.
+%
+% \begin{macrocode}
+\newcommand*{\email}[1]{\href{mailto:#1}{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% Once the user has had a chance to provide the metadata, we can add it to the
+% PDF metadata.
+%
+% \begin{macrocode}
+\AtBeginDocument{%
+ \hypersetup
+ { pdftitle={\thetitle}
+ , pdfauthor={\dccp@author}
+ , pdfsubject={\dccp@subject}
+ }
+% \end{macrocode}
+%
+% The APA has its own style for line breaks in URLs. The \pkg{apacite}
+% package provides the code for this, but in case \pkg{biblatex} is used
+% instead, we repeat the settings (from 2013/07/21 v6.03) here.
+%
+% \begin{macrocode}
+ \@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}
+}
+
+% \end{macrocode}
+%
+% 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
+% \pkg{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).
+%
+% \begin{macrocode}
+\begingroup
+\catcode`\"=12
+\catcode`\&=12
+\catcode`\#=12
+\catcode`\<=12
+\catcode`\>=12
+\catcode`\_=12
+% \end{macrocode}
+%
+% We construct the XMP packet as the document begins.
+%
+% \begin{macrocode}
+\AtBeginDocument{%
+% \end{macrocode}
+%
+% \begin{macro}{sp}
+% For convenience we define \cs{sp} to be a level of indent, translating to three
+% spaces.
+%
+% \begin{macrocode}
+ \def\sp{\space\space\space}
+% \end{macrocode}
+% \end{macro}
+%
+% The text of the XMP packet is recorded in \cs{cc@xmp@packet}. We use |^^J| to
+% break lines.
+%
+% \begin{macrocode}
+ \long\gdef\cc@xmp@packet{%
+<?xpacket begin='' id=''?>^^J%
+<x:xmpmeta xmlns:x='adobe:ns:meta/'>^^J%
+<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>^^J%
+\sp<rdf:Description rdf:about=''^^J%
+\sp\sp xmlns:xapRights='http://ns.adobe.com/xap/1.0/rights/'>^^J%
+\sp\sp<xapRights:Marked>True</xapRights:Marked>^^J%
+\sp</rdf:Description>^^J%
+\sp<rdf:Description rdf:about=''^^J%
+\sp\sp xmlns:dc='http://purl.org/dc/elements/1.1/'>^^J%
+\sp\sp<dc:rights>^^J%
+\sp\sp\sp<rdf:Alt>^^J%
+\sp\sp\sp\sp<rdf:li xml:lang='x-default'>This work is licensed under a Creative Commons Attribution 4.0 International Licence.</rdf:li>^^J%
+\sp\sp\sp</rdf:Alt>^^J%
+\sp\sp</dc:rights>^^J%
+\sp</rdf:Description>^^J%
+\sp<rdf:Description rdf:about=''^^J%
+\sp\sp xmlns:cc='http://creativecommons.org/ns#'>^^J%
+\sp\sp<cc:license rdf:resource='http://creativecommons.org/licenses/by/4.0/'/>^^J%
+\sp</rdf:Description>^^J%
+</rdf:RDF>^^J%
+</x:xmpmeta>^^J%
+<?xpacket end='r'?>^^J%
+ }%
+}
+\endgroup
+% \end{macrocode}
+%
+% Different workflows require the XMP packet to be embedded in different ways.
+%
+% \begin{macro}{ccxmp@embed@packet@pdftex}
+% Pdf\TeX\ can inject objects into PDFs natively.
+%
+% \begin{macrocode}
+\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
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{ccxmp@embed@packet@pdfmark}
+% The \cs{pdfmark} command defined by \pkg{hyperref} is respected by tools such
+% as Dvipdf, Dvips, Dvipsone, etc.
+%
+% \begin{macrocode}
+\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
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% Dvipdfm has its own \cs{special} command for inserting PDF objects, but
+% it is a bit basic and requires advance knowledge of how long (in characters)
+% the object is.
+%
+% \begin{macro}{ccxmp@count@spaces}
+% The \cs{ccxmp@count@spaces} macro counts the number of spaces in its parameter
+% through a process of iteration, adding this figure to \cs{@tempcnta}.
+%
+% \begin{macrocode}
+\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
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{ccxmp@count@non@spaces}
+% The \cs{ccxmp@count@non@spaces} command counts the number of non-spaces in its
+% argument through a process of iteration, adding this figure to \cs{@tempcnta}.
+%
+% \begin{macrocode}
+\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
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{ccxmp@string@len}
+% The \cs{ccxmp@string@len} command sets \cs{@tempcnta} to the number of characters
+% (spaces + non-spaces) in its argument.
+%
+% \begin{macrocode}
+\newcommand*{\ccxmp@string@len}[1]{%
+ \@tempcnta=0
+ \expandafter\ccxmp@count@spaces#1 {} %
+ \expandafter\ccxmp@count@non@spaces#1{}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{ccxmp@embed@packet@dvipdfm}
+% So now, finally, is the command for embedding the packet using Dvipdfm.
+%
+% \begin{macrocode}
+\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
+ >>
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{ccxmp@embed@packet@xetex}
+% \XeTeX\ creates PDFs with Xdvipdfmx, which supports a simpler \cs{special} for
+% inserting objects that does not require us to count characters.
+%
+% \begin{macrocode}
+\newcommand*{\ccxmp@embed@packet@xetex}{%
+ \special{pdf:stream @ccxmp@packet (\cc@xmp@packet)
+ <<
+ /Type /Metadata
+ /Subtype /XML
+ >>
+ }%
+ \special{pdf:put @catalog
+ <<
+ /Metadata @ccxmp@packet
+ >>
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% We rely on \pkg{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.
+%
+% \begin{macrocode}
+\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
+}
+% \end{macrocode}
+% \iffalse
+%</base>
+% \fi
+%\Finale
diff --git a/macros/latex/contrib/dccpaper/dccpaper.pdf b/macros/latex/contrib/dccpaper/dccpaper.pdf
new file mode 100644
index 0000000000..e75dc06836
--- /dev/null
+++ b/macros/latex/contrib/dccpaper/dccpaper.pdf
Binary files differ