summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/oberdiek/attachfile2.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/oberdiek/attachfile2.dtx')
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/attachfile2.dtx618
1 files changed, 329 insertions, 289 deletions
diff --git a/Master/texmf-dist/source/latex/oberdiek/attachfile2.dtx b/Master/texmf-dist/source/latex/oberdiek/attachfile2.dtx
index 78949098baf..18fc6f4fd78 100644
--- a/Master/texmf-dist/source/latex/oberdiek/attachfile2.dtx
+++ b/Master/texmf-dist/source/latex/oberdiek/attachfile2.dtx
@@ -59,7 +59,7 @@
%
%<*ignore>
\begingroup
- \def\x{LaTeX2e}
+ \def\x{LaTeX2e}%
\expandafter\endgroup
\ifcase 0\ifx\install y1\fi\expandafter
\ifx\csname processbatchFile\endcsname\relax\else1\fi
@@ -70,7 +70,7 @@
\input docstrip.tex
\Msg{************************************************************************}
\Msg{* Installation}
-\Msg{* Package: attachfile2 2006/08/16 v2.2 attach files into PDF (HO)}
+\Msg{* Package: attachfile2 2007/04/11 v2.3 attach files into PDF (HO)}
\Msg{************************************************************************}
\keepsilent
@@ -138,25 +138,25 @@ and the derived files
%<*driver>
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{attachfile2.drv}%
- [2006/08/16 v2.2 attach files into PDF (HO)]
+ [2007/04/11 v2.3 attach files into PDF (HO)]%
\documentclass{ltxdoc}
\usepackage{holtxdoc}
\AtBeginDocument{%
\csname @ifpackageloaded\endcsname{dtx-attach}{%
- \embedfile[
- stringmethod=escape,
- mimetype=text/plain,
- desc={Helper Perl script for package `attachfile2'}
+ \embedfile[%
+ stringmethod=escape,%
+ mimetype=text/plain,%
+ desc={Helper Perl script for package `attachfile2'}%
]{pdfatfi.pl}%
}{}%
}
\begin{document}
- \DocInput{attachfile2.dtx}
+ \DocInput{attachfile2.dtx}%
\end{document}
%</driver>
% \fi
%
-% \CheckSum{1382}
+% \CheckSum{1383}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -177,7 +177,7 @@ and the derived files
% \GetFileInfo{attachfile2.drv}
%
% \title{The \xpackage{attachfile2} package}
-% \date{2006/08/16 v2.2}
+% \date{2007/04/11 v2.3}
% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}}
%
% \maketitle
@@ -334,7 +334,7 @@ and the derived files
%<*package>
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{attachfile2}%
- [2006/08/16 v2.2 attach files into PDF (HO)]
+ [2007/04/11 v2.3 attach files into PDF (HO)]%
% \end{macrocode}
% \begin{macrocode}
\RequirePackage{ifpdf}
@@ -480,7 +480,7 @@ and the derived files
% time options timezone and date
\def\atfi@pad@ii#1{%
- \ifnum#1>9
+ \ifnum#1>9 %
\number#1%
\else
0\number#1%
@@ -628,16 +628,16 @@ and the derived files
\ifatfi@draft
\def\atfi@dummy@pushpin{%
\raisebox{-1.25bp}{\parbox[b][14bp]{24bp}{}}%
- }
+ }%
\DeclareRobustCommand{\textattachfile}[3][]{%
\notextattachfile[#1]{#3}%
- }
+ }%
\DeclareRobustCommand{\noattachfile}[1][]{%
\notextattachfile[#1]{\atfi@dummy@pushpin}%
- }
+ }%
\DeclareRobustCommand{\attachfile}[2][]{%
\noattachfile[#1]%
- }
+ }%
\expandafter\endinput
\fi
@@ -938,7 +938,7 @@ and the derived files
\let\atfi@writefile\@gobble
\else
\newwrite\atfi@stream
- \immediate\openout\atfi@stream=\jobname.atfi
+ \immediate\openout\atfi@stream=\jobname.atfi\relax
\immediate\write\atfi@stream{%
\string\attachfile@timezone{\atfi@timezone}%
}%
@@ -1096,7 +1096,7 @@ and the derived files
%<*pdftex>
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{atfipdftex.def}%
- [2006/08/16 v2.2 attachfile2 driver for pdfTeX (HO)]
+ [2007/04/11 v2.3 attachfile2 driver for pdfTeX (HO)]%
% \end{macrocode}
% \begin{macrocode}
\let\atfi@literal\pdfliteral
@@ -1233,7 +1233,7 @@ and the derived files
%<*dvips>
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{atfipdftex.def}%
- [2006/08/16 v2.2 attachfile2 driver for dvips (HO)]
+ [2007/04/11 v2.3 attachfile2 driver for dvips (HO)]%
% \end{macrocode}
% \begin{macrocode}
\def\atfi@literal#1{%
@@ -1247,194 +1247,194 @@ and the derived files
% --- macros for graphics data ---
\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
- {
+ 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
+ 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
+ /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
+ /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
+ /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
+ /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
+ 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
+ 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_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_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
+ } atfi_?pdfmark %
+ end%
}
\def\atfi@GSAVE{gsave }
@@ -1453,10 +1453,10 @@ and the derived files
\def\atfi@RECTSTROKEFILL#1#2#3{%
#3%
#1%
- gsave atfi_rectfill grestore
+ gsave atfi_rectfill grestore %
#2%
#3%
- atfi_rectstroke
+ atfi_rectstroke %
#1%
}
\def\atfi@SETMITERLIMIT{setmiterlimit }
@@ -1499,14 +1499,14 @@ and the derived files
\x
}%
\atfi@literal{%
- /atfi_filename (\atfi@psfilename) def
- atfi_filename status
- {
+ /atfi_filename(\atfi@psfilename)def %
+ atfi_filename status%
+ {%
% ok: file found
% save parameters of status command
- /atfi_created exch def
- /atfi_referenced exch def
- /atfi_size exch def
+ /atfi_created exch def%
+ /atfi_referenced exch def%
+ /atfi_size exch def %
pop % drop parameter "pages" (storage space), never needed
% ghostscript:
% created: stat.st_ctime
@@ -1523,63 +1523,63 @@ and the derived files
% TODO: how are these values interpreted by other distiller
% programs?
%
- [
+ [%
/_objdef \theatfi@obj
- /type /stream
- /OBJ pdfmark
- [
+ /type/stream%
+ /OBJ pdfmark%
+ [%
\theatfi@obj
- <<
- /Type /EmbeddedFile
+ <<%
+ /Type/EmbeddedFile%
\atfi@mimetype
- /Params
- <<
+ /Params%
+ <<%
\atfi@params
%
- /Size atfi_size
+ /Size atfi_size%
%
- /product where
- {
- pop
+ /product where%
+ {%
+ pop %
% check for ghostscript
- product (Ghostscript) search
- {
- pop pop pop
+ product (Ghostscript) search%
+ {%
+ pop pop pop %
% ghostscript is running
%
\ifatfi@creationdate
\else
false % TODO: test for windows
- {
- /CreationDate atfi_created atfi_convert_date
- } if
+ {%
+ /CreationDate atfi_created atfi_convert_date%
+ } if%
\fi
\ifatfi@moddate
\else
- /ModDate atfi_referenced atfi_convert_date
+ /ModDate atfi_referenced atfi_convert_date%
\fi
- } if
+ } if%
%
% look for MD5Encode filter and calculate CheckSum
- } if
+ } if %
\ifatfi@checksum
\else
- atfi_filename atfi_calc_checksum
+ atfi_filename atfi_calc_checksum%
\fi
- >>
- >>
- /PUT pdfmark
- [
+ >>%
+ >>%
+ /PUT pdfmark%
+ [%
\theatfi@obj
- atfi_filename (r) file
- /PUT pdfmark
- [
+ atfi_filename (r) file%
+ /PUT pdfmark%
+ [%
\theatfi@obj
- /CLOSE pdfmark
- }{
+ /CLOSE pdfmark%
+ }{%
% error: file not found
% currently nothing is done
- } ifelse
+ } ifelse%
}%
\endgroup
}{%
@@ -1595,19 +1595,19 @@ and the derived files
\stepcounter{atfi@obj}%
\edef\atfi@appearanceobj{\theatfi@obj}%
\atfi@literal{%
- [
+ [%
/_objdef \atfi@appearanceobj
- /BBox [
- 0
- 0
- \strip@pt\wd\atfi@appearancebox\space atfi_pttobp
+ /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
+ +\ht\atfi@appearancebox\relax\space atfi_pttobp%
+ ]%
+ /BP pdfmark %
\csname atfi@acro\atfi@icon@icon @data\endcsname
- [
- /EP pdfmark
+ [%
+ /EP pdfmark%
}%
}
% output: \atfi@appearanceobj
@@ -1618,27 +1618,27 @@ and the derived files
\begingroup
\setbox0=\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
+ /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
+ grestore%
+ [%
+ /EP pdfmark%
}%
}%
% do not allocate any space for xobject definition
@@ -1652,11 +1652,11 @@ and the derived files
\def\atfi@refxform#1{%
\raisebox{-\atfi@appearancedepth}{%
\atfi@literal{%
- gsave
- currentpoint translate
- Resolution 72 div VResolution neg 72 div scale
- [ #1 /SP pdfmark
- grestore
+ gsave %
+ currentpoint translate %
+ Resolution 72 div VResolution neg 72 div scale%
+ [#1 /SP pdfmark %
+ grestore%
}%
\makebox[\atfi@appearancewidth]{}%
}%
@@ -1683,25 +1683,25 @@ and the derived files
\expandafter\xdef\csname atfi@fsobj@#1\endcsname{\theatfi@obj}%
\atfi@pdfstringdef\atfi@file{#1}%
\atfi@literal{%
- [
+ [%
/_objdef \theatfi@obj
- /type /dict
- /OBJ pdfmark
- [
+ /type/dict%
+ /OBJ pdfmark%
+ [%
\theatfi@obj
- <<
- /Type /Filespec
- /F (\atfi@file)
- /EF <<
+ <<%
+ /Type/Filespec%
+ /F(\atfi@file)%
+ /EF<<%
/F \csname atfi@fileobj@#1\endcsname
- >>
- >>
- /PUT pdfmark
+ >>%
+ >>%
+ /PUT pdfmark%
}%
}{%
}%
\atfi@literal{%
- [
+ [%
/Subtype/FileAttachment%
\atfi@icon
\atfi@color
@@ -1713,17 +1713,17 @@ and the derived files
\atfi@appearance@dict
/F \theatfi@flags
/FS \csname atfi@fsobj@#1\endcsname
- /Rect [
- currentpoint
+ /Rect[%
+ currentpoint %
\strip@pt\dimexpr\atfi@scale\atfi@appearancedepth\relax
- \space atfi_pdftodvipsy add
- currentpoint
+ \space atfi_pdftodvipsy add %
+ currentpoint %
exch \strip@pt\dimexpr\atfi@scale\atfi@appearancewidth\relax
- \space atfi_pdftodvipsx add
+ \space atfi_pdftodvipsx add %
exch \strip@pt\dimexpr\atfi@scale\atfi@appearanceheight\relax
- \space atfi_pdftodvipsy sub
- ]
- /ANN pdfmark
+ \space atfi_pdftodvipsy sub %
+ ]%
+ /ANN pdfmark%
}%
\rule{0pt}{\atfi@appearanceheight}%
\rule[-\atfi@appearancedepth]{0pt}{\atfi@appearancedepth}%
@@ -1768,8 +1768,8 @@ $^W=1; # turn warning on
#
my $file = "pdfatfi.pl";
my $program = uc($&) if $file =~ /^\w+/;
-my $version = "2.2";
-my $date = "2006/08/16";
+my $version = "2.3";
+my $date = "2007/04/11";
my $author = "Heiko Oberdiek";
my $copyright = "Copyright (c) 2005, 2006 by $author.";
#
@@ -1931,7 +1931,9 @@ __END__
%
% \section{Installation}
%
-% \paragraph{CTAN.} This package is available on
+% \subsection{Download}
+%
+% \paragraph{Package.} This package is available on
% CTAN\footnote{\url{ftp://ftp.ctan.org/tex-archive/}}:
% \begin{description}
% \item[\CTAN{macros/latex/contrib/oberdiek/attachfile2.dtx}] The source file.
@@ -1939,6 +1941,38 @@ __END__
% \item[\CTAN{macros/latex/contrib/oberdiek/pdfatfi.pl}] Script.
% \end{description}
%
+%
+% \paragraph{Bundle.} All the packages of the bundle `oberdiek'
+% are also available in a TDS compliant ZIP archive. There
+% the packages are already unpacked and the documentation files
+% are generated. The files and directories obey the TDS standard.
+% \begin{description}
+% \item[\CTAN{macros/latex/contrib/oberdiek/oberdiek-tds.zip}]
+% \end{description}
+%
+% \subsection{Bundle installation}
+%
+% \paragraph{Unpacking.} Unpack the \xfile{oberdiek-tds.zip} in the
+% TDS tree (also known as \xfile{texmf} tree) of your choice.
+% Example (linux):
+% \begin{quote}
+% |unzip oberdiek-tds.zip -d ~/texmf|
+% \end{quote}
+%
+% \paragraph{Script installation.}
+% Check the directory \xfile{TDS:scripts/oberdiek/} for
+% scripts that need further installation steps.
+% Package \xpackage{attachfile2} comes with the Perl script
+% \xfile{pdfatfi.pl} that should be installed in such a way
+% that it can be called as \texttt{pdfatfi}.
+% Example (linux):
+% \begin{quote}
+% |chmod +x scripts/oberdiek/pdfatfi.pl|\\
+% |cp scripts/oberdiek/pdfatfi.pl /usr/local/bin/|
+% \end{quote}
+%
+% \subsection{Package installation}
+%
% \paragraph{Unpacking.} The \xfile{.dtx} file is a self-extracting
% \docstrip\ archive. The files are extracted by running the
% \xfile{.dtx} through \plainTeX:
@@ -1972,12 +2006,14 @@ __END__
% TDS installing feature, then some files can already be in the right
% place, see the documentation of \docstrip.
%
-% \paragraph{Refresh file databases.} If your \TeX~distribution
-% (\teTeX, \mikTeX, \dots) rely on file databases, you must refresh
+% \subsection{Refresh file name databases}
+%
+% If your \TeX~distribution
+% (\teTeX, \mikTeX, \dots) relies on file name databases, you must refresh
% these. For example, \teTeX\ users run \verb|texhash| or
% \verb|mktexlsr|.
%
-% \paragraph{Script install.}
+% \subsection{Script installation}
% This package comes with a Perl script \xfile{pdfatfi.pl}.
% Install it somewhere so that it is executed, when it is called
% as \verb|pdfatfi| on the command line. Example for
@@ -2100,6 +2136,10 @@ __END__
% \item
% A little documentation.
% \end{Version}
+% \begin{Version}{2007/04/11 v2.3}
+% \item
+% Line ends sanitized.
+% \end{Version}
% \end{History}
%
% \PrintIndex