kivitendo/texmf/embedfile.sty @ 973e7b1e
80eceeda | Moritz Bunkus | %% !!NOTE NOTE NOTE!!
|
|
%%
|
|||
%% This is a modified version of `embedfile.sty' generated from a
|
|||
%% modified `embedfile.dtx' incorporating the following pull request:
|
|||
%% https://github.com/ho-tex/oberdiek/pull/72
|
|||
%%
|
|||
%% This PR adds support for creating PDF/A-compliant attachments. See
|
|||
%% also the following issue:
|
|||
%% https://github.com/ho-tex/oberdiek/issues/37
|
|||
%%
|
|||
%% !!END OF NOTE NOTE NOTE!!
|
|||
%%
|
|||
%%
|
|||
%% This is file `embedfile.sty',
|
|||
%% generated with the docstrip utility.
|
|||
%%
|
|||
%% The original source files were:
|
|||
%%
|
|||
%% embedfile.dtx (with options: `package')
|
|||
%%
|
|||
%% This is a generated file.
|
|||
%%
|
|||
%% Project: embedfile
|
|||
%% Version: 2018/11/01 v2.8
|
|||
%%
|
|||
%% Copyright (C) 2006-2011 by
|
|||
%% Heiko Oberdiek <heiko.oberdiek at googlemail.com>
|
|||
%%
|
|||
%% 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
|
|||
%% http://www.latex-project.org/lppl/lppl-1-3c.txt
|
|||
%% and the latest version of this license is in
|
|||
%% http://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".
|
|||
%%
|
|||
%% This Current Maintainer of this work is Heiko Oberdiek.
|
|||
%%
|
|||
%% The Base Interpreter refers to any `TeX-Format',
|
|||
%% because some files are installed in TDS:tex/generic//.
|
|||
%%
|
|||
%% 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-example-collection.tex, embedfile-test1.tex,
|
|||
%% embedfile-test2.tex, embedfile-test3.tex,
|
|||
%% embedfile-test4.tex.
|
|||
%%
|
|||
\begingroup\catcode61\catcode48\catcode32=10\relax%
|
|||
\catcode13=5 % ^^M
|
|||
\endlinechar=13 %
|
|||
\catcode35=6 % #
|
|||
\catcode39=12 % '
|
|||
\catcode44=12 % ,
|
|||
\catcode45=12 % -
|
|||
\catcode46=12 % .
|
|||
\catcode58=12 % :
|
|||
\catcode64=11 % @
|
|||
\catcode123=1 % {
|
|||
\catcode125=2 % }
|
|||
\expandafter\let\expandafter\x\csname ver@embedfile.sty\endcsname
|
|||
\ifx\x\relax % plain-TeX, first loading
|
|||
\else
|
|||
\def\empty{}%
|
|||
\ifx\x\empty % LaTeX, first loading,
|
|||
% variable is initialized, but \ProvidesPackage not yet seen
|
|||
\else
|
|||
\expandafter\ifx\csname PackageInfo\endcsname\relax
|
|||
\def\x#1#2{%
|
|||
\immediate\write-1{Package #1 Info: #2.}%
|
|||
}%
|
|||
\else
|
|||
\def\x#1#2{\PackageInfo{#1}{#2, stopped}}%
|
|||
\fi
|
|||
\x{embedfile}{The package is already loaded}%
|
|||
\aftergroup\endinput
|
|||
\fi
|
|||
\fi
|
|||
\endgroup%
|
|||
\begingroup\catcode61\catcode48\catcode32=10\relax%
|
|||
\catcode13=5 % ^^M
|
|||
\endlinechar=13 %
|
|||
\catcode35=6 % #
|
|||
\catcode39=12 % '
|
|||
\catcode40=12 % (
|
|||
\catcode41=12 % )
|
|||
\catcode44=12 % ,
|
|||
\catcode45=12 % -
|
|||
\catcode46=12 % .
|
|||
\catcode47=12 % /
|
|||
\catcode58=12 % :
|
|||
\catcode64=11 % @
|
|||
\catcode91=12 % [
|
|||
\catcode93=12 % ]
|
|||
\catcode123=1 % {
|
|||
\catcode125=2 % }
|
|||
\expandafter\ifx\csname ProvidesPackage\endcsname\relax
|
|||
\def\x#1#2#3[#4]{\endgroup
|
|||
\immediate\write-1{Package: #3 #4}%
|
|||
\xdef#1{#4}%
|
|||
}%
|
|||
\else
|
|||
\def\x#1#2[#3]{\endgroup
|
|||
#2[{#3}]%
|
|||
\ifx#1\@undefined
|
|||
\xdef#1{#3}%
|
|||
\fi
|
|||
\ifx#1\relax
|
|||
\xdef#1{#3}%
|
|||
\fi
|
|||
}%
|
|||
\fi
|
|||
\expandafter\x\csname ver@embedfile.sty\endcsname
|
|||
\ProvidesPackage{embedfile}%
|
|||
[2018/11/01 v2.8 Embed files into PDF (HO)]%
|
|||
\begingroup\catcode61\catcode48\catcode32=10\relax%
|
|||
\catcode13=5 % ^^M
|
|||
\endlinechar=13 %
|
|||
\catcode123=1 % {
|
|||
\catcode125=2 % }
|
|||
\catcode64=11 % @
|
|||
\def\x{\endgroup
|
|||
\expandafter\edef\csname EmFi@AtEnd\endcsname{%
|
|||
\endlinechar=\the\endlinechar\relax
|
|||
\catcode13=\the\catcode13\relax
|
|||
\catcode32=\the\catcode32\relax
|
|||
\catcode35=\the\catcode35\relax
|
|||
\catcode61=\the\catcode61\relax
|
|||
\catcode64=\the\catcode64\relax
|
|||
\catcode123=\the\catcode123\relax
|
|||
\catcode125=\the\catcode125\relax
|
|||
}%
|
|||
}%
|
|||
\x\catcode61\catcode48\catcode32=10\relax%
|
|||
\catcode13=5 % ^^M
|
|||
\endlinechar=13 %
|
|||
\catcode35=6 % #
|
|||
\catcode64=11 % @
|
|||
\catcode123=1 % {
|
|||
\catcode125=2 % }
|
|||
\def\TMP@EnsureCode#1#2{%
|
|||
\edef\EmFi@AtEnd{%
|
|||
\EmFi@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{62}{12}% >
|
|||
\TMP@EnsureCode{91}{12}% [
|
|||
\TMP@EnsureCode{93}{12}% ]
|
|||
\TMP@EnsureCode{96}{12}% `
|
|||
\edef\EmFi@AtEnd{\EmFi@AtEnd\noexpand\endinput}
|
|||
\begingroup\expandafter\expandafter\expandafter\endgroup
|
|||
\expandafter\ifx\csname RequirePackage\endcsname\relax
|
|||
\def\EmFi@RequirePackage#1[#2]{%
|
|||
\input #1.sty\relax
|
|||
}%
|
|||
\else
|
|||
\let\EmFi@RequirePackage\RequirePackage
|
|||
\fi
|
|||
\EmFi@RequirePackage{infwarerr}[2007/09/09]%
|
|||
\def\EmFi@Error{%
|
|||
\@PackageError{embedfile}%
|
|||
}
|
|||
\ifx\pdfextension\@undefined\else
|
|||
\protected\def\pdflastobj {\numexpr\pdffeedback lastobj\relax}
|
|||
\protected\def\pdfnames {\pdfextension names }
|
|||
\protected\def\pdfobj {\pdfextension obj }
|
|||
\let\pdfoutput \outputmode
|
|||
\fi
|
|||
\EmFi@RequirePackage{ifpdf}[2007/09/09]
|
|||
\ifpdf
|
|||
\else
|
|||
\EmFi@Error{%
|
|||
Missing pdfTeX in PDF mode%
|
|||
}{%
|
|||
Currently other drivers are not supported. %
|
|||
Package loading is aborted.%
|
|||
}%
|
|||
\expandafter\EmFi@AtEnd
|
|||
\fi%
|
|||
\EmFi@RequirePackage{pdftexcmds}[2007/11/11]
|
|||
\EmFi@RequirePackage{ltxcmds}[2010/03/01]
|
|||
\EmFi@RequirePackage{kvsetkeys}[2010/03/01]
|
|||
\EmFi@RequirePackage{kvdefinekeys}[2010/03/01]
|
|||
\begingroup\expandafter\expandafter\expandafter\endgroup
|
|||
\expandafter\ifx\csname pdf@filesize\endcsname\relax
|
|||
\EmFi@Error{%
|
|||
Unsupported pdfTeX version%
|
|||
}{%
|
|||
At least version 1.30 is necessary. Package loading is aborted.%
|
|||
}%
|
|||
\expandafter\EmFi@AtEnd
|
|||
\fi%
|
|||
\EmFi@RequirePackage{pdfescape}[2007/11/11]
|
|||
\def\EmFi@temp#1{%
|
|||
\expandafter\EdefSanitize\csname EmFi@S@#1\endcsname{#1}%
|
|||
}
|
|||
\EmFi@temp{details}%
|
|||
\EmFi@temp{tile}%
|
|||
\EmFi@temp{hidden}%
|
|||
\EmFi@temp{text}
|
|||
\EmFi@temp{date}
|
|||
\EmFi@temp{number}
|
|||
\EmFi@temp{file}
|
|||
\EmFi@temp{desc}
|
|||
\EmFi@temp{afrelationship}
|
|||
\EmFi@temp{moddate}
|
|||
\EmFi@temp{creationdate}
|
|||
\EmFi@temp{size}
|
|||
\EmFi@temp{ascending}
|
|||
\EmFi@temp{descending}
|
|||
\EmFi@temp{true}
|
|||
\EmFi@temp{false}
|
|||
\ltx@newif\ifEmFi@collection
|
|||
\ltx@newif\ifEmFi@sort
|
|||
\ltx@newif\ifEmFi@visible
|
|||
\ltx@newif\ifEmFi@edit
|
|||
\ltx@newif\ifEmFi@item
|
|||
\ltx@newif\ifEmFi@finished
|
|||
\ltx@newif\ifEmFi@id
|
|||
\def\EmFi@GlobalKey#1#2{%
|
|||
\global\expandafter\let\csname KV@#1@#2\expandafter\endcsname
|
|||
\csname KV@#1@#2\endcsname
|
|||
}
|
|||
\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
|
|||
}
|
|||
\def\EmFi@DefineKey#1#2{%
|
|||
\kv@define@key{EmFi}{#1}{%
|
|||
\expandafter\def\csname EmFi@#1\endcsname{##1}%
|
|||
}%
|
|||
\expandafter\def\csname EmFi@#1\endcsname{#2}%
|
|||
}
|
|||
\EmFi@DefineKey{mimetype}{}
|
|||
\EmFi@DefineKey{filespec}{\EmFi@file}
|
|||
\EmFi@DefineKey{ucfilespec}{}
|
|||
\EmFi@DefineKey{filesystem}{}
|
|||
\EmFi@DefineKey{desc}{}
|
|||
\EmFi@DefineKey{afrelationship}{}
|
|||
\EmFi@DefineKey{stringmethod}{%
|
|||
\ifx\pdfstringdef\@undefined
|
|||
escape%
|
|||
\else
|
|||
\ifx\pdfstringdef\relax
|
|||
escape%
|
|||
\else
|
|||
psd%
|
|||
\fi
|
|||
\fi
|
|||
}
|
|||
\kv@define@key{EmFi}{id}{%
|
|||
\def\EmFi@id{#1}%
|
|||
\EmFi@idtrue
|
|||
}
|
|||
\def\EmFi@defobj#1{%
|
|||
\ifEmFi@id
|
|||
\expandafter\xdef\csname EmFi@#1@\EmFi@id\endcsname{%
|
|||
\the\pdflastobj\ltx@space 0 R%
|
|||
}%
|
|||
\fi
|
|||
}
|
|||
\def\embedfileifobjectexists#1#2{%
|
|||
\expandafter\ifx\csname EmFi@#2@#1\endcsname\relax
|
|||
\expandafter\ltx@secondoftwo
|
|||
\else
|
|||
\expandafter\ltx@firstoftwo
|
|||
\fi
|
|||
}
|
|||
\def\embedfilegetobject#1#2{%
|
|||
\embedfileifobjectexists{#1}{#2}{%
|
|||
\csname EmFi@#2@#1\endcsname
|
|||
}{%
|
|||
0 0 R%
|
|||
}%
|
|||
}
|
|||
\kv@define@key{EmFi}{view}[]{%
|
|||
\EdefSanitize\EmFi@temp{#1}%
|
|||
\def\EmFi@next{%
|
|||
\global\EmFi@collectiontrue
|
|||
}%
|
|||
\ifx\EmFi@temp\ltx@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
|
|||
}
|
|||
\EmFi@DefineKey{initialfile}{}
|
|||
\def\embedfilesetup{%
|
|||
\ifEmFi@finished
|
|||
\def\EmFi@next##1{}%
|
|||
\EmFi@Error{%
|
|||
\string\embedfilefield\ltx@space after \string\embedfilefinish
|
|||
}{%
|
|||
The list of embedded files is already written.%
|
|||
}%
|
|||
\else
|
|||
\def\EmFi@next{%
|
|||
\kvsetkeys{EmFi}%
|
|||
}%
|
|||
\fi
|
|||
\EmFi@next
|
|||
}
|
|||
\def\EmFi@schema{}
|
|||
\gdef\EmFi@order{0}
|
|||
\let\EmFi@@order\relax
|
|||
\def\EmFi@fieldlist{}
|
|||
\def\EmFi@sortcase{0}%
|
|||
\def\embedfilefield#1#2{%
|
|||
\ifEmFi@finished
|
|||
\EmFi@Error{%
|
|||
\string\embedfilefield\ltx@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
|
|||
\kvsetkeys{EmFiFi}{#2}%
|
|||
\EmFi@convert\EmFi@title\EmFi@title
|
|||
\xdef\EmFi@schema{%
|
|||
\EmFi@schema
|
|||
/\pdf@escapename{\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@afrelationship AFRelationship%
|
|||
\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
|
|||
\kv@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
|
|||
\kv@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
|
|||
\kv@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
|
|||
\kv@define@key{EmFi}{\EmFi@key.prefix}{%
|
|||
\EmFi@itemtrue
|
|||
\expandafter\def\csname EmFi@P@#1\endcsname{##1}%
|
|||
}%
|
|||
\EmFi@GlobalKey{EmFi}{\EmFi@key.prefix}%
|
|||
\kv@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\ltx@empty
|
|||
\else
|
|||
\xdef\EmFi@sortkeys{%
|
|||
\EmFi@sortkeys
|
|||
/\pdf@escapename{#1}%
|
|||
}%
|
|||
\ifx\EmFi@sortorders\ltx@empty
|
|||
\global\let\EmFi@sortorders\EmFi@temp
|
|||
\gdef\EmFi@sortcase{1}%
|
|||
\else
|
|||
\xdef\EmFi@sortorders{%
|
|||
\EmFi@sortorders
|
|||
\ltx@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
|
|||
}
|
|||
\kv@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@afrelationship
|
|||
\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', `afrelationship', `moddate', `creationdate', `size'%
|
|||
}%
|
|||
\fi\fi\fi\fi\fi\fi\fi\fi\fi
|
|||
}
|
|||
\kv@define@key{EmFiFi}{title}{%
|
|||
\def\EmFi@title{#1}%
|
|||
}
|
|||
\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
|
|||
}
|
|||
\kv@define@key{EmFiFi}{visible}[true]{%
|
|||
\EmFi@setboolean{visible}{#1}%
|
|||
}
|
|||
\kv@define@key{EmFiFi}{edit}[true]{%
|
|||
\EmFi@setboolean{edit}{#1}%
|
|||
}
|
|||
\def\EmFi@sortkeys{}
|
|||
\def\EmFi@sortorders{}
|
|||
\def\embedfilesort{%
|
|||
\kvsetkeys{EmFiSo}%
|
|||
}
|
|||
\def\embedfile{%
|
|||
\ltx@ifnextchar[\EmFi@embedfile{\EmFi@embedfile[]}%
|
|||
}
|
|||
\def\EmFi@embedfile[#1]#2{%
|
|||
\ifEmFi@finished
|
|||
\EmFi@Error{%
|
|||
\string\embedfile\ltx@space after \string\embedfilefinish
|
|||
}{%
|
|||
The list of embedded files is already written.%
|
|||
}%
|
|||
\else
|
|||
\begingroup
|
|||
\def\EmFi@file{#2}%
|
|||
\kvsetkeys{EmFi}{#1}%
|
|||
\expandafter\expandafter\expandafter
|
|||
\ifx\expandafter\expandafter\expandafter
|
|||
\\\pdf@filesize{\EmFi@file}\\%
|
|||
\EmFi@Error{%
|
|||
File `\EmFi@file' not found%
|
|||
}{%
|
|||
The unknown file is not embedded.%
|
|||
}%
|
|||
\else
|
|||
\edef\EmFi@@filespec{%
|
|||
\pdf@escapestring{\EmFi@filespec}%
|
|||
}%
|
|||
\ifx\EmFi@ucfilespec\ltx@empty
|
|||
\let\EmFi@@ucfilespec\ltx@empty
|
|||
\else
|
|||
\EmFi@convert\EmFi@ucfilespec\EmFi@@ucfilespec
|
|||
\fi
|
|||
\ifx\EmFi@desc\ltx@empty
|
|||
\let\EmFi@@desc\ltx@empty
|
|||
\else
|
|||
\EmFi@convert\EmFi@desc\EmFi@@desc
|
|||
\fi
|
|||
\ifx\EmFi@afrelationship\ltx@empty
|
|||
\let\EmFi@@afrelationship\ltx@empty
|
|||
\else
|
|||
\EmFi@convert\EmFi@afrelationship\EmFi@@afrelationship
|
|||
\fi
|
|||
\ifEmFi@item
|
|||
\let\do\EmFi@do
|
|||
\immediate\pdfobj{%
|
|||
<<%
|
|||
\EmFi@fieldlist
|
|||
>>%
|
|||
}%
|
|||
\edef\EmFi@ci{\the\pdflastobj}%
|
|||
\fi
|
|||
\immediate\pdfobj stream attr{%
|
|||
/Type/EmbeddedFile%
|
|||
\ifx\EmFi@mimetype\ltx@empty
|
|||
\else
|
|||
/Subtype/\pdf@escapename{\EmFi@mimetype}%
|
|||
\fi
|
|||
/Params<<%
|
|||
/ModDate(\pdf@filemoddate{\EmFi@file})%
|
|||
/Size \pdf@filesize{\EmFi@file}%
|
|||
/CheckSum<\pdf@filemdfivesum{\EmFi@file}>%
|
|||
>>%
|
|||
}file{\EmFi@file}\relax
|
|||
\EmFi@defobj{EmbeddedFile}%
|
|||
\immediate\pdfobj{%
|
|||
<<%
|
|||
/Type/Filespec%
|
|||
\ifx\EmFi@filesystem\ltx@empty
|
|||
\else
|
|||
/FS/\pdf@escapename{\EmFi@filesystem}%
|
|||
\fi
|
|||
/F(\EmFi@@filespec)%
|
|||
\ifx\EmFi@@ucfilespec\ltx@empty
|
|||
\else
|
|||
/UF(\EmFi@@ucfilespec)%
|
|||
\fi
|
|||
\ifx\EmFi@@desc\ltx@empty
|
|||
\else
|
|||
/Desc(\EmFi@@desc)%
|
|||
\fi
|
|||
\ifx\EmFi@@afrelationship\ltx@empty
|
|||
\else
|
|||
/AFRelationship\EmFi@@afrelationship%
|
|||
\fi
|
|||
/EF<<%
|
|||
/F \the\pdflastobj\ltx@space 0 R%
|
|||
>>%
|
|||
\ifEmFi@item
|
|||
/CI \EmFi@ci\ltx@space 0 R%
|
|||
\fi
|
|||
>>%
|
|||
}%
|
|||
\EmFi@defobj{Filespec}%
|
|||
\EmFi@add{%
|
|||
\EmFi@@filespec
|
|||
}{\the\pdflastobj\ltx@space 0 R}%
|
|||
\fi
|
|||
\endgroup
|
|||
\fi
|
|||
}
|
|||
\def\EmFi@do#1{%
|
|||
\expandafter\ifx\csname EmFi@P@#1\endcsname\relax
|
|||
\expandafter\ifx\csname EmFi@V@#1\endcsname\relax
|
|||
\else
|
|||
/\pdf@escapename{#1}\csname EmFi@V@#1\endcsname
|
|||
\fi
|
|||
\else
|
|||
/\pdf@escapename{#1}<<%
|
|||
\expandafter\ifx\csname EmFi@V@#1\endcsname\relax
|
|||
\else
|
|||
/D\csname EmFi@V@#1\endcsname
|
|||
\fi
|
|||
/P(\csname EmFi@P@#1\endcsname)%
|
|||
>>%
|
|||
\fi
|
|||
}
|
|||
\def\EmFi@convert#1#2{%
|
|||
\ifnum\pdf@strcmp{\EmFi@stringmethod}{psd}=0 %
|
|||
\pdfstringdef\EmFi@temp{#1}%
|
|||
\let#2\EmFi@temp
|
|||
\else
|
|||
\edef#2{\pdf@escapestring{#1}}%
|
|||
\fi
|
|||
}
|
|||
\global\let\EmFi@list\ltx@empty
|
|||
\def\EmFi@add#1#2{%
|
|||
\begingroup
|
|||
\ifx\EmFi@list\ltx@empty
|
|||
\xdef\EmFi@list{\noexpand\do{#1}{#2}}%
|
|||
\else
|
|||
\def\do##1##2{%
|
|||
\ifnum\pdf@strcmp{##1}{#1}>0 %
|
|||
\edef\x{%
|
|||
\toks@{%
|
|||
\the\toks@%
|
|||
\noexpand\do{#1}{#2}%
|
|||
\noexpand\do{##1}{##2}%
|
|||
}%
|
|||
}%
|
|||
\x
|
|||
\def\do####1####2{%
|
|||
\toks@\expandafter{\the\toks@\do{####1}{####2}}%
|
|||
}%
|
|||
\def\stop{%
|
|||
\xdef\EmFi@list{\the\toks@}%
|
|||
}%
|
|||
\else
|
|||
\toks@\expandafter{\the\toks@\do{##1}{##2}}%
|
|||
\fi
|
|||
}%
|
|||
\def\stop{%
|
|||
\xdef\EmFi@list{\the\toks@\noexpand\do{#1}{#2}}%
|
|||
}%
|
|||
\toks@{}%
|
|||
\EmFi@list\stop
|
|||
\fi
|
|||
\endgroup
|
|||
}
|
|||
\def\embedfilefinish{%
|
|||
\ifEmFi@finished
|
|||
\EmFi@Error{%
|
|||
Too many invocations of \string\embedfilefinish
|
|||
}{%
|
|||
The list of embedded files is already written.%
|
|||
}%
|
|||
\else
|
|||
\ifx\EmFi@list\ltx@empty
|
|||
\else
|
|||
\global\EmFi@finishedtrue
|
|||
\begingroup
|
|||
\def\do##1##2{%
|
|||
(##1)##2%
|
|||
}%
|
|||
\immediate\pdfobj{%
|
|||
<<%
|
|||
/Names[\EmFi@list]%
|
|||
>>%
|
|||
}%
|
|||
\pdfnames{%
|
|||
/EmbeddedFiles \the\pdflastobj\ltx@space 0 R%
|
|||
}%
|
|||
\endgroup
|
|||
\begingroup
|
|||
\def\do##1##2{%
|
|||
\ltx@space##2%
|
|||
}%
|
|||
\immediate\pdfobj{%
|
|||
[\EmFi@list]%
|
|||
}%
|
|||
\pdfcatalog{%
|
|||
/AF \the\pdflastobj\ltx@space 0 R%
|
|||
}%
|
|||
\endgroup
|
|||
\ifx\EmFi@initialfile\ltx@empty
|
|||
\else
|
|||
\EmFi@collectiontrue
|
|||
\fi
|
|||
\ifEmFi@collection
|
|||
\ifx\EmFi@initialfile\ltx@empty
|
|||
\let\EmFi@@initialfile\ltx@empty
|
|||
\else
|
|||
\edef\EmFi@@initialfile{%
|
|||
\pdf@escapestring{\EmFi@initialfile}%
|
|||
}%
|
|||
\fi
|
|||
\begingroup
|
|||
\let\f=N%
|
|||
\def\do##1##2{%
|
|||
\def\x{##1}%
|
|||
\ifx\x\EmFi@@initialfile
|
|||
\let\f=Y%
|
|||
\let\do\ltx@gobbletwo
|
|||
\fi
|
|||
}%
|
|||
\EmFi@list
|
|||
\expandafter\endgroup
|
|||
\ifx\f Y%
|
|||
\else
|
|||
\@PackageWarningNoLine{embedfile}{%
|
|||
Missing initial file `\EmFi@initialfile'\MessageBreak
|
|||
among the embedded files%
|
|||
}%
|
|||
\let\EmFi@initialfile\ltx@empty
|
|||
\let\EmFi@@initialfile\ltx@empty
|
|||
\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\ltx@empty
|
|||
\else
|
|||
/Schema<<\EmFi@schema>>%
|
|||
\fi
|
|||
\ifx\EmFi@@initialfile\ltx@empty
|
|||
\else
|
|||
/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\ltx@empty
|
|||
\EmFi@temp
|
|||
\else
|
|||
/Sort<<\EmFi@temp>>%
|
|||
\fi
|
|||
>>%
|
|||
}%
|
|||
\pdfcatalog{%
|
|||
/Collection \the\pdflastobj\ltx@space0 R%
|
|||
}%
|
|||
\fi
|
|||
\fi
|
|||
\fi
|
|||
}
|
|||
\begingroup\expandafter\expandafter\expandafter\endgroup
|
|||
\expandafter\ifx\csname AtEndDocument\endcsname\relax
|
|||
\else
|
|||
\AtEndDocument{\embedfilefinish}%
|
|||
\fi
|
|||
\EmFi@AtEnd%
|
|||
\endinput
|
|||
%%
|
|||
%% End of file `embedfile.sty'.
|