|
%% !!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'.
|