diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/oberdiek')
5 files changed, 846 insertions, 131 deletions
diff --git a/Master/texmf-dist/source/latex/oberdiek/embedfile.dtx b/Master/texmf-dist/source/latex/oberdiek/embedfile.dtx index 2d29417de97..3e0236455e8 100644 --- a/Master/texmf-dist/source/latex/oberdiek/embedfile.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/embedfile.dtx @@ -18,8 +18,8 @@ % and the derived files % embedfile.sty, embedfile.pdf, embedfile.ins, embedfile.drv, % dtx-attach.sty, embedfile-example-plain.tex, -% embedfile-test1.tex, embedfile-test2.tex, -% embedfile-test3.tex. +% embedfile-example-collection.tex, embedfile-test1.tex, +% embedfile-test2.tex, embedfile-test3.tex. % % Distribution: % CTAN:macros/latex/contrib/oberdiek/embedfile.dtx @@ -56,6 +56,7 @@ % 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-example-collection.tex % TDS:doc/latex/oberdiek/test/embedfile-test1.tex % TDS:doc/latex/oberdiek/test/embedfile-test2.tex % TDS:doc/latex/oberdiek/test/embedfile-test3.tex @@ -74,7 +75,7 @@ \input docstrip.tex \Msg{************************************************************************} \Msg{* Installation} -\Msg{* Package: embedfile 2007/09/09 v1.2 embed files into PDF (HO)} +\Msg{* Package: embedfile 2007/10/28 v2.0 embed files into PDF (HO)} \Msg{************************************************************************} \keepsilent @@ -102,8 +103,8 @@ 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, - embedfile-test1.tex, embedfile-test2.tex, - embedfile-test3.tex. + embedfile-example-collection.tex, embedfile-test1.tex, + embedfile-test2.tex, embedfile-test3.tex. \endpreamble @@ -115,6 +116,7 @@ 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-example-collection.tex}{\from{embedfile.dtx}{examplecollection}}% \usedir{doc/latex/oberdiek/test}% \file{embedfile-test1.tex}{\from{embedfile.dtx}{test1}}% \file{embedfile-test2.tex}{\from{embedfile.dtx}{test2}}% @@ -144,7 +146,7 @@ and the derived files %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{embedfile.drv}% - [2007/09/09 v1.2 embed files into PDF (HO)]% + [2007/10/28 v2.0 embed files into PDF (HO)]% \documentclass{ltxdoc} \usepackage{holtxdoc}[2007/10/21] \begin{document} @@ -153,7 +155,7 @@ and the derived files %</driver> % \fi % -% \CheckSum{637} +% \CheckSum{1223} % % \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 @@ -174,7 +176,7 @@ and the derived files % \GetFileInfo{embedfile.drv} % % \title{The \xpackage{embedfile} package} -% \date{2007/09/09 v1.2} +% \date{2007/10/28 v2.0} % \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} % % \maketitle @@ -275,6 +277,11 @@ and the derived files % \pdfTeX's \cs{pdfescapestring} is used. Value \verb|psd| % forces the use of \cs{pdfstringdef}, value \verb|escape| % the use of \cs{pdfescapestring}. +% \item[\xoption{\meta{key}.value}] Sets the value of a collection +% item property, see section \ref{sec:collection}. +% \item[\xoption{\meta{key}.prefix}] +% Sets the prefix of a collection item property, +% see section \ref{sec:collection}. % \end{description} % % \begin{declcs}{embedfilefinish} @@ -287,9 +294,119 @@ and the derived files % \cs{embedfilefinish} at the end of the document % after the last file is embedded. % +% \begin{declcs}{embedfilesetup} \M{options} +% \end{declcs} +% Options for \cs{embedfile} and collection support +% can be set in \cs{embedfilesetup}. +% +% \subsection{Collection support (PDF 1.7)} +% \label{sec:collection} +% +% Since PDF 1.7 the embedded files can form a \emph{collection} +% (sometimes referred as \emph{package}), the main document +% is called \emph{cover sheet}. See PDF specification +% 8.2.4 ``Collections'' and 3.10.5 ``Collection items'' \cite{pdfspec}. +% +% Usually Acrobat Reader 7 or 8 shows the +% embedded files in a table at the bottom with the following columns: +% \begin{quote} +% \begin{tabular}{@{}l|l|l|l@{}} +% Name & Description & Modified & Size\\ +% \hline +% \dots & \dots & \dots & \dots\\ +% \end{tabular} +% \end{quote} +% If the files form a collection, then they are displayed +% in a table left or top (depending on option \xoption{view}, +% see \cs{embedfilesetup}). +% +% Collection support is enabled automatically, if +% it is used. +% +% \begin{declcs}{embedfilesetup} \M{options} +% \end{declcs} +% The following options are supported in addition +% to options for \cs{embedfile}: +% \begin{description} +% \item[\xoption{view}] +% If the PDF file contains a collection, then Acrobat Reader 8 +% shows a line at the top below the menu bar and the toolbar. +% It shows the current selected file, icons for changing the +% view mode, an options menu. +% The initial mode how the collection is presented is +% set by this option \xoption{view}. +% The following modes/values are supported, the default is |details|: +% \begin{description} +% \item[\texttt{details}] The full collection table is displayed +% at the top below the collection bar. +% \item[\texttt{tile}] The files of the collection are shown +% in tile mode on the left. +% \item[\texttt{hidden}] The collection table is not shown. +% \end{description} +% \item[\xoption{initialfile}] +% Selects the file that is initially presented. Especially +% useful for an embedded PDF file that is then shown instead +% of the cover document. +% \end{description} +% +% \begin{declcs}{embedfilefield} \M{key} \M{options} +% \end{declcs} +% Macro \cs{embedfilefield} defines a column/field in the collection table. +% The name of the field is \meta{key}. +% \begin{description} +% \item[\xoption{type}] +% sets the type of the field. The supported values are: +% \begin{description} +% \item[\texttt{text}] A text field. Its value is set in +% \cs{embedfile} by option \xoption{\meta{key}.value}. +% \item[\texttt{date}] A date field. Its value is set in +% \cs{embedfile} by option \xoption{\meta{key}.value}. +% A special format is required, see ``3.8.3 Dates'' \cite{pdfspec}. +% \item[\texttt{number}] A field with an integer or float number. +% Its value is set in \cs{embedfile} by option +% \xoption{\meta{key}.value}. +% \item[\texttt{file}] The file name of the embedded file. +% \item[\texttt{desc}] The description text of the embedded file. It is +% set in \cs{embedfile} by option \xoption{desc}. +% \item[\texttt{moddate}] The modification date of the embedded file. +% \item[\texttt{size}] The size of the embedded file. +% \end{description} +% All types allow the use of a prefix that is disregarded by +% sorting. The prefix for this field is set in \cs{embedfile} by +% option \xoption{\meta{key}.prefix}. +% \item[\xoption{title}] sets the column title. +% \item[\xoption{visible}] controls whether the column is presented: +% \begin{description} +% \item[\texttt{true}] shows the column. +% \item[\texttt{false}] hides the column. +% \end{description} +% Default: \texttt{true} +% \item[\xoption{edit}] +% Allows the editing of field values. Does not seem to have an +% effect for Acrobat Reader. +% \begin{description} +% \item[\texttt{true}] enables the feature, if available (depends +% on the PDF viewer). +% \item[\texttt{false}] disables the feature. +% \end{description} +% Default: \texttt{false} +% \end{description} +% The order of \cs{embedfilefield} statements defines the order +% of the columns. +% +% \begin{declcs}{embedfilesort} \M{key-sort-list} +% \end{declcs} +% The sort order of the embedded files are controlled by +% macro \cs{embedfilesort}. \meta{key-sort-list} defines +% the sort order. The key is a field name defined by \cs{embedfilefield}. +% Its value is either \texttt{ascending} or \texttt{descending}. +% The default is \texttt{ascending}. +% % \subsection{Examples} +% \label{sec:examples} % -% \subsubsection{\plainTeX}\label{sec:plain} +% \subsubsection{\plainTeX} +% \label{sec:plain} % % The package can be used with \plainTeX. It can be used % with or without help from \xfile{miniltx.tex}. @@ -339,6 +456,72 @@ This example document contains three embedded files. %</exampleplain> % \end{macrocode} % +% \subsubsection{Collection example} +% +% \begin{macrocode} +%<*examplecollection> +\NeedsTeXFormat{LaTeX2e} +\documentclass{article} +\usepackage[bookmarks=false]{hyperref} + % provides \pdfstringdef that is then used by `title' and + % other keys. +\usepackage{embedfile}[2007/10/28] +\embedfilesetup{ + view=details, + initialfile=embedfile.pdf +} +\embedfilefield{file}{ + type=file, + title={File name} +} +\embedfilefield{description}{ + type=desc, + title={Description} +} +\embedfilefield{date}{ + type=moddate, + title={Date} +} +\embedfilefield{size}{ + type=size, + title={Size} +} +\embedfilefield{type}{ + type=text, + title={Type}, + visible=false +} +\embedfilesort{ + type, + date=descending +} +\begin{document} +An example for embedded files as collection. +You need Acrobat Reader 8 or higher. + +\embedfile[ + desc={Source file of package `embedfile'}, + description.prefix={Package: }, + type.value={DTX} +]{embedfile.dtx} + +\embedfile[ + desc={Documentation of package `embedfile'}, + description.prefix={Package: }, + type.value={PDF} +]{embedfile.pdf} + +\embedfile[ + desc={The source for this example}, + description.prefix={Example: }, + type.value={TEX} +]{\jobname.tex} + +\end{document} +% +%</examplecollection> +% \end{macrocode} +% % \subsection{Package \xpackage{dtx-attach}} % % Package \xpackage{dtx-attach} is just a small application of @@ -350,8 +533,8 @@ This example document contains three embedded files. %<*dtxattach> \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{dtx-attach} - [2007/09/09 v1.2 Embed \string\jobname.dtx (HO)]% -\RequirePackage{embedfile}[2007/09/09] + [2007/10/28 v2.0 Embed \string\jobname.dtx (HO)]% +\RequirePackage{embedfile}[2007/10/28] \embedfile[% stringmethod=escape,% mimetype=plain/text,% @@ -427,19 +610,19 @@ This example document contains three embedded files. \fi \expandafter\x\csname ver@embedfile.sty\endcsname \ProvidesPackage{embedfile}% - [2007/09/09 v1.2 embed files into PDF (HO)] + [2007/10/28 v2.0 embed files into PDF (HO)] % \end{macrocode} % % \subsection{Catcodes} % % \begin{macrocode} -\expandafter\edef\csname EmbedFile@AtEnd\endcsname{% +\expandafter\edef\csname EmFi@AtEnd\endcsname{% \catcode64 \the\catcode64\relax } \catcode64 11 % @ \def\TMP@EnsureCode#1#2{% - \edef\EmbedFile@AtEnd{% - \EmbedFile@AtEnd + \edef\EmFi@AtEnd{% + \EmFi@AtEnd \catcode#1 \the\catcode#1\relax }% \catcode#1 #2\relax @@ -461,23 +644,23 @@ This example document contains three embedded files. % % \subsection{Tools} % -% \begin{macro}{\EmbedFile@RequirePackage} +% \begin{macro}{\EmFi@RequirePackage} % \begin{macrocode} \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname RequirePackage\endcsname\relax - \def\EmbedFile@RequirePackage#1[#2]{% + \def\EmFi@RequirePackage#1[#2]{% \input #1.sty\relax }% \else - \let\EmbedFile@RequirePackage\RequirePackage + \let\EmFi@RequirePackage\RequirePackage \fi % \end{macrocode} % \end{macro} % -% \begin{macro}{\EmbedFile@PackageError} +% \begin{macro}{\EmFi@Error} % \begin{macrocode} -\EmbedFile@RequirePackage{infwarerr}[2007/09/09]% -\def\EmbedFile@PackageError{% +\EmFi@RequirePackage{infwarerr}[2007/09/09]% +\def\EmFi@Error{% \@PackageError{embedfile}% } % \end{macrocode} @@ -487,16 +670,16 @@ This example document contains three embedded files. % % Load package \xpackage{ifpdf} and check mode. % \begin{macrocode} -\EmbedFile@RequirePackage{ifpdf}[2007/09/09] +\EmFi@RequirePackage{ifpdf}[2007/09/09] \ifpdf \else - \EmbedFile@PackageError{% + \EmFi@Error{% Missing pdfTeX in PDF mode% }{% Currently other drivers are not supported. % Package loading is aborted.% }% - \EmbedFile@AtEnd + \EmFi@AtEnd \expandafter\endinput \fi % \end{macrocode} @@ -504,43 +687,170 @@ This example document contains three embedded files. % \begin{macrocode} \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname pdffilesize\endcsname\relax - \EmbedFile@PackageError{% + \EmFi@Error{% Unsupported pdfTeX version% }{% At least version 1.30 is necessary. Package loading is aborted.% }% - \EmbedFile@AtEnd + \EmFi@AtEnd \expandafter\endinput \fi % \end{macrocode} % +% \subsection{Strings} +% +% Minimal version of package \xpackage{pdfescape} is 2007/08/27 v1.5 +% because of \cs{EdefSanitize}. +% \begin{macrocode} +\EmFi@RequirePackage{pdfescape}[2007/10/27] +% \end{macrocode} +% +% \begin{macrocode} +\def\EmFi@temp#1{% + \expandafter\EdefSanitize\csname EmFi@S@#1\endcsname{#1}% +} +% \end{macrocode} +% \begin{macro}{\EmFi@details} +% \begin{macrocode} +\EmFi@temp{details}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EmFi@tile} +% \begin{macrocode} +\EmFi@temp{tile}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EmFi@hidden} +% \begin{macrocode} +\EmFi@temp{hidden}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EmFi@S@text} +% \begin{macrocode} +\EmFi@temp{text} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EmFi@S@date} +% \begin{macrocode} +\EmFi@temp{date} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EmFi@S@number} +% \begin{macrocode} +\EmFi@temp{number} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EmFi@S@file} +% \begin{macrocode} +\EmFi@temp{file} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EmFi@S@desc} +% \begin{macrocode} +\EmFi@temp{desc} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EmFi@S@moddate} +% \begin{macrocode} +\EmFi@temp{moddate} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EmFi@S@creationdate} +% \begin{macrocode} +\EmFi@temp{creationdate} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EmFi@S@size} +% \begin{macrocode} +\EmFi@temp{size} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EmFi@S@ascending} +% \begin{macrocode} +\EmFi@temp{ascending} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EmFi@S@descending} +% \begin{macrocode} +\EmFi@temp{descending} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EmFi@S@true} +% \begin{macrocode} +\EmFi@temp{true} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EmFi@S@false} +% \begin{macrocode} +\EmFi@temp{false} +% \end{macrocode} +% \end{macro} +% +% \subsection{Switches} +% +% \begin{macro}{\ifEmFi@collection} +% \begin{macrocode} +\newif\ifEmFi@collection +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ifEmFi@initialfile} +% \begin{macrocode} +\newif\ifEmFi@initialfile +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ifEmFi@sort} +% \begin{macrocode} +\newif\ifEmFi@sort +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ifEmFi@visible} +% \begin{macrocode} +\newif\ifEmFi@visible +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ifEmFi@edit} +% \begin{macrocode} +\newif\ifEmFi@edit +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ifEmFi@item} +% \begin{macrocode} +\newif\ifEmFi@item +% \end{macrocode} +% \end{macro} +% \begin{macro}{\ifEmFi@finished} +% \begin{macrocode} +\newif\ifEmFi@finished +% \end{macrocode} +% \end{macro} +% % \subsection{Key value definitions} % % \begin{macrocode} \expandafter\ifx\csname define@key\endcsname\relax - \chardef\EmbedFile@plain=\z@ - \def\EmbedFile@temp#1{% + \chardef\EmFi@plain=\z@ + \def\EmFi@temp#1{% \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname#1\endcsname\relax - \chardef\EmbedFile@plain=\@ne + \chardef\EmFi@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 + \EmFi@temp{NeedsTeXFormat}% + \EmFi@temp{ProvidesPackage}% + \EmFi@temp{DeclareOption}% + \EmFi@temp{ExecuteOptions}% + \EmFi@temp{ProcessOptions}% + \ifnum\EmFi@plain=\@ne + \def\EmFi@temp#1{% + \expandafter\let\csname EmFi@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}{}% + \EmFi@temp{NeedsTeXFormat}#1{}% + \EmFi@temp{ProvidesPackage}#1[#2]{}% hash-ok + \EmFi@temp{DeclareOption}#1{}% + \EmFi@temp{ExecuteOptions}#1{}% + \EmFi@temp{ProcessOptions}{}% % \end{macrocode} % \begin{macro}{\KV@errx} % \LaTeX's option processing is not available with @@ -598,48 +908,69 @@ This example document contains three embedded files. % \end{macro} % \begin{macrocode} \fi - \EmbedFile@RequirePackage{keyval}[1999/03/16]% - \ifnum\EmbedFile@plain=\@ne - \def\EmbedFile@temp#1{% + \EmFi@RequirePackage{keyval}[1999/03/16]% + \ifnum\EmFi@plain=\@ne + \def\EmFi@temp#1{% \expandafter\let\csname#1\expandafter\endcsname - \csname EmbedFile@Org#1\endcsname + \csname EmFi@Org#1\endcsname }% - \EmbedFile@temp{NeedsTeXFormat}% - \EmbedFile@temp{ProvidesPackage}% - \EmbedFile@temp{DeclareOption}% - \EmbedFile@temp{ExecuteOptions}% - \EmbedFile@temp{ProcessOptions}% + \EmFi@temp{NeedsTeXFormat}% + \EmFi@temp{ProvidesPackage}% + \EmFi@temp{DeclareOption}% + \EmFi@temp{ExecuteOptions}% + \EmFi@temp{ProcessOptions}% \fi \fi % \end{macrocode} % +% \begin{macro}{\EmFi@GlobalKey} % \begin{macrocode} -\def\EmbedFile@DefineKey#1#2{% - \define@key{EmbedFile}{#1}{% - \expandafter\def\csname EmbedFile@#1\endcsname{##1}% +\def\EmFi@GlobalKey#1#2{% + \global\expandafter\let\csname KV@#1@#2\expandafter\endcsname + \csname KV@#1@#2\endcsname +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EmFi@GlobalDefaultKey} +% \begin{macrocode} +\def\EmFi@GlobalDefaultKey#1#2{% + \EmFi@GlobalKey{#1}{#2}% + \global\expandafter\let + \csname KV@#1@#2@default\expandafter\endcsname + \csname KV@#1@#2@default\endcsname +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\EmFi@DefineKey} +% \begin{macrocode} +\def\EmFi@DefineKey#1#2{% + \define@key{EmFi}{#1}{% + \expandafter\def\csname EmFi@#1\endcsname{##1}% }% - \expandafter\def\csname EmbedFile@#1\endcsname{#2}% + \expandafter\def\csname EmFi@#1\endcsname{#2}% } % \end{macrocode} +% \end{macro} % Subtype of the embedded file (optional). % \begin{macrocode} -\EmbedFile@DefineKey{mimetype}{} +\EmFi@DefineKey{mimetype}{} % \end{macrocode} % File specification string. % \begin{macrocode} -\EmbedFile@DefineKey{filespec}{\EmbedFile@file} +\EmFi@DefineKey{filespec}{\EmFi@file} % \end{macrocode} % File system (optional). % \begin{macrocode} -\EmbedFile@DefineKey{filesystem}{} +\EmFi@DefineKey{filesystem}{} % \end{macrocode} % Description (optional). % \begin{macrocode} -\EmbedFile@DefineKey{desc}{} +\EmFi@DefineKey{desc}{} % \end{macrocode} % Method for converting text to PDF strings. % \begin{macrocode} -\EmbedFile@DefineKey{stringmethod}{% +\EmFi@DefineKey{stringmethod}{% \ifx\pdfstringdef\@undefined escape% \else @@ -652,10 +983,287 @@ This example document contains three embedded files. } % \end{macrocode} % +% Initial view of the collection. +% \begin{macrocode} +\define@key{EmFi}{view}[]{% + \EdefSanitize\EmFi@temp{#1}% + \def\EmFi@next{% + \global\EmFi@collectiontrue + }% + \ifx\EmFi@temp\empty + \let\EmFi@view\EmFi@S@details + \else\ifx\EmFi@temp\EmFi@S@details + \let\EmFi@view\EmFi@S@details + \else\ifx\EmFi@temp\EmFi@S@tile + \let\EmFi@view\EmFi@S@tile + \else\ifx\EmFi@temp\EmFi@S@hidden + \let\EmFi@view\EmFi@S@hidden + \else + \let\EmFi@next\relax + \EmFi@Error{% + Unknown value `\EmFi@temp' for key `view'.\MessageBreak + Supported values: `details', `tile', `hidden'.% + }\@ehc + \fi\fi\fi\fi + \EmFi@next +} +% \end{macrocode} +% \begin{macrocode} +\EmFi@DefineKey{initialfile}{} +% \end{macrocode} +% % \begin{macro}{\embedfilesetup} % \begin{macrocode} \def\embedfilesetup{% - \setkeys{EmbedFile}% + \ifEmFi@finished + \def\EmFi@next##1{}% + \EmFi@Error{% + \string\embedfilefield\space after \string\embedfilefinish + }{% + The list of embedded files is already written.% + }% + \else + \def\EmFi@next{% + \setkeys{EmFi}% + }% + \fi + \EmFi@next +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\EmFi@schema} +% \begin{macrocode} +\def\EmFi@schema{} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EmFi@order} +% \begin{macrocode} +\gdef\EmFi@order{0} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EmFi@@order} +% \begin{macrocode} +\let\EmFi@@order\relax +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EmFi@fieldlist} +% \begin{macrocode} +\def\EmFi@fieldlist{} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EmFi@sortcase} +% \begin{macrocode} +\def\EmFi@sortcase{0}% +% \end{macrocode} +% \end{macro} +% \begin{macro}{\embedfilefield} +% \begin{macrocode} +\def\embedfilefield#1#2{% + \ifEmFi@finished + \EmFi@Error{% + \string\embedfilefield\space after \string\embedfilefinish + }{% + The list of embedded files is already written.% + }% + \else + \global\EmFi@collectiontrue + \EdefSanitize\EmFi@key{#1}% + \expandafter\ifx\csname KV@EmFi@\EmFi@key.prefix\endcsname\relax + \begingroup + \count@=\EmFi@order + \advance\count@ 1 % + \xdef\EmFi@order{\the\count@}% + \let\EmFi@title\EmFi@key + \let\EmFi@type\EmFi@S@text + \EmFi@visibletrue + \EmFi@editfalse + \setkeys{EmFiFi}{#2}% + \EmFi@convert\EmFi@title\EmFi@title + \xdef\EmFi@schema{% + \EmFi@schema + /\pdfescapename{\EmFi@key}<<% + /Subtype/% + \ifx\EmFi@type\EmFi@S@date D% + \else\ifx\EmFi@type\EmFi@S@number N% + \else\ifx\EmFi@type\EmFi@S@file F% + \else\ifx\EmFi@type\EmFi@S@desc Desc% + \else\ifx\EmFi@type\EmFi@S@moddate ModDate% + \else\ifx\EmFi@type\EmFi@S@creationdate CreationDate% + \else\ifx\EmFi@type\EmFi@S@size Size% + \else S% + \fi\fi\fi\fi\fi\fi\fi + /N(\EmFi@title)% + \EmFi@@order{\EmFi@order}% + \ifEmFi@visible + \else + /V false% + \fi + \ifEmFi@edit + /E true% + \fi + >>% + }% + \let\do\relax + \xdef\EmFi@fieldlist{% + \EmFi@fieldlist + \do{\EmFi@key}% + }% + \ifx\EmFi@type\EmFi@S@text + \define@key{EmFi}{\EmFi@key.value}{% + \EmFi@itemtrue + \def\EmFi@temp{##1}% + \EmFi@convert\EmFi@temp\EmFi@temp + \expandafter\def\csname EmFi@V@#1% + \expandafter\endcsname\expandafter{% + \expandafter(\EmFi@temp)% + }% + }% + \EmFi@GlobalKey{EmFi}{\EmFi@key.value}% + \else\ifx\EmFi@type\EmFi@S@date + \define@key{EmFi}{\EmFi@key.value}{% + \EmFi@itemtrue + \def\EmFi@temp{##1}% + \EmFi@convert\EmFi@temp\EmFi@temp + \expandafter\def\csname EmFi@V@#1% + \expandafter\endcsname\expandafter{% + \expandafter(\EmFi@temp)% + }% + }% + \EmFi@GlobalKey{EmFi}{\EmFi@key.value}% + \else\ifx\EmFi@type\EmFi@S@number + \define@key{EmFi}{\EmFi@key.value}{% + \EmFi@itemtrue + \expandafter\EdefSanitize\csname EmFi@V@#1\endcsname{ ##1}% + }% + \EmFi@GlobalKey{EmFi}{\EmFi@key.value}% + \fi\fi\fi + \define@key{EmFi}{\EmFi@key.prefix}{% + \EmFi@itemtrue + \expandafter\def\csname EmFi@P@#1\endcsname{##1}% + }% + \EmFi@GlobalKey{EmFi}{\EmFi@key.prefix}% + \define@key{EmFiSo}{\EmFi@key}[ascending]{% + \EdefSanitize\EmFi@temp{##1}% + \ifx\EmFi@temp\EmFi@S@ascending + \def\EmFi@temp{true}% + \else\ifx\EmFi@temp\EmFi@S@descending + \def\EmFi@temp{false}% + \else + \def\EmFi@temp{}% + \EmFi@Error{% + Unknown sort order `\EmFi@temp'.\MessageBreak + Supported values: `\EmFi@S@ascending', % + `\EmFi@S@descending + }\@ehc + \fi\fi + \ifx\EmFi@temp\empty + \else + \xdef\EmFi@sortkeys{% + \EmFi@sortkeys + /\pdfescapename{#1}% + }% + \ifx\EmFi@sortorders\empty + \global\let\EmFi@sortorders\EmFi@temp + \gdef\EmFi@sortcase{1}% + \else + \xdef\EmFi@sortorders{% + \EmFi@sortorders + \space + \EmFi@temp + }% + \xdef\EmFi@sortcase{2}% + \fi + \fi + }% + \EmFi@GlobalDefaultKey{EmFiSo}\EmFi@key + \endgroup + \else + \EmFi@Error{% + Field `\EmFi@key' is already defined% + }\@ehc + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\define@key{EmFiFi}{type}{% + \EdefSanitize\EmFi@temp{#1}% + \ifx\EmFi@temp\EmFi@S@text + \let\EmFi@type\EmFi@temp + \else\ifx\EmFi@temp\EmFi@S@date + \let\EmFi@type\EmFi@temp + \else\ifx\EmFi@temp\EmFi@S@number + \let\EmFi@type\EmFi@temp + \else\ifx\EmFi@temp\EmFi@S@file + \let\EmFi@type\EmFi@temp + \else\ifx\EmFi@temp\EmFi@S@desc + \let\EmFi@type\EmFi@temp + \else\ifx\EmFi@temp\EmFi@S@moddate + \let\EmFi@type\EmFi@temp + \else\ifx\EmFi@temp\EmFi@S@creationdate + \let\EmFi@type\EmFi@temp + \else\ifx\EmFi@temp\EmFi@S@size + \let\EmFi@type\EmFi@temp + \else + \EmFi@Error{% + Unknown type `\EmFi@temp'.\MessageBreak + Supported types: `text', `date', `number', `file',\MessageBreak + `desc', `moddate', `creationdate', `size'% + }% + \fi\fi\fi\fi\fi\fi\fi\fi +} +% \end{macrocode} +% \begin{macrocode} +\define@key{EmFiFi}{title}{% + \def\EmFi@title{#1}% +} +% \end{macrocode} +% \begin{macro}{\EmFi@setboolean} +% \begin{macrocode} +\def\EmFi@setboolean#1#2{% + \EdefSanitize\EmFi@temp{#2}% + \ifx\EmFi@temp\EmFi@S@true + \csname EmFi@#1true\endcsname + \else + \ifx\EmFi@temp\EmFi@S@false + \csname EmFi@#1false\endcsname + \else + \EmFi@Error{% + Unknown value `\EmFi@temp' for key `#1'.\MessageBreak + Supported values: `true', `false'% + }\@ehc + \fi + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macrocode} +\define@key{EmFiFi}{visible}[true]{% + \EmFi@setboolean{visible}{#1}% +} +% \end{macrocode} +% \begin{macrocode} +\define@key{EmFiFi}{edit}[true]{% + \EmFi@setboolean{edit}{#1}% +} +% \end{macrocode} +% +% \begin{macro}{\EmFi@sortkeys} +% \begin{macrocode} +\def\EmFi@sortkeys{} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EmFi@sortorders} +% \begin{macrocode} +\def\EmFi@sortorders{} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\embedfilesort} +% \begin{macrocode} +\def\embedfilesort{% + \setkeys{EmFiSo}% } % \end{macrocode} % \end{macro} @@ -665,67 +1273,82 @@ This example document contains three embedded files. % \begin{macro}{\embedfile} % \begin{macrocode} \def\embedfile{% - \@ifnextchar[\EmbedFile@embedfile{\EmbedFile@embedfile[]}% + \@ifnextchar[\EmFi@embedfile{\EmFi@embedfile[]}% } % \end{macrocode} % \end{macro} -% \begin{macro}{\EmbedFile@embedfile} +% \begin{macro}{\EmFi@embedfile} % \begin{macrocode} -\def\EmbedFile@embedfile[#1]#2{% - \ifEmbedFile@finished - \EmbedFile@PackageError{% +\def\EmFi@embedfile[#1]#2{% + \ifEmFi@finished + \EmFi@Error{% \string\embedfile\space after \string\embedfilefinish }{% The list of embedded files is already written.% }% \else \begingroup - \def\EmbedFile@file{#2}% - \setkeys{EmbedFile}{#1}% - \expandafter\ifx\expandafter\\\pdffilesize{\EmbedFile@file}\\% - \EmbedFile@PackageError{% - File `\EmbedFile@file' not found% + \def\EmFi@file{#2}% + \ifx\EmFi@file\EmFi@initialfile + \global\EmFi@initialfiletrue + \fi + \setkeys{EmFi}{#1}% + \expandafter\ifx\expandafter\\\pdffilesize{\EmFi@file}\\% + \EmFi@Error{% + File `\EmFi@file' not found% }{% The unknown file is not embedded.% }% \else - \EmbedFile@convert\EmbedFile@filespec\EmbedFile@@filespec - \ifx\EmbedFile@desc\empty - \let\EmbedFile@@desc\empty + \EmFi@convert\EmFi@filespec\EmFi@@filespec + \ifx\EmFi@desc\empty + \let\EmFi@@desc\empty \else - \EmbedFile@convert\EmbedFile@desc\EmbedFile@@desc + \EmFi@convert\EmFi@desc\EmFi@@desc + \fi + \ifEmFi@item + \let\do\EmFi@do + \immediate\pdfobj{% + <<% + \EmFi@fieldlist + >>% + }% + \edef\EmFi@ci{\the\pdflastobj}% \fi \immediate\pdfobj stream attr{% /Type/EmbeddedFile% - \ifx\EmbedFile@mimetype\empty + \ifx\EmFi@mimetype\empty \else - /Subtype/\pdfescapename{\EmbedFile@mimetype}% + /Subtype/\pdfescapename{\EmFi@mimetype}% \fi /Params<<% - /ModDate(\pdffilemoddate{\EmbedFile@file})% - /Size \pdffilesize{\EmbedFile@file}% - /CheckSum<\pdfmdfivesum file{\EmbedFile@file}>% + /ModDate(\pdffilemoddate{\EmFi@file})% + /Size \pdffilesize{\EmFi@file}% + /CheckSum<\pdfmdfivesum file{\EmFi@file}>% >>% - }file{\EmbedFile@file}\relax + }file{\EmFi@file}\relax \immediate\pdfobj{% <<% /Type/Filespec% - \ifx\EmbedFile@filesystem\empty + \ifx\EmFi@filesystem\empty \else - /FS/\pdfescapename{\EmbedFile@filesystem}% + /FS/\pdfescapename{\EmFi@filesystem}% \fi - /F(\EmbedFile@@filespec)% - \ifx\EmbedFile@@desc\empty + /F(\EmFi@@filespec)% + \ifx\EmFi@@desc\empty \else - /Desc(\EmbedFile@@desc)% + /Desc(\EmFi@@desc)% \fi /EF<<% /F \the\pdflastobj\space 0 R% >>% + \ifEmFi@item + /CI \EmFi@ci\space 0 R% + \fi >>% }% - \EmbedFile@add{% - \EmbedFile@@filespec + \EmFi@add{% + \EmFi@@filespec }{\the\pdflastobj\space 0 R}% \fi \endgroup @@ -733,12 +1356,32 @@ This example document contains three embedded files. } % \end{macrocode} % \end{macro} -% \begin{macro}{\EmbedFile@convert} +% \begin{macro}{\EmFi@do} % \begin{macrocode} -\def\EmbedFile@convert#1#2{% - \ifnum\pdfstrcmp{\EmbedFile@stringmethod}{psd}=0 % - \pdfstringdef\EmbedFile@temp{#1}% - \let#2\EmbedFile@temp +\def\EmFi@do#1{% + \expandafter\ifx\csname EmFi@P@#1\endcsname\relax + \expandafter\ifx\csname EmFi@V@#1\endcsname\relax + \else + /\pdfescapename{#1}\csname EmFi@V@#1\endcsname + \fi + \else + /\pdfescapename{#1}<<% + \expandafter\ifx\csname EmFi@V@#1\endcsname\relax + \else + /D\csname EmFi@V@#1\endcsname + \fi + /P(\csname EmFi@P@#1\endcsname)% + >>% + \fi +} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\EmFi@convert} +% \begin{macrocode} +\def\EmFi@convert#1#2{% + \ifnum\pdfstrcmp{\EmFi@stringmethod}{psd}=0 % + \pdfstringdef\EmFi@temp{#1}% + \let#2\EmFi@temp \else \edef#2{\pdfescapestring{#1}}% \fi @@ -746,20 +1389,20 @@ This example document contains three embedded files. % \end{macrocode} % \end{macro} % \begin{macrocode} -\global\let\EmbedFile@list\empty +\global\let\EmFi@list\empty % \end{macrocode} -% \begin{macro}{\EmbedFile@add} +% \begin{macro}{\EmFi@add} % Sorting is done by the insertion sort algorithm. % Probably the sorting could be done more reliable. % However, the PDF specification is not too clear to me % regarding precise sorting rules (how to deal with % different encodings, escaped characters, \dots). % \begin{macrocode} -\def\EmbedFile@add#1#2{% +\def\EmFi@add#1#2{% \begingroup \edef\key{\pdfescapehex{#1}}% - \ifx\EmbedFile@list\empty - \xdef\EmbedFile@list{\noexpand\do{\key}{#2}}% + \ifx\EmFi@list\empty + \xdef\EmFi@list{\noexpand\do{\key}{#2}}% \else \def\do##1##2{% \ifnum\pdfstrcmp{##1}{\key}>0 % @@ -775,51 +1418,113 @@ This example document contains three embedded files. \toks@\expandafter{\the\toks@\do{####1}{####2}}% }% \def\stop{% - \xdef\EmbedFile@list{\the\toks@}% + \xdef\EmFi@list{\the\toks@}% }% \else \toks@\expandafter{\the\toks@\do{##1}{##2}}% \fi }% \def\stop{% - \xdef\EmbedFile@list{\the\toks@\noexpand\do{\key}{#2}}% + \xdef\EmFi@list{\the\toks@\noexpand\do{\key}{#2}}% }% \toks@{}% - \EmbedFile@list\stop + \EmFi@list\stop \fi \endgroup } % \end{macrocode} % \end{macro} -% \begin{macrocode} -\newif\ifEmbedFile@finished -% \end{macrocode} % \begin{macro}{\embedfilefinish} % \begin{macrocode} \def\embedfilefinish{% - \ifEmbedFile@finished - \EmbedFile@PackageError{% + \ifEmFi@finished + \EmFi@Error{% Too many invocations of \string\embedfilefinish }{% The list of embedded files is already written.% }% \else - \ifx\EmbedFile@list\empty + \ifx\EmFi@list\empty \else - \global\EmbedFile@finishedtrue +% \end{macrocode} +% Write |/EmbeddedFiles| entry. +% \begin{macrocode} + \global\EmFi@finishedtrue \begingroup \def\do##1##2{% <##1>##2% }% \immediate\pdfobj{% <<% - /Names[\EmbedFile@list]% + /Names[\EmFi@list]% >>% }% \pdfnames{% /EmbeddedFiles \the\pdflastobj\space 0 R% }% \endgroup +% \end{macrocode} +% Write collection objects. +% \begin{macrocode} + \ifEmFi@initialfile + \EmFi@collectiontrue + \fi + \ifEmFi@collection + \ifEmFi@initialfile + \else + \ifx\EmFi@initialfile\empty + \EmFi@convert\EmFi@initialfile\EmFi@initialfile + \else + \@PackageWarningNoLine{embedfile}{% + Missing initial file `\EmFi@initialfile'\MessageBreak + among the embedded files% + }% + \EmFi@initialfilefalse + \fi + \fi + \ifcase\EmFi@sortcase + \def\EmFi@temp{}% + \or + \def\EmFi@temp{% + /S\EmFi@sortkeys + /A \EmFi@sortorders + }% + \else + \def\EmFi@temp{% + /S[\EmFi@sortkeys]% + /A[\EmFi@sortorders]% + }% + \fi + \def\EmFi@@order##1{% + \ifnum\EmFi@order>1 % + /O ##1% + \fi + }% + \immediate\pdfobj{% + <<% + \ifx\EmFi@schema\empty + \else + /Schema<<\EmFi@schema>>% + \fi + \ifEmFi@initialfile + /D(\EmFi@initialfile)% + \fi + \ifx\EmFi@view\EmFi@S@tile + /View/T% + \else\ifx\EmFi@view\EmFi@S@hidden + /View/H% + \fi\fi + \ifx\EmFi@temp\empty + \EmFi@temp + \else + /Sort<<\EmFi@temp>>% + \fi + >>% + }% + \pdfcatalog{% + /Collection \the\pdflastobj\space0 R% + }% + \fi \fi \fi } @@ -834,7 +1539,7 @@ This example document contains three embedded files. % \end{macrocode} % % \begin{macrocode} -\EmbedFile@AtEnd +\EmFi@AtEnd %</package> % \end{macrocode} % @@ -913,7 +1618,7 @@ Test (plain-\TeX): {\tt embedfile.dtx} should be embedded.% \NeedsTeXFormat{LaTeX2e} \let\SavedJobname\jobname \def\jobname{embedfile} -\RequirePackage{dtx-attach}[2007/09/09] +\RequirePackage{dtx-attach}[2007/10/28] \let\jobname\SavedJobname \documentclass{minimal} \begin{document} @@ -985,6 +1690,7 @@ Test (plain-\TeX): {\tt embedfile.dtx} should be embedded.% % 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-example-collection.tex & doc/latex/oberdiek/embedfile-example-collection.tex\\ % test/embedfile-test1.tex & doc/latex/oberdiek/test/embedfile-test1.tex\\ % test/embedfile-test2.tex & doc/latex/oberdiek/test/embedfile-test2.tex\\ % test/embedfile-test3.tex & doc/latex/oberdiek/test/embedfile-test3.tex\\ @@ -1121,10 +1827,10 @@ Test (plain-\TeX): {\tt embedfile.dtx} should be embedded.% % % \bibitem{pdfspec} % Adobe Systems Incorporated: -% \href{http://partners.adobe.com/public/developer/en/pdf/PDFReference16.pdf}% -% {\textit{PDF Reference, Fifth Edition, Version 1.6}},% -% November 2004; -% \url{http://partners.adobe.com/public/developer/pdf/index_reference.html}. +% \href{http://www.adobe.com/devnet/acrobat/pdfs/pdf_reference.pdf}% +% {\textit{PDF Reference, Sixth Edition, Version 1.7}},% +% Oktober 2006; +% \url{http://www.adobe.com/devnet/pdf/pdf_reference.html}. % % \bibitem{mime} % Network Working Group: RFC 2046, \textit{Multipurpose Internet Mail Extensions (MIME) Part Two: @@ -1152,6 +1858,10 @@ Test (plain-\TeX): {\tt embedfile.dtx} should be embedded.% % \item % Catcode section rewritten. % \end{Version} +% \begin{Version}{2007/10/28 v2.0} +% \item +% Collection support added (PDF 1.7). +% \end{Version} % \end{History} % % \PrintIndex diff --git a/Master/texmf-dist/source/latex/oberdiek/epstopdf.dtx b/Master/texmf-dist/source/latex/oberdiek/epstopdf.dtx index c1057bc7edb..bf464a0acd9 100644 --- a/Master/texmf-dist/source/latex/oberdiek/epstopdf.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/epstopdf.dtx @@ -227,7 +227,7 @@ and the derived files % Because of the security risk, it is better to do it on the % command line only: % \begin{quote} -% \texttt{-shell-escape} (te\TeX, \TeX\ Live)\\ +% \texttt{--shell-escape} (te\TeX, \TeX\ Live)\\ % \texttt{--enable-write18} (MiK\TeX) % \end{quote} % Example: @@ -496,7 +496,7 @@ and the derived files % \begin{macrocode} \RequirePackage{infwarerr}[2007/09/09] \RequirePackage{grfext}\relax -\RequirePackage{kvoptions}[2006/10/02] +\RequirePackage{kvoptions}[2007/10/02] % \end{macrocode} % % \subsection{Checks} diff --git a/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins b/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins index 74b779e4a00..f6e65957400 100644 --- a/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins +++ b/Master/texmf-dist/source/latex/oberdiek/oberdiek.ins @@ -1,5 +1,5 @@ % oberdiek.ins -% 2007/10/24 +% 2007/10/28 % % Copyright (C) 1999, 2001, 2006 by % Heiko Oberdiek <oberdiek@uni-freiburg.de> diff --git a/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex b/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex index bcd3be97d9e..1dfd8f4780a 100644 --- a/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex +++ b/Master/texmf-dist/source/latex/oberdiek/oberdiek.tex @@ -6,7 +6,7 @@ \newcommand*{\Subject}{CTAN:\CTANdir} \newcommand*{\Author}{Heiko Oberdiek} \newcommand*{\Email}{oberdiek@uni-freiburg.de} -\newcommand*{\Date}{2007/10/24} +\newcommand*{\Date}{2007/10/28} % Copyright (C) 2006 by % Heiko Oberdiek <oberdiek@uni-freiburg.de> @@ -192,7 +192,7 @@ [\entrysep] \entry{dvipscol}{2006/02/20}{1.1}{Fix for dvips.def}% [\entrysep] -\entry{embedfile}{2007/09/09}{1.2}{embed files into PDF}% +\entry{embedfile}{2007/10/28}{2.0}{embed files into PDF}% [\entrysep] \entry{engord}{2007/09/20}{1.6}{Provides English ordinal numbers}% [\entrysep] @@ -254,7 +254,7 @@ [\entrysep] \entry{pdfcrypt}{2007/04/26}{1.0}{Setting pdf encryption}% [\entrysep] -\entry{pdfescape}{2007/09/09}{1.6}{Provides hex, PDF name and string conversions}% +\entry{pdfescape}{2007/10/27}{1.7}{Provides hex, PDF name and string conversions}% [\entrysep] \entry{pdflscape}{2007/10/21}{0.9}{Landscape pages in PDF}% [\entrysep] diff --git a/Master/texmf-dist/source/latex/oberdiek/pdfescape.dtx b/Master/texmf-dist/source/latex/oberdiek/pdfescape.dtx index b23233f9a16..73a528de4bb 100644 --- a/Master/texmf-dist/source/latex/oberdiek/pdfescape.dtx +++ b/Master/texmf-dist/source/latex/oberdiek/pdfescape.dtx @@ -72,7 +72,7 @@ \input docstrip.tex \Msg{************************************************************************} \Msg{* Installation} -\Msg{* Package: pdfescape 2007/09/09 v1.6 Provides hex, PDF name and string conversions (HO)} +\Msg{* Package: pdfescape 2007/10/27 v1.7 Provides hex, PDF name and string conversions (HO)} \Msg{************************************************************************} \keepsilent @@ -139,7 +139,7 @@ and the derived files %<*driver> \NeedsTeXFormat{LaTeX2e} \ProvidesFile{pdfescape.drv}% - [2007/09/09 v1.6 Provides hex, PDF name and string conversions (HO)]% + [2007/10/27 v1.7 Provides hex, PDF name and string conversions (HO)]% \documentclass{ltxdoc} \usepackage{holtxdoc}[2007/10/21] \begin{document} @@ -148,7 +148,7 @@ and the derived files %</driver> % \fi % -% \CheckSum{1889} +% \CheckSum{1890} % % \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 @@ -169,7 +169,7 @@ and the derived files % \GetFileInfo{pdfescape.drv} % % \title{The \xpackage{pdfescape} package} -% \date{2007/09/09 v1.6} +% \date{2007/10/27 v1.7} % \author{Heiko Oberdiek\\\xemail{oberdiek@uni-freiburg.de}} % % \maketitle @@ -306,7 +306,7 @@ and the derived files \fi \expandafter\x\csname ver@pdfescape.sty\endcsname \ProvidesPackage{pdfescape}% - [2007/09/09 v1.6 Provides hex, PDF name and string conversions (HO)] + [2007/10/27 v1.7 Provides hex, PDF name and string conversions (HO)] % \end{macrocode} % % \subsection{Catcodes} @@ -370,9 +370,10 @@ and the derived files \begingroup \csname @safe@activestrue\endcsname \edef#1{#2}% - \PE@onelevel@sanitize#1% \expandafter\endgroup - \expandafter\def\expandafter#1\expandafter{#1}% + \expandafter\def\expandafter#1\expandafter{% + \detokenize\expandafter{#1}% + }% }% \def\PE@onelevel@sanitize#1{% \edef#1{\detokenize\expandafter{#1}}% @@ -1241,7 +1242,7 @@ and the derived files % \begin{macrocode} %<*test2> \ProvidesFile{pdfescape-test1.tex}% - [2007/09/09 v1.6 Test with \string\pdfescape... commands]% + [2007/10/27 v1.7 Test with \string\pdfescape... commands]% %</test2> % \end{macrocode} % @@ -1250,7 +1251,7 @@ and the derived files % \begin{macrocode} %<*test3> \ProvidesFile{pdfescape-test2.tex}% - [2007/09/09 v1.6 Test without \string\pdfescape..., with e-TeX]% + [2007/10/27 v1.7 Test without \string\pdfescape..., with e-TeX]% %</test3> % \end{macrocode} % @@ -1259,7 +1260,7 @@ and the derived files % \begin{macrocode} %<*test4> \ProvidesFile{pdfescape-test3.tex}% - [2007/09/09 v1.6 Test without \string\pdfescape... and e-TeX]% + [2007/10/27 v1.7 Test without \string\pdfescape... and e-TeX]% %</test4> % \end{macrocode} % @@ -1896,6 +1897,10 @@ and the derived files % \item % Fix in catcode setup. % \end{Version} +% \begin{Version}{2007/10/27 v1.7} +% \item +% More efficient \cs{EdefSanitize}. +% \end{Version} % \end{History} % % \PrintIndex |