You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
504 lines
14 KiB
504 lines
14 KiB
%%
|
|
%% This is file `atfi-dvips.def',
|
|
%% generated with the docstrip utility.
|
|
%%
|
|
%% The original source files were:
|
|
%%
|
|
%% attachfile2.dtx (with options: `dvips')
|
|
%%
|
|
%% 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-dvips.def}%
|
|
[2019/11/26 v2.11 attachfile2 driver for dvips (HO)]%
|
|
\def\atfi@literal#1{%
|
|
\special{ps:atfi_dict begin{#1}atfi_?pdfmark end}%
|
|
}
|
|
\def\atfi@header#1{%
|
|
\special{! #1}%
|
|
}
|
|
\atfi@header{%
|
|
userdict begin 20 dict dup /atfi_dict exch def end begin%
|
|
/atfi_?pdfmark systemdict %
|
|
dup/pdfmark known%
|
|
{%
|
|
/exec get def%
|
|
}{%
|
|
/pop get def%
|
|
} ifelse%
|
|
{%
|
|
%
|
|
% x y width height atfi_re ->
|
|
languagelevel 2 ge {%
|
|
/atfi_rectfill { rectfill } bind def%
|
|
/atfi_rectstroke { rectstroke } bind def%
|
|
}{%
|
|
/atfi_rect {%
|
|
/atfi_height exch def%
|
|
/atfi_width exch def%
|
|
/atfi_x exch def%
|
|
/atfi_y exch def %
|
|
newpath %
|
|
atfi_x atfi_y moveto %
|
|
atfi_x atfi_width add atfi_y lineto %
|
|
atfi_x atfi_width add atfi_y atfi_height add lineto %
|
|
atfi_x atfi_y atfi_height add lineto %
|
|
closepath%
|
|
} bind def%
|
|
/atfi_rectfill {%
|
|
atfi_rect fill%
|
|
} bind def%
|
|
/atfi_rectstroke {%
|
|
atfi_rect stroke%
|
|
} bind def%
|
|
} ifelse%
|
|
/atfi_curveto_v {%
|
|
currentpoint 6 2 roll curveto%
|
|
} bind def%
|
|
/atfi_curveto_y {%
|
|
2 copy curveto%
|
|
} bind def%
|
|
%
|
|
% help macro for atfi_convert_date
|
|
/atfi_two {%
|
|
dup 10 lt%
|
|
{%
|
|
1 string cvs %
|
|
exch 1 add exch%
|
|
}{%
|
|
2 string cvs%
|
|
} ifelse %
|
|
putinterval%
|
|
} bind def%
|
|
%
|
|
% <seconds since 1970-01-01> atfi_convert_date -> (D:...Z)
|
|
/atfi_convert_date {%
|
|
dup%
|
|
/atfi_days exch 3600 idiv 24 idiv def%
|
|
% calc date part
|
|
/atfi_year 1970 def%
|
|
{%
|
|
atfi_year 400 mod 0 eq %
|
|
atfi_year 100 mod 0 ne %
|
|
atfi_year 4 mod 0 eq %
|
|
and or%
|
|
{366} {365} ifelse %
|
|
dup atfi_days lt%
|
|
{%
|
|
atfi_days exch sub /atfi_days exch def%
|
|
/atfi_year atfi_year 1 add def%
|
|
}{%
|
|
exit%
|
|
} ifelse%
|
|
} loop%
|
|
/atfi_month 1 def%
|
|
/atfi_days atfi_days 1 add def %
|
|
31 atfi_days lt%
|
|
{%
|
|
atfi_days 31 sub /atfi_days exch def%
|
|
/atfi_month atfi_month 1 add def %
|
|
366 eq {29} {28} ifelse dup atfi_days lt%
|
|
{%
|
|
atfi_days exch sub /atfi_days exch def%
|
|
/atfi_month atfi_month 1 add def %
|
|
31 atfi_days lt%
|
|
{%
|
|
atfi_days 31 sub /atfi_days exch def%
|
|
/atfi_month atfi_month 1 add def %
|
|
30 atfi_days lt%
|
|
{%
|
|
atfi_days 30 sub /atfi_days exch def%
|
|
/atfi_month atfi_month 1 add def %
|
|
31 atfi_days lt%
|
|
{%
|
|
atfi_days 31 sub /atfi_days exch def%
|
|
/atfi_month atfi_month 1 add def %
|
|
30 atfi_days lt%
|
|
{%
|
|
atfi_days 30 sub /atfi_days exch def%
|
|
/atfi_month atfi_month 1 add def %
|
|
31 atfi_days lt%
|
|
{%
|
|
atfi_days 31 sub /atfi_days exch def%
|
|
/atfi_month atfi_month 1 add def %
|
|
31 atfi_days lt%
|
|
{%
|
|
atfi_days 31 sub /atfi_days exch def%
|
|
/atfi_month atfi_month 1 add def %
|
|
30 atfi_days lt%
|
|
{%
|
|
atfi_days 30 sub /atfi_days exch def%
|
|
/atfi_month atfi_month 1 add def %
|
|
31 atfi_days lt%
|
|
{%
|
|
atfi_days 31 sub /atfi_days exch def%
|
|
/atfi_month atfi_month 1 add def %
|
|
30 atfi_days lt%
|
|
{%
|
|
atfi_days 30 sub /atfi_days exch def%
|
|
/atfi_month atfi_month 1 add def %
|
|
31 atfi_days lt%
|
|
{%
|
|
atfi_days 31 sub /atfi_days exch def%
|
|
/atfi_month atfi_month 1 add def%
|
|
} if%
|
|
} if%
|
|
} if%
|
|
} if%
|
|
} if%
|
|
} if%
|
|
} if%
|
|
} if%
|
|
} if%
|
|
} if%
|
|
} { pop } ifelse%
|
|
}{ pop } ifelse %
|
|
% calc time part
|
|
3600 24 mul mod %
|
|
dup 3600 idiv dup /atfi_hour exch def %
|
|
3600 mul sub %
|
|
dup 60 idiv dup /atfi_min exch def %
|
|
60 mul sub %
|
|
/atfi_sec exch def%
|
|
(D:19700101000000Z)%
|
|
dup 2 atfi_year 4 string cvs putinterval %
|
|
dup 6 atfi_month atfi_two %
|
|
dup 8 atfi_days atfi_two %
|
|
dup 10 atfi_hour atfi_two %
|
|
dup 12 atfi_min atfi_two %
|
|
dup 14 atfi_sec atfi_two%
|
|
} bind def %
|
|
%
|
|
% <filename> atfi_calc_checksum -> /CheckSum <checksum>
|
|
% or returns nothing, if MD5Encode is not given
|
|
false %
|
|
languagelevel 2 ge {%
|
|
(MD5Encode)%
|
|
{ pop true or }%
|
|
(MD5Encode) length string%
|
|
/Filter %
|
|
resourceforall%
|
|
} if%
|
|
{%
|
|
/atfi_calc_checksum {%
|
|
/atfi_checksum 16 string def%
|
|
/atfi_file exch (r) file def%
|
|
/atfi_md5sum atfi_checksum /MD5Encode filter def %
|
|
% not too efficient to read and write byte by byte,
|
|
% using a buffer is probably faster
|
|
atfi_size {%
|
|
atfi_file read%
|
|
{%
|
|
atfi_md5sum exch write%
|
|
} if%
|
|
} repeat %
|
|
atfi_md5sum closefile %
|
|
atfi_file closefile%
|
|
/CheckSum atfi_checksum%
|
|
} bind def%
|
|
}{%
|
|
/atfi_calc_checksum { pop } bind def%
|
|
} ifelse%
|
|
%
|
|
/atfi_pttobp { 72.27 div 72 mul } bind def%
|
|
/atfi_pdftodvipsx { 72.27 div Resolution mul } bind def%
|
|
/atfi_pdftodvipsy { 72.27 div VResolution mul } bind def%
|
|
%
|
|
} atfi_?pdfmark %
|
|
end%
|
|
}
|
|
\def\atfi@GSAVE{gsave }
|
|
\def\atfi@GRESTORE{grestore }
|
|
\def\atfi@SETLINEWIDTH{setlinewidth }
|
|
\def\atfi@LINETO{lineto }
|
|
\def\atfi@MOVETO{moveto }
|
|
\def\atfi@STROKE{stroke }
|
|
\def\atfi@FILL{fill }
|
|
\def\atfi@FILLSTROKE#1#2{gsave #1 fill grestore #2 stroke }
|
|
\def\atfi@SETRGBCOLORSTROKE{setrgbcolor }
|
|
\def\atfi@SETRGBCOLORFILL{setrgbcolor }
|
|
\def\atfi@SETGRAYSTROKE{setgray }
|
|
\def\atfi@SETGRAYFILL{setgray }
|
|
\def\atfi@SETCMYKCOLORSTROKE{setcmykcolor }
|
|
\def\atfi@SETCMYKCOLORFILL{setcmykcolor }
|
|
\def\atfi@RECTFILL{atfi_rectfill }
|
|
\def\atfi@RECTSTROKEFILL#1#2#3{%
|
|
#3%
|
|
#1%
|
|
gsave atfi_rectfill grestore %
|
|
#2%
|
|
#3%
|
|
atfi_rectstroke %
|
|
#1%
|
|
}
|
|
\def\atfi@SETMITERLIMIT{setmiterlimit }
|
|
\def\atfi@SETFLAT{setflat }
|
|
\def\atfi@SETLINECAP{setlinecap }
|
|
\def\atfi@CURVETO{curveto }
|
|
\def\atfi@CURVETOV{atfi_curveto_v }
|
|
\def\atfi@CURVETOY{atfi_curveto_y }
|
|
\def\atfi@CLOSEPATH{closepath }
|
|
\def\atfi@SETLINEJOIN{setlinejoin }
|
|
\newcounter{atfi@obj}
|
|
\renewcommand*{\theatfi@obj}{%
|
|
{atfi_obj_\number\c@atfi@obj}%
|
|
}
|
|
\define@key{AtFi@file}{Size}{}
|
|
\def\atfi@embedfile#1{%
|
|
\ltx@IfUndefined{atfi@fileobj@#1}{%
|
|
\atfi@pdfstringdef\atfi@psfilename{#1}%
|
|
\stepcounter{atfi@obj}%
|
|
\expandafter\xdef\csname atfi@fileobj@#1\endcsname{\theatfi@obj}%
|
|
\begingroup
|
|
\let\atfi@params\ltx@empty
|
|
\expandafter\let\expandafter\atfi@temp
|
|
\csname atfi@file@#1\endcsname
|
|
\ifx\atfi@temp\ltx@empty
|
|
\let\atfi@temp\relax
|
|
\fi
|
|
\ifx\atfi@temp\relax
|
|
\atfi@pdftexdata{#1}%
|
|
\else
|
|
\edef\x{%
|
|
\noexpand\setkeys{AtFi@file}{\@nameuse{atfi@file@#1}}%
|
|
}%
|
|
\x
|
|
\fi
|
|
\atfi@literal{%
|
|
/atfi_filename(\atfi@psfilename)def %
|
|
atfi_filename status%
|
|
{%
|
|
/atfi_created exch def%
|
|
/atfi_referenced exch def%
|
|
/atfi_size exch def %
|
|
pop %
|
|
[%
|
|
/_objdef \theatfi@obj
|
|
/type/stream%
|
|
/OBJ pdfmark%
|
|
[%
|
|
\theatfi@obj
|
|
<<%
|
|
/Type/EmbeddedFile%
|
|
\atfi@mimetype
|
|
/Params%
|
|
<<%
|
|
\atfi@params
|
|
%
|
|
/Size atfi_size%
|
|
%
|
|
/product where%
|
|
{%
|
|
pop %
|
|
product (Ghostscript) search%
|
|
{%
|
|
pop pop pop %
|
|
\ifatfi@creationdate
|
|
\else
|
|
false % TODO: test for windows
|
|
{%
|
|
/CreationDate atfi_created atfi_convert_date%
|
|
} if%
|
|
\fi
|
|
\ifatfi@moddate
|
|
\else
|
|
/ModDate atfi_referenced atfi_convert_date%
|
|
\fi
|
|
} if%
|
|
} if %
|
|
\ifatfi@checksum
|
|
\else
|
|
atfi_filename atfi_calc_checksum%
|
|
\fi
|
|
>>%
|
|
>>%
|
|
/PUT pdfmark%
|
|
[%
|
|
\theatfi@obj
|
|
atfi_filename (r) file%
|
|
/PUT pdfmark%
|
|
[%
|
|
\theatfi@obj
|
|
/CLOSE pdfmark%
|
|
}{%
|
|
} ifelse%
|
|
}%
|
|
\endgroup
|
|
}{%
|
|
}%
|
|
}
|
|
\def\atfi@xform@icon{%
|
|
\stepcounter{atfi@obj}%
|
|
\edef\atfi@appearanceobj{\theatfi@obj}%
|
|
\atfi@literal{%
|
|
[%
|
|
/_objdef \atfi@appearanceobj
|
|
/BBox[%
|
|
0 %
|
|
0 %
|
|
\strip@pt\wd\atfi@appearancebox\space atfi_pttobp %
|
|
\strip@pt\dimexpr\dp\atfi@appearancebox
|
|
+\ht\atfi@appearancebox\relax\space atfi_pttobp%
|
|
]%
|
|
/BP pdfmark %
|
|
\csname atfi@acro\atfi@icon@icon @data\endcsname
|
|
[%
|
|
/EP pdfmark%
|
|
}%
|
|
}
|
|
\def\atfi@xform{%
|
|
\stepcounter{atfi@obj}%
|
|
\edef\atfi@appearanceobj{\theatfi@obj}%
|
|
\begingroup
|
|
\setbox\ltx@zero=\hbox{%
|
|
\atfi@literal{%
|
|
[%
|
|
/_objdef \atfi@appearanceobj
|
|
/BBox[%
|
|
currentpoint %
|
|
\strip@pt\dp\atfi@appearancebox\space sub %
|
|
currentpoint %
|
|
exch \strip@pt\wd\atfi@appearancebox\space add %
|
|
exch \strip@pt\ht\atfi@appearancebox\space add%
|
|
]%
|
|
/BP pdfmark %
|
|
gsave %
|
|
currentpoint %
|
|
2 copy translate %
|
|
72.27 Resolution div 72.27 VResolution div neg scale %
|
|
exch neg exch neg translate%
|
|
}%
|
|
\usebox{\atfi@appearancebox}%
|
|
\atfi@literal{%
|
|
grestore%
|
|
[%
|
|
/EP pdfmark%
|
|
}%
|
|
}%
|
|
% do not allocate any space for xobject definition
|
|
\dp\ltx@zero=\z@
|
|
\ht\ltx@zero=\z@
|
|
\wd\ltx@zero=\z@
|
|
\mbox{\usebox\ltx@zero}%
|
|
\endgroup
|
|
}
|
|
\def\atfi@refxform#1{%
|
|
\raisebox{-\atfi@appearancedepth}{%
|
|
\atfi@literal{%
|
|
gsave %
|
|
currentpoint translate %
|
|
Resolution 72 div VResolution neg 72 div scale%
|
|
[#1 /SP pdfmark % hash-ok
|
|
grestore%
|
|
}%
|
|
\makebox[\atfi@appearancewidth]{}%
|
|
}%
|
|
\rule{0pt}{\atfi@appearanceheight}%
|
|
}
|
|
\def\atfi@insert@file@annot#1{%
|
|
\rule{0pt}{0pt}%
|
|
\ifatfi@appearance
|
|
\def\atfi@appearance@dict{%
|
|
/AP<<%
|
|
/N \atfi@appearanceobj
|
|
/R \atfi@appearanceobj
|
|
/D \atfi@appearanceobj
|
|
>>%
|
|
}%
|
|
\else
|
|
\let\atfi@appearance@dict\ltx@empty
|
|
\fi
|
|
\ltx@IfUndefined{atfi@fsobj@#1}{%
|
|
\stepcounter{atfi@obj}%
|
|
\expandafter
|
|
\xdef\csname atfi@fsobj@#1\endcsname{\theatfi@obj}%
|
|
\begingroup
|
|
\hypersetup{unicode=false}%
|
|
\atfi@pdfstringdef\atfi@file{#1}%
|
|
\atfi@literal{%
|
|
[%
|
|
/_objdef \theatfi@obj
|
|
/type/dict%
|
|
/OBJ pdfmark%
|
|
[%
|
|
\theatfi@obj
|
|
<<%
|
|
/Type/Filespec%
|
|
/F(\atfi@file)%
|
|
\ifx\atfi@ucfilespec\ltx@empty
|
|
\else
|
|
/UF(\atfi@ucfilespec)%
|
|
\fi
|
|
/EF<<%
|
|
/F \csname atfi@fileobj@#1\endcsname
|
|
>>%
|
|
>>%
|
|
/PUT pdfmark%
|
|
}%
|
|
\endgroup
|
|
}{%
|
|
}%
|
|
\atfi@literal{%
|
|
[%
|
|
/Subtype/FileAttachment%
|
|
\atfi@icon
|
|
\atfi@color@annot
|
|
\atfi@author
|
|
\atfi@date
|
|
\atfi@annotname
|
|
\atfi@description
|
|
\atfi@subject
|
|
\atfi@appearance@dict
|
|
/F \theatfi@flags
|
|
/FS \csname atfi@fsobj@#1\endcsname
|
|
/Rect[%
|
|
currentpoint %
|
|
\strip@pt\dimexpr\atfi@scale\atfi@appearancedepth\relax
|
|
\space atfi_pdftodvipsy add %
|
|
currentpoint %
|
|
exch %
|
|
\strip@pt\dimexpr\atfi@scale\atfi@appearancewidth\relax
|
|
\space atfi_pdftodvipsx add %
|
|
exch %
|
|
\strip@pt\dimexpr\atfi@scale\atfi@appearanceheight\relax
|
|
\space atfi_pdftodvipsy sub %
|
|
]%
|
|
/ANN pdfmark%
|
|
}%
|
|
\rule{0pt}{\atfi@appearanceheight}%
|
|
\rule[-\atfi@appearancedepth]{0pt}{\atfi@appearancedepth}%
|
|
\rule{\atfi@appearancewidth}{0pt}%
|
|
}
|
|
\endinput
|
|
%%
|
|
%% End of file `atfi-dvips.def'.
|
|
|