summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/oberdiek/embedfile.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/oberdiek/embedfile.dtx')
-rw-r--r--Master/texmf-dist/source/latex/oberdiek/embedfile.dtx327
1 files changed, 261 insertions, 66 deletions
diff --git a/Master/texmf-dist/source/latex/oberdiek/embedfile.dtx b/Master/texmf-dist/source/latex/oberdiek/embedfile.dtx
index f0734245cb7..c2ce95e1f4a 100644
--- a/Master/texmf-dist/source/latex/oberdiek/embedfile.dtx
+++ b/Master/texmf-dist/source/latex/oberdiek/embedfile.dtx
@@ -17,7 +17,9 @@
% This work consists of the main source file embedfile.dtx
% and the derived files
% embedfile.sty, embedfile.pdf, embedfile.ins, embedfile.drv,
-% dtx-attach.sty, embedfile-example-plain.tex.
+% dtx-attach.sty, embedfile-example-plain.tex,
+% embedfile-test1.tex, embedfile-test2.tex,
+% embedfile-test3.tex.
%
% Distribution:
% CTAN:macros/latex/contrib/oberdiek/embedfile.dtx
@@ -54,6 +56,9 @@
% TDS:tex/latex/oberdiek/dtx-attach.sty
% TDS:doc/latex/oberdiek/embedfile.pdf
% TDS:doc/latex/oberdiek/embedfile-example-plain.tex
+% TDS:doc/latex/oberdiek/embedfile-test1.tex
+% TDS:doc/latex/oberdiek/embedfile-test2.tex
+% TDS:doc/latex/oberdiek/embedfile-test3.tex
% TDS:source/latex/oberdiek/embedfile.dtx
%
%<*ignore>
@@ -69,7 +74,7 @@
\input docstrip.tex
\Msg{************************************************************************}
\Msg{* Installation}
-\Msg{* Package: embedfile 2007/04/11 v1.1 embed files into PDF (HO)}
+\Msg{* Package: embedfile 2007/09/09 v1.2 embed files into PDF (HO)}
\Msg{************************************************************************}
\keepsilent
@@ -96,7 +101,9 @@ This Current Maintainer of this work is Heiko Oberdiek.
This work consists of the main source file embedfile.dtx
and the derived files
embedfile.sty, embedfile.pdf, embedfile.ins, embedfile.drv,
- dtx-attach.sty, embedfile-example-plain.tex.
+ dtx-attach.sty, embedfile-example-plain.tex,
+ embedfile-test1.tex, embedfile-test2.tex,
+ embedfile-test3.tex.
\endpreamble
@@ -108,6 +115,9 @@ and the derived files
\file{dtx-attach.sty}{\from{embedfile.dtx}{dtxattach}}%
\usedir{doc/latex/oberdiek}%
\file{embedfile-example-plain.tex}{\from{embedfile.dtx}{exampleplain}}%
+ \file{embedfile-test1.tex}{\from{embedfile.dtx}{test1}}%
+ \file{embedfile-test2.tex}{\from{embedfile.dtx}{test2}}%
+ \file{embedfile-test3.tex}{\from{embedfile.dtx}{test3}}%
}
\obeyspaces
@@ -133,7 +143,7 @@ and the derived files
%<*driver>
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{embedfile.drv}%
- [2007/04/11 v1.1 embed files into PDF (HO)]%
+ [2007/09/09 v1.2 embed files into PDF (HO)]%
\documentclass{ltxdoc}
\usepackage{holtxdoc}
\begin{document}
@@ -142,7 +152,7 @@ and the derived files
%</driver>
% \fi
%
-% \CheckSum{0}
+% \CheckSum{637}
%
% \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
@@ -163,14 +173,14 @@ and the derived files
% \GetFileInfo{embedfile.drv}
%
% \title{The \xpackage{embedfile} package}
-% \date{2007/04/11 v1.1}
+% \date{2007/09/09 v1.2}
% \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}}
%
% \maketitle
%
% \begin{abstract}
% This package embeds files to a PDF document.
-% Currently \pdfTeX\ >= 1.30 in PDF mode is supported only.
+% Currently the only supported driver is \pdfTeX\ $>=$ 1.30 in PDF mode.
% \end{abstract}
%
% \tableofcontents
@@ -234,7 +244,7 @@ and the derived files
% safely use \cs{embedfile} before \verb|\end{document}|.
% Embedding files using \cs{AtEndDocument} will only work,
% if \cs{AtEndDocument} is called before loading the package
-% \xpackage{embedfile}
+% \xpackage{embedfile}.
%
% The \meta{options} are give as key value pairs. The following
% keys are supported:
@@ -266,13 +276,22 @@ and the derived files
% the use of \cs{pdfescapestring}.
% \end{description}
%
+% \begin{declcs}{embedfilefinish}
+% \end{declcs}
+% The list of all embedded files must be added as data structure
+% in the PDF file. In case of \LaTeX\ this is automatically done.
+% The package uses \cs{AtEndDocument}. Then the list of all
+% files should be known. However, \plainTeX\ does not know
+% about \cs{AtEndDocument}. Thus the user must call
+% \cs{embedfilefinish} at the end of the document
+% after the last file is embedded.
+%
% \subsection{Examples}
%
% \subsubsection{\plainTeX}\label{sec:plain}
%
-% The package can be used with \plainTeX. Because is uses
-% package \xpackage{keyval} and \cs{@ifnextchar}, it needs
-% a little help from \xfile{miniltx.tex}.
+% The package can be used with \plainTeX. It can be used
+% with or without help from \xfile{miniltx.tex}.
%
% If additionally package \xpackage{keyval} (\xpackage{graphicx})
% is needed, load it first. Then package \xpackage{embedfile} avoids
@@ -330,8 +349,8 @@ This example document contains three embedded files.
%<*dtxattach>
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{dtx-attach}
- [2007/04/11 v1.1 Embed \string\jobname.dtx (HO)]%
-\RequirePackage{embedfile}[2007/04/11]
+ [2007/09/09 v1.2 Embed \string\jobname.dtx (HO)]%
+\RequirePackage{embedfile}[2007/09/09]
\embedfile[%
stringmethod=escape,%
mimetype=plain/text,%
@@ -407,71 +426,59 @@ This example document contains three embedded files.
\fi
\expandafter\x\csname ver@embedfile.sty\endcsname
\ProvidesPackage{embedfile}%
- [2007/04/11 v1.1 embed files into PDF (HO)]
+ [2007/09/09 v1.2 embed files into PDF (HO)]
% \end{macrocode}
%
+% \subsection{Catcodes}
+%
% \begin{macrocode}
-\edef\EmbedFileRestoreCatcodes{%
- \catcode39 \the\catcode39 % '
- \catcode40 \the\catcode40 % (
- \catcode41 \the\catcode41 % )
- \catcode47 \the\catcode47 % /
- \catcode60 \the\catcode60 % <
- \catcode62 \the\catcode62 % >
- \catcode64 \the\catcode64 % @
- \catcode91 \the\catcode91 % [
- \catcode93 \the\catcode93 % ]
- \catcode96 \the\catcode96 % `
+\expandafter\edef\csname EmbedFile@AtEnd\endcsname{%
+ \catcode64 \the\catcode64\relax
}
-\catcode39 12 % '
-\catcode40 12 % (
-\catcode41 12 % )
-\catcode47 12 % /
-\catcode60 12 % <
-\catcode62 12 % >
\catcode64 11 % @
-\catcode91 12 % [
-\catcode93 12 % ]
-\catcode96 12 % `
+\def\TMP@EnsureCode#1#2{%
+ \edef\EmbedFile@AtEnd{%
+ \EmbedFile@AtEnd
+ \catcode#1 \the\catcode#1\relax
+ }%
+ \catcode#1 #2\relax
+}
+\TMP@EnsureCode{39}{12}% '
+\TMP@EnsureCode{40}{12}% (
+\TMP@EnsureCode{41}{12}% )
+\TMP@EnsureCode{44}{12}% ,
+\TMP@EnsureCode{46}{12}% .
+\TMP@EnsureCode{47}{12}% /
+\TMP@EnsureCode{58}{12}% :
+\TMP@EnsureCode{60}{12}% <
+\TMP@EnsureCode{61}{12}% =
+\TMP@EnsureCode{62}{12}% >
+\TMP@EnsureCode{91}{12}% [
+\TMP@EnsureCode{93}{12}% ]
+\TMP@EnsureCode{96}{12}% `
% \end{macrocode}
%
% \subsection{Tools}
%
-% \begin{macro}{\EmbedFile@PackageError}
+% \begin{macro}{\EmbedFile@RequirePackage}
% \begin{macrocode}
\begingroup\expandafter\expandafter\expandafter\endgroup
-\expandafter\ifx\csname PackageError\endcsname\relax
- \def\EmbedFile@PackageError#1#2{%
- \errhelp{#2}%
- \errmessage{Package embedfile Error: #1.}%
+\expandafter\ifx\csname RequirePackage\endcsname\relax
+ \def\EmbedFile@RequirePackage#1[#2]{%
+ \input #1.sty\relax
}%
\else
- \def\EmbedFile@PackageError#1#2{%
- \begingroup
- \let\on@line\empty
- \PackageError{embedfile}{#1}{#2}%
- \endgroup
- }%
+ \let\EmbedFile@RequirePackage\RequirePackage
\fi
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\EmbedFile@RequirePackage}
+% \begin{macro}{\EmbedFile@PackageError}
% \begin{macrocode}
-\begingroup\expandafter\expandafter\expandafter\endgroup
-\expandafter\ifx\csname RequirePackage\endcsname\relax
- \def\EmbedFile@RequirePackage#1#2{%
- \expandafter\ifx\csname #2\encsname\relax
- \input #1.sty\relax
- \fi
- }%
-\else
- \def\EmbedFile@RequirePackage#1#2{%
- \expandafter\ifx\csname #2\endcsname\relax
- \RequirePackage{#1}%
- \fi
- }%
-\fi
+\EmbedFile@RequirePackage{infwarerr}[2007/09/09]%
+\def\EmbedFile@PackageError{%
+ \@PackageError{embedfile}%
+}
% \end{macrocode}
% \end{macro}
%
@@ -479,15 +486,16 @@ This example document contains three embedded files.
%
% Load package \xpackage{ifpdf} and check mode.
% \begin{macrocode}
-\EmbedFile@RequirePackage{ifpdf}{ifpdf}
+\EmbedFile@RequirePackage{ifpdf}[2007/09/09]
\ifpdf
\else
\EmbedFile@PackageError{%
Missing pdfTeX in PDF mode%
}{%
- Currently other drivers are not supported. Package loading is aborted.%
+ Currently other drivers are not supported. %
+ Package loading is aborted.%
}%
- \EmbedFileRestoreCatcodes
+ \EmbedFile@AtEnd
\expandafter\endinput
\fi
% \end{macrocode}
@@ -500,7 +508,7 @@ This example document contains three embedded files.
}{%
At least version 1.30 is necessary. Package loading is aborted.%
}%
- \EmbedFileRestoreCatcodes
+ \EmbedFile@AtEnd
\expandafter\endinput
\fi
% \end{macrocode}
@@ -508,7 +516,100 @@ This example document contains three embedded files.
% \subsection{Key value definitions}
%
% \begin{macrocode}
-\EmbedFile@RequirePackage{keyval}{define@key}
+\expandafter\ifx\csname define@key\endcsname\relax
+ \chardef\EmbedFile@plain=\z@
+ \def\EmbedFile@temp#1{%
+ \begingroup\expandafter\expandafter\expandafter\endgroup
+ \expandafter\ifx\csname#1\endcsname\relax
+ \chardef\EmbedFile@plain=\@ne
+ \fi
+ }%
+ \EmbedFile@temp{NeedsTeXFormat}%
+ \EmbedFile@temp{ProvidesPackage}%
+ \EmbedFile@temp{DeclareOption}%
+ \EmbedFile@temp{ExecuteOptions}%
+ \EmbedFile@temp{ProcessOptions}%
+ \ifnum\EmbedFile@plain=\@ne
+ \def\EmbedFile@temp#1{%
+ \expandafter\let\csname EmbedFile@Org#1\expandafter\endcsname
+ \csname#1\endcsname
+ \expandafter\def\csname#1\endcsname
+ }%
+ \EmbedFile@temp{NeedsTeXFormat}#1{}%
+ \EmbedFile@temp{ProvidesPackage}#1[#2]{}% hash-ok
+ \EmbedFile@temp{DeclareOption}#1{}%
+ \EmbedFile@temp{ExecuteOptions}#1{}%
+ \EmbedFile@temp{ProcessOptions}{}%
+% \end{macrocode}
+% \begin{macro}{\KV@errx}
+% \LaTeX's option processing is not available with
+% \plainTeX. Thus we define the default error
+% command \cs{KV@errx} here, also using package
+% \xpackage{infwarerr}'s \cs{@PackageError}.
+% \begin{macrocode}
+ \def\KV@errx#1{%
+ \@PackageError{keyval}{#1}\@ehc
+ }%
+% \end{macrocode}
+% \end{macro}
+% Other macros from \LaTeX's kernel that are used by
+% package \xpackage{keyval}.
+% \begin{macro}{\@ifnextchar}
+% \begin{macrocode}
+ \expandafter\ifx\csname @ifnextchar\endcsname\relax
+ \def\@ifnextchar#1#2#3{%
+ \let\reserved@d=#1%
+ \def\reserved@a{#2}%
+ \def\reserved@b{#3}%
+ \futurelet\@let@token\@ifnch
+ }%
+ \def\@ifnch{%
+ \ifx\@let@token\@sptoken
+ \let\reserved@c\@xifnch
+ \else
+ \ifx\@let@token\reserved@d
+ \let\reserved@c\reserved@a
+ \else
+ \let\reserved@c\reserved@b
+ \fi
+ \fi
+ \reserved@c
+ }%
+ \begingroup
+ \def\:{\global\let\@sptoken= }%
+ \: % this makes \@sptoken a space token
+ \def\:{\@xifnch}%
+ \expandafter\gdef\: {%
+ \futurelet\@let@token\@ifnch
+ }%
+ \endgroup
+ \fi
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@namedef}
+% \begin{macrocode}
+ \expandafter\ifx\csname @namedef\endcsname\relax
+ \def\@namedef#1{%
+ \expandafter\def\csname#1\endcsname
+ }%
+ \fi
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+ \fi
+ \EmbedFile@RequirePackage{keyval}[1999/03/16]%
+ \ifnum\EmbedFile@plain=\@ne
+ \def\EmbedFile@temp#1{%
+ \expandafter\let\csname#1\expandafter\endcsname
+ \csname EmbedFile@Org#1\endcsname
+ }%
+ \EmbedFile@temp{NeedsTeXFormat}%
+ \EmbedFile@temp{ProvidesPackage}%
+ \EmbedFile@temp{DeclareOption}%
+ \EmbedFile@temp{ExecuteOptions}%
+ \EmbedFile@temp{ProcessOptions}%
+ \fi
+\fi
% \end{macrocode}
%
% \begin{macrocode}
@@ -732,9 +833,94 @@ This example document contains three embedded files.
% \end{macrocode}
%
% \begin{macrocode}
-\EmbedFileRestoreCatcodes
+\EmbedFile@AtEnd
%</package>
% \end{macrocode}
+%
+% \section{Test}
+%
+% \subsection{Catcode checks for loading}
+%
+% \begin{macrocode}
+%<*test1>
+% \end{macrocode}
+% \begin{macrocode}
+\catcode`\@=11 %
+\def\RestoreCatcodes{}
+\count@=0 %
+\loop
+ \edef\RestoreCatcodes{%
+ \RestoreCatcodes
+ \catcode\the\count@=\the\catcode\count@\relax
+ }%
+\ifnum\count@<255 %
+ \advance\count@\@ne
+\repeat
+
+\def\RangeCatcodeInvalid#1#2{%
+ \count@=#1\relax
+ \loop
+ \catcode\count@=15 %
+ \ifnum\count@<#2\relax
+ \advance\count@\@ne
+ \repeat
+}
+\def\Test{%
+ \RangeCatcodeInvalid{0}{47}%
+ \RangeCatcodeInvalid{58}{64}%
+ \RangeCatcodeInvalid{91}{96}%
+ \RangeCatcodeInvalid{123}{255}%
+ \catcode`\@=12 %
+ \catcode`\\=0 %
+ \catcode`\{=1 %
+ \catcode`\}=2 %
+ \catcode`\#=6 %
+ \catcode`\[=12 %
+ \catcode`\]=12 %
+ \catcode`\%=14 %
+ \catcode`\ =10 %
+ \catcode13=5 %
+ \input embedfile.sty\relax
+ \RestoreCatcodes
+}
+\Test
+\csname @@end\endcsname
+\end
+% \end{macrocode}
+% \begin{macrocode}
+%</test1>
+% \end{macrocode}
+%
+% \subsection{Simple test}
+%
+% \begin{macrocode}
+%<*test2>
+\input embedfile.sty\relax
+\embedfile[%
+ stringmethod=escape,%
+ mimetype=plain/text,%
+ desc={LaTeX docstrip source archive for package `embedfile'}%
+]{embedfile.dtx}
+\nopagenumbers
+Test (plain-\TeX): {\tt embedfile.dtx} should be embedded.%
+\embedfilefinish
+\bye
+%</test2>
+% \end{macrocode}
+% \begin{macrocode}
+%<*test3>
+\NeedsTeXFormat{LaTeX2e}
+\let\SavedJobname\jobname
+\def\jobname{embedfile}
+\RequirePackage{dtx-attach}[2007/09/09]
+\let\jobname\SavedJobname
+\documentclass{minimal}
+\begin{document}
+ Test (\LaTeX): \texttt{embedfile.dtx} should be embedded.%
+\end{document}
+%</test3>
+% \end{macrocode}
+%
% \section{Installation}
%
% \subsection{Download}
@@ -798,6 +984,9 @@ This example document contains three embedded files.
% dtx-attach.sty & tex/latex/oberdiek/dtx-attach.sty\\
% embedfile.pdf & doc/latex/oberdiek/embedfile.pdf\\
% embedfile-example-plain.tex & doc/latex/oberdiek/embedfile-example-plain.tex\\
+% embedfile-test1.tex & doc/latex/oberdiek/embedfile-test1.tex\\
+% embedfile-test2.tex & doc/latex/oberdiek/embedfile-test2.tex\\
+% embedfile-test3.tex & doc/latex/oberdiek/embedfile-test3.tex\\
% embedfile.dtx & source/latex/oberdiek/embedfile.dtx\\
% \end{tabular}^^A
% }^^A
@@ -956,6 +1145,12 @@ This example document contains three embedded files.
% \item
% Line ends sanitized.
% \end{Version}
+% \begin{Version}{2007/09/09 v1.2}
+% \item
+% Fixes for plain-TeX, wrapper for package \xpackage{keyval} added.
+% \item
+% Catcode section rewritten.
+% \end{Version}
% \end{History}
%
% \PrintIndex