summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/incgraph
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/incgraph
Initial commit
Diffstat (limited to 'macros/latex/contrib/incgraph')
-rw-r--r--macros/latex/contrib/incgraph/CHANGES62
-rw-r--r--macros/latex/contrib/incgraph/README52
-rw-r--r--macros/latex/contrib/incgraph/exaimage-0001.pngbin0 -> 52039 bytes
-rw-r--r--macros/latex/contrib/incgraph/exaimage-0037.pngbin0 -> 67718 bytes
-rw-r--r--macros/latex/contrib/incgraph/exaimage-0123.pngbin0 -> 115235 bytes
-rw-r--r--macros/latex/contrib/incgraph/example.jpgbin0 -> 76966 bytes
-rw-r--r--macros/latex/contrib/incgraph/incgraph-example-a.pdfbin0 -> 317031 bytes
-rw-r--r--macros/latex/contrib/incgraph/incgraph-example-a.tex12
-rw-r--r--macros/latex/contrib/incgraph/incgraph-example-b.pdfbin0 -> 327514 bytes
-rw-r--r--macros/latex/contrib/incgraph/incgraph-example-b.tex20
-rw-r--r--macros/latex/contrib/incgraph/incgraph-example-c.pdfbin0 -> 320045 bytes
-rw-r--r--macros/latex/contrib/incgraph/incgraph-example-c.tex8
-rw-r--r--macros/latex/contrib/incgraph/incgraph.pdfbin0 -> 994963 bytes
-rw-r--r--macros/latex/contrib/incgraph/incgraph.sty502
-rw-r--r--macros/latex/contrib/incgraph/incgraph.tex1156
15 files changed, 1812 insertions, 0 deletions
diff --git a/macros/latex/contrib/incgraph/CHANGES b/macros/latex/contrib/incgraph/CHANGES
new file mode 100644
index 0000000000..14901dbd11
--- /dev/null
+++ b/macros/latex/contrib/incgraph/CHANGES
@@ -0,0 +1,62 @@
+%% The LaTeX package incgraph - version 1.12 (2015/03/12)
+%%
+%% -------------------------------------------------------------------------------------------
+%% Copyright (c) 2012-2015 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% -------------------------------------------------------------------------------------------
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `author-maintained'.
+%%
+%% This work consists of all files listed in README
+%%
+
+version 1.00 (2012/06/21): initial public release
+
+version 1.01 (2012/07/04):
+- the code of the hypertarget setting is rewritten to place it at
+ the top left corner of the page (previously it was placed at the
+ top left corner of the text area).
+- new macro '\igrtargetset' to set hypertarget values manually
+- new key 'target' to set hypertarget values manually
+
+version 1.02 (2012/07/06):
+- bug fixed in '\igrboxtikz' which caused a small shift.
+- key 'nohyper' renamed to 'no hyper'
+- new macro '\igrboxtikzcenter' to support tikz pictures with a centered box.
+- option key 'include command' now has a default.
+- new feature to overlay included graphics with tikz picture code
+ using the new option keys 'overlay', 'overlay page number at',
+ 'overlay page number at bottom', 'overlay page number at top',
+ 'no overlay'.
+
+version 1.10 (2012/09/28):
+- overlay code and graphics inclusion decoupled internally
+- interlineskip problem fixed
+- output macro implementation rewritten
+- new macro '\igrcenterfit' for an arbitrary paper size
+- new user interface environment 'inctext' to support
+ arbitrary internal graphics
+- documentation structure changed
+- introduction of various paper format options with the key 'paper'
+- new 'landscape' and 'portrait' keys
+- new keys 'currentpaper', 'graphicspaper' and 'documentpaper'
+ to replace the deprecated keys 'page' and 'center'
+- various internal code changes
+
+version 1.11 (2013/01/16):
+- bug fixed: positioning on even pages for twosided documents
+- bug fixed: option 'paper=document' could not be used inside the preamble
+- added clearpage at begin of inctext
+
+version 1.12 (2015/03/12):
+- ugly pictures of the documentation exchanged by not so ugly ones.
+- new options:
+ 'left border', 'bottom border', 'right border', 'top border',
+ 'horizontal border', 'vertical border', 'border'
diff --git a/macros/latex/contrib/incgraph/README b/macros/latex/contrib/incgraph/README
new file mode 100644
index 0000000000..4acfe46fbe
--- /dev/null
+++ b/macros/latex/contrib/incgraph/README
@@ -0,0 +1,52 @@
+%% The LaTeX package incgraph - version 1.12 (2015/03/12)
+%%
+%% -------------------------------------------------------------------------------------------
+%% Copyright (c) 2012-2015 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% -------------------------------------------------------------------------------------------
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `author-maintained'.
+%%
+%% This work consists of all files listed in README
+%%
+
+incgraph provides tools for including graphics on full paper size. The graphics
+can be centered for a given paper format or the paper may be resized to the
+graphics dimensions. The main use case for the package incgraph is to transform
+one or many scans or taken pictures to a PDF document. It can also be applied
+for full paper size LaTeX created graphics. The package incgraph provides a tool
+box with basic macros and a convenience user interface which wraps the
+well-known includegraphics. Also, bookmarking is especially supported.
+
+Contents of the package
+=======================
+ 'README' this file
+ 'CHANGES' log of changes (history)
+ 'incgraph.sty' LaTeX package file (style file)
+ 'incgraph.pdf' documentation for csvsimple
+ 'incgraph.tex' source code of the documentation
+ 'incgraph-example-a.tex' example file A for package usage
+ 'incgraph-example-a.pdf' compiled example A
+ 'incgraph-example-b.tex' example file B for package usage
+ 'incgraph-example-b.pdf' compiled example B
+ 'incgraph-example-c.tex' example file C for package usage
+ 'incgraph-example-c.pdf' compiled example C
+ 'example.jpg' example image file
+ 'exaimage-0001.png' example image file
+ 'exaimage-0037.png' example image file
+ 'exaimage-0123.png' example image file
+
+Installation
+============
+Copy the contents of the 'incgraph.tds.zip' from CTAN to your local TeX file tree.
+
+Alternatively, put the files to their respective locations within the TeX installation:
+ 'incgraph.sty' -> /tex/latex/incgraph
+ all other files -> /doc/latex/incgraph
diff --git a/macros/latex/contrib/incgraph/exaimage-0001.png b/macros/latex/contrib/incgraph/exaimage-0001.png
new file mode 100644
index 0000000000..06b1c42a85
--- /dev/null
+++ b/macros/latex/contrib/incgraph/exaimage-0001.png
Binary files differ
diff --git a/macros/latex/contrib/incgraph/exaimage-0037.png b/macros/latex/contrib/incgraph/exaimage-0037.png
new file mode 100644
index 0000000000..1f745be067
--- /dev/null
+++ b/macros/latex/contrib/incgraph/exaimage-0037.png
Binary files differ
diff --git a/macros/latex/contrib/incgraph/exaimage-0123.png b/macros/latex/contrib/incgraph/exaimage-0123.png
new file mode 100644
index 0000000000..4b5faf12c3
--- /dev/null
+++ b/macros/latex/contrib/incgraph/exaimage-0123.png
Binary files differ
diff --git a/macros/latex/contrib/incgraph/example.jpg b/macros/latex/contrib/incgraph/example.jpg
new file mode 100644
index 0000000000..6107ab5a65
--- /dev/null
+++ b/macros/latex/contrib/incgraph/example.jpg
Binary files differ
diff --git a/macros/latex/contrib/incgraph/incgraph-example-a.pdf b/macros/latex/contrib/incgraph/incgraph-example-a.pdf
new file mode 100644
index 0000000000..cc78605606
--- /dev/null
+++ b/macros/latex/contrib/incgraph/incgraph-example-a.pdf
Binary files differ
diff --git a/macros/latex/contrib/incgraph/incgraph-example-a.tex b/macros/latex/contrib/incgraph/incgraph-example-a.tex
new file mode 100644
index 0000000000..d0b0836e58
--- /dev/null
+++ b/macros/latex/contrib/incgraph/incgraph-example-a.tex
@@ -0,0 +1,12 @@
+\documentclass{article}
+\usepackage{incgraph}
+
+\igrset{paper=letter,
+ zerofill=4,
+ bookmark={Page \theigrpage\ (\nt)}
+ }
+
+\begin{document}%
+ \incgraph{example.jpg}
+ \incmultigraph{exaimage-\nn.png}{1,...,150}
+\end{document}
diff --git a/macros/latex/contrib/incgraph/incgraph-example-b.pdf b/macros/latex/contrib/incgraph/incgraph-example-b.pdf
new file mode 100644
index 0000000000..9934a81f58
--- /dev/null
+++ b/macros/latex/contrib/incgraph/incgraph-example-b.pdf
Binary files differ
diff --git a/macros/latex/contrib/incgraph/incgraph-example-b.tex b/macros/latex/contrib/incgraph/incgraph-example-b.tex
new file mode 100644
index 0000000000..7ef4d8205a
--- /dev/null
+++ b/macros/latex/contrib/incgraph/incgraph-example-b.tex
@@ -0,0 +1,20 @@
+\documentclass{article}
+\usepackage{incgraph,tikz}
+
+\igrset{paper=graphics,
+ zerofill=4,
+ options={width=18cm},
+ overlay page number at top=7mm}
+
+\igrsetmatches{ 1 = A very red image,
+ 123 = A greenish example }
+
+\begin{document}
+
+ \incgraph[bookmark={Page \theigrpage: My first example}]{example.jpg}
+
+ \incmultigraph[if match set bookmark=
+ {\n}{Page \theigrpage: \igrmatchvalue}{Page \theigrpage}]
+ {exaimage-\nn.png}{1,...,150}
+
+\end{document}
diff --git a/macros/latex/contrib/incgraph/incgraph-example-c.pdf b/macros/latex/contrib/incgraph/incgraph-example-c.pdf
new file mode 100644
index 0000000000..7609eccc31
--- /dev/null
+++ b/macros/latex/contrib/incgraph/incgraph-example-c.pdf
Binary files differ
diff --git a/macros/latex/contrib/incgraph/incgraph-example-c.tex b/macros/latex/contrib/incgraph/incgraph-example-c.tex
new file mode 100644
index 0000000000..4257c2b0c2
--- /dev/null
+++ b/macros/latex/contrib/incgraph/incgraph-example-c.tex
@@ -0,0 +1,8 @@
+\documentclass{article}
+\usepackage{incgraph}
+
+\begin{document}%
+ \incmultigraph[paper=a4,
+ bookmark={Imported page \n\ of \nt}][page=\n]
+ {incgraph-example-a.pdf}{1,...,4}
+\end{document}
diff --git a/macros/latex/contrib/incgraph/incgraph.pdf b/macros/latex/contrib/incgraph/incgraph.pdf
new file mode 100644
index 0000000000..4cbee4db69
--- /dev/null
+++ b/macros/latex/contrib/incgraph/incgraph.pdf
Binary files differ
diff --git a/macros/latex/contrib/incgraph/incgraph.sty b/macros/latex/contrib/incgraph/incgraph.sty
new file mode 100644
index 0000000000..09bde04275
--- /dev/null
+++ b/macros/latex/contrib/incgraph/incgraph.sty
@@ -0,0 +1,502 @@
+%% The LaTeX package incgraph - version 1.12 (2015/03/12)
+%% incgraph.sty: Graphics inclusion page
+%%
+%% -------------------------------------------------------------------------------------------
+%% Copyright (c) 2012-2015 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% -------------------------------------------------------------------------------------------
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `author-maintained'.
+%%
+%% This work consists of all files listed in README
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{incgraph}[2015/03/12 version 1.12 LaTeX special graphics inclusion]
+
+\DeclareOption{pgf}{\def\igrreq@pgf{\RequirePackage{pgf}[2008/01/15]\RequirePackage{pgffor}}}%
+\DeclareOption{nopgf}{\def\igrreq@pgf{}}%
+\DeclareOption{graphicx}{\def\igrreq@graphicx{\RequirePackage{graphicx}}}%
+\DeclareOption{nographicx}{\def\igrreq@graphicx{}}%
+\DeclareOption{bookmark}{\def\igrreq@bookmark{\RequirePackage{bookmark}}}%
+\DeclareOption{nobookmark}{\def\igrreq@bookmark{}}%
+
+\ExecuteOptions{pgf,graphicx,bookmark}
+\ProcessOptions\relax
+
+\RequirePackage{pgfkeys}
+\igrreq@pgf
+\igrreq@graphicx
+\igrreq@bookmark
+
+% key management
+\pgfkeys{/igr/.is family}
+
+\def\igrset{\pgfqkeys{/igr}}
+
+\newbox\igrbox
+\newdimen\igr@length
+\newcounter{igrtarget}
+
+\AtBeginDocument{%
+ \edef\igrOrginalPageWidth{\the\pdfpagewidth}%
+ \edef\igrOrginalPageHeight{\the\pdfpageheight}%
+}
+
+\def\igr@target@auto{%
+ \xdef\igrAutoTarget{igr-\theigrtarget}%
+}
+
+\def\igr@target@user{%
+ \xdef\igrAutoTarget{\igr@usertarget}%
+ \global\let\igr@target@next=\igr@target@auto%
+}
+
+\let\igr@target@next=\igr@target@auto
+
+\def\igrtargetset#1{%
+ \def\igr@usertarget{#1}%
+ \let\igr@target@next=\igr@target@user%
+}
+
+\def\igr@nextAutoTarget{%
+ \refstepcounter{igrtarget}%
+ \igr@target@next%
+}
+
+\def\igr@do@rebox{%
+ \setbox\igrbox\hbox{%
+ \kern\igr@left@border%
+ \vbox{%
+ \kern\igr@top@border%
+ \box\igrbox%
+ \kern\igr@bottom@border%
+ }%
+ \kern\igr@right@border}%
+}
+
+\def\igr@rebox{%
+ \ifdim\igr@top@border=0pt\relax%
+ \ifdim\igr@bottom@border=0pt\relax%
+ \ifdim\igr@left@border=0pt\relax%
+ \ifdim\igr@right@border=0pt\relax%
+ \else%
+ \igr@do@rebox%
+ \fi%
+ \else%
+ \igr@do@rebox%
+ \fi%
+ \else%
+ \igr@do@rebox%
+ \fi%
+ \else%
+ \igr@do@rebox%
+ \fi%
+}
+
+\long\def\igrboxset#1{%
+ \igr@nextAutoTarget%
+ \setbox\igrbox\color@hbox#1\color@endbox%
+ \igr@rebox%
+ \igr@length=\wd\igrbox%
+ \edef\igrBoxWidth{\the\igr@length}%
+ \igr@length=\ht\igrbox%
+ \edef\igrBoxht{\the\igr@length}%
+ \igr@length=\dp\igrbox%
+ \edef\igrBoxdp{\the\igr@length}%
+ \advance\igr@length by \igrBoxht%
+ \edef\igrBoxHeight{\the\igr@length}%
+}
+
+
+\def\igr@hyper{\hypertarget{\igrAutoTarget}{}}
+\def\igr@empty{}
+
+\def\igrboxcenter{%
+ \thispagestyle{\igrpagestyle}%
+ %
+ \igr@length=-1in%
+ \advance\igr@length by -\voffset%
+ \advance\igr@length by -\topmargin%
+ \advance\igr@length by -\headheight%
+ \advance\igr@length by -\headsep%
+ \edef\igr@offy@top{\the\igr@length}%
+ %
+ \igr@length=\pdfpageheight%
+ \advance\igr@length by -\igrBoxHeight%
+ \divide\igr@length by 2%
+ \edef\igr@offy@abs{\the\igr@length}%
+ %
+ \igr@length=-1in%
+ \advance\igr@length by -\hoffset%
+ \if@twoside
+ \ifodd\c@page
+ \advance\igr@length by -\oddsidemargin%
+ \else
+ \advance\igr@length by -\evensidemargin%
+ \fi
+ \else
+ \advance\igr@length by -\oddsidemargin%
+ \fi%
+ \edef\igr@offx@left{\the\igr@length}%
+ %
+ \igr@length=\pdfpagewidth%
+ \advance\igr@length by -\igrBoxWidth%
+ \divide\igr@length by 2%
+ \advance\igr@length by \igr@offx@left%
+ \edef\igr@offx{\the\igr@length}%
+ %
+ \vbox to \vsize{%
+ \kern\igr@offy@top\hbox{\kern\igr@offx@left\igr@hypertarget\hss}%
+ \nointerlineskip\kern\igr@offy@abs%
+ \hbox to \hsize{\kern\igr@offx\box\igrbox\hss}%
+ \vss}%
+ \break%
+}
+
+\def\igrboxtikz{%
+ \path[use as bounding box] (0,0) rectangle (\igrBoxWidth,\igrBoxHeight);
+ \node[line width=0mm,inner sep=0,rectangle,above right] (box) at (0,0) {\box\igrbox};
+ \node[minimum width=\igrBoxWidth,minimum height=\igrBoxHeight,line width=0mm,inner sep=0mm,above right] (page) at (0,0) {};%
+}
+
+\let\igrboxtikzpage=\igrboxtikz
+
+\def\igrboxtikzcenter{%
+ \path[use as bounding box] (0,0) rectangle (\pdfpagewidth,\pdfpageheight);
+ \node[line width=0mm,inner sep=0,rectangle,above right] (box) at ({(\pdfpagewidth-\igrBoxWidth)/2},{(\pdfpageheight-\igrBoxHeight)/2}) {\box\igrbox};
+ \edef\igrBoxWidth{\the\pdfpagewidth}%
+ \edef\igrBoxHeight{\the\pdfpageheight}%
+ \node[minimum width=\igrBoxWidth,minimum height=\igrBoxHeight,line width=0mm,inner sep=0mm,above right] (page) at (0,0) {};%
+}
+
+\def\igr@overlay@on{%
+ \igrboxset{\begin{tikzpicture}\igrboxtikzcenter\igr@tikz@hook\end{tikzpicture}}}
+
+\def\igr@overlay@off{}
+
+\let\igr@overlay=\igr@overlay@off
+
+% Output macros
+
+\def\igr@out@resize#1#2{%
+ \edef\igrCurrentPageWidth{\the\pdfpagewidth}%
+ \edef\igrCurrentPageHeight{\the\pdfpageheight}%
+ \eject%
+ \pdfpagewidth=#1%
+ \pdfpageheight=#2%
+ \igr@overlay%
+ \edef\theigrpage{\thepage}%
+ \igrboxcenter%
+ \pdfpagewidth=\igrCurrentPageWidth%
+ \pdfpageheight=\igrCurrentPageHeight%
+}
+
+\def\igr@out@center@fit@port{%
+ \igr@out@resize{\igr@target@width}{\igr@target@height}%
+}
+
+\def\igr@out@center@fit@land{%
+ \igr@out@resize{\igr@target@height}{\igr@target@width}%
+}
+
+\def\igr@out@center@fit{%
+ \csname igr@out@center@fit@\igr@turn\endcsname%
+}
+
+\def\igr@out@page{%
+ \igr@out@resize{\igrBoxWidth}{\igrBoxHeight}%
+}
+
+\def\igr@out@center@port{%
+ \clearpage%
+ \igr@overlay%
+ \edef\theigrpage{\thepage}%
+ \igrboxcenter%
+}
+
+\def\igr@out@center@land{%
+ \edef\igr@temp@w{\the\pdfpagewidth}\edef\igr@temp@h{\the\pdfpageheight}%
+ \igr@out@resize{\igr@temp@h}{\igr@temp@w}%
+}
+
+\def\igr@out@center{%
+ \csname igr@out@center@\igr@turn\endcsname%
+}
+
+% Toolbox output
+
+\long\def\igrcenterfit#1#2#3{%
+ \igrboxset{#3}%
+ \igr@out@resize{#1}{#2}%
+}
+
+\long\def\igrpage#1{%
+ \igrboxset{#1}%
+ \igr@out@page%
+}
+
+\long\def\igrcenter#1{%
+ \igrboxset{#1}%
+ \igr@out@center@port%
+}
+
+
+% include macros
+
+\def\incgraph{%
+ \@ifnextchar[{\inc@graph}{\inc@graph[]}}
+
+\def\inc@graph[#1]{%
+ \@ifnextchar[{\inc@@graph[#1]}{\inc@@graph[#1][]}}
+
+\long\def\inc@@graph[#1][#2]#3{%
+ \begingroup%
+ \def\nt{#3}%
+ \igr@if@file@exists{\nt}{%
+ \igrset{#1}%
+ \igr@match@hook%
+ \edef\igr@incgraph{\noexpand\igr@include@graphics[\igr@options,#2]}%
+ \igrboxset{\igr@incgraph{\nt}\ifx\igr@label@text\igr@empty\else\label{\igr@label@text}\fi}%
+ \igr@output%
+ \ifx\igr@bookmark@text\igr@empty\else%
+ \edef\igr@bookmark{\noexpand\bookmark[\igr@bookmark@options,dest=\noexpand\igrAutoTarget]}%
+ \igr@bookmark{\igr@bookmark@text}\fi%
+ }{}%
+ \endgroup%
+}
+
+\def\igr@bookmark@heading{%
+ \global\let\igr@process@label=\igr@empty%
+ \ifx\igr@bookmark@heading@text\igr@empty\else%
+ \edef\igr@bookmark{\noexpand\bookmark[\igr@bookmark@heading@options,dest=\noexpand\igrAutoTarget]}%
+ \igr@bookmark{\igr@bookmark@heading@text}\fi%
+ \global\let\igr@process@bookmark@heading=\igr@empty%
+}
+
+\def\incmultigraph{%
+ \@ifnextchar[{\inc@multigraph}{\inc@multigraph[]}}
+
+\def\inc@multigraph[#1]{%
+ \@ifnextchar[{\inc@@multigraph[#1]}{\inc@@multigraph[#1][]}}
+
+\long\def\inc@@multigraph[#1][#2]#3#4{%
+ \begingroup%
+ \igrset{#1}%
+ \ifx\igr@label@text\igr@empty\global\let\igr@process@label=\igr@empty\else%
+ \global\def\igr@process@label{\label{\igr@label@text}}\fi%
+ \global\let\igr@process@bookmark@heading=\igr@bookmark@heading%
+ \foreach \n [count=\ni] in {#4} {%
+ \edef\nn{\igr@zero@fill{\n}}%
+ \def\nt{#3}%
+ \igr@if@file@exists{\nt}{%
+ \igr@match@hook%
+ \edef\igr@incgraph{\noexpand\igr@include@graphics[\igr@options,#2]}%
+ \igrboxset{\igr@incgraph{\nt}\igr@process@label}%
+ \igr@output%
+ \igr@process@bookmark@heading%
+ \ifx\igr@bookmark@text\igr@empty\else%
+ \edef\igr@bookmark{\noexpand\bookmark[\igr@bookmark@options,dest=\noexpand\igrAutoTarget]}%
+ \igr@bookmark{\igr@bookmark@text}\fi%
+ }{}}\endgroup%
+}
+
+
+\newenvironment{inctext}[1][]{%
+ \igrset{#1}%
+ \igr@match@hook%
+ \igr@nextAutoTarget%
+ \clearpage\begin{lrbox}{\igrbox}%
+}{%
+ \unskip\ifx\igr@label@text\igr@empty\else\label{\igr@label@text}\fi\end{lrbox}%
+ \igr@rebox%
+ \igr@length=\wd\igrbox%
+ \edef\igrBoxWidth{\the\igr@length}%
+ \igr@length=\ht\igrbox%
+ \edef\igrBoxht{\the\igr@length}%
+ \igr@length=\dp\igrbox%
+ \edef\igrBoxdp{\the\igr@length}%
+ \advance\igr@length by \igrBoxht%
+ \edef\igrBoxHeight{\the\igr@length}%
+ \igr@output%
+ \ifx\igr@bookmark@text\igr@empty\else%
+ \edef\igr@bookmark{\noexpand\bookmark[\igr@bookmark@options,dest=\noexpand\igrAutoTarget]}%
+ \igr@bookmark{\igr@bookmark@text}\fi%
+}
+
+
+\def\igr@make@zerofill#1#2#3#4#5#6#7#8#9{%
+ \def\igr@zerofill##1{%
+ \ifnum##1<10 #1%
+ \else\ifnum##1<100 #2%
+ \else\ifnum##1<1000 #3%
+ \else\ifnum##1<10000 #4%
+ \else\ifnum##1<100000 #5%
+ \else\ifnum##1<1000000 #6%
+ \else\ifnum##1<10000000 #7%
+ \else\ifnum##1<100000000 #8%
+ \else\ifnum##1<1000000000 #9%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi%
+ ##1%
+ }%
+}
+
+\def\igrmakezerofill#1#2{%
+ \def\igr@zerofill##1{##1}%
+ \ifcase#2\or\or\igr@make@zerofill{0}{}{}{}{}{}{}{}{}%
+ \or\igr@make@zerofill{00}{0}{}{}{}{}{}{}{}%
+ \or\igr@make@zerofill{000}{00}{0}{}{}{}{}{}{}%
+ \or\igr@make@zerofill{0000}{000}{00}{0}{}{}{}{}{}%
+ \or\igr@make@zerofill{00000}{0000}{000}{00}{0}{}{}{}{}%
+ \or\igr@make@zerofill{000000}{00000}{0000}{000}{00}{0}{}{}{}%
+ \or\igr@make@zerofill{0000000}{000000}{00000}{0000}{000}{00}{0}{}{}%
+ \or\igr@make@zerofill{00000000}{0000000}{000000}{00000}{0000}{000}{00}{0}{}%
+ \else\igr@make@zerofill{000000000}{00000000}{0000000}{000000}{00000}{0000}{000}{00}{0}%
+ \fi%
+ \let#1=\igr@zerofill%
+}
+
+\newcommand{\igrsetmatchvalue}[2]{%
+ \pgfkeyssetvalue{/igrmatch/#1}{#2}%
+}
+
+\newcommand{\igrifmatch}[3]{%
+ \pgfkeysifdefined{/igrmatch/#1}{%
+ \pgfkeysgetvalue{/igrmatch/#1}{\igrmatchvalue}#2}{#3}%
+}
+
+\pgfkeys{%
+ /igrsetmatch/.unknown/.code={%
+ \let\igrmatchkey=\pgfkeyscurrentname%
+ \igrsetmatchvalue{\igrmatchkey}{#1}%
+ }%
+}
+
+\newcommand{\igrsetmatches}[1]{\pgfkeys{/igrsetmatch/.cd,#1}}
+
+\newcommand{\igr@no@existence@check}[3]{#2}
+
+
+\igrset{%
+ options/.store in=\igr@options,
+ options add/.code={%
+ \toks0=\expandafter{\igr@options}%
+ \def\temp{#1}\toks1=\expandafter{\temp}%
+ \edef\igr@options{\the\toks0,\the\toks1}},
+ bookmark/.store in=\igr@bookmark@text,
+ bookmark options/.store in=\igr@bookmark@options,
+ bookmark heading/.store in=\igr@bookmark@heading@text,
+ bookmark heading options/.store in=\igr@bookmark@heading@options,
+ label/.store in=\igr@label@text,
+ zerofill/.code={\igrmakezerofill{\igr@zero@fill}{#1}},
+ set matches/.code=\igrsetmatches{#1},
+ hyper/.code={\let\igr@hypertarget=\igr@hyper},
+ no hyper/.code={\let\igr@hypertarget=\igr@empty},
+ if match code/.code args={#1#2#3}{\def\igr@match@hook{\igrifmatch{#1}{#2}{#3}}},
+ if match set/.style args={#1#2#3}{if match code={#1}{\igrset{#2}}{\igrset{#3}}},
+ if match set bookmark/.style args={#1#2#3}{if match code={#1}{\igrset{bookmark={#2}}}{\igrset{bookmark={#3}}}},
+ disable match/.code={\let\igr@match@hook=\igr@empty},
+ include command/.code={\let\igr@include@graphics=#1},
+ include command/.default=\includegraphics,
+ existence check/.code={\let\igr@if@file@exists=#1},
+ fail on not found/.style={existence check=\igr@no@existence@check},
+ ignore on not found/.style={existence check=\IfFileExists},
+ pagestyle/.store in=\igrpagestyle,
+ target/.code={\igrtargetset{#1}},
+ overlay@code/.store in=\igr@tikz@hook,
+ overlay/.code={\let\igr@overlay=\igr@overlay@on\igrset{overlay@code={#1}}},
+ overlay page number at/.style={overlay={\node[fill opacity=0.35,draw opacity=0.5,text opacity=1,
+ inner xsep=1em,rounded corners,fill=white,draw=black] at (#1) {\thepage};}},
+ overlay page number at top/.style={overlay page number at={\igrBoxWidth/2,\igrBoxHeight-#1}},
+ overlay page number at top/.default=1.5cm,
+ overlay page number at bottom/.style={overlay page number at={\igrBoxWidth/2,#1}},
+ overlay page number at bottom/.default=1.5cm,
+ no overlay/.code={\let\igr@overlay=\igr@overlay@off},
+ portrait/.code={\def\igr@turn{port}},
+ landscape/.code={\def\igr@turn{land}},
+ paper size/.code args={#1:#2}{\def\igr@target@width{#1}\def\igr@target@height{#2}\let\igr@output=\igr@out@center@fit},
+ a0paper/.style={paper size=841mm:1189mm},
+ a1paper/.style={paper size=594mm:841mm},
+ a2paper/.style={paper size=420mm:594mm},
+ a3paper/.style={paper size=297mm:420mm},
+ a4paper/.style={paper size=210mm:297mm},
+ a5paper/.style={paper size=148mm:210mm},
+ a6paper/.style={paper size=105mm:148mm},
+ a7paper/.style={paper size=74mm:105mm},
+ a8paper/.style={paper size=52mm:74mm},
+ a9paper/.style={paper size=37mm:52mm},
+ a10paper/.style={paper size=26mm:37mm},
+ b0paper/.style={paper size=1000mm:1414mm},
+ b1paper/.style={paper size=707mm:1000mm},
+ b2paper/.style={paper size=500mm:707mm},
+ b3paper/.style={paper size=353mm:500mm},
+ b4paper/.style={paper size=250mm:353mm},
+ b5paper/.style={paper size=176mm:250mm},
+ b6paper/.style={paper size=125mm:176mm},
+ b7paper/.style={paper size=88mm:125mm},
+ b8paper/.style={paper size=62mm:88mm},
+ b9paper/.style={paper size=44mm:62mm},
+ b10paper/.style={paper size=31mm:44mm},
+ c0paper/.style={paper size=917mm:1297mm},
+ c1paper/.style={paper size=648mm:917mm},
+ c2paper/.style={paper size=648mm:917mm},
+ c3paper/.style={paper size=324mm:458mm},
+ c4paper/.style={paper size=229mm:324mm},
+ c5paper/.style={paper size=162mm:229mm},
+ c6paper/.style={paper size=114mm:162mm},
+ c7paper/.style={paper size=81mm:114mm},
+ c8paper/.style={paper size=57mm:81mm},
+ c9paper/.style={paper size=40mm:57mm},
+ c10paper/.style={paper size=28mm:40mm},
+ d0paper/.style={paper size=771mm:1091mm},
+ d1paper/.style={paper size=545mm:771mm},
+ d2paper/.style={paper size=385mm:545mm},
+ d3paper/.style={paper size=272mm:385mm},
+ d4paper/.style={paper size=192mm:272mm},
+ d5paper/.style={paper size=136mm:192mm},
+ d6paper/.style={paper size=96mm:136mm},
+ d7paper/.style={paper size=68mm:96mm},
+ executivepaper/.style={paper size=7.25in:10.5in},
+ letterpaper/.style={paper size=8.5in:11in},
+ legalpaper/.style={paper size=8.5in:14in},
+ ledgerpaper/.style={paper size=17in:11in},
+ currentpaper/.code={\let\igr@output=\igr@out@center},
+ documentpaper/.style={paper size=\igrOrginalPageWidth:\igrOrginalPageHeight},
+ graphicspaper/.code={\let\igr@output=\igr@out@page},
+ paper/.style={#1paper},
+ center/.style=currentpaper,
+ page/.style=graphicspaper,
+ left border/.store in=\igr@left@border,
+ bottom border/.store in=\igr@bottom@border,
+ right border/.store in=\igr@right@border,
+ top border/.store in=\igr@top@border,
+ horizontal border/.style={left border=#1,right border=#1},
+ vertical border/.style={bottom border=#1,top border=#1},
+ border/.style={left border=#1,bottom border=#1,right border=#1,top border=#1},
+%
+ graphicspaper,
+ options=,
+ bookmark=,
+ bookmark options=,
+ bookmark heading=,
+ bookmark heading options=,
+ label=,
+ zerofill=0,
+ hyper,
+ disable match,
+ include command,
+ ignore on not found,
+ pagestyle=empty,
+ overlay@code=,
+ no overlay,
+ portrait,
+ border=0pt,
+}
+
+
diff --git a/macros/latex/contrib/incgraph/incgraph.tex b/macros/latex/contrib/incgraph/incgraph.tex
new file mode 100644
index 0000000000..7425a75ab2
--- /dev/null
+++ b/macros/latex/contrib/incgraph/incgraph.tex
@@ -0,0 +1,1156 @@
+% \LaTeX-Main\
+%% The LaTeX package incgraph - version 1.12 (2015/03/12)
+%% incgraph.tex: Manual
+%%
+%% -------------------------------------------------------------------------------------------
+%% Copyright (c) 2012-2013 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% -------------------------------------------------------------------------------------------
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `author-maintained'.
+%%
+%% This work consists of all files listed in README
+%%
+\documentclass[a4paper,11pt]{ltxdoc}
+
+\usepackage[T1]{fontenc}
+\usepackage[latin1]{inputenc}
+\usepackage[english]{babel}
+\usepackage{lmodern,parskip,array,ifthen,calc,makeidx}
+\usepackage{amsmath,amssymb}
+\usepackage[svgnames,table,hyperref]{xcolor}
+\usepackage{tikz}
+\usepackage[pdftex,bookmarks,raiselinks,pageanchor,hyperindex,colorlinks]{hyperref}
+\urlstyle{sf}
+
+\usepackage[a4paper,left=2.5cm,right=2.5cm,top=1.5cm,bottom=1.5cm,
+ marginparsep=3mm,marginparwidth=18mm,
+ headheight=0mm,headsep=0cm,
+ footskip=1.5cm,includeheadfoot]{geometry}
+\usepackage{fancyhdr}
+\fancyhf{}
+\fancyfoot[C]{\thepage}%
+\renewcommand{\headrulewidth}{0pt}
+\renewcommand{\footrulewidth}{0pt}
+\pagestyle{fancy}
+\tolerance=2000%
+\setlength{\emergencystretch}{20pt}%
+
+\RequirePackage{csquotes}
+\RequirePackage[style=numeric-comp,sorting=nyt,
+ maxnames=8,minnames=8,abbreviate=false,backend=biber]{biblatex}
+\DeclareFieldFormat{url}{\newline\url{#1}}%
+\DeclareListFormat{language}{}%
+\setlength{\bibitemsep}{\smallskipamount}
+\addbibresource{\jobname.bib}
+
+\usepackage[many,listings,documentation]{tcolorbox}
+
+\tcbset{skin=enhanced,
+ doc head={colback=yellow!10!white,interior style=fill},
+ doc head key={colback=magenta!5!white,interior style=fill},
+ color key=DarkViolet,
+ color value=Teal,
+ color color=Teal,
+ color counter=Orange!85!black,
+ color length=Orange!85!black,
+ index colorize,
+ index annotate,
+ %external/externalizer=tcolorbox.doc.externalizer,
+}
+\renewcommand*{\tcbdocnew}[1]{\textcolor{green!50!black}{\sffamily\bfseries N} #1}
+\renewcommand*{\tcbdocupdated}[1]{\textcolor{blue!75!black}{\sffamily\bfseries U} #1}
+
+\usepackage{incgraph}
+
+\hypersetup{
+ pdftitle={Manual for the incgraph package},
+ pdfauthor={Thomas F. Sturm},
+ pdfsubject={graphics inclusion},
+ pdfkeywords={graphics inclusion page}
+}
+
+\usepackage{tikz,multicol}
+
+\lstdefinestyle{mydocumentation}{style=tcbdocumentation,
+ classoffset=0,
+ texcsstyle=\color{blue},
+ % LaTeX and other packages
+ moretexcs={arrayrulecolor,draw,path,fill,includegraphics,ifthenelse,isodd,lipsum,path,pgfkeysalso,foreach},
+ classoffset=1,
+ moretexcs={%
+ incgraph,incmultigraph,n,ni,nn,nt,igrset,igrpage,igrcenter,igrcenterfit,
+ igrtargetset,igrboxset,igrboxcenter,igrpagestyle,igrboxtikz,igrboxtikzpage,
+ igrboxtikzcenter,igrsetmatchvalue,igrsetmatches,igrifmatch,igrmakezerofill,
+ },
+ texcsstyle=\color{Definition}\bfseries,
+ classoffset=2,
+ keywordstyle=\color{Option}\bfseries,
+ % option list
+ morekeywords={%
+ },
+ classoffset=0% restore default
+ }
+
+\tcbset{documentation listing style=mydocumentation,%
+ docexample/.style={enhanced,colframe=Navy!50!ExampleFrame,colback=Navy!5!ExampleBack,fontlower=\footnotesize,
+ bicolor,colbacklower=ExampleBack!5!white,drop fuzzy shadow},
+}
+
+\tcbmakedocSubKey{docIgrKey}{igr}
+
+\newcounter{texexp}
+
+\tcbset{
+ example/.code 2 args={\refstepcounter{texexp}%
+ \pgfkeysalso{label={#2},docexample,listing style=mydocumentation,fonttitle=\bfseries,title={Example \thetexexp: #1}}},
+}
+
+\newenvironment{texexptitled}[3][]{%
+ \hypersetup{linkcolor=white}%
+ \tcbset{example={#2}{#3},listing file={\jobname.\thetexexp.listing},#1}%
+ \tcblisting{}}{\endtcblisting}
+
+
+\newcommand{\inputlisting}[1]{\input{\jobname.#1.listing}}
+\newcommand{\inputlastlisting}{\inputlisting{\thetexexp}}
+
+\def\version{1.12}%
+\def\datum{2015/03/12}%
+\makeindex
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{document}
+\begin{center}
+\vspace*{5mm}
+\begin{tcolorbox}[enhanced,
+ center upper,width=10cm,boxrule=0.4pt,
+ colback=white,colframe=black!50!yellow,drop fuzzy midday shadow=black!50!yellow]
+{\bfseries\LARGE The \texttt{incgraph} package\par}\medskip
+{\large Manual for version \version\ (\datum)\par}
+\end{tcolorbox}\bigskip
+{\large Thomas F.~Sturm%
+ \footnote{Prof.~Dr.~Dr.~Thomas F.~Sturm, Institut f\"{u}r Mathematik und Informatik,
+ Universit\"{a}t der Bundeswehr M\"{u}nchen, D-85577 Neubiberg, Germany;
+ email: \href{mailto:thomas.sturm@unibw.de}{thomas.sturm@unibw.de}} }
+\end{center}
+\bigskip
+\begin{absquote}
+ \begin{center}\bfseries Abstract\end{center}
+ |incgraph| provides tools for including graphics on full paper size.
+ The graphics can be centered for a given paper format or the paper may be
+ resized to the graphics dimensions.
+ The main use case for the package |incgraph| is to transform one or many scans
+ or taken pictures to a PDF document. It can also be applied for full paper size
+ \LaTeX\ created graphics.
+ The package |incgraph| provides a tool box with basic macros and a
+ convenience user interface which wraps the well-known |includegraphics|.
+ Also, bookmarking is especially supported.
+\end{absquote}
+
+\enlargethispage*{1cm}
+\tableofcontents
+
+\begin{inctext}[paper=graphics]
+ \begin{tcolorbox}[title={Caveat\hfill --- Page \thepage\ ---},
+ colframe=red!65!black,colback=red!10!white,fonttitle=\Large\bfseries,
+ fontupper=\large,arc=0mm,outer arc=0mm]
+ This documentation contains a lot of effects which can only be seen
+ when viewed on a computer screen. If you read this text on paper, you
+ will not notice the paper resizing and the bookmarks. Also, pages in landscape may probably
+ be rotated by your printer.
+ \end{tcolorbox}
+\end{inctext}
+
+
+%--------------------------------------
+\section{Introduction}
+\subsection{Motivation}
+The main purpose of this package is to include one or more graphics on full
+paper size. This means that a graphic is either centered on a blank page
+presumable of the given document paper size or the page is resized
+to the dimensions of the graphic.
+For the graphics, JPG files or PDF files or other supported formats may be
+used by inclusion. Alternatively, the graphics (or whatever) can be produced
+by \LaTeX\ code.
+An important use case for the package |incgraph| is to transform one or many scans
+or taken pictures to a PDF document. Optionally, the included graphics can
+be commented with bookmarks for the resulting PDF document.
+
+The well-known |graphicx| package \cite{carlisle:1999a} allows the inclusion
+of several types of external graphics files. The convenience user interface
+of |incgraph| described in Section \ref{sec:interface} relies on this package and adds
+assistance for the described purpose. Note that the package is designed for and
+tested with |pdflatex| to produce PDF directly. Some features like the paper
+resizing may not be applicable for other work-flows.
+
+Many of the features of the convenience user interface can be used directly
+with various basic macros. These are collected and described
+as a 'basic tool box' in Section \ref{sec:basictoolbox}.
+
+If this package does not aid your intended purpose, you may take a look
+at the |pdfpages| package \cite{matthias:2012a} which also supports the insertion of
+external multi-page PDF documents.
+
+
+\subsection{Loading the Package}
+|incgraph| is loaded in the usual manner in the preamble:
+\begin{dispListing}
+\usepackage{incgraph}
+\end{dispListing}
+
+The package |incgraph| loads the package
+|pgfkeys| \cite{tantau:2013a}. If no options are given, it also
+loads the packages |pgf|, |pgffor| \cite{tantau:2013a},
+the package |graphicx| \cite{carlisle:1999a}, and the
+package |bookmark| \cite{oberdiek:2011a}.
+
+\begin{itemize}
+\item The option |nopgf| prevents the loading of |pgf| and |pgffor|.\\
+ The opposite option |pgf| resets to loading the packages.
+\item The option |nographicx| prevents the loading of |graphicx|.\\
+ The opposite option |graphicx| resets to loading the package.
+\item The option |nobookmark| prevents the loading of |bookmark|.\\
+ The opposite option |bookmark| resets to loading the package.
+\end{itemize}
+
+So, the minimal package loading is done with the following:
+\begin{dispListing}
+\usepackage[nopgf,nographicx,nobookmark]{incgraph}
+\end{dispListing}
+
+Note that you can always load the mentioned packages yourself. This is
+intended to avoid possible option clashes the easy way.
+
+
+
+%--------------------------------------
+\section{User Interface}\label{sec:interface}
+
+\subsection{Inclusion Macros for External Graphics}
+The macros of this section rely on the |\includegraphics| command from
+the package |graphicx| \cite{carlisle:1999a}.
+%Section \ref{sec:basictoolbox} describes more basic commands.
+
+\begin{docCommand}{incgraph}{\oarg{options}\oarg{graphics options}\marg{file name}}
+ The picture file with the given \meta{file name} is included in the center
+ of a separate page. Depending on the \meta{options}, this page keeps the
+ document size or is resized to the graphics dimensions.
+ The applicable \meta{options} are listed in Section \ref{sec:keys}.
+ If \meta{graphics options} are given, these are added to the options for
+ the underlying |\includegraphics| command. See the documentation of
+ |graphicx| \cite{carlisle:1999a} for a list of applicable \meta{graphics options}.
+
+
+\begin{texexptitled}[listing only,before={\par\medskip}]%
+ {The hand-drawn example (centered); see page~\pageref{exacenter}}{exacenter.listing}
+\incgraph[paper=current,label={exacenter},overlay page number at bottom,
+ bookmark={The hand-drawn example (centered)}]{example.jpg}
+\end{texexptitled}
+
+\begin{texexptitled}[listing only,before={\par\medskip}]%
+ {The hand-drawn example (resized page); see page~\pageref{exaresized}}{exaresized.listing}
+\incgraph[paper=graphics,label={exaresized},
+ bookmark={The hand-drawn example (resized page)}]{example.jpg}
+\end{texexptitled}
+
+\begin{texexptitled}[listing only,before={\par\medskip}]%
+ {The hand-drawn example (rotated and oversized); see page~\pageref{exarotated}}{exarotated.listing}
+\incgraph[paper=current,label={exarotated},target=oversized,
+ bookmark={The hand-drawn example (rotated and oversized)}]%
+ [angle=30,scale=3]{example.jpg}
+\end{texexptitled}
+\end{docCommand}
+
+\enlargethispage*{1cm}
+\begin{docCommand}{incmultigraph}{\oarg{options}\oarg{graphics options}\marg{file name pattern}\marg{list}}
+ All picture files matching the given \meta{file name pattern} where some
+ parts are substituted by elements of the \meta{list}
+ are included in the center of a separate page. Depending on the \meta{options}, the pages keep the
+ document size or are resized to the graphics dimensions.
+ The applicable \meta{options} are listed in Section \ref{sec:keys}.
+ If \meta{graphics options} are given, these are added to the options for
+ the underlying |\includegraphics| command. See the documentation of
+ |graphicx| \cite{carlisle:1999a} for a list of applicable \meta{graphics options}.\\
+ The \meta{list} may contain any construction allowed for the |\foreach| statement \cite{tantau:2013a},
+ especially a list of numbers.
+ The elements of the list can be used inside the \meta{file name pattern}
+ with the following macros:
+ \begin{itemize}
+ \item\docAuxCommand{n}: The current element of the list (may be a number).
+ \item\docAuxCommand{ni}: The position of the current element inside the list, i.\,e.\ |\ni|
+ counts from 1 to the size of the list.
+ \item\docAuxCommand{nn}: The zero-filled |\n|, if |\n| is a number. The digit
+ number of |\nn| is determined by \refKey{/igr/zerofill}.
+ \end{itemize}
+ The resolved \meta{file name pattern} is stored inside the macro:
+ \begin{itemize}
+ \item\docAuxCommand{nt}: This file name may be used for bookmarking.
+ \end{itemize}
+ In the default behavior, non existing files are ignored.
+
+\begin{texexptitled}[listing only,before={\par\medskip}]%
+ {A series of pictures; see from page~\pageref{exaseries.1}. The image files
+ exaimage-0001.png to exaimage-0150.png are included but only three
+ of them exist.}{exaseries.listing}
+\incmultigraph[zerofill=4,bookmark={A series of pictures: \nt},
+ paper=current,label={exaseries.\n}]{exaimage-\nn.png}{1,...,150}
+\end{texexptitled}
+\end{docCommand}
+
+\subsection{Inclusion Macro for Internal Graphics}
+
+\begin{docEnvironment}{inctext}{\oarg{options}}
+ The environment content is included in the center
+ of a separate page. Depending on the \meta{options}, this page keeps the
+ document size or is resized to the content dimensions.
+ The applicable \meta{options} are listed in Section \ref{sec:keys}.
+
+
+\begin{texexptitled}[listing only,before={\par\medskip}]%
+ {Some text on a shrunk paper; see page~\pageref{inctext1}}{inctext1.listing}
+\begin{inctext}[paper=graphics,label={inctext1},bookmark={A huge ABC}]
+ \Huge ABC
+\end{inctext}
+\end{texexptitled}
+
+
+\begin{texexptitled}[listing only,before={\par\medskip}]%
+ {A tikzpicture as text content; see page~\pageref{inctext2}}{inctext2.listing}
+\begin{inctext}[paper=a6,landscape,label={inctext2},bookmark={Graph},
+ overlay page number at bottom=8mm]
+ \begin{tikzpicture}[zustand/.style={circle,fill=Gold,draw},scale=2]
+ \draw node[zustand] (s0) {$s_0$}
+ +(30:3cm) node[zustand] (s1) {$s_1$}
+ ++(-30:3cm) node[zustand] (s2) {$s_2$}
+ +(30:3cm) node[zustand] (s3) {$s_3$};
+ \path[very thick,-latex]
+ (s0) edge node[above left] {a} (s1)
+ edge node[below left] {b} (s2)
+ (s1) edge[out=-120,in=120] node[left] {b} (s2)
+ edge node[above right] {a} (s3)
+ (s2) edge[out=60,in=-60] node[right] {a} (s1)
+ edge node[below right] {b} (s3);
+ \end{tikzpicture}
+\end{inctext}
+\end{texexptitled}
+\end{docEnvironment}
+
+
+\subsection{(Global) Option Setting}
+
+\begin{docCommand}{igrset}{\marg{options}}
+ Sets options for \refCom{incgraph}, \refCom{incmultigraph}, and
+ \refEnv{inctext} inside the current \TeX\ group.
+ For example, the options \refKey{/igr/paper} and
+ \refKey{/igr/zerofill} may be defined for the whole document by this:
+\begin{dispListing}
+\igrset{paper=current,zerofill=3}
+\end{dispListing}
+\end{docCommand}
+
+
+\clearpage
+%--------------------------------------
+\section{Option Keys}\label{sec:keys}
+
+\subsection{Paper (Media) Size}\label{sec:papersize}
+
+\begin{docIgrKey}{currentpaper}{}{no value}
+ The paper size keeps unchanged at the current size
+ except if \refKey{/igr/landscape} is used.
+ The current paper size has not to
+ be the document paper size.
+ See page \pageref{exacenter} for the output
+ of Example \ref{exacenter.listing} on page \pageref{exacenter.listing}.
+\end{docIgrKey}
+
+\begin{docIgrKey}{documentpaper}{}{no value}
+ The paper size is set to the initial document paper size.
+\end{docIgrKey}
+
+\begin{docIgrKey}{graphicspaper}{}{no value, initially set}
+ The paper is resized to the dimensions of the included image.
+ The \refKey{/igr/landscape} option is ignored for this paper.
+ See page \pageref{exaresized} for the output
+ of Example \ref{exaresized.listing} on page \pageref{exaresized.listing}.
+\end{docIgrKey}
+
+
+\begin{docIgrKey}{paper size}{=\meta{width}:\meta{height}}{no default}
+ The paper is resized to the given \meta{width} and \meta{height}.
+\end{docIgrKey}
+
+\begin{docIgrKey}{paper}{=\meta{name}}{no default}
+ The paper size is chosen according to the given \meta{name}.
+ Feasible values for the \meta{name} are
+ |current|, |document|, |graphics|,
+ |a0|, |a1|, |a2|, |a3|, |a4|, |a5|, |a6|, |a7|, |a8|, |a9|, |a10|,
+ |b0|, |b1|, |b2|, |b3|, |b4|, |b5|, |b6|, |b7|, |b8|, |b9|, |b10|,
+ |c0|, |c1|, |c2|, |c3|, |c4|, |c5|, |c6|, |c7|, |c8|, |c9|, |c10|,
+ |d0|, |d1|, |d2|, |d3|, |d4|, |d5|, |d6|, |d7|,
+ executive, letter, legal, ledger.
+\end{docIgrKey}
+
+\begin{docIgrKey}{landscape}{}{no value}
+ If set the width and height of the chosen paper are switched. Note that
+ this turns the paper by 90 degrees but the contents of the paper is not
+ turned.
+\end{docIgrKey}
+
+\begin{docIgrKey}{portrait}{}{no value, initially set}
+ Disables the \refKey{/igr/landscape} mode.
+\end{docIgrKey}
+
+
+\makeatletter%
+\foreach \x in {a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,
+ b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,
+ c0,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10,
+ d0,d1,d2,d3,d4,d5,d6,d7,
+ executive,letter,legal,ledger}
+{\begin{docIgrKey}{\x paper}{}{no value}
+ \igrset{\x paper}%
+ The paper size is set to
+ \texttt{\igr@target@width} $\times$ \texttt{\igr@target@height}.
+\end{docIgrKey}}
+\makeatother%
+
+\begin{docIgrKey}{center}{}{no value, deprecated}
+ An alias for \refKey{/igr/currentpaper}.
+\end{docIgrKey}
+
+\begin{docIgrKey}{page}{}{no value, deprecated}
+ An alias for \refKey{/igr/graphicspaper}.
+\end{docIgrKey}
+
+
+\clearpage
+\subsection{Graphics Inclusion}
+
+\begin{docIgrKey}{options}{=\marg{graphics options}}{no default, initially empty}
+ The \meta{graphics options} are applied to the underlying |\includegraphics| command.
+ See the documentation of
+ |graphicx| \cite{carlisle:1999a} for a list of applicable \meta{graphics options}.
+\begin{texexptitled}[listing only,before={\par\medskip}]%
+ {A resized image; see page~\pageref{exagraphresize}}{exagraphresize.listing}
+\igrset{options={width=10cm,height=10cm}, paper=graphics,
+ overlay page number at top=5mm
+ }
+
+\incgraph[bookmark={A resized image}, label={exagraphresize}]%
+ {exaimage-0037.png}
+\end{texexptitled}
+\end{docIgrKey}
+
+\begin{docIgrKey}{options add}{=\marg{graphics options}}{no default, initially empty}
+ The \meta{graphics options} are added to the current list of options
+ for the underlying |\includegraphics| command.
+\end{docIgrKey}
+
+
+\begin{docIgrKey}{include command}{\colOpt{=\meta{macro}}}{default and initially \cs{includegraphics}}
+ Replaces the internally used \cs{includegraphics} command by the given \meta{macro}.
+ Note that \meta{macro} has to have the same signature as \cs{includegraphics},
+ i.\,e.\ it has to take two arguments where the first argument is optional.
+\end{docIgrKey}
+
+\begin{docIgrKey}{existence check}{=\meta{macro}}{no default}
+ Replaces the internally used \cs{IfFileExists} command by the given \meta{macro}.
+ Note that \meta{macro} has to have the same signature as \cs{IfFileExists},
+ i.\,e.\ it has to take three arguments.
+\end{docIgrKey}
+
+\begin{docIgrKey}{fail on not found}{}{no value}
+ Stops the compilation with an error if the included file does not exist.
+\end{docIgrKey}
+
+\begin{docIgrKey}{ignore on not found}{}{no value, initially set}
+ Not existing included files are ignored without warning.
+\end{docIgrKey}
+
+
+\subsection{Hypertargets, Labels, and Bookmarks}
+
+\begin{docIgrKey}{hyper}{}{no value, initially set}
+ An automated hyper target is set to the current image. The hyper target is placed
+ at the top left corner of the page. It is used internally, when a bookmark is added.
+\end{docIgrKey}
+
+\begin{docIgrKey}{no hyper}{}{no value}
+ No automated hyper target is set to the current image. Use this option, if
+ the package |bookmark| is not included.
+\end{docIgrKey}
+
+\begin{docIgrKey}{target}{=\meta{anchor}}{no default}
+ The next hypertarget destination value is set to \meta{anchor} instead of
+ an automatically created value. This may be used for hyperlinks.
+\begin{dispExample}
+\hyperlink{oversized}{This is linked to the oversized example (click me)}.
+The target value '|oversized|' was defined in Example~\ref{exarotated.listing},
+see page~\pageref{exarotated.listing}.
+\end{dispExample}
+\end{docIgrKey}
+
+
+\clearpage
+
+\begin{docIgrKey}{label}{=\meta{text}}{no default, initially empty}
+ Adds a \LaTeX\ label to the included image.
+\end{docIgrKey}
+
+
+\begin{docIgrKey}{bookmark}{=\meta{text}}{no default, initially empty}
+ Adds a PDF bookmark with the given \meta{text} to the current image.
+\end{docIgrKey}
+
+\begin{docIgrKey}{bookmark options}{=\marg{bookmark options}}{no default, initially empty}
+ Sets the options for a bookmark.
+ See the documentation of
+ |bookmark| \cite{oberdiek:2011a} for a list of applicable \meta{bookmark options}.
+\begin{texexptitled}[listing only,before={\par\medskip}]%
+ {Bookmark options; see page~\pageref{exabookmark}}{exabookmark.listing}
+% not every PDF reader will show the effect!
+\igrset{bookmark options={bold,color={red}},currentpaper}
+\incgraph[bookmark={This ugly image again!},label={exabookmark}]%
+ {example.jpg}
+\end{texexptitled}
+\end{docIgrKey}
+
+\begin{docIgrKey}{bookmark heading}{=\meta{text}}{no default, initially empty}
+ For \refCom{incmultigraph}, an additional bookmark with the given \meta{text}
+ is set as a heading before the images are included.
+\begin{texexptitled}[listing only,before={\par\medskip}]%
+ {A series of pictures; see from page~\pageref{exaheading.1}}{exaheading.listing}
+\incmultigraph[zerofill=4,currentpaper,
+ bookmark heading={A series of pictures},
+ bookmark heading options={level=subsection},
+ bookmark={\nt},bookmark options={level=subsubsection},
+ overlay page number at bottom,
+ label={exaheading.\n}]{exaimage-\nn.png}{1,...,150}
+\end{texexptitled}
+\end{docIgrKey}
+
+\begin{docIgrKey}{bookmark heading options}{=\marg{bookmark options}}{no default, initially empty}
+ Sets the options for a \refKey{/igr/bookmark heading}.
+ See the documentation of
+ |bookmark| \cite{oberdiek:2011a} for a list of applicable \meta{bookmark options}.
+\end{docIgrKey}
+
+\clearpage
+\subsection{Borders}
+
+The following settings enlarge or shrink the picture box, if
+\refKey{/igr/graphicspaper} is used. For other paper settings, the result
+will be just a certain shift of the picture box since the enlarged box
+will be centered on the paper.
+
+\begin{docIgrKey}[][doc new=2015-03-12]{left border}{=\meta{length}}{no default, initially |0pt|}
+Adds a space of \meta{length} at the left hand side.
+\end{docIgrKey}
+
+\begin{docIgrKey}[][doc new=2015-03-12]{bottom border}{=\meta{length}}{no default, initially |0pt|}
+Adds a space of \meta{length} at the bottom.
+\end{docIgrKey}
+
+\begin{docIgrKey}[][doc new=2015-03-12]{right border}{=\meta{length}}{no default, initially |0pt|}
+Adds a space of \meta{length} at the right hand side.
+\end{docIgrKey}
+
+\begin{docIgrKey}[][doc new=2015-03-12]{top border}{=\meta{length}}{no default, initially |0pt|}
+Adds a space of \meta{length} at the top.
+\end{docIgrKey}
+
+\begin{docIgrKey}[][doc new=2015-03-12]{horizontal border}{=\meta{length}}{no default, initially |0pt|}
+Adds a space of \meta{length} at the left hand side and the right hand side.
+\end{docIgrKey}
+
+\begin{docIgrKey}[][doc new=2015-03-12]{vertical border}{=\meta{length}}{no default, initially |0pt|}
+Adds a space of \meta{length} at the top and bottom.
+\end{docIgrKey}
+
+\begin{docIgrKey}[][doc new=2015-03-12]{border}{=\meta{length}}{no default, initially |0pt|}
+Adds a space of \meta{length} at all four sides.
+\end{docIgrKey}
+
+
+\clearpage
+\subsection{Map and Match}
+
+\begin{docIgrKey}{set matches}{=\marg{list}}{no default, initially empty}
+ The \meta{list} is a comma separated list of \meta{key}=\meta{value} pairs.
+ For every pair, the given \meta{key} is mapped to the given \meta{value}.
+ Later, this \meta{value} can be retrieved by
+ \refKey{/igr/if match code},
+ \refKey{/igr/if match set}, and
+ \refKey{/igr/if match set bookmark}.
+
+\begin{tcblisting}{docexample,listing only}
+\igrset{set matches={
+ foo = bar,
+ 1 = A very red image,
+ 37 = A not so centered number,
+ 123 = A greenish example}}
+\end{tcblisting}
+\end{docIgrKey}
+\tcbuselistingtext
+
+\begin{docIgrKey}{if match code}{=\marg{key}\marg{then}\marg{else}}{no default}
+ If the \meta{key} was defined by \refKey{/igr/set matches},
+ \refCom{igrsetmatchvalue}, or \refCom{igrsetmatches},
+ the corresponding value is put in the
+ macro |\igrmatchvalue| and the \meta{then} code is
+ executed. If the \meta{key} is unknown, the \meta{else} code is
+ executed.
+\end{docIgrKey}
+
+\begin{docIgrKey}{if match set}{=\marg{key}\marg{then}\marg{else}}{no default}
+ If the \meta{key} was defined by \refKey{/igr/set matches},
+ \refCom{igrsetmatchvalue}, or \refCom{igrsetmatches},
+ the corresponding value is put in the
+ macro |\igrmatchvalue| and |\igrset{|\meta{then}|}| is executed.
+ If the \meta{key} is unknown, |\igrset{|\meta{else}|}| is executed.
+\end{docIgrKey}
+
+\begin{docIgrKey}{if match set bookmark}{=\marg{key}\marg{then}\marg{else}}{no default}
+ If the \meta{key} was defined by \refKey{/igr/set matches},
+ \refCom{igrsetmatchvalue}, or \refCom{igrsetmatches},
+ the corresponding value is put in the
+ macro |\igrmatchvalue| and the current PDF bookmark is set to \meta{then}.
+ If the \meta{key} is unknown, the current PDF bookmark is set to \meta{else}.
+\begin{texexptitled}[listing only,before={\par\medskip}]%
+ {Map and match example; see from page~\pageref{examatch.1}}{examatch.listing}
+\incmultigraph[zerofill=4,paper=graphics,
+ bookmark heading={Map and match example},
+ bookmark heading options={level=subsection},
+ bookmark options={level=subsubsection},
+ if match set bookmark={\n}{\igrmatchvalue\ (\n)}{\nt},
+ overlay page number at bottom,
+ label={examatch.\n}]{exaimage-\nn.png}{1,...,150}
+\end{texexptitled}
+\end{docIgrKey}
+
+\begin{docIgrKey}{disable match}{}{no value, initially set}
+ Disables the statements by
+ \refKey{/igr/if match code},
+ \refKey{/igr/if match set}, and
+ \refKey{/igr/if match set bookmark}.
+\end{docIgrKey}
+
+\clearpage
+
+\subsection{Overlays}
+
+\begin{docIgrKey}{overlay}{=\marg{tikz code}}{no default, initially unset}
+ Introduces arbitrary \meta{tikz code} to be drawn over the included image.
+ Note that the |tikz| package \cite{tantau:2013a} has to be loaded separately.
+ To support positioning inside the picture, two |tikz| nodes named
+ |box| and |page| are defined. |box| takes the dimensions of the included image
+ and |page| takes the dimensions of the image or of the page depending on the usage of
+ \refKey{/igr/paper}.
+\begin{texexptitled}[listing only,before={\par\medskip}]%
+ {Overlay; see page~\pageref{overlay}}{overlay.listing}
+\igrset{bookmark options={level=subsection}, paper=current}
+\incgraph[bookmark={Picture with overlay},label={overlay},
+ overlay={
+ \node[draw=red,line width=3pt,fill=red,fill opacity=0.1,
+ minimum width=14cm,circle] (circ) at (page.center) {};
+ \node[fill=blue!5!white,below right,text width=4cm] (A)
+ at ([xshift=1cm,yshift=-1cm]page.north west)
+ {This included image is overlayed with |tikz| code.};
+ \node[fill=green!10!white,above,text width=7cm] (B)
+ at ([yshift=2cm]page.south)
+ {Image Name: \nt\\Page number: \thepage\\
+ Example~\ref{overlay.listing} on page~\pageref{overlay.listing}};
+ \draw[line width=2pt,->] (A)--(circ);
+ \draw[line width=2pt,green!50!black,dashed]
+ (box.south west)--(box.south east);
+ \draw[line width=2pt,->,green!50!black] (B)--(box.south);
+ }]{example.jpg}
+\end{texexptitled}
+\end{docIgrKey}
+
+\begin{docIgrKey}{overlay page number at}{=\meta{position}}{no default, initially unset}
+ Overlays the page number at the given |tikz| \meta{position}.
+\end{docIgrKey}
+
+\begin{docIgrKey}{overlay page number at bottom}{\colOpt{=\meta{length}}}{default |1.5cm|}
+ Overlays the page number at \meta{length} above the bottom edge of the paper.
+ See Example~\ref{exacenter.listing} on page~\pageref{exacenter.listing}
+ and the result on page~\pageref{exacenter}.
+\end{docIgrKey}
+
+\begin{docIgrKey}{overlay page number at top}{\colOpt{=\meta{length}}}{default |1.5cm|}
+ Overlays the page number at \meta{length} below the top edge of the paper.
+ See Example~\ref{exagraphresize.listing} on page~\pageref{exagraphresize.listing}
+ and the result on page~\pageref{exagraphresize}.
+\end{docIgrKey}
+
+\begin{docIgrKey}{no overlay}{}{no value, initially set}
+ Removes the overlay setting.
+\end{docIgrKey}
+
+
+\subsection{Miscellaneous}
+
+
+\begin{docIgrKey}{pagestyle}{=\meta{page style}}{no default, initially |empty|}
+ Sets the \meta{page style} for the included graphics.
+\end{docIgrKey}
+
+
+\begin{docIgrKey}{zerofill}{=\meta{digits}}{no default, initially |0|}
+ For \refCom{incmultigraph}, the current number element
+ is filled up with leading zeros until the \meta{digits} count is reached.
+ If \meta{digits} is 0 or 1, nothing is added. A \meta{digits} value
+ greater than 10 is treated as 10 which is the maximum number of
+ possible digits. The result is accessible as |\nn|, see \refCom{incmultigraph}.
+ Note that |zerofill| should be set to |0| if the list elements
+ in \refCom{incmultigraph} are not numbers.
+\end{docIgrKey}
+
+\clearpage
+\hypertarget{optkeyexamples}{}%
+\bookmark[level=section,dest=optkeyexamples]{User Interface Examples}
+\igrset{bookmark options={level=subsubsection}}
+\foreach \n in {1,...,11} {\inputlisting{\n}}
+
+\clearpage
+%--------------------------------------
+
+\section{Examples}
+
+\subsection{Including some Scans to Standard Paper}
+In this scenario, we have some scans (or images from whatever source) which
+should be combined to a PDF document for our paperless office.
+The paper size of the PDF document is set to a standard paper (here: letter size)
+to allow the document to be printed.
+
+The following Example \ref{somescans} is a complete template for such a document.
+Here, the images |example.jpg|,
+|exaimage-0001.png|,
+|exaimage-0037.png|, and
+|exaimage-0123.png| are used for the resulting document.
+All included images are automatically bookmarked with the page number and
+the file name of the source image.
+
+\def\thecurrentexample{\jobname-example-a.tex}
+\tcbinputlisting{listing file=\thecurrentexample,listing only,
+ example={\texttt{\thecurrentexample}}{somescans}}
+
+The compiled result of this stand-alone source code is not found in this document but as
+a separate file in the documentation directory of the package.
+
+
+
+\clearpage
+\subsection{Creating a Picture Book}
+For this example, we assume again that a bunch of image files is to be
+combined to a PDF document. This time, the target document should be read or
+displayed mainly on computer screens and may never be printed. Therefore,
+the paper size is set flexible for the current image.
+
+The following Example \ref{picturebook} is a complete template for such a document.
+All included images are resized to a common width, but this is not necessary.
+The resulting document is considered as an e-book where the bookmarks are the
+most important navigation accessory.
+Single page inclusions with \refCom{incgraph} are bookmarked directly, but
+multi-page inclusions with \refCom{incmultigraph} can be bookmarked using the
+map-and-match feature of the package.
+The example shows a mixed usage of the macros.
+Note that the bookmarks of the multi-page part are matched with the numbers
+contained in the file names of |exaimage-0001.png| to |exaimage-0150.png|.
+
+\def\thecurrentexample{\jobname-example-b.tex}
+\tcbinputlisting{listing file=\thecurrentexample,listing only,
+ example={\texttt{\thecurrentexample}}{picturebook}}
+
+The compiled result of this stand-alone source code is not found in this document but as
+a separate file in the documentation directory of the package.
+
+
+\clearpage
+\subsection{Reformatting from Letter to DIN A4 (and vice versa)}
+In this scenario, we assume to have a PDF document with the 'wrong' paper size.
+Here, |incgraph-example-a.pdf| has the letter format, but DIN A4 paper
+is needed. |incgraph| is used to reformat to the desired paper size.
+Of course, it also works the other way around.
+
+The following Example \ref{reformatting} is a complete template for such a document.
+The document gets the desired paper size with the \refKey{/igr/paper} option.
+Then, all four pages of the original document are imported to the new paper
+size. Note that the actual document content itself is not resized because
+letter and DIN A4 are not so very different. If needed, the content could be
+shrunk or enlarged easily by adding a |scale| option for the underlying
+|\includegraphics| macro.
+
+
+\def\thecurrentexample{\jobname-example-c.tex}
+\tcbinputlisting{listing file=\thecurrentexample,listing only,
+ example={\texttt{\thecurrentexample}}{reformatting}}
+
+The compiled result of this stand-alone source code is not found in this document but as
+a separate file in the documentation directory of the package.
+
+
+
+
+\clearpage
+\subsection{Drawing on Full Paper Size}
+
+
+
+In the following examples, no external image is included to the document.
+Instead, the image (or whatever) is created inside the document and put
+on a separate page which could be resized or take the original document
+paper size.
+
+In Example \ref{fullpaperdrawing1}, a |tikzpicture| is drawn. The whole
+picture is put inside an \refEnv{inctext} environment which puts the drawing
+on a separate page which gets the dimensions of the drawing.
+
+\begin{texexptitled}[listing only]{Creation of a special text page (resized)}{fullpaperdrawing1}
+\begin{inctext}[paper=graphics, bookmark=My special text page (resized)]
+\begin{tikzpicture}%
+ \coordinate (A) at (0,0); \coordinate (B) at (16,16);
+ \path[use as bounding box,top color=Goldenrod!25,bottom color=Navy!25]
+ (A) rectangle (B);
+ \coordinate (C) at ([xshift=1cm,yshift=1cm]A);
+ \coordinate (D) at ([xshift=-1cm,yshift=-1cm]B);
+ \path (C) -- coordinate (E) (D);
+ \draw[rounded corners=5mm,very thick,Navy] (C) rectangle (D);
+ \path (C) |-
+ node [pos=0.75,fill=white,draw=Navy,very thick,inner sep=3mm]
+ {My Special Page \thepage} (D);
+ \node[text width=10cm,align=flush center,font=\Large] at (E) {
+ This is my special page. It takes the dimensions of the underlying
+ |tikzpicture| as seen in the source code of Example~\ref{fullpaperdrawing1}
+ on page~\pageref{fullpaperdrawing1}.};
+\end{tikzpicture}
+\end{inctext}
+\end{texexptitled}
+See the result on the following page.
+\clearpage\inputlastlisting
+
+
+In Example \ref{fullpaperdrawing2}, nearly the same |tikzpicture| is drawn.
+This time, the current paper size is used which puts the drawing
+on a separate page but without resizing the paper.
+To draw seamlessly, the document paper size of 21cm to 29.7cm is used
+directly inside the |tikzpicture|.
+
+
+\begin{texexptitled}[listing only]{Creation of a special text page (fitted)}{fullpaperdrawing2}
+\begin{inctext}[paper=current, target=mytarget,
+ bookmark=My special text page (fitted)]
+\begin{tikzpicture}%
+ \coordinate (A) at (0,0); \coordinate (B) at (21,29.7);
+ \path[use as bounding box,top color=Goldenrod!25,bottom color=Navy!25]
+ (A) rectangle (B);
+ \coordinate (C) at ([xshift=1cm,yshift=1cm]A);
+ \coordinate (D) at ([xshift=-1cm,yshift=-1cm]B);
+ \path (C) -- coordinate (E) (D);
+ \draw[rounded corners=5mm,very thick,Navy] (C) rectangle (D);
+ \path (C) |-
+ node [pos=0.75,fill=white,draw=Navy,very thick,inner sep=3mm]
+ {My Special Page \thepage} (D);
+ \node[text width=10cm,align=flush center,font=\Large] at (E) {
+ This is my special page. It consumes the whole document paper size with
+ an underlying |tikzpicture| as seen in the source code of
+ Example~\ref{fullpaperdrawing2} on page~\pageref{fullpaperdrawing2}.};
+\end{tikzpicture}
+\end{inctext}
+\end{texexptitled}
+
+
+See the result on the following \hyperlink{mytarget}{page}.
+\clearpage\inputlastlisting
+
+
+
+
+
+%--------------------------------------
+\section{Basic Tool Box}\label{sec:basictoolbox}
+In this section, some basic macros of the package are documented.
+It is assumed that most users will only need the macros from the
+user interface described in Section \ref{sec:interface} and Section \ref{sec:keys}.
+
+
+\subsection{Full Page Commands}
+
+\begin{docCommand}{igrpage}{\marg{text}}
+ The \meta{text} is put on a separate page which is resized to fit the
+ dimensions of the \meta{text}. \meta{text} may be single letter, an
+ included picture, or any \LaTeX\ code.
+ The page number is stored into \docAuxCommand{theigrpage} and
+ \docAuxCommand{igrAutoTarget} holds a hyper target value for bookmarking.
+ The style of the separate page is set to
+ the content of the macro
+ \docAuxCommand{igrpagestyle} which defaults to 'empty' but can be
+ redefined.
+\end{docCommand}
+
+\begin{docCommand}{igrcenter}{\marg{text}}
+ The \meta{text} is put in the center of a separate page which has the
+ current document dimensions. \meta{text} may be single letter, an
+ included picture or any \LaTeX\ code.
+ The page number is stored into \docAuxCommand{theigrpage} and
+ \docAuxCommand{igrAutoTarget} holds a hyper target value for bookmarking.
+ The style of the separate page is set to
+ the content of the macro
+ \docAuxCommand{igrpagestyle} which defaults to 'empty' but can be
+ redefined.
+\end{docCommand}
+
+\begin{docCommand}{igrcenterfit}{\marg{width}\marg{height}\marg{text}}
+ The \meta{text} is put in the center of a separate page which
+ is resized to the given \meta{width} and \meta{height}.
+ \meta{text} may be single letter, an
+ included picture or any \LaTeX\ code.
+ The page number is stored into \docAuxCommand{theigrpage} and
+ \docAuxCommand{igrAutoTarget} holds a hyper target value for bookmarking.
+ The style of the separate page is set to
+ the content of the macro
+ \docAuxCommand{igrpagestyle} which defaults to 'empty' but can be
+ redefined.
+\end{docCommand}
+
+
+\begin{docCommand}{igrtargetset}{\marg{anchor}}
+ The next value for \docAuxCommand{igrAutoTarget} is set to \meta{anchor}.
+ This can be used for hand-made hyperlinks or bookmarks.
+ An application for |igrtargetset| is found in Example~\ref{fullpaperdrawing2}
+ on page~\pageref{fullpaperdrawing2}.
+\end{docCommand}
+
+\clearpage
+\subsection{Box Commands}
+
+\begin{docCommand}{igrboxset}{\marg{text}}
+ The \meta{text} is put into a \TeX\ box named \docAuxCommand{igrbox}.
+ Additionally, some auxiliary macros are defined:
+ \begin{itemize}
+ \item\docAuxCommand{igrAutoTarget}: unique value for a hyper target.
+ \item\docAuxCommand{igrBoxWidth}: width of the |\igrbox|.
+ \item\docAuxCommand{igrBoxHeight}: total height of the |\igrbox|.
+ \item\docAuxCommand{igrBoxht}: height of the |\igrbox|.
+ \item\docAuxCommand{igrBoxdp}: depth of the |\igrbox|.
+ \end{itemize}
+\begin{dispExample}
+ \igrboxset{This is an example}
+ |\igrAutoTarget| = \igrAutoTarget, |\igrBoxWidth| = \igrBoxWidth,
+ |\igrBoxHeight| = \igrBoxHeight,\\
+ |\igrBoxht| = \igrBoxht, |\igrBoxdp| = \igrBoxdp;
+\end{dispExample}
+\end{docCommand}
+
+\begin{docCommand}{igrboxcenter}{}
+ The current content of the |\igrbox|
+ is put in the center of a separate page which has the
+ current |pdfpage| dimensions.\\
+ The style of the separate page is set to
+ the content of the macro
+ \docAuxCommand{igrpagestyle} which defaults to 'empty' but can be
+ redefined.
+ Note that a |\clearpage| or similar has to be inserted before this command.
+\end{docCommand}
+
+\clearpage
+\begin{docCommand}{igrboxtikz}{}
+ The current content of the |\igrbox| is embedded into a |\node| command
+ from the |tikz| package \cite{tantau:2013a} which has to be loaded separately.
+ Also, the bounding box is adjusted to the |\igrbox|.\\
+ To support positioning inside the picture, two |tikz| nodes named
+ |box| and |page| are defined which both take the dimensions of the |\igrbox|.
+\begin{dispExample}
+\igrboxset{\includegraphics{example.jpg}}%
+\begin{tikzpicture}%
+ \igrboxtikz%
+ \draw[blue,very thick] (0,0) rectangle (\igrBoxWidth,\igrBoxHeight);
+ \draw[red] (0,0) grid (\igrBoxWidth,\igrBoxHeight);
+ \draw[black] ([xshift=-1cm,yshift=-1cm]page.north east) circle (1cm);
+\end{tikzpicture}
+\end{dispExample}
+
+The boxing macros can also be used nested (see the result on the following page):
+\begin{dispListing}
+\igrpage{\igrboxset{\includegraphics{example.jpg}}%
+ \begin{tikzpicture}%
+ \igrboxtikz%
+ \draw[blue,very thick] (0,0) rectangle (\igrBoxWidth,\igrBoxHeight);
+ \draw[red] (0,0) grid (\igrBoxWidth,\igrBoxHeight);
+ \draw[black] ([xshift=1cm,yshift=-1cm]page.north west) circle (1cm);
+\end{tikzpicture}}
+\end{dispListing}
+\tcbusetemp
+\end{docCommand}
+
+
+\begin{docCommand}{igrboxtikzpage}{}
+ This is an alias for \refCom{igrboxtikz}.
+\end{docCommand}
+
+
+\begin{docCommand}{igrboxtikzcenter}{}
+ The current content of the |\igrbox| is embedded into a |\node| command
+ from the |tikz| package \cite{tantau:2013a} which has to be loaded separately.
+ This node is placed in the center of a bounding box which takes the current
+ page dimensions. Afterwards, |\igrBoxWidth| and |\igrBoxHeight| are
+ redefined to the dimensions of the total page.\\
+ To support positioning inside the picture, two |tikz| nodes named
+ |box| and |page| are defined. |box| takes the dimensions of the |\igrbox|
+ and |page| takes the dimensions of the |tikzpicture|.
+\begin{dispListing}
+\igrcenter{\igrboxset{\includegraphics{example.jpg}}%
+ \begin{tikzpicture}%
+ \igrboxtikzcenter%
+ \draw[help lines] (0,0) grid (\igrBoxWidth,\igrBoxHeight);
+ \draw[dashed] (box.south west) rectangle (box.north east);
+
+ \draw[very thick,<->] (page.north west)--(box.north west);
+ \draw[very thick,<->] (page.north east)--(box.north east);
+ \draw[very thick,<->] (page.south west)--(box.south west);
+ \draw[very thick,<->] (page.south east)--(box.south east);
+\end{tikzpicture}}
+\end{dispListing}
+See the result on the following page.
+\tcbusetemp
+\end{docCommand}
+
+
+\subsection{Map and Match Commands}
+
+
+\begin{docCommand}{igrsetmatchvalue}{\marg{key}\marg{value}}
+ The given \meta{key} is mapped to the given \meta{value}. Later, this
+ \meta{value} can be retrieved by \refCom{igrifmatch}.
+\begin{dispExample}
+\igrsetmatchvalue{my key A}{my value A}
+\def\keytester#1{\igrifmatch{#1}{Hurray: '\igrmatchvalue'}{'#1' unknown}}
+
+\keytester{foo}\\
+\keytester{my key A}
+\end{dispExample}
+\end{docCommand}
+
+
+\begin{docCommand}{igrsetmatches}{\marg{list}}
+ The \meta{list} is a comma separated list of \meta{key}=\meta{value} pairs.
+ On every pair, the \refCom{igrsetmatchvalue} macro is applied.
+\begin{dispExample}
+\igrsetmatches{my key A = my value A, bar = Shakespeare}
+\def\keytester#1{\igrifmatch{#1}{Hurray: '\igrmatchvalue'}{'#1' unknown}}
+
+\keytester{foo}\\
+\keytester{bar}\\
+\keytester{my key A}
+\end{dispExample}
+\end{docCommand}
+
+
+\begin{docCommand}{igrifmatch}{\marg{key}\marg{then}\marg{else}}
+ If a \meta{key} was defined by \refCom{igrsetmatchvalue} or
+ \refCom{igrsetmatches}, the corresponding value is put in the
+ macro \docAuxCommand{igrmatchvalue} and the \meta{then} code is
+ executed. If the \meta{key} is unknown, the \meta{else} code is
+ executed.
+\begin{dispExample}
+\igrsetmatches{1 = January, 2 = February, 3 = March, apr = April}
+\def\monthname#1{\igrifmatch{#1}{The name of month #1\ is \igrmatchvalue.}{%
+ You are kidding.}}
+
+\monthname{1} \monthname{foo} \monthname{2}\\
+\monthname{3} \monthname{apr} \monthname{35}
+\end{dispExample}
+\end{docCommand}
+
+
+\clearpage
+\subsection{Zero Filling Commands}
+
+\begin{docCommand}{igrmakezerofill}{\marg{macro}\marg{digits}}
+ With this command, a new \meta{macro} can be defined which takes a
+ non negative number as parameter.
+ This number is filled up with leading zeros until the
+ \meta{digits} count is reached.
+ If \meta{digits} is 0 or 1, nothing is added. A \meta{digits} value
+ greater than 10 is treated as 10 which is the maximum number of
+ possible digits.
+\begin{dispExample}
+\igrmakezerofill{\myfill}{0}
+\myfill{7}, \myfill{12}, \myfill{934}, \myfill{665234}.\\
+\igrmakezerofill{\myfill}{3}
+\myfill{7}, \myfill{12}, \myfill{934}, \myfill{665234}.\\
+\igrmakezerofill{\myfill}{5}
+\myfill{7}, \myfill{12}, \myfill{934}, \myfill{665234}.\\
+\igrmakezerofill{\myfill}{9}
+\myfill{7}, \myfill{12}, \myfill{934}, \myfill{665234}.\\
+\igrmakezerofill{\myfill}{30}
+\myfill{7}, \myfill{12}, \myfill{934}, \myfill{665234}.
+\end{dispExample}
+\begin{dispExample}
+\igrmakezerofill{\threedigits}{3}
+\threedigits{1}%
+\foreach \n in {2,...,100} {, \threedigits{\n}}.
+\end{dispExample}
+\end{docCommand}
+
+\clearpage
+%--------------------------------------
+
+
+
+
+
+
+
+% Actually, it is not a good idea to include the references like this!
+% Do not follow this bad example ...
+\begin{tcbverbatimwrite}{\jobname.bib}
+
+@manual{tantau:2013a,
+ author = {Till Tantau},
+ title = {The TikZ and PGF Packages},
+ subtitle = {Manual for version 3.0.0},
+ url = {http://sourceforge.net/projects/pgf/},
+ date = {2013-12-20},
+}
+
+@manual{carlisle:1999a,
+ author = {D. P. Carlisle and S. P. Q. Rahtz},
+ title = {The graphicx package},
+ url = {http://mirror.ctan.org/macros/latex/required/graphics/},
+ date = {1999-02-16},
+ }
+
+@manual{matthias:2012a,
+ author = {Andreas Matthias},
+ title = {The pdfpages Package},
+ url = {http://mirror.ctan.org/macros/latex/contrib/pdfpages/pdfpages.pdf},
+ date = {2012-04-03},
+}
+
+@manual{oberdiek:2011a,
+ author = {Heiko Oberdiek},
+ title = {The bookmark Package},
+ url = {http://mirror.ctan.org/macros/latex/contrib/oberdiek/bookmark.pdf},
+ date = {2011-12-02},
+}
+
+\end{tcbverbatimwrite}
+
+\clearpage
+\printbibliography[heading=bibintoc]
+
+\printindex
+
+\end{document}