summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Master/texmf-dist/doc/latex/forms16be/README.md5
-rw-r--r--Master/texmf-dist/doc/latex/forms16be/doc/forms16be-man.pdfbin744530 -> 861001 bytes
-rw-r--r--Master/texmf-dist/doc/latex/forms16be/doc/forms16be-man.tex8
-rw-r--r--Master/texmf-dist/doc/latex/forms16be/examples/forms16b3-ef.pdfbin593930 -> 0 bytes
-rw-r--r--Master/texmf-dist/doc/latex/forms16be/examples/forms16be-ap.tex (renamed from Master/texmf-dist/doc/latex/forms16be/examples/forms16b3-ap.tex)19
-rw-r--r--Master/texmf-dist/doc/latex/forms16be/examples/forms16be-ef.pdfbin0 -> 661059 bytes
-rw-r--r--Master/texmf-dist/doc/latex/forms16be/examples/forms16be-ef.tex (renamed from Master/texmf-dist/doc/latex/forms16be/examples/forms16b3-ef.tex)19
-rw-r--r--Master/texmf-dist/doc/latex/forms16be/examples/forms16be-hy.tex (renamed from Master/texmf-dist/doc/latex/forms16be/examples/forms16b3-hy.tex)0
-rw-r--r--Master/texmf-dist/source/latex/forms16be/forms16be.dtx82
-rw-r--r--Master/texmf-dist/tex/latex/forms16be/forms16be.sty18
-rw-r--r--Master/texmf-dist/tex/latex/forms16be/uni4basic-latin.def3
11 files changed, 98 insertions, 56 deletions
diff --git a/Master/texmf-dist/doc/latex/forms16be/README.md b/Master/texmf-dist/doc/latex/forms16be/README.md
index f28fb2d8c3b..f70372665e5 100644
--- a/Master/texmf-dist/doc/latex/forms16be/README.md
+++ b/Master/texmf-dist/doc/latex/forms16be/README.md
@@ -1,6 +1,6 @@
The forms16b3 Package
Author: D. P. Story
-Dated: 2017/08/28
+Dated: 2019-03-20
The forms16be package provides support for UTF-16BE Unicode character
encoding (called a big-endian character string) for the text string
@@ -12,6 +12,9 @@ properties that take the text strings as its value. The package contains
support for Basic Latin plus the ability to enter any unicode character using
the notation \uXXXX, where 'XXXX' are four hex digits. Package
works for dvips/Distiller, pdflatex, lualatex, and xelatex.
+
+What's New (2019-03-20) Changed when macros are expanded; changes are in
+response to new features of insdljs (2019/03/16) and eforms (2019/03/16).
Enjoy!
diff --git a/Master/texmf-dist/doc/latex/forms16be/doc/forms16be-man.pdf b/Master/texmf-dist/doc/latex/forms16be/doc/forms16be-man.pdf
index ab9dc57544b..e6113051369 100644
--- a/Master/texmf-dist/doc/latex/forms16be/doc/forms16be-man.pdf
+++ b/Master/texmf-dist/doc/latex/forms16be/doc/forms16be-man.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/forms16be/doc/forms16be-man.tex b/Master/texmf-dist/doc/latex/forms16be/doc/forms16be-man.tex
index 67fbad2ae61..c9179b21365 100644
--- a/Master/texmf-dist/doc/latex/forms16be/doc/forms16be-man.tex
+++ b/Master/texmf-dist/doc/latex/forms16be/doc/forms16be-man.tex
@@ -40,7 +40,7 @@
email={dpstory@acrotex.net},
subject=Documentation for the forms16be package,
talksite={\url{www.acrotex.net}},
- version={1.2, 2017/08/28},
+ version={1.3, 2019/03/20},
Keywords={LaTeX, form fields, UTF-16BE, AcroTeX},
copyrightStatus=True,
copyrightNotice={Copyright (C) \the\year, D. P. Story},
@@ -308,13 +308,13 @@ The result is
There are three sample files:
\begin{itemize}
-\item \texttt{forms16b3-ef.tex} uses the \pkg{eforms} package to create
+\item \texttt{forms16be-ef.tex} uses the \pkg{eforms} package to create
form fields and demonstrate how to initialize form fields using
unicode.
-\item \texttt{forms16b3-hy.tex} uses form fields created by \pkg{hyperref}.
+\item \texttt{forms16be-hy.tex} uses form fields created by \pkg{hyperref}.
\pkg{hyperref} does not support initializing the value of a field, for
example, with big-endian, so a redefinition is needed.
-\item \texttt{forms16b3-ap.tex} demonstrates the \pkg{forms16be} with
+\item \texttt{forms16be-ap.tex} demonstrates the \pkg{forms16be} with
\pkg{aeb\_pro} (\app{dvips}/\app{Distiller} workflow required). For consistency with previously
documented behavior of \pkg{aeb\_pro}, the \opt{linktoattachments} option is used to import \pkg{forms16be}.
It is not necessary, however, to use \opt{linktoattachments}.
diff --git a/Master/texmf-dist/doc/latex/forms16be/examples/forms16b3-ef.pdf b/Master/texmf-dist/doc/latex/forms16be/examples/forms16b3-ef.pdf
deleted file mode 100644
index c06d4e7bfdf..00000000000
--- a/Master/texmf-dist/doc/latex/forms16be/examples/forms16b3-ef.pdf
+++ /dev/null
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/forms16be/examples/forms16b3-ap.tex b/Master/texmf-dist/doc/latex/forms16be/examples/forms16be-ap.tex
index b036669ffcf..056ab2f8146 100644
--- a/Master/texmf-dist/doc/latex/forms16be/examples/forms16b3-ap.tex
+++ b/Master/texmf-dist/doc/latex/forms16be/examples/forms16be-ap.tex
@@ -5,7 +5,7 @@
useacrobat,
web={designv,forcolorpaper,tight*},
eforms,
-% The next two option require dvips/Distiller workflow
+% The next two option require dvips/Distiller workflow
% linktoattachments,
% attachsource=tex
]{aeb_pro}
@@ -20,12 +20,16 @@
\begin{document}
-This file uses \pkg{aeb\_pro}, which assumes the document author uses \app{Acrobat}. When the \opt{linktooption}
-is used, \pkg{forms16be} is automatically included, but \app{dvips/Distiller} must be used as the PDF creator. However,
-if you don't want to attach or link to files, then simply say \verb~\usepackage{forms16be}~, as is done in this
-file, but specify the \opt{useacrobat} for \pkg{aeb\_pro}. The latter is how this source file is configured. As a
-user of \app{pdflatex}, \app{lualatex}, or \app{xelatex}, you can build this source file if you have \app{Acrobat} as your default
-PDF viewer.
+This file uses \pkg{aeb\_pro}, which assumes the document author
+uses \app{Acrobat}. When the option \opt{linktoattachments} is
+used, \pkg{forms16be} is automatically included, but
+\app{dvips/Distiller} must be used as the PDF creator. However,
+if you don't want to attach or link to files, then simply say
+\verb~\usepackage{forms16be}~, as is done in this file, but
+specify the \opt{useacrobat} for \pkg{aeb\_pro}. The latter is
+how this source file is configured. As a user of \app{pdflatex},
+\app{lualatex}, or \app{xelatex}, you can build this source file
+if you have \app{Acrobat} as your default PDF viewer.
Initialize a text field using unicode character strings,
@@ -56,4 +60,3 @@ Initialize a combo box using unicode character strings.
}
\end{document}
-
diff --git a/Master/texmf-dist/doc/latex/forms16be/examples/forms16be-ef.pdf b/Master/texmf-dist/doc/latex/forms16be/examples/forms16be-ef.pdf
new file mode 100644
index 00000000000..1e34ebb18db
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/forms16be/examples/forms16be-ef.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/forms16be/examples/forms16b3-ef.tex b/Master/texmf-dist/doc/latex/forms16be/examples/forms16be-ef.tex
index 0faece2fb5b..71688dae0c0 100644
--- a/Master/texmf-dist/doc/latex/forms16be/examples/forms16b3-ef.tex
+++ b/Master/texmf-dist/doc/latex/forms16be/examples/forms16be-ef.tex
@@ -1,9 +1,9 @@
\documentclass{article}
\usepackage[designi,tight*]{web}
-\usepackage{eforms}
+\usepackage{eforms}[2019/05/24] % this version supports \tops, see below
\usepackage{forms16be}
-\previewOff
+% \previewOn \pmcaOn % try compiling with these switches un-commented
\def\cs#1{\texttt{\char`\\#1}}
@@ -15,12 +15,21 @@
Initialize a text field using unicode character strings,
+
\defUniStr{VDV}{\u03B1 cos(\u03B8)}
\defUniStr{TU}{Don \u\EURO Story "\u03B1 cos(\u03B8)"}
-\textField[\TU{\unicodeStr(TU)}\DV{\unicodeStr(VDV)}\V{\unicodeStr(VDV)}]{tst}{1.5in}{11bp}\olBdry
+Text field: \textField[%
+ \TU{\unicodeStr(TU)}
+ \DV{\unicodeStr(VDV)}
+ \V{\tops{$\alpha\cos(\theta)$}{\unicodeStr(VDV)}}
+]{tst}{1.5in}{11bp}\olBdry
+
+Button: \pushButton[%
+ \CA{\tops{$\alpha\cos(\theta)$}{\unicodeStr(VDV)}}
+ \AAmouseup{app.alert("Initialized to \\"\\u03B1 cos(\\u03B8)\\"");}
+]{btn}{1in}{11bp}\cgBdry[1em]
-\pushButton[\CA{\unicodeStr(VDV)}\AAmouseup{app.alert("Initialized to \\"\\u03B1 cos(\\u03B8)\\"");}]{btn}{1in}{11bp}\cgBdry[1em]
\pushButton[\CA{Reset}\AAmouseup{this.resetForm();}]{reset}{}{11bp}
Note the JavaScript alert message, we use the same markup as for
@@ -35,7 +44,7 @@ Initialize a combo box using unicode character strings.
\defUniStr{myPound}{\u00A3 (Pound)}
\defUniStr{myFranc}{\u20A3 (Franc)}
-\comboBox[\Ff\FfEdit\DV{Euro}\V{Euro}\textFont{Arial}
+\comboBox[\Ff\FfEdit\DV{Euro}\V{\tops{Euro}{Euro}}\textFont{Arial}
\BG{0.98 0.92 0.73}\BC{0 .6 0}]{myCombo}{1in}{11bp}
{*{[(Euro)<\unicodeStr(myEuro)>]
[(Yen)<\unicodeStr(myYen)>]
diff --git a/Master/texmf-dist/doc/latex/forms16be/examples/forms16b3-hy.tex b/Master/texmf-dist/doc/latex/forms16be/examples/forms16be-hy.tex
index 269042aab25..269042aab25 100644
--- a/Master/texmf-dist/doc/latex/forms16be/examples/forms16b3-hy.tex
+++ b/Master/texmf-dist/doc/latex/forms16be/examples/forms16be-hy.tex
diff --git a/Master/texmf-dist/source/latex/forms16be/forms16be.dtx b/Master/texmf-dist/source/latex/forms16be/forms16be.dtx
index 99c3cc20ff3..eae105a5b7e 100644
--- a/Master/texmf-dist/source/latex/forms16be/forms16be.dtx
+++ b/Master/texmf-dist/source/latex/forms16be/forms16be.dtx
@@ -2,9 +2,8 @@
%<*copyright>
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% forms16be.sty package, %%
-%% Copyright (C) 2017 D. P. Story %%
+%% Copyright (C) 2017--2019 %%
%% dpstory@acrotex.net %%
-%% storyd@nwfsc.edu %%
%% %%
%% This program can redistributed and/or modified under %%
%% the terms of the LaTeX Project Public License %%
@@ -15,7 +14,7 @@
%</copyright>
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{forms16be}
-%<package> [2017/08/28 v1.2 Provides UTF-16BE encoding for text strings (dps)]
+%<package> [2019/03/20 v1.3 Provides UTF-16BE encoding for text strings (dps)]
%<*driver>
\documentclass{ltxdoc}
\usepackage[colorlinks,hyperindex=false]{hyperref}
@@ -24,8 +23,8 @@
\CodelineIndex
\RecordChanges
\InputIfFileExists{aebdocfmt.def}{\PackageInfo{forms16be}{Inputting aebdocfmt.def}}
- {\def\IndexOpt{\DescribeMacro}\def\IndexKey{\DescribeMacro}\let\setupFullwidth\relax
- \PackageInfo{forms16be}{aebdocfmt.def cannot be found}}
+ {\def\IndexOpt{\DescribeMacro}\def\IndexKey{\DescribeMacro}\let\setupFullwidth\relax
+ \PackageInfo{forms16be}{aebdocfmt.def cannot be found}}
\begin{document}
\def\CMD#1{\textbackslash#1}
\let\pkg\textsf
@@ -44,11 +43,18 @@
\tableofcontents
\let\Email\texttt
\DocInput{forms16be.dtx}
-\IfFileExists{\jobname.ind}{\newpage\setupFullwidth\par\PrintIndex}{\paragraph*{Index} The index goes here.\\Execute
- \texttt{makeindex -s gind.ist -o forms16be.ind forms16be.idx} on the command line and recompile
- \texttt{forms16be.dtx}.}
-\IfFileExists{\jobname.gls}{\PrintChanges}{\paragraph*{Change History} The list of changes goes here.\\Execute
- \texttt{makeindex -s gglo.ist -o forms16be.gls forms16be.glo} on the command line and recompile
+\IfFileExists{\jobname.ind}{\newpage\setupFullwidth\par\PrintIndex}{\paragraph*{Index} The index goes here.
+Execute
+\begin{quote}
+ \texttt{makeindex -s gind.ist -o forms16be.ind forms16be.idx}
+\end{quote}
+on the command line and recompile \texttt{forms16be.dtx}.}
+\IfFileExists{\jobname.gls}{\PrintChanges}{\paragraph*{Change History} The list of changes goes here.
+Execute
+\begin{quote}
+ \texttt{makeindex -s gglo.ist -o forms16be.gls forms16be.glo}
+\end{quote}
+on the command line and recompile
\texttt{forms16be.dtx}.}
\end{document}
%</driver>
@@ -56,6 +62,8 @@
% \MakeShortVerb{|}
% \InputIfFileExists{aebdonotindex.def}{\PackageInfo{forms16be}{Inputting aebdonotindex.def}}
% {\PackageInfo{forms16be}{cannot find aebdonotindex.def}}
+%\changes{v1.3}{2019/03/20}{Changed when macros are expanded; changes in response to new features
+% of \string\pkg{insdljs} and \string\pkg{eforms}}
% \begin{macrocode}
%<*package>
% \end{macrocode}
@@ -99,7 +107,8 @@
\providecommand\convertChriiUnicode[2]{\U@csarg\gdef{uni@#1}{#2}}%
% \end{macrocode}
% \end{macro}
-%\leavevmode\DescribeMacro{\aref}\hskip-\marginparsep\darg{\ameta{name}} Display the defined character string in UTF-16BE.
+%\leavevmode\DescribeMacro{\aref}\hskip-\marginparsep\darg{\ameta{name}}
+% Display the defined character string in UTF-16BE.
% \begin{macrocode}
\def\aref(#1){\csname aeb@aDescript@#1\endcsname}
% \end{macrocode}
@@ -119,7 +128,7 @@
% should be XXXX, place them in the stream, followed by \cs{@stringiiUnicode} so as to
% continue the processing of the next character in the description string. I've placed
% an \cs{expandafter} in the definition of \cs{getRawUnicode} to allow the commands below
-% to be used. Thus instead of using \cs{u20AC}, which might necessitate the user to
+% to be used. Thus, instead of using \cs{u20AC}, which might necessitate the user to
% look up the code, \verb!\u\EURO! can be used instead. Additional shortcut commands
% like these can be created. Except for \cs{EURO}, these are the ones \TeX{} has trouble
% processing.
@@ -152,21 +161,6 @@
% \begin{macrocode}
\providecommand{\@getRawUnicode}[4]{#1#2#3#4\@stringiiUnicode}
% \end{macrocode}
-% \subsection{The \texorpdfstring{\protect\cs{unicodeStr}}{\CMD{unicodeStr}} command}
-%\leavevmode\DescribeMacro{\unicodeStr}\hskip-\marginparsep\texttt{(\ameta{name})}
-% This command expands \ameta{name} to its big-endian character string. Its argument
-% is delimited with \emph{parentheses}. Do not redefine this command as it is used by
-% \pkg{eforms} for automatic detection of a unicode string.
-% \begin{macrocode}
-\def\unicodeStr(#1){\expandafter
- \ifx\csname aeb@aDescript@#1\endcsname\relax
-% \end{macrocode}
-% If \ameta{name} is not defined, we assume that \ameta{name} is raw hex digits and
-% we insert them being the marker \texttt{FEFF}; otherwise, we use the string defined by
-% \ameta{name}. We use \cs{stringIIUnicode} to get things going.
-% \begin{macrocode}
- FEFF#1\else\aeb@exiii\stringiiUnicode\aref(#1)\relax\fi}
-% \end{macrocode}
% \subsection{The \texorpdfstring{\protect\cs{defUniStr}}{\CMD{defUniStr}} command}
% \leavevmode\DescribeMacro{\defUniStr}\hskip-\marginparsep\darg{\ameta{name}}\darg{\ameta{string}}
% The \cs{defUniStr} command is used to define a unicode string. The \ameta{name} should be an
@@ -177,13 +171,43 @@
% use \cs{labelName} for the purpose of initializing form fields with unicode.
% \changes{v1.2}{2017/08/28}{Added parentheses to the \string\@for\space loop}
% \begin{macrocode}
-%\@for\x:=ABCDEFabcdef()\do{\@makeother\x}
\def\defUniStr#1{\def\U@uniStrName{#1}\bgroup\fbe@sanitize
\obeyspaces\getUniDescript}
{\obeyspaces\gdef\getUniDescript#1{\gdef\U@description{#1}%
\U@NameUniStr}}
\def\U@NameUniStr{\global\U@csarg\let
- {aeb@aDescript@\U@uniStrName}\U@description\egroup}
+ {aeb@aDescript@\U@uniStrName}\U@description\egroup
+% \end{macrocode}
+% Within \cs{U@NameUniStr}, we add the line below, which is an expanded
+% version of the unicode string, built earlier by \cs{buildUnicodeStr}.
+% \begin{macrocode}
+ \U@csarg\xdef{expanded@\U@uniStrName}%
+ {\U@buildUnicodeStr(\U@uniStrName)}}
+% \end{macrocode}
+% \leavevmode\DescribeMacro{\U@buildUnicodeStr}\hskip-\marginparsep\texttt{(\ameta{name})}
+% If \ameta{name} has been used in a \cs{defUniStr} macro, we prepare to be expanded by
+% \cs{U@NameUniStr}.
+% \changes{v1.3}{2019/03/20}{Added \string\cs{buildUnicodeStr} to do some of the work
+% \string\cs{unicodeStr} used to do}
+% \begin{macrocode}
+\def\U@buildUnicodeStr(#1){\expandafter
+ \ifx\csname aeb@aDescript@#1\endcsname\relax
+ \else\aeb@exiii\stringiiUnicode\aref(#1)\relax\fi}
+% \end{macrocode}
+%
+% \subsection{The \texorpdfstring{\protect\cs{unicodeStr}}{\CMD{unicodeStr}} command}
+%\leavevmode\DescribeMacro{\unicodeStr}\hskip-\marginparsep\texttt{(\ameta{name})}
+% This command expands \ameta{name} to its big-endian character string. Its argument
+% is delimited with \emph{parentheses}. Do not redefine this command as it is used by
+% \pkg{eforms} for automatic detection of a unicode string.
+% The new \cs{unicodeStr} command: if the argument is not already registered
+% by \cs{defUniStr}, we pass it through; otherwise we expand the macro defined
+% by \cs{U@NameUniStr}.
+% \changes{v1.2}{2017/08/28}{Define a new \string\cs{unicodeStr} command}
+% \begin{macrocode}
+\def\unicodeStr(#1){\expandafter
+ \ifx\csname aeb@aDescript@#1\endcsname\relax
+ FEFF#1\else\csname expanded@#1\endcsname\fi}
%</package>
%<*encoding>
% \end{macrocode}
diff --git a/Master/texmf-dist/tex/latex/forms16be/forms16be.sty b/Master/texmf-dist/tex/latex/forms16be/forms16be.sty
index 11ac2e0d3b3..5c36770f50d 100644
--- a/Master/texmf-dist/tex/latex/forms16be/forms16be.sty
+++ b/Master/texmf-dist/tex/latex/forms16be/forms16be.sty
@@ -8,9 +8,8 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% forms16be.sty package, %%
-%% Copyright (C) 2017 D. P. Story %%
+%% Copyright (C) 2017--2019 %%
%% dpstory@acrotex.net %%
-%% storyd@nwfsc.edu %%
%% %%
%% This program can redistributed and/or modified under %%
%% the terms of the LaTeX Project Public License %%
@@ -20,7 +19,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{forms16be}
- [2017/08/28 v1.2 Provides UTF-16BE encoding for text strings (dps)]
+ [2019/03/20 v1.3 Provides UTF-16BE encoding for text strings (dps)]
\def\U@csarg#1#2{\expandafter#1\csname#2\endcsname}
\providecommand\aeb@exiii{\expandafter\expandafter\expandafter}
\def\fbe@sanitize{\@makeother\"\@makeother\#\@makeother\$%
@@ -37,15 +36,20 @@
\aeb@exiii\@getRawUnicode\fi#1}
\def\getRawUnicode@p(#1){\expandafter\@getRawUnicode#1}
\providecommand{\@getRawUnicode}[4]{#1#2#3#4\@stringiiUnicode}
-\def\unicodeStr(#1){\expandafter
- \ifx\csname aeb@aDescript@#1\endcsname\relax
- FEFF#1\else\aeb@exiii\stringiiUnicode\aref(#1)\relax\fi}
\def\defUniStr#1{\def\U@uniStrName{#1}\bgroup\fbe@sanitize
\obeyspaces\getUniDescript}
{\obeyspaces\gdef\getUniDescript#1{\gdef\U@description{#1}%
\U@NameUniStr}}
\def\U@NameUniStr{\global\U@csarg\let
- {aeb@aDescript@\U@uniStrName}\U@description\egroup}
+ {aeb@aDescript@\U@uniStrName}\U@description\egroup
+ \U@csarg\xdef{expanded@\U@uniStrName}%
+ {\U@buildUnicodeStr(\U@uniStrName)}}
+\def\U@buildUnicodeStr(#1){\expandafter
+ \ifx\csname aeb@aDescript@#1\endcsname\relax
+ \else\aeb@exiii\stringiiUnicode\aref(#1)\relax\fi}
+\def\unicodeStr(#1){\expandafter
+ \ifx\csname aeb@aDescript@#1\endcsname\relax
+ FEFF#1\else\csname expanded@#1\endcsname\fi}
\InputIfFileExists{uni4basic-latin.def}{\PackageInfo{forms16be}
{Inputting uni4basic-latin.def\MessageBreak definitions}}
{\PackageError{forms16be}
diff --git a/Master/texmf-dist/tex/latex/forms16be/uni4basic-latin.def b/Master/texmf-dist/tex/latex/forms16be/uni4basic-latin.def
index d5a62083d47..bed4678ebf5 100644
--- a/Master/texmf-dist/tex/latex/forms16be/uni4basic-latin.def
+++ b/Master/texmf-dist/tex/latex/forms16be/uni4basic-latin.def
@@ -8,9 +8,8 @@
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% forms16be.sty package, %%
-%% Copyright (C) 2017 D. P. Story %%
+%% Copyright (C) 2017--2019 %%
%% dpstory@acrotex.net %%
-%% storyd@nwfsc.edu %%
%% %%
%% This program can redistributed and/or modified under %%
%% the terms of the LaTeX Project Public License %%