diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/oberdiek/embedfile.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/oberdiek/embedfile.dtx | 327 |
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 |