[latex3-commits] [git/LaTeX3-latex3-pdfresources] renamedict77: start attachfile tests (7d668af)

Ulrike Fischer fischer at troubleshooting-tex.de
Mon Apr 13 22:34:48 CEST 2020


Repository : https://github.com/latex3/pdfresources
On branch  : renamedict77
Link       : https://github.com/latex3/pdfresources/commit/7d668af8813c347993e1a01466b63722ed163f80

>---------------------------------------------------------------

commit 7d668af8813c347993e1a01466b63722ed163f80
Author: Ulrike Fischer <fischer at troubleshooting-tex.de>
Date:   Mon Apr 13 22:34:48 2020 +0200

    start attachfile tests


>---------------------------------------------------------------

7d668af8813c347993e1a01466b63722ed163f80
 build.lua                      |   5 +-
 newpackages/atfi-generic.def   | 173 +++++++++
 newpackages/new-attachfile.sty | 819 +++++++++++++++++++++++++++++++++++++++++
 3 files changed, 996 insertions(+), 1 deletion(-)

diff --git a/build.lua b/build.lua
index 9326312..c738bf8 100644
--- a/build.lua
+++ b/build.lua
@@ -12,7 +12,10 @@ sourcefiles =  {"*.dtx","*.ins",
                 "tmpl3shipout.sty",
                 "newpackages/new-transparent.sty",
                 "newpackages/new-bookmark.sty",
-                "newpackages/bkm-generic.def"}
+                "newpackages/bkm-generic.def",
+                "newpackages/new-attachfile.sty",
+                "newpackages/atfi-generic.def",
+                }
 
 checkruns = 3
 
diff --git a/newpackages/atfi-generic.def b/newpackages/atfi-generic.def
new file mode 100644
index 0000000..b071189
--- /dev/null
+++ b/newpackages/atfi-generic.def
@@ -0,0 +1,173 @@
+%%
+%% This is file `atfi-pdftex.def',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% attachfile2.dtx  (with options: `pdftex')
+%%
+%% This is a generated file.
+%%
+%% Project: attachfile2
+%% Version: 2019/11/26 v2.11
+%%
+%% Copyright (C)
+%%    2005-2010, 2012  Heiko Oberdiek
+%%    2016-2019  Oberdiek Package Support Group
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. This version of this license is in
+%%    https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%%    https://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 "maintained".
+%%
+%% The Current Maintainers of this work are
+%% Heiko Oberdiek and the Oberdiek Package Support Group
+%% https://github.com/ho-tex/attachfile2/issues
+%%
+%%
+%% This work consists of the main source file attachfile2.dtx
+%% and the derived files
+%%    attachfile2.sty, attachfile2.pdf,
+%%    atfi-dvips.def, atfi-pdftex.def, atfi-dvipdfmx.def, atfi-luatex.def
+%%    pdfatfi.pl, pdfatfi.1.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{atfi-generic.def}%
+  [2020/04/13 v1.0 generic attachfile2 (UF)]%
+\ExplSyntaxOn
+\cs_set_eq:NN \atfi at literal \__draw_backend_literal:n
+\ExplSyntaxOff
+%\let\atfi at literal\pdfliteral %<---
+\def\atfi at GSAVE{q }
+\def\atfi at GRESTORE{Q }
+\def\atfi at SETLINEWIDTH{w }
+\def\atfi at LINETO{l }
+\def\atfi at MOVETO{m }
+\def\atfi at STROKE{S }
+\def\atfi at FILL{f }
+\def\atfi at FILLSTROKE#1#2{#1#2B }
+\def\atfi at SETRGBCOLORSTROKE{RG }
+\def\atfi at SETRGBCOLORFILL{rg }
+\def\atfi at SETGRAYSTROKE{G }
+\def\atfi at SETGRAYFILL{g }
+\def\atfi at SETCMYKCOLORSTROKE{K }
+\def\atfi at SETCMYKCOLORFILL{k }
+\def\atfi at RECTFILL{re f }
+\def\atfi at RECTSTROKEFILL#1#2#3{#1#2#3re B }
+\def\atfi at SETMITERLIMIT{M }
+\def\atfi at SETFLAT{i }
+\def\atfi at SETLINECAP{J }
+\def\atfi at CURVETO{c }
+\def\atfi at CURVETOV{v }
+\def\atfi at CURVETOY{y }
+\def\atfi at CLOSEPATH{h }
+\def\atfi at SETLINEJOIN{j }
+\define at key{AtFi at file}{Size}{%
+  \edef\atfi at params{\atfi at params/Size #1}%
+}
+\def\atfi at embedfile#1{%
+  \ltx at IfUndefined{atfi at fileobj@#1}{%
+    \begingroup
+      \let\atfi at params\ltx at empty
+      \expandafter\let\expandafter\atfi at temp
+          \csname atfi at file@#1\endcsname
+      \ifx\atfi at temp\ltx at empty
+        \let\atfi at temp\relax
+      \fi
+      \ifx\atfi at temp\relax
+        \atfi at pdftexdata{#1}%
+      \else
+        \edef\x{%
+          \noexpand\setkeys{AtFi at file}{\@nameuse{atfi at file@#1}}%
+        }%
+        \x
+      \fi
+      \ifx\atfi at params\ltx at empty
+      \else
+        \edef\atfi at params{/Params<<\atfi at params>>}%
+      \fi
+      \immediate\pdfobj stream attr {%
+        /Type/EmbeddedFile%
+        \atfi at mimetype
+        \atfi at params
+      } file {#1}%
+      \expandafter
+      \xdef\csname atfi at fileobj@#1\endcsname{\the\pdflastobj}%
+    \endgroup
+  }{%
+    % file already embedded
+  }%
+}
+\def\atfi at xform{%
+  \immediate\pdfxform\atfi at appearancebox
+  \edef\atfi at appearanceobj{\the\pdflastxform}%
+}
+\let\atfi at xform@icon\atfi at xform
+\def\atfi at refxform#1{%
+  \pdfrefxform#1\relax
+}
+\def\atfi at insert@file at annot#1{%
+  \rule{0pt}{0pt}%
+  \ifatfi at appearance
+    \def\atfi at appearance@dict{%
+      /AP<<%
+        /N \atfi at appearanceobj\space 0 R%
+        /R \atfi at appearanceobj\space 0 R%
+        /D \atfi at appearanceobj\space 0 R%
+      >>%
+    }%
+  \else
+    \let\atfi at appearance@dict\ltx at empty
+  \fi
+  \ltx at IfUndefined{atfi at fsobj@#1}{%
+    \begingroup
+      \hypersetup{unicode=false}%
+      \atfi at pdfstringdef\atfi at file{#1}%
+      \immediate\pdfobj{%
+        <<%
+          /Type/Filespec%
+          /F(\atfi at file)%
+          \ifx\atfi at ucfilespec\ltx at empty
+          \else
+            /UF(\atfi at ucfilespec)%
+          \fi
+          /EF<<%
+            /F \@nameuse{atfi at fileobj@#1} 0 R%
+          >>%
+        >>%
+      }%
+      \expandafter\xdef\csname atfi at fsobj@#1\endcsname{%
+        \the\pdflastobj
+      }%
+    \endgroup
+  }{%
+  }%
+  \pdfannot width \atfi at scale\atfi at appearancewidth
+            height \atfi at scale\atfi at appearanceheight
+            depth \atfi at scale\atfi at appearancedepth {%
+    /Subtype/FileAttachment%
+    \atfi at icon
+    \atfi at color@annot
+    \atfi at author
+    \atfi at date
+    \atfi at annotname
+    \atfi at description
+    \atfi at subject
+    \atfi at appearance@dict
+    /F \theatfi at flags
+    /FS \@nameuse{atfi at fsobj@#1} 0 R%
+  }%
+  \rule{0pt}{\atfi at appearanceheight}%
+  \rule[-\atfi at appearancedepth]{0pt}{\atfi at appearancedepth}%
+  \rule{\atfi at appearancewidth}{0pt}%
+}
+\endinput
+%%
+%% End of file `atfi-pdftex.def'.
diff --git a/newpackages/new-attachfile.sty b/newpackages/new-attachfile.sty
new file mode 100644
index 0000000..941798a
--- /dev/null
+++ b/newpackages/new-attachfile.sty
@@ -0,0 +1,819 @@
+%%
+%% This is file `attachfile2.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% attachfile2.dtx  (with options: `package')
+%%
+%% This is a generated file.
+%%
+%% Project: attachfile2
+%% Version: 2019/11/26 v2.11
+%%
+%% Copyright (C)
+%%    2005-2010, 2012  Heiko Oberdiek
+%%    2016-2019  Oberdiek Package Support Group
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. This version of this license is in
+%%    https://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%%    https://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 "maintained".
+%%
+%% The Current Maintainers of this work are
+%% Heiko Oberdiek and the Oberdiek Package Support Group
+%% https://github.com/ho-tex/attachfile2/issues
+%%
+%%
+%% This work consists of the main source file attachfile2.dtx
+%% and the derived files
+%%    attachfile2.sty, attachfile2.pdf,
+%%    atfi-dvips.def, atfi-pdftex.def, atfi-dvipdfmx.def, atfi-luatex.def
+%%    pdfatfi.pl, pdfatfi.1.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{new-attachfile}%
+  [2020/04/13 v1.00 Attach files into PDF (HO/UF)]%
+\RequirePackage{iftex}[2019/11/07]
+\RequirePackage{keyval}
+\RequirePackage{color}
+\RequirePackage{infwarerr}[2010/04/08]
+\RequirePackage{ltxcmds}[2010/04/26]
+\RequirePackage{kvoptions}[2009/07/21]
+\RequirePackage{pdftexcmds}[2010/04/01]
+\RequirePackage{pdfescape}[2007/11/11]
+\RequirePackage{hyperref}
+\RequirePackage{hycolor}[2008/07/29]
+\ltx at IfUndefined{pdfmatch}{%
+  \def\atfi at Match#1#2#3#4#5{}%
+}{%
+  \def\atfi at Match#1#2#3{%
+    \begingroup
+    \edef\^{\ltx at backslashchar\string^}%
+    \edef\.{\ltx at backslashchar.}%
+    \let\#\ltx at hashchar
+    \edef\[{\ltx at backslashchar[}% ]]
+    \edef\${\ltx at backslashchar$}%
+    \let\%\ltx at percentchar
+    \edef\&{\string&}%
+    \edef\({\ltx at backslashchar(}%
+    \edef\){\ltx at backslashchar)}%
+    \edef\|{\ltx at backslashchar|}%
+    \edef\*{\ltx at backslashchar*}%
+    \edef\+{\ltx at backslashchar+}%
+    \edef\?{\ltx at backslashchar?}%
+    \edef\{{\ltx at backslashchar\ltx at leftbracechar}%
+    \edef\}{\ltx at rightbracechar}%
+    \edef\\{\ltx at backslashchar\ltx at backslashchar}%
+    \edef\~{\string~}%
+    \ifcase\pdfmatch#3{#2}{#1} %
+      \endgroup
+      \expandafter\ltx at secondoftwo
+    \or
+      \endgroup
+      \expandafter\ltx at firstoftwo
+    \else
+      \atfi at Warning{%
+        Internal error: Wrong pattern!\MessageBreak
+        --> #2 <--\MessageBreak
+        Pattern check ignored%
+      }%
+      \endgroup
+      \expandafter\ltx at firstoftwo
+    \fi
+  }%
+  \def\atfi at PatToken{%
+    [%
+      -% first character
+      !%
+      \#$\%\&'%
+      \*\+\.%
+      0-9%
+      A-Z%
+      \^_`%
+      a-z%
+      \{\}\|\~%
+    ]+%
+  }%
+  \begingroup
+    \lccode64=13 % @
+  \lowercase{\endgroup
+    \def\atfi at CR{@}%
+  }%
+  \def\atfi at PatQuotedString{%
+    "%
+    ([^"\\\atfi at CR]|\\.)*%
+    "%
+  }%
+  \ltx at ifpackagelater{ltxcmds}{2010/09/11}{}{%
+    \begingroup
+      \lccode`0=`\{\relax
+    \lowercase{\endgroup
+      \def\ltx at leftbracechar{0}%
+    }%
+    \begingroup
+      \lccode`0=`\}\relax
+    \lowercase{\endgroup
+      \def\ltx at rightbracechar{0}%
+    }%
+  }%
+}
+\def\atfi at Warning{\PackageWarning{attachfile2}}
+\SetupKeyvalOptions{%
+  family=AtFi,%
+  prefix=atfi@%
+}
+\def\atfi at setup{\setkeys{AtFi}}
+\DeclareBoolOption{draft}
+\DeclareComplementaryOption{final}{draft}
+\def\atfi at mimetype{}
+\define at key{AtFi}{mimetype}{%
+  \edef\atfi at mimetype{#1}%
+  \ifx\atfi at mimetype\ltx at empty
+  \else
+    \atfi at Match\atfi at mimetype{%
+      ^(application|audio|image|model|text|video|x-\atfi at PatToken)%
+      /%
+      ([a-z\-\+_\.0-9]+)%
+      (; ?\atfi at PatToken=(\atfi at PatToken|\atfi at PatQuotedString))*$%
+    }{icase}{}{%
+      \atfi at Warning{%
+        Invalid value `\atfi at mimetype'\MessageBreak
+        of option `mimetype'.\MessageBreak
+        Value is discarded%
+      }%
+      \let\atfi at mimetype\ltx at empty
+    }%
+  \fi
+  \ifx\atfi at mimetype\ltx at empty
+  \else
+    \EdefEscapeName\atfi at mimetype{\atfi at mimetype}%
+    \edef\atfi at mimetype{/Subtype/\atfi at mimetype}%
+  \fi
+}
+\define at key{AtFi}{icon}{%
+  \def\atfi at icon{/Name/#1}%
+  \def\atfi at icon@icon{#1}%
+}
+\atfi at setup{icon=PushPin}
+\define at key{AtFi}{color}{%
+  \HyColor at AttachfileColor{#1}%
+          \atfi at color@tex\atfi at color@inline\atfi at color@annot
+          {attachfile2}{color}%
+}
+\atfi at setup{color=1 0.9255 0.7765}
+\def\atfi at pad@ii#1{%
+  \ifnum#1>9 %
+    \number#1%
+  \else
+    0\number#1%
+  \fi%
+}
+\let\atfi at timezone\ltx at empty
+\define at key{AtFi}{timezone}{\def\atfi at timezone{#1}}
+\edef\atfi at time{\the\time}
+\def\atfi at hours{%
+  \numexpr\dimexpr0.01667\dimexpr\atfi at time sp\relax\relax\relax
+}
+\def\atfi at minutes{%
+  \numexpr\atfi at time-60*\atfi at hours\relax
+}
+\def\atfi at seconds{0}
+\def\atfi at date{%
+  /M(D:\the\year
+      \atfi at pad@ii\month
+      \atfi at pad@ii\day
+      \atfi at pad@ii\atfi at hours
+      \atfi at pad@ii\atfi at minutes
+      \atfi at pad@ii\atfi at seconds
+      \atfi at timezone)%
+}
+\define at key{AtFi}{date}{%
+  \EdefEscapeString\atfi at date{#1}%
+  \edef\atfi at date{/M(\atfi at date)}%
+}
+\DeclareRobustCommand{\atfi at pdfstringdef}[2]{%
+  \pdfstringdef\atfi at temp@string{#2}%
+  \edef#1{\atfi at temp@string}%
+}
+\def\atfi at NoValue{\NoValue}
+\def\atfi at DefNoValueName#1#2#3{%
+  \def#1{#3}%
+  \ifx#1\atfi at NoValue
+    \let#1\ltx at empty
+  \else
+    \atfi at pdfstringdef#1{#1}%
+    \edef#1{/#2(#1)}%
+  \fi
+}
+\let\atfi at annotname\ltx at empty
+\define at key{AtFi}{annotname}[\NoValue]{%
+  \atfi at DefNoValueName\atfi at annotname{NM}{#1}%
+}
+\def\atfi at author{}
+\define at key{AtFi}{author}[\NoValue]{%
+  \atfi at DefNoValueName\atfi at author{T}{#1}%
+}
+\def\atfi at description{}
+\define at key{AtFi}{description}[\NoValue]{%
+  \atfi at DefNoValueName\atfi at description{Contents}{#1}%
+}
+\def\atfi at subject{}
+\define at key{AtFi}{subject}[\NoValue]{%
+  \atfi at DefNoValueName\atfi at subject{Subj}{#1}%
+}
+\DeclareBoolOption[true]{print}
+\DeclareBoolOption[true]{zoom}
+\DeclareBoolOption[true]{appearance}
+\DeclareStringOption[1]{scale}
+\def\atfi at ucfilespec{}
+\define at key{AtFi}{ucfilespec}[1]{%
+  \def\atfi at ucfilespec{#1}%
+  \ifx\atfi at ucfilespec\ltx at empty
+  \else
+    \atfi at pdfstringdef\atfi at ucfilespec{#1}%
+  \fi
+}
+\DeclareBoolOption{nofiles}
+\let\atfi at driver\ltx at empty
+\def\atfi at driver@pdftex{pdftex}
+\def\atfi at driver@luatex{luatex}
+\def\atfi at driver@dvips{dvips}
+\def\atfi at driver@dvipdfmx{dvipdfmx}
+\DeclareVoidOption{pdftex}{%
+ \ifpdf
+  \let\atfi at driver\atfi at driver@pdftex
+ \else
+   \let\atfi at driver\ltx at empty
+    \PackageError{attachfile2}{%
+      Wrong driver option `pdftex',\MessageBreak
+      because pdfTeX in PDF mode is not detected%
+    }\@ehc
+ \fi
+}
+\DeclareVoidOption{luatex}{%
+  \let\atfi at driver\atfi at driver@luatex
+}
+\DeclareVoidOption{dvips}{%
+  \let\atfi at driver\atfi at driver@dvips
+}
+\DeclareVoidOption{dvipdfmx}{%
+  \let\atfi at driver\atfi at driver@dvipdfmx
+}
+\DeclareVoidOption{xetex}{%
+  \let\atfi at driver\atfi at driver@dvipdfmx
+}
+\DeclareStringOption{driverfallback}
+\DeclareRobustCommand{\attachfilesetup}[1]{\setkeys{AtFi}{#1}}
+\DeclareLocalOptions{%
+  annotname,%
+  appearance,%
+  author,%
+  color,%
+  date,%
+  description,%
+  icon,%
+  mimetype,%
+  nofiles,%
+  print,%
+  scale,%
+  subject,%
+  timezone,%
+  ucfilespec,%
+  zoom,%
+}
+\InputIfFileExists{attachfile.cfg}{}{}
+\ProcessKeyvalOptions*
+\def\atfi at DisableOption{%
+  \DisableKeyvalOption[action=error,package=attachfile2]{AtFi}%
+}
+\ifpdf
+ \ifluatex
+  \let\atfi at driver\atfi at driver@luatex
+ \else
+  \let\atfi at driver\atfi at driver@pdftex
+ \fi
+\else
+ \ifxetex
+    \let\atfi at driver\atfi at driver@dvipdfmx
+  \else
+    \ifx\atfi at driver\ltx at empty
+      \ifx\atfi at driverfallback\ltx at empty
+      \else
+        \expandafter\let\expandafter\atfi at driver
+            \csname atfi at driver@\atfi at driverfallback\endcsname
+        \ifx\atfi at driver\atfi at driver@dvips
+        \else
+          \ifx\atfi at driver\atfi at driver@dvipdfmx
+          \else
+             \let\atfi at driver\ltx at empty
+             \PackageWarningNoLine{attachfile2}{%
+               Option `driverfallback' with unsupported\MessageBreak
+               DVI driver (\atfi at driverfallback)%
+             }%
+          \fi
+        \fi
+      \fi
+      \ifx\atfi at driver\ltx at empty
+        \PackageWarningNoLine{attachfile2}{%
+          Driver is not specified,\MessageBreak
+          enforce draft settings%
+        }%
+        \atfi at drafttrue
+      \fi
+    \fi
+  \fi
+\fi
+\atfi at DisableOption{pdftex}
+\atfi at DisableOption{dvips}
+\atfi at DisableOption{dvipdfmx}
+\atfi at DisableOption{xetex}
+\atfi at DisableOption{driverfallback}
+\DeclareRobustCommand{\notextattachfile}[2][]{%
+  \begingroup
+    \atfi at setup{#1}%
+    \ifatfi at print
+      \leavevmode
+      \begingroup
+        \HyColor at UseColor\atfi at color@tex
+        #2\strut
+      \endgroup
+    \else
+      \sbox\ltx at zero{#2\strut}%
+      \makebox[\wd0]{}%
+    \fi
+  \endgroup
+}
+\atfi at DisableOption{draft}%
+\atfi at DisableOption{final}%
+\ifatfi at draft
+  \def\atfi at dummy@pushpin{%
+    \raisebox{-1.25bp}{\parbox[b][14bp]{24bp}{}}%
+  }%
+  \DeclareRobustCommand{\textattachfile}[3][]{%
+    \notextattachfile[{#1}]{#3}%
+  }%
+  \DeclareRobustCommand{\noattachfile}[1][]{%
+    \notextattachfile[{#1}]{\atfi at dummy@pushpin}%
+  }%
+  \DeclareRobustCommand{\attachfile}[2][]{%
+    \noattachfile[{#1}]%
+  }%
+   \expandafter\endinput
+\fi
+\input{atfi-\atfi at driver.def}
+\def\atfi at acroGraph@data{%
+  \atfi at GSAVE
+  0.5 \atfi at SETGRAYFILL
+  1.1133 0 20.7202 18.2754 \atfi at RECTFILL
+  0 \atfi at SETFLAT
+  0.5 \atfi at SETLINEWIDTH
+  4 \atfi at SETMITERLIMIT
+  \atfi at RECTSTROKEFILL{%
+    1 \atfi at SETGRAYFILL
+  }{%
+    0 \atfi at SETGRAYSTROKE
+  }{%
+    0.25 1.6453 20.145 17.7715 %
+  }%
+  0 \atfi at SETGRAYFILL
+  2.7319 4.1367 3.9571 13.8867 \atfi at RECTFILL
+  8.7031 4.1367 3.9571 9.8867 \atfi at RECTFILL
+  14.7471 4.1367 3.9571 11.8867 \atfi at RECTFILL
+  \atfi at color@inline{FILL}%
+  1.689 3.0938 3.9571 13.8867 \atfi at RECTFILL
+  7.6602 3.0938 3.9571 9.8867 \atfi at RECTFILL
+  13.7041 3.0938 3.9571 11.8867 \atfi at RECTFILL
+  \atfi at GRESTORE
+}
+\def\atfi at acroGraph{%
+  \raisebox{-1.5bp}{\parbox[b][20bp]{22bp}{%
+    \rule{0pt}{0pt}\atfi at literal{\atfi at acroGraph@data}}%
+  }%
+}
+\newcommand{\atfi at acroPaperclip@data}{%
+  \atfi at GSAVE
+  0.75 \atfi at SETGRAYSTROKE
+  0 \atfi at SETFLAT
+  2.5 \atfi at SETLINEWIDTH
+  1 \atfi at SETLINECAP
+  4 \atfi at SETMITERLIMIT
+  1.9619 11.7559 \atfi at MOVETO
+  1.9619 3.3037 1.9619 2.5059 \atfi at CURVETOV
+  1.9619 1.707 4.0947 1.25 \atfi at CURVETOY
+  7.4141 1.25 \atfi at LINETO
+  9.4292 1.8223 9.4292 3.3066 \atfi at CURVETOV
+  9.4292 4.79 9.4292 16.8945 \atfi at CURVETOY
+  9.7852 18.1514 8.481 18.1514 \atfi at CURVETOV
+  7.1768 18.1514 5.1616 18.1514 \atfi at CURVETOY
+  3.8574 17.9209 3.8574 16.8945 \atfi at CURVETOV
+  3.8574 15.8652 3.8574 6.6172 \atfi at CURVETOY
+  4.3325 5.418 5.1025 5.418 \atfi at CURVETOV
+  5.8726 5.418 6.5845 5.418 \atfi at CURVETOY
+  7.6812 5.6455 7.6812 6.4736 \atfi at CURVETOV
+  7.6812 7.3027 7.6812 11.5264 \atfi at CURVETOY
+  \atfi at STROKE
+  0 \atfi at SETGRAYSTROKE
+  1.2495 12.4404 \atfi at MOVETO
+  1.2495 3.9883 1.2495 3.1895 \atfi at CURVETOV
+  1.2495 2.3906 3.3833 1.9326 \atfi at CURVETOY
+  6.7026 1.9326 \atfi at LINETO
+  8.7178 2.5068 8.7178 3.9902 \atfi at CURVETOV
+  8.7178 5.4736 8.7178 17.5781 \atfi at CURVETOY
+  9.0732 18.834 7.769 18.834 \atfi at CURVETOV
+  6.4653 18.834 4.4497 18.834 \atfi at CURVETOY
+  3.146 18.6055 3.146 17.5781 \atfi at CURVETOV
+  3.146 16.5498 3.146 7.3018 \atfi at CURVETOY
+  3.6201 6.1016 4.3911 6.1016 \atfi at CURVETOV
+  5.1611 6.1016 5.873 6.1016 \atfi at CURVETOY
+  6.9692 6.3301 6.9692 7.1572 \atfi at CURVETOV
+  6.9692 7.9863 6.9692 12.21 \atfi at CURVETOY
+  \atfi at STROKE
+  \atfi at color@inline{STROKE}%
+  1 \atfi at SETLINEWIDTH
+  1.2495 12.4404 \atfi at MOVETO
+  1.2495 3.9883 1.2495 3.1895 \atfi at CURVETOV
+  1.2495 2.3906 3.3833 1.9326 \atfi at CURVETOY
+  6.7026 1.9326 \atfi at LINETO
+  8.7178 2.5068 8.7178 3.9902 \atfi at CURVETOV
+  8.7178 5.4736 8.7178 17.5781 \atfi at CURVETOY
+  9.0732 18.834 7.769 18.834 \atfi at CURVETOV
+  6.4653 18.834 4.4497 18.834 \atfi at CURVETOY
+  3.146 18.6055 3.146 17.5781 \atfi at CURVETOV
+  3.146 16.5498 3.146 7.3018 \atfi at CURVETOY
+  3.6201 6.1016 4.3911 6.1016 \atfi at CURVETOV
+  5.1611 6.1016 5.873 6.1016 \atfi at CURVETOY
+  6.9692 6.3301 6.9692 7.1572 \atfi at CURVETOV
+  6.9692 7.9863 6.9692 12.21 \atfi at CURVETOY
+  \atfi at STROKE
+  \atfi at GRESTORE
+}
+\def\atfi at acroPaperclip{%
+  \raisebox{-1.25bp}{\parbox[b][21bp]{12bp}{%
+    \rule{0pt}{0pt}\atfi at literal{\atfi at acroPaperclip@data}}%
+  }%
+}
+\def\atfi at acroPushPin@data{%
+  \atfi at GSAVE
+  1 \atfi at SETLINEWIDTH
+  1 6   \atfi at MOVETO
+  11 6  \atfi at LINETO
+  11 13 \atfi at LINETO
+  12 13 \atfi at LINETO
+  14 11 \atfi at LINETO
+  21 11 \atfi at LINETO
+  22 12 \atfi at LINETO
+  23 12 \atfi at LINETO
+  23 2  \atfi at LINETO
+  22 2  \atfi at LINETO
+  21 3  \atfi at LINETO
+  14 3  \atfi at LINETO
+  12 1  \atfi at LINETO
+  11 1  \atfi at LINETO
+  11 6  \atfi at LINETO
+  \atfi at FILLSTROKE{%
+    \atfi at color@inline{FILL}%
+  }{%
+    0 \atfi at SETGRAYSTROKE
+  }%
+  0.5 \atfi at SETGRAYSTROKE
+  0 7  \atfi at MOVETO
+  10 7 \atfi at LINETO
+  10 8 \atfi at LINETO
+  1 8  \atfi at LINETO
+  \atfi at STROKE
+  1 \atfi at SETGRAYSTROKE
+  12 12 \atfi at MOVETO
+  14 10 \atfi at LINETO
+  22 10 \atfi at LINETO
+  22 11 \atfi at LINETO
+  \atfi at STROKE
+  \atfi at GRESTORE
+}
+\def\atfi at acroPushPin{%
+  \raisebox{-1.25bp}{\parbox[b][14bp]{24bp}{%
+    \rule{0pt}{0pt}\atfi at literal{\atfi at acroPushPin@data}}%
+  }%
+}
+\def\atfi at acroTag@data{%
+  \atfi at GSAVE
+  0.5 \atfi at SETGRAYFILL
+  10.0542 14.9873 \atfi at MOVETO
+  24.27 14.9873 \atfi at LINETO
+  25.252 14.0059 \atfi at LINETO
+  25.252 1.1455 \atfi at LINETO
+  24.1064 0 \atfi at LINETO
+  9.9609 0 \atfi at LINETO
+  6.0327 6.0088 \atfi at LINETO
+  6.0327 9.002 \atfi at LINETO
+  10.0542 14.9873 \atfi at LINETO
+  9.3994 9.376 \atfi at MOVETO
+  8.5215 9.376 7.8096 8.5596 7.8096 7.5527 \atfi at CURVETO
+  7.8096 6.5449 8.5215 5.7285 9.3994 5.7285 \atfi at CURVETO
+  10.2778 5.7285 10.9897 6.5449 10.9897 7.5527 \atfi at CURVETO
+  10.9897 8.5596 10.2778 9.376 9.3994 9.376 \atfi at CURVETO
+  \atfi at CLOSEPATH
+  \atfi at FILL
+  0 \atfi at SETFLAT
+  0.5 \atfi at SETLINEWIDTH
+  4 \atfi at SETMITERLIMIT
+  1 \atfi at SETLINEJOIN
+  8.5107 16.5313 \atfi at MOVETO
+  22.7266 16.5313 \atfi at LINETO
+  23.7085 15.5488 \atfi at LINETO
+  23.7085 2.6895 \atfi at LINETO
+  22.563 1.543 \atfi at LINETO
+  8.4175 1.543 \atfi at LINETO
+  4.4893 7.5527 \atfi at LINETO
+  4.4893 10.5449 \atfi at LINETO
+  8.5107 16.5313 \atfi at LINETO
+  7.856 10.9199 \atfi at MOVETO
+  6.978 10.9199 6.2661 10.1035 6.2661 9.0957 \atfi at CURVETO
+  6.2661 8.0879 6.978 7.2715 7.856 7.2715 \atfi at CURVETO
+  8.7344 7.2715 9.4463 8.0879 9.4463 9.0957 \atfi at CURVETO
+  9.4463 10.1035 8.7344 10.9199 7.856 10.9199 \atfi at CURVETO
+  \atfi at CLOSEPATH
+  \atfi at FILLSTROKE{%
+    \atfi at color@inline{FILL}%
+  }{%
+    0 \atfi at SETGRAYSTROKE
+  }%
+  1 \atfi at SETLINEWIDTH
+  12.3291 12.2656 \atfi at MOVETO
+  21.1206 12.2656 \atfi at LINETO
+  \atfi at STROKE
+  12.3291 9.1797 \atfi at MOVETO
+  21.1206 9.1797 \atfi at LINETO
+  \atfi at STROKE
+  12.3291 6.1875 \atfi at MOVETO
+  21.1206 6.1875 \atfi at LINETO
+  \atfi at STROKE
+  % 0 \atfi at SETGRAYSTROKE % redundant?
+  0.5 \atfi at SETLINEWIDTH
+  0 9.0488 \atfi at MOVETO
+  6.2661 9.0957 \atfi at LINETO
+  \atfi at STROKE
+  1.4028 5.2148 \atfi at MOVETO
+  1.4028 9.6094 \atfi at LINETO
+  1.6831 10.6387 2.4316 10.6387 \atfi at CURVETOV
+  3.6475 10.6387 3.5542 9.0488 \atfi at CURVETOY
+  \atfi at STROKE
+  \atfi at GRESTORE
+}
+\def\atfi at acroTag{%
+  \raisebox{-1.6bp}{\parbox[b][17bp]{25bp}{%
+    \rule{0pt}{0pt}\atfi at literal{\atfi at acroTag@data}}%
+  }%
+}
+\def\attachfile at timezone#1{%
+  \ifx\\#1\\%
+    % no timezone information given
+  \else
+    \def\atfi at timezone{#1}%
+  \fi
+}
+\newcommand*{\attachfile at file}[2][]{%
+  \EdefUnescapeHex\atfi at filename{#2}%
+  \ifx\atfi at filename\ltx at empty
+    \PackageError{attachfile2}{Empty file name}\@ehc
+  \else
+    \@namedef{atfi at file@\atfi at filename}{#1}%
+  \fi
+}
+\InputIfFileExists{\jobname.atfi}{}{}%
+\newif\ifatfi at checksum
+\define at key{AtFi at file}{CheckSum}{%
+  \atfi at checksumtrue
+  \edef\atfi at params{\atfi at params/CheckSum<#1>}%
+}
+\newif\ifatfi at creationdate
+\define at key{AtFi at file}{CreationDateTZ}{%
+  \ifatfi at creationdate
+  \else
+    \atfi at creationdatetrue
+    \edef\atfi at params{%
+      \atfi at params
+      /CreationDate(#1)%
+    }%
+  \fi
+}
+\define at key{AtFi at file}{CreationDate}{%
+  \ifatfi at creationdate
+  \else
+    \atfi at creationdatetrue
+    \edef\atfi at params{%
+      \atfi at params
+      /CreationDate(#1\atfi at timezone)%
+    }%
+  \fi
+}
+\newif\ifatfi at moddate
+\define at key{AtFi at file}{ModDateTZ}{%
+  \ifatfi at moddate
+  \else
+    \atfi at moddatetrue
+    \edef\atfi at params{%
+      \atfi at params
+      /ModDate(#1)%
+    }%
+  \fi
+}
+\define at key{AtFi at file}{ModDate}{%
+  \ifatfi at moddate
+  \else
+    \atfi at moddatetrue
+    \edef\atfi at params{%
+      \atfi at params
+      /ModDate(D:#1\atfi at timezone)%
+    }%
+  \fi
+}
+\let\atfi at temp\ltx at one
+\ltx at IfUndefined{pdf at filesize}{%
+  \let\atfi at temp\ltx at zero
+}{}
+\ltx at IfUndefined{pdf at filemoddate}{%
+  \let\atfi at temp\ltx at zero
+}{}
+\ltx at IfUndefined{pdf at filemdfivesum}{%
+  \let\atfi at temp\ltx at zero
+}{}
+\ifcase\atfi at temp
+  \let\atfi at pdftexdata\ltx at gobble
+\or
+  \def\atfi at pdftexdata#1{%
+    \edef\atfi at temp{\pdf at filesize{#1}}%
+    \ifx\atfi at temp\ltx at empty
+    \else
+      \setkeys{AtFi at file}{Size=\atfi at temp}%
+      \edef\atfi at temp{\pdf at filemoddate{#1}}%
+      \ifx\atfi at temp\ltx at empty
+      \else
+        \setkeys{AtFi at file}{ModDateTZ=\atfi at temp}%
+      \fi
+      \edef\atfi at temp{\pdf at filemdfivesum{#1}}%
+      \ifx\atfi at temp\ltx at empty
+      \else
+        \setkeys{AtFi at file}{CheckSum=\atfi at temp}%
+      \fi
+    \fi
+  }%
+\fi
+\if at filesw
+\else
+  \atfi at nofilestrue
+\fi
+\ifatfi at nofiles
+  \PackageInfo{attachfile2}{%
+    File `\jobname.atfi' will not be written because of\MessageBreak
+    \string\nofiles\space or option `nofiles'%
+  }%
+  \let\atfi at writefile\ltx at gobble
+\else
+  \newwrite\atfi at stream
+  \immediate\openout\atfi at stream=\jobname.atfi\relax
+  \immediate\write\atfi at stream{%
+    \string\attachfile at timezone{\atfi at timezone}%
+  }%
+  \def\atfi at writefile#1{%
+    \begingroup
+      \EdefEscapeHex\atfi at temp{#1}%
+      \immediate\write\atfi at stream{%
+        \string\attachfile at file[%
+          \ltx at ifundefined{atfi at file@#1}{}{\@nameuse{atfi at file@#1}}%
+        ]{\atfi at temp}%
+      }%
+    \endgroup
+  }%
+\fi
+\atfi at DisableOption{nofiles}
+\def\atfi at attachfile#1#2{%
+  \ltx at IfUndefined{atfi at fileobj@#2}{%
+    \atfi at writefile{#2}%
+  }{%
+    % don't need duplicates
+  }%
+  \atfi at setup{#1}%
+  \atfi at embedfile{#2}%
+  \atfi at set@appearance at icon
+  \atfi at flags@to at int
+  \atfi at insert@file at annot{#2}%
+  \endgroup
+}
+\newlength{\atfi at appearancewidth}
+\newlength{\atfi at appearanceheight}
+\newlength{\atfi at appearancedepth}
+\newsavebox{\atfi at appearancebox}
+\def\atfi at set@appearance at icon{%
+  \ltx at IfUndefined{atfi at appobj@\atfi at icon@icon}{%
+    \savebox{\atfi at appearancebox}{%
+      \@nameuse{atfi at acro\atfi at icon@icon}%
+    }%
+    \expandafter
+    \xdef\csname atfi at appwidth@\atfi at icon@icon\endcsname{%
+      \the\wd\atfi at appearancebox
+    }%
+    \expandafter
+    \xdef\csname atfi at appheight@\atfi at icon@icon\endcsname{%
+      \the\ht\atfi at appearancebox
+    }%
+    \expandafter
+    \xdef\csname atfi at appdepth@\atfi at icon@icon\endcsname{%
+      \the\dp\atfi at appearancebox
+    }%
+    \atfi at xform@icon
+    \global\expandafter\let
+        \csname atfi at appobj@\atfi at icon@icon\endcsname
+        \atfi at appearanceobj
+  }{%
+  }%
+  % optimization: \setlength dropped
+  \atfi at appearancewidth=%
+      \@nameuse{atfi at appwidth@\atfi at icon@icon}\relax
+  \atfi at appearanceheight=%
+      \@nameuse{atfi at appheight@\atfi at icon@icon}\relax
+  \atfi at appearancedepth=%
+      \@nameuse{atfi at appdepth@\atfi at icon@icon}\relax
+  \expandafter\let\expandafter\atfi at appearanceobj
+      \csname atfi at appobj@\atfi at icon@icon\endcsname
+}
+\def\atfi at set@appearance#1{%
+  \savebox{\atfi at appearancebox}{#1}%
+  \atfi at appearancewidth=\wd\atfi at appearancebox
+  \atfi at appearanceheight=\ht\atfi at appearancebox
+  \atfi at appearancedepth=\dp\atfi at appearancebox
+  \atfi at xform
+}
+\newcounter{atfi at flags}
+\DeclareRobustCommand{\atfi at flags@to at int}{%
+  \setcounter{atfi at flags}{0}%
+  \ifatfi at print
+    \addtocounter{atfi at flags}{4}%
+  \fi%
+  \ifatfi at zoom
+  \else
+    \addtocounter{atfi at flags}{8}%
+  \fi%
+}
+\def\atfi at textattachfile#1#2{%
+    \endgroup
+    \atfi at textattachfile@i{#1}{#2}%
+}
+\def\atfi at textattachfile@i#1#2#3{%
+    \ltx at IfUndefined{atfi at fileobj@#2}{%
+      \atfi at writefile{#2}%
+    }{%
+      % don't need duplicates
+    }%
+    \atfi at setup{#1}%
+    \atfi at embedfile{#2}%
+    \atfi at set@appearance{%
+      \leavevmode
+      \begingroup
+        \HyColor at UseColor\atfi at color@tex
+        #3\strut
+      \endgroup
+    }%
+    \atfi at flags@to at int
+    \atfi at insert@file at annot{#2}%
+  \endgroup
+}
+\DeclareRobustCommand{\attachfile}[1][]{%
+  \begingroup
+    \let\do\@makeother
+    \dospecials
+    \catcode`\{=1\relax
+    \catcode`\}=2\relax
+    \atfi at attachfile{#1}%
+}
+\DeclareRobustCommand{\textattachfile}[1][]{%
+  \begingroup
+    \begingroup
+      \let\do\@makeother
+      \dospecials
+      \catcode`\{=1\relax
+      \catcode`\}=2\relax
+      \atfi at textattachfile{#1}%
+}
+\DeclareRobustCommand{\noattachfile}[1][]{%
+  \begingroup
+    \atfi at setup{#1}%
+    \atfi at set@appearance at icon
+    \ifatfi at print
+      \expandafter
+      \atfi at refxform\csname atfi at appobj@\atfi at icon@icon\endcsname
+    \else
+      \makebox[\atfi at appearancewidth]{}%
+    \fi
+  \endgroup
+}
+\endinput
+%%
+%% End of file `attachfile2.sty'.





More information about the latex3-commits mailing list.