summaryrefslogtreecommitdiff
path: root/texmf-dist/source/latex/acrotex/eforms.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'texmf-dist/source/latex/acrotex/eforms.dtx')
-rw-r--r--texmf-dist/source/latex/acrotex/eforms.dtx501
1 files changed, 464 insertions, 37 deletions
diff --git a/texmf-dist/source/latex/acrotex/eforms.dtx b/texmf-dist/source/latex/acrotex/eforms.dtx
index 7f949e23..0c5a49da 100644
--- a/texmf-dist/source/latex/acrotex/eforms.dtx
+++ b/texmf-dist/source/latex/acrotex/eforms.dtx
@@ -4,7 +4,7 @@
%<*copyright>
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% eForms package, %%
-%% Copyright (C) 2002-2017 D. P. Story %%
+%% Copyright (C) 2002-2018 D. P. Story %%
%% dpstory@uakron.edu %%
%% %%
%% This program can redistributed and/or modified under %%
@@ -16,15 +16,25 @@
%</copyright>
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{eforms}
-%<package> [2017/02/27 v2.9l Provides general eforms support (dps)]
+%<package> [2018/03/22 v2.9.19 Provides general eforms support (dps)]
%<*driver>
\documentclass{ltxdoc}
-\usepackage[colorlinks,hyperindex=false]{hyperref}[2012/10/12] % to support calculate for pdfyrc
+\usepackage[colorlinks,hyperindex=false]{hyperref}[2012/10/12]
\pdfstringdefDisableCommands{\let\\\textbackslash}
\OnlyDescription
\EnableCrossrefs
\CodelineIndex
\RecordChanges
+\bgroup\ttfamily
+\gdef\brpr#1{\char123\relax#1\char125\relax}\egroup
+\let\darg\brpr
+\let\env\texttt
+\let\opt\texttt
+\let\app\textsf
+\def\visispace{\symbol{32}}
+\def\ameta#1{\ensuremath{\langle\textit{\texttt{#1}}\rangle}}
+\def\meta#1{\textsl{\texttt{#1}}}
+\def\SUB#1{\ensuremath{{}_{\mbox{\scriptsize\ttfamily#1}}}}
\def\ltag{<}\def\rtag{>}
\let\app\textsf\let\pkg\textsf
\InputIfFileExists{aebdocfmt.def}{\PackageInfo{eforms}{Inputting aebdocfmt.def}}
@@ -80,9 +90,11 @@
% Set the driver dependent code for the |quiz| environments.
%
% \changes{v2.5o}{2012/06/18}{Added required package \string\textsf{ifpdf}}
+% \changes{v2.9m}{2017/09/03}{Added the ifluatex package}
% \begin{macrocode}
\RequirePackage{ifpdf}[2006/02/20]
\RequirePackage{ifxetex}[2006/08/21]
+\RequirePackage{ifluatex}
% \end{macrocode}
% \changes{v2.6c}{2014/02/18}{Added the \string\textsf{calc} package as required package.}
% \begin{macrocode}
@@ -117,6 +129,14 @@
% \PassOptionsToPackage{pdftex}{insdljs}
% \PassOptionsToPackage{pdftex}{hyperref}
}
+% \end{macrocode}
+% Added \textsf{luatex} option
+% \changes{v2.9m}{2017/09/03}{Add luatex option}
+% \begin{macrocode}
+\DeclareOption{luatex}{%
+ \def\eq@drivernum{1}\def\eq@driver{luatex}%
+ \def\eq@drivercode{epdftex.def}\def\ef@driver{luatex}%
+}
% \end{macrocode}%
% Set the drivers for \texttt{dvipdfm}\IndexOpt{dvipdfm}. \texttt{dvipdfmx}\IndexOpt{dvipdfmx},
% and \texttt{xetex}\IndexOpt{xetex}.
@@ -205,6 +225,7 @@
\let\inputCalcOrderJS\relax
% \end{macrocode}
% \changes{v2.5o}{2012/06/18}{Added automatic test for \string\textsf{pdftex}.}
+% \changes{v2.9m}{2017/09/03}{Added a check for \string\textsf{lualtex}}
% \begin{macrocode}
\@ifpackageloaded{web}{%
\ExecuteOptions{\eq@driver@name}%
@@ -212,10 +233,11 @@
\@ifpackageloaded{exerquiz}{%
\ExecuteOptions{\eq@driver}%
}{%
+ \ifluatex\ExecuteOptions{luatex}\else
\ifpdf\ExecuteOptions{pdftex}\else
\ifxetex\ExecuteOptions{xetex}\else
\@ifundefined{l@tex@@@@driver}{\ExecuteOptions{dvips}}
- {\ExecuteOptions{dvipsone}}\fi\fi
+ {\ExecuteOptions{dvipsone}}\fi\fi\fi
}%
}
% \end{macrocode}
@@ -292,6 +314,7 @@
\@ifundefined{eq@tmpdima}{\newdimen\eq@tmpdima}{}
\@ifundefined{eq@tmpdimb}{\newdimen\eq@tmpdimb}{}
\newlength\ef@dimena
+\newtoks\ef@scratchtoks
% \end{macrocode}
% (2016/12/22) Added switches \cs{ifmakeXasPD} and \cs{ifmakePDasX}, if true, the form fields created
% by \app{xetex} (\app{pdflatex/Distiller})
@@ -312,12 +335,16 @@
% \DescribeMacro\previewColor sets the color of the preview bounding rectangle. The
% default is black. Used mostly by the \textsf{eqexam} package with the \texttt{online}
% option.
-% \begin{macrocode}
-\providecommand\previewColor{black}
-\def\ef@Bbox#1#2{%
- \hbox{\ifpreview\setlength\fboxrule{0.4pt}\setlength\fboxsep{0pt}%
+% \changes{v2.9o}{2017/10/10}{Removed \string\cs{previewColor} in favor of
+% \string\cs{ckboxColor}}
+% \begin{macrocode}
+\providecommand\ckboxColor[1]{\def\@rgi{#1}\ifx\@rgi\@empty
+ \let\ckbox@Color\relax\else
+ \def\ckbox@Color{\color{#1}}\fi}\let\ckbox@Color\relax
+\def\ef@Bbox#1#2{\hbox{\ifpreview
+ \setlength\fboxrule{0.4pt}\setlength\fboxsep{0pt}%
\@tempdima=#1\advance\@tempdima by-\fboxrule
- \@tempdimb=#2\advance\@tempdimb by-\fboxrule\color{\previewColor}%
+ \@tempdimb=#2\advance\@tempdimb by-\fboxrule \ckbox@Color
\fbox{\parbox[b][\@tempdimb][c]{\@tempdima}{\hfill\vfill}}\else
\parbox[b][#2][c]{#1}{\hfill\vfill}\fi}%
}
@@ -663,8 +690,9 @@
% \cs{mlhypertext}.
% \begin{macrocode}
\def\ef@searchmlLink#1\mlLink#2#3\@nil{\def\ef@argii{#2}%
- \ifx\ef@argii\ef@end\let\ef@mlLink=0\else
- \ifx\ef@argii\ef@true\let\ef@mlLink=1\else\let\ef@mlLink=0\fi\fi}
+ \ifx\ef@argii\ef@end\let\ef@mlLink\ef@Zero\else
+ \ifx\ef@argii\ef@true\let\ef@mlLink\ef@One\else
+ \let\ef@mlLink\ef@Zero\fi\fi}
% \end{macrocode}
% Search for \texttt{/GoToR}, if found, change the link color to |\@filecolor|
% \begin{macrocode}
@@ -732,7 +760,7 @@
% \cs{mlhypertext} from \texttt{aeb\_mlink}, if that package is loaded.
% \begin{macrocode}
\def\@eqmlLink#1{\def\eq@arg{#1}\ifx\eq@arg\ef@true
- \let\ef@mlLink=1\else\let\ef@mlLink=0\fi}
+ \let\ef@mlLink\ef@One\else\let\ef@mlLink\ef@Zero\fi}
% \end{macrocode}
% \DescribeMacro{\Lock} The Lock key is used with signature fields, currently, there is
% no nice user interface to this key. Typical entries are
@@ -1341,7 +1369,7 @@
\fi\fi}
\let\autoCenter\ef@y
% \end{macrocode}
-% \DescribeMacro{\inline} The if |\inline{y}|, then we attempt to
+% \DescribeMacro{\inline} If |\inline{y}|, then we attempt to
% get a better vertical positioning. Designed for inline form fields.
% \changes{v2.5h}{2012/11/17}{Introduce the \string\cs{inline} key designed for
% inline form fields.}
@@ -1381,24 +1409,367 @@
\edef\symbol@choice{\csname eq@#1\endcsname}\fi
}
% \end{macrocode}
+%\DescribeMacro{\mlfix} When set to \texttt{y}, contiguous boxes are combined. This is for
+%multi-line hyperlinks. Recognizable values are \texttt{y} and \texttt{n}. contiguous boxes
+%are combined by default. There are command versions of \cs{mlfix}, these are
+%\DescribeMacro{\mlfixOn} and \DescribeMacro{\mlfixOff}
+%\changes{v2.9.16}{2018/03/08}{Added \string\cs{mlfix} for multiline links}
+%\changes{v2.9.19}{2018/03/22}{Added \string\cs{relax} following width dimension
+% in \string\cs{@eqmlstrut}}
+% \begin{macrocode}
+\newif\iffixmlinks \fixmlinkstrue
+\def\mlfixOn{\fixmlinkstrue}
+\def\mlfixOff{\fixmlinksfalse}
+\def\@eqmlfix#1{\def\ef@arg{#1}\ifx\ef@arg\ef@y
+ \mlfixOn\else\ifx\ef@arg\ef@n
+ \mlfixOff\else\mlfixOn
+ \PackageWarning{eforms}{The value of '#1' is not a
+ supported value\MessageBreak for \string\mlfix.\MessageBreak
+ Using the default of 'y'}%
+ \fi\fi}
+\newbox\mlstrutbox
+% \end{macrocode}
+% \DescribeMacro{\mlstrut}\hskip-\marginparsep\texttt{\darg{\ameta{strut-amt}}}
+% (2018/03/22) \cs{mlstrut} is used to adjust the height of a multi-line link,
+% e.g., \verb!\mlstrut{\large\strut}!
+% \changes{v2.9.19}{2018/03/22}{Added \string\cs{mlstrut} used
+% to adjust the height of a multi-line link}
+% \begin{macrocode}
+\def\@eqmlstrut#1{\setbox\mlstrutbox\hbox{#1}%
+ \def\ml@strut{\vrule \@height\ht\mlstrutbox
+ \@depth\dp\mlstrutbox
+ \@width\z@\relax}}
+\def\ml@strut{\relax\ifmmode\copy\mlstrutbox\else
+ \unhbox\mlstrutbox\fi}
+\@eqmlstrut{\strut}
+% \end{macrocode}
+% \DescribeMacro{\mlcrackat}\hskip-\marginparsep\texttt{\darg{\ameta{num}}}
+% (2018/03/22) \cs{mlcrackat} is a link used to break a multi-line link across a page boundary;
+% specifying \verb~\mlcrackat{3}~ breaks the link after the 3rd syllable. The \pkg{aeb\_mlink}
+% package then creates two links consisting of the text up to and including the crack-at value and
+% the second link consisting of the rest of the hypertext link (or url) string.
+% \changes{v2.9.19}{2018/03/22}{Added \string\cs{mlcrackat}}
+% \begin{macrocode}
+\def\@eqmlcrackat#1{\def\eq@mlcrackat{#1}}
+\let\eq@mlcrackat\@empty
+% \end{macrocode}
+% \DescribeMacro{\mlhyph}\hskip-\marginparsep\texttt{\darg{}}
+% (2018/03/22) \cs{mlhyph} is used to add a hyphen when a multi-line link is cracked
+% using \cs{mlcrackat}. The default is that no hyphen is produced.
+% \changes{v2.9.19}{2018/03/22}{Added \string\cs{mlhyph}}
+% \begin{macrocode}
+\def\@eqmlhyph#1{\def\ef@arg{#1}\ifx\ef@arg\ef@y
+ \def\eq@mlhyph{-}\else\ifx\ef@arg\ef@n
+ \let\eq@mlhyph\@empty\else\let\eq@mlhyph\@empty
+ \PackageWarning{eforms}{The value of '#1' is not a
+ supported value\MessageBreak for \string\mlhyph.\MessageBreak
+ Using the default of 'n'}\fi\fi}
+\let\eq@mlhyph\@empty
+% \end{macrocode}
+% \DescribeMacro{\mlignore}\hskip-\marginparsep\texttt{\darg{}}
+% (2018/03/22) \cs{mlignore} is an internal option used when breaking apart
+% two multi-line links; not used with urls.
+% \changes{v2.9.19}{2018/03/22}{Added \string\cs{mlignore}}
+% \begin{macrocode}
+\def\@eqmlignore#1{\let\eq@mlignore\ef@YES}
+\let\eq@mlignore\ef@NO
+% \end{macrocode}
+% \begin{macrocode}
+\def\@eqmlcrackinsat#1{\def\eq@mlcrackinsat{#1}}
+\let\eq@mlcrackinsat\@empty
+% \end{macrocode}
% \DescribeMacro{\protect} A protect feature for protecting a key from begin changed
% by the user through the optional arguments.
% \begin{macrocode}
\def\eq@protect#1{\let#1\@empty}
% \end{macrocode}
-%
% \subsubsection{Support for Hex escapes in PDF names}
+% \changes{v2.9p}{2017/10/10}{rework the support for Hex escapes in PDF names}
% \begin{macrocode}
\begingroup\catcode`\#=12 \catcode`*=6
-\gdef\HEXNAME{efHex}
-\ifpdfmarkup\gdef\ef@Hx*1*2{\@nameuse{efHex*1*2}}\else
-\gdef\ef@Hx*1*2{#*1*2}\fi
+ \ifpdfmarkup
+ \gdef\ef@Hx*1*2{\@nameuse{efHex*1*2}}\else
+ \gdef\ef@Hx*1*2{\@nameuse{efHex*1*2}}\fi
\endgroup
+\def\efHxError{\PackageError{eforms}{The glyph is not supported}{}}
+\def\HGERROR{efHxError}
\ifpdfmarkup
-\def\HexGlyph#1#2{\global\@namedef{efHex#1}{#2}}
+ \def\HexGlyph#1#2{\def\arg@ii{#2}\ifx\arg@ii\HGERROR
+ \global\@namedef{efHex#1}{\csname#2\endcsname}\else
+ \global\@namedef{efHex#1}{\expandafter
+ \string\csname#2\endcsname}\fi}
+\else
+ \begingroup\catcode`\#=12 \catcode`*=6
+ \gdef\HexGlyph*1*2{\def\arg@ii{*2}\ifx\arg@ii\HGERROR
+ \global\@namedef{efHex*1}{\csname*2\endcsname}\else
+ \global\@namedef{efHex*1}{#*1}\fi}
+ \endgroup
+\fi
\def\ef@inputPDFHEX{\InputIfFileExists{pdfdochex.def}
- {\typeout{Inputtingpdfdochex.def}}{}}
-\expandafter\ef@inputPDFHEX\fi
+ {\PackageInfo{eforms}{Inputting pdfdochex.def}}{}}
+\AtEndOfPackage{\ef@inputPDFHEX}
+%</package>
+%<*hexoctcodes>
+% begin C0 Controls (U000.pdf) http://www.unicode.org/charts/PDF/
+\HexGlyph{00}{efHxError}%{000}
+\HexGlyph{01}{efHxError}%{001}
+\HexGlyph{02}{efHxError}%{002}
+\HexGlyph{03}{efHxError}%{003}
+\HexGlyph{04}{efHxError}%{004}
+\HexGlyph{05}{efHxError}%{005}
+\HexGlyph{06}{efHxError}%{006}
+\HexGlyph{07}{efHxError}%{006}
+\HexGlyph{08}{efHxError}%{008}
+\HexGlyph{09}{efHxError}%{009}
+\HexGlyph{0A}{efHxError}%{012}
+\HexGlyph{0B}{efHxError}%{013}
+\HexGlyph{0C}{efHxError}%{014}
+\HexGlyph{0D}{efHxError}%{015}
+\HexGlyph{0E}{efHxError}%{016}
+\HexGlyph{0F}{efHxError}%{017}
+\HexGlyph{10}{efHxError}%{020}
+\HexGlyph{11}{efHxError}%{021}
+\HexGlyph{12}{efHxError}%{022}
+\HexGlyph{13}{efHxError}%{023}
+\HexGlyph{14}{efHxError}%{024}
+\HexGlyph{15}{efHxError}%{025}
+\HexGlyph{16}{efHxError}%{026}
+\HexGlyph{17}{efHxError}%{027}
+% end C0 Controls (U000.pdf)
+\HexGlyph{18}{030}% U+02D8 BREVE
+\HexGlyph{19}{031}% U+02c7 CARON
+\HexGlyph{1A}{032}% U+02c6 MODIFIER LETTER CIRCUMFLEX ACCENT
+\HexGlyph{1B}{033}% U+02D9 DOT ABOVE
+\HexGlyph{1C}{034}% U+02DD DOUBLE ACUTE ACCENT
+\HexGlyph{1D}{035}% U+02DB OGONEK
+\HexGlyph{1E}{036}% U+02DA RING ABOVEZ
+\HexGlyph{1F}{037}% U+02DC SMALL TILDE
+\HexGlyph{20}{040}% U+0020 SPACE
+\HexGlyph{21}{041}% U+0021 EXCLAMATION MARK
+\HexGlyph{22}{042}% U+0022 QUOTATION MARK
+\HexGlyph{23}{043}% U+0022 NUMBER SIGN
+\HexGlyph{24}{044}% U+0023 DOLLAR SIGN
+\HexGlyph{25}{045}% U+002 PERCENT SIGN
+\HexGlyph{26}{046}% U+0026 AMPERSAND
+\HexGlyph{27}{047}% U+0027 APOSTROPHE
+\HexGlyph{28}{050}% U+0028 LEFT PARENTHESIS
+\HexGlyph{29}{051}% U+0029 RIGHT PAENTHESIS
+\HexGlyph{2A}{052}% U+002A ASTERISK
+\HexGlyph{2B}{053}% U+002B PLUS SIGN
+\HexGlyph{2C}{054}% U+002C COMMA
+\HexGlyph{2D}{055}% U+002D HYPHEN-MINUS
+\HexGlyph{2E}{056}% U+002E FULL STOP
+\HexGlyph{2F}{057}% U+002F SOLIDUS
+\HexGlyph{30}{060}% U+0030 ZERO
+\HexGlyph{31}{061}% U+0031 ONE
+\HexGlyph{32}{062}% U+0032 TWO
+\HexGlyph{33}{063}% U+0033 THREE
+\HexGlyph{34}{064}% U+0034 FOUR
+\HexGlyph{35}{065}% U+0035 FIVE
+\HexGlyph{36}{066}% U+0036 SIX
+\HexGlyph{37}{067}% U+0037 SEVEN
+\HexGlyph{38}{070}% U+0038 EIGHT
+\HexGlyph{39}{071}% U+0039 NINE
+\HexGlyph{3A}{072}% U+003A COLON
+\HexGlyph{3B}{073}% U+003B SEMICOLON
+\HexGlyph{3C}{074}% U+003C LESS-THAN SIGN
+\HexGlyph{3D}{075}% U+003D EQUALS SIGN
+\HexGlyph{3E}{076}% U+003E GREATER-THAN SIGN
+\HexGlyph{3F}{077}% U+003F QUESTION MARK
+\HexGlyph{40}{100}% U+0040 COMMERCIAL AT
+\HexGlyph{41}{101}% U+0041 CAPITAL LETTER A
+\HexGlyph{42}{102}% U+0042 B
+\HexGlyph{43}{103}% U+0043 C
+\HexGlyph{44}{104}% U+0044 D
+\HexGlyph{45}{105}% U+0045 E
+\HexGlyph{46}{106}% U+0046 F
+\HexGlyph{47}{107}% U+0047 G
+\HexGlyph{48}{110}% U+0048 H
+\HexGlyph{49}{111}% U+0049 I
+\HexGlyph{4A}{112}% U+004A J
+\HexGlyph{4B}{113}% U+004B K
+\HexGlyph{4C}{114}% U+004C L
+\HexGlyph{4D}{115}% U+004D M
+\HexGlyph{4E}{116}% U+004E N
+\HexGlyph{4F}{117}% U+004F O
+\HexGlyph{50}{120}% U+0050 P
+\HexGlyph{51}{121}% U+0051 Q
+\HexGlyph{52}{122}% U+0052 R
+\HexGlyph{53}{123}% U+0053 S
+\HexGlyph{54}{124}% U+0054 T
+\HexGlyph{55}{125}% U+0055 U
+\HexGlyph{56}{126}% U+0056 V
+\HexGlyph{57}{127}% U+0057 W
+\HexGlyph{58}{130}% U+0058 X
+\HexGlyph{59}{131}% U+0059 Y
+\HexGlyph{5A}{132}% U+005A Z
+\HexGlyph{5B}{133}% U+005B LEFT SQUARE BRACKET
+\HexGlyph{5C}{134}% U+005C REVERSE SOLIDUS (BACKSLASH)
+\HexGlyph{5D}{135}% U+005D RIGHT SQUARE BRACKET
+\HexGlyph{5E}{136}% U+005E CIRCUMFLEX ACCENT
+\HexGlyph{5F}{137}% U+005F LOW LINE
+\HexGlyph{60}{140}% U+0060 GRAVE ACCENT
+\HexGlyph{61}{141}% U+0061 LATIN SMALL LETTER a
+\HexGlyph{62}{142}% U+0062 b
+\HexGlyph{63}{143}% U+0063 c
+\HexGlyph{64}{144}% U+0064 d
+\HexGlyph{65}{145}% U+0065 e
+\HexGlyph{66}{146}% U+0066 f
+\HexGlyph{67}{147}% U+0067 g
+\HexGlyph{68}{150}% U+0068 h
+\HexGlyph{69}{151}% U+0069 i
+\HexGlyph{6A}{152}% U+006A j
+\HexGlyph{6B}{153}% U+006B k
+\HexGlyph{6C}{154}% U+006C l
+\HexGlyph{6D}{155}% U+006D m
+\HexGlyph{6E}{156}% U+006E n
+\HexGlyph{6F}{157}% U+006F o
+\HexGlyph{70}{160}% U+0070 p
+\HexGlyph{71}{161}% U+0071 q
+\HexGlyph{72}{162}% U+0072 r
+\HexGlyph{73}{163}% U+0073 s
+\HexGlyph{74}{164}% U+0074 t
+\HexGlyph{75}{165}% U+0075 u
+\HexGlyph{76}{166}% U+0076 v
+\HexGlyph{77}{167}% U+0077 w
+\HexGlyph{78}{170}% U+0078 x
+\HexGlyph{79}{171}% U+0079 y
+\HexGlyph{7A}{172}% U+007A z
+\HexGlyph{7B}{173}% U+007B LEFT CURLY BRACKET
+\HexGlyph{7C}{174}% U+007C VERTICAL LINE
+\HexGlyph{7D}{175}% U+007D RIGHT CURLY BRACKET
+\HexGlyph{7E}{176}% U+007E TILDE
+\HexGlyph{7F}{efHxError}% 177 UNDEFINED IN PDFDOCENC
+\HexGlyph{80}{200}% U+2022 BULLET
+\HexGlyph{81}{201}% U+2020 DAGGER
+\HexGlyph{82}{202}% U+2021 DOUBLE DAGGER
+\HexGlyph{83}{203}% U+2026 HORIZONTAL ELLIPSIS
+\HexGlyph{84}{204}% U+2014 EM DASH
+\HexGlyph{85}{205}% U+2013 EN DASH
+\HexGlyph{86}{206}% U+0192 LATIN SMALL LETTER F WITH HOOK
+\HexGlyph{87}{207}% U+2044 FRACTION SLASH
+\HexGlyph{88}{210}% U+2039 SINGLE LEFT-POINTING ANGLE QUOTE MARK
+\HexGlyph{89}{211}% U+203A SINGLE RIGHT-POINTING ANGLE QUOTE MARK
+\HexGlyph{8A}{212}% U+2212 MINUS-SIGN
+\HexGlyph{8B}{213}% U+2030 PER MILL SIGN
+\HexGlyph{8C}{214}% U+201E DOUBLE LOW-9 QUOTE MARK
+\HexGlyph{8D}{215}% U+201C LEFT DOUBLE QUOTE MARK
+\HexGlyph{8E}{216}% U+201C RIGHT DOUBLE QUOTE MARK
+\HexGlyph{8F}{217}% U+2018 LEFT SINGLE QUOTE MARK
+\HexGlyph{90}{220}% U+2019 RIGHT SINGLE QUOTE MARK
+\HexGlyph{91}{221}% U+201A SINGLE LOW-9 QUOTE MARK
+\HexGlyph{92}{222}% U+2122 TRADE MARK SIGN
+\HexGlyph{93}{223}% U+FB01 LATIN SMALL LIGATURE FI
+\HexGlyph{94}{224}% U+FB02 LATIN SMALL LIGATURE FL
+\HexGlyph{95}{225}% U+0141 LATIN CAPITAL LETTER L WITH STROKE
+\HexGlyph{96}{226}% U+0152 LATIN CAPITAL LIGATURE OE
+\HexGlyph{97}{227}% U+0160 LATIN CAPITAL LETTER S WITH CARON
+\HexGlyph{98}{230}% U+0178 LATIN CAPITAL LETTER Y WITH DIAERESIS
+\HexGlyph{99}{231}% U+017D LATIN CAPITAL LETTER Z WITH CARON
+\HexGlyph{9A}{232}% U+0131 LATIN SMALL LETTER DOTLESS I
+\HexGlyph{9B}{233}% U+0142 LATIN SMALL LETTER L WITH STROKE
+\HexGlyph{9C}{234}% U+0153 LATIN SMALL LIGATURE OE
+\HexGlyph{9D}{235}% U+0161 LATIN SMALL LETTER S WITH CARON
+\HexGlyph{9E}{236}% U+017E LATIN SMALL LETTER Z WITH CARON
+\HexGlyph{9F}{efHxError}% 237 UNDEF IN PDFDOCENC
+\HexGlyph{A0}{240}% U+20AC EURO SIGN
+\HexGlyph{A1}{241}% U+00A1 INVERTED EXCLAMATION MARK
+\HexGlyph{A2}{242}% U+00A2 CENT SIGN
+\HexGlyph{A3}{243}% U+00A3 POUND SIGN
+\HexGlyph{A4}{244}% U+00A4 CURRENCY SIGN
+\HexGlyph{A5}{245}% U+00A5 YEN SIGN
+\HexGlyph{A6}{246}% U+00A6 BROKEN BAR
+\HexGlyph{A7}{247}% U+00A7 SECTION SIGN
+\HexGlyph{A8}{250}% U+00A8 DIAERESIS
+\HexGlyph{A9}{251}% U+00A9 COPYRIGHT SIGN
+\HexGlyph{AA}{252}% U+00AA FEMININE ORDINAL INDICATOR
+\HexGlyph{AB}{253}% U+00AB LEFT-POINTING DOUBLE ANGLE QUOTE MARK
+\HexGlyph{AC}{254}% U+00AC NOT SIGN
+\HexGlyph{AD}{efHxError}% 255 UNDEFINED IN PDFDOCENC
+\HexGlyph{AE}{256}% U+00AE REGISTERED SIGN
+\HexGlyph{AF}{257}% U+00AF MACRON
+\HexGlyph{B0}{260}% U+00B0 DEGREE SIGN
+\HexGlyph{B1}{261}% U+00B1 PLUS-MINUS SIGN
+\HexGlyph{B2}{262}% U+00B2 SUPERSCRIPT 2
+\HexGlyph{B3}{263}% U+00B3 SUPERSCRIPT 3
+\HexGlyph{B4}{264}% U+00B4 ACUTE ACCENT
+\HexGlyph{B5}{265}% U+00B5 MICRO SIGN
+\HexGlyph{B6}{266}% U+00B6 PILCROW SIGN (PARAGRAPH SIGN)
+\HexGlyph{B7}{267}% U+00B7 MIDDLE DOT
+\HexGlyph{B8}{270}% U+00B8 CEDILLA
+\HexGlyph{B9}{271}% U+00B9 SUPERSCRIPT ONE
+\HexGlyph{BA}{272}% U+00BA MASCULINE ORDINAL INDICATOR
+\HexGlyph{BB}{273}% U+00BB RIGHT-POINTING DOUBLE ANGLE QUOTE MARK
+\HexGlyph{BC}{274}% U+00BC VULGAR FRACTION ONE QUARTER
+\HexGlyph{BD}{275}% U+00BD VULGAR FRACTION ONE HALF
+\HexGlyph{BE}{276}% U+00BE VULGAR FRACTION THREE QUARTERS
+\HexGlyph{BF}{277}% U+00BF INVERTED QUESTION MARK
+\HexGlyph{C0}{300}% U+00C0 LATIN CAPITAL LETTER A WITH GRAVE
+\HexGlyph{C1}{301}% U+00C1 LATIN CAPITAL LETTER A WITH ACUTE
+\HexGlyph{C2}{302}% U+00C2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+\HexGlyph{C3}{303}% U+00C3 LATIN CAPITAL LETTER A WITH TILDE
+\HexGlyph{C4}{304}% U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS
+\HexGlyph{C5}{305}% U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE
+\HexGlyph{C6}{306}% U+00C6 LATIN CAPITAL LETTER AE
+\HexGlyph{C7}{307}% U+00C7 LATIN CAPITAL LETTER C WITH CEDILLA
+\HexGlyph{C8}{310}% U+00C8 LATIN CAPITAL LETTER E WITH GRAVE
+\HexGlyph{C9}{311}% U+00C9 LATIN CAPITAL LETTER E WITH ACUTE
+\HexGlyph{CA}{312}% U+00CA LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+\HexGlyph{CB}{313}% U+00CB LATIN CAPITAL LETTER E WITH DIAERESIS
+\HexGlyph{CC}{314}% U+00CC LATIN CAPITAL LETTER I WITH GRAVE
+\HexGlyph{CD}{315}% U+00CD LATIN CAPITAL LETTER I WITH ACUTE
+\HexGlyph{CE}{316}% U+00CE LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+\HexGlyph{CF}{317}% U+00CF LATIN CAPITAL LETTER I WITH DIAERESIS
+\HexGlyph{D0}{320}% U+00D0 LATIN CAPITAL LETTER ETH
+\HexGlyph{D1}{321}% U+00D1 LATIN CAPITAL LETTER D WITH TILDE
+\HexGlyph{D2}{322}% U+00D2 LATIN CAPITAL LETTER O WITH GRAVE
+\HexGlyph{D3}{323}% U+00D3 LATIN CAPITAL LETTER O WITH ACUTE
+\HexGlyph{D4}{324}% U+00D4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+\HexGlyph{D5}{325}% U+00D5 LATIN CAPITAL LETTER O WITH TILDE
+\HexGlyph{D6}{326}% U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS
+\HexGlyph{D7}{327}% U+00D7 MULTIPLICATION SIGN
+\HexGlyph{D8}{330}% U+00D8 LATIN CAPITAL LETTER O WITH STROKE
+\HexGlyph{D9}{331}% U+00D9 LATIN CAPITAL LETTER U WITH GRAVE
+\HexGlyph{DA}{332}% U+00DA LATIN CAPITAL LETTER U WITH ACUTE
+\HexGlyph{DB}{333}% U+00DB LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+\HexGlyph{DC}{334}% U+00DC LATIN CAPITAL LETTER U WITH DIAERESIS
+\HexGlyph{DD}{335}% U+00DD LATIN CAPITAL LETTER Y WITH ACUTE
+\HexGlyph{DE}{336}% U+00DE LATIN CAPITAL LETTER THORN
+\HexGlyph{DF}{337}% U+00DF LATIN CAPITAL LETTER SHARP S (Eszett)
+\HexGlyph{E0}{340}% U+00E0 LATIN SMALL LETTER A WITH GRAVE
+\HexGlyph{E1}{341}% U+00E1 LATIN SMALL LETTER A WITH ACUTE
+\HexGlyph{E2}{342}% U+00E2 LATIN SMALL LETTER A WITH CIRCUMFLEX
+\HexGlyph{E3}{343}% U+00E3 LATIN SMALL LETTER A WITH TILDE
+\HexGlyph{E4}{344}% U+00E4 LATIN SMALL LETTER A WITH DIAERESIS
+\HexGlyph{E5}{345}% U+00E5 LATIN SMALL LETTER A WITH RING ABOVE
+\HexGlyph{E6}{346}% U+00E6 LATIN SMALL LETTER AE
+\HexGlyph{E7}{347}% U+00E7 LATIN SMALL LETTER C WITH CEDILLA
+\HexGlyph{E8}{350}% U+00E8 LATIN SMALL LETTER E WITH GRAVE
+\HexGlyph{E9}{351}% U+00E9 LATIN SMALL LETTER E WITH ACUTE
+\HexGlyph{EA}{352}% U+00EA LATIN SMALL LETTER E WITH CIRCUMFLEX
+\HexGlyph{EB}{353}% U+00EB LATIN SMALL LETTER E WITH DIAERESIS
+\HexGlyph{EC}{354}% U+00EC LATIN SMALL LETTER I WITH GRAVE
+\HexGlyph{ED}{355}% U+00ED LATIN SMALL LETTER I WITH ACUTE
+\HexGlyph{EE}{356}% U+00EE LATIN SMALL LETTER I WITH CIRCUMFLEX
+\HexGlyph{EF}{357}% U+00EF LATIN SMALL LETTER I WITH DIAERESIS
+\HexGlyph{F0}{360}% U+00F0 LATIN SMALL LETTER ETH
+\HexGlyph{F1}{361}% U+00F1 LATIN SMALL LETTER N WITH TILDE
+\HexGlyph{F2}{362}% U+00F2 LATIN SMALL LETTER O WITH GRAVE
+\HexGlyph{F3}{363}% U+00F3 LATIN SMALL LETTER O WITH ACUTE
+\HexGlyph{F4}{364}% U+00F4 LATIN SMALL LETTER O WITH CIRCUMFLEX
+\HexGlyph{F5}{365}% U+00F5 LATIN SMALL LETTER O WITH DIAERESIS
+\HexGlyph{F6}{366}% U+00F6 LATIN SMALL LETTER C WITH ETH
+\HexGlyph{F7}{367}% U+00F7 DIVISION SIGN
+\HexGlyph{F8}{270}% U+00F8 LATIN SMALL LETTER O WITH STROKE
+\HexGlyph{F9}{271}% U+00F9 LATIN SMALL LETTER U WITH GRAVE
+\HexGlyph{FA}{272}% U+00FA LATIN SMALL LETTER U WITH ACUTE
+\HexGlyph{FB}{273}% U+00FB LATIN SMALL LETTER U WITH CIRCUMFLEX
+\HexGlyph{FC}{374}% U+00FC LATIN SMALL LETTER U WITH DIAERESIS
+\HexGlyph{FD}{375}% U+00FD LATIN SMALL LETTER Y WITH ACUTE
+\HexGlyph{FE}{376}% U+00FE LATIN SMALL LETTER C THORN
+\HexGlyph{FF}{377}% U+00FF LATIN SMALL LETTER Y WITH DIAERESIS
+%</hexoctcodes>
+%<*package>
% \end{macrocode}
% \subsubsection{Parsing PDF Color}
%
@@ -1979,15 +2350,19 @@
% (ol) and \cs{vcgBdry} positions the field so the boundary lines are
% contiguous (cg).
% \changes{v2.9h}{2017/01/15}{Added \string\cs{volBdry} and\string\cs{vcgBdry}}
+% \changes{v2.9n}{2017/09/04}{Added \string\cs{efSupprIndent}}.
% \begin{macrocode}
+\newcommand{\efSupprIndent}{\ef@scratchtoks=\expandafter{\the\everypar}%
+ \everypar{{\setbox\z@\lastbox}\clubpenalty\@M
+ \everypar=\expandafter{\the\ef@scratchtoks}}}
\newcommand\volBdry{\bgroup\parskip0pt\relax\@@par\nointerlineskip
- \olBdry\noindent\egroup}
+ \olBdry\egroup\efSupprIndent}
\newcommand\vcgBdry{\@ifstar{\edef\ef@offset{\the\parskip}\vcgBdry@i}
{\def\ef@offset{0pt}\vcgBdry@i}}
\newcommand\vcgBdry@i[1][0bp]{\bgroup
\setlength{\ef@dimena}{#1-\ef@offset}\parskip0pt\relax
- \par\nointerlineskip\cgBdry[\ef@dimena]\noindent
- \egroup\ignorespaces}
+ \par\nointerlineskip\cgBdry[\ef@dimena]%
+ \egroup\ignorespaces\efSupprIndent}
% \end{macrocode}
%
% \subsection{Choice Fields}\label{choice}
@@ -2577,7 +2952,7 @@
\eq@rawPDF % everything else
}
% \end{macrocode}
-% The low-level link command and is the building block of all the
+% \cs{set@@Link} is the low-level link command and is the building block of all the
% other, more user-friendly link commands. Takes seven parameters:
%\begin{enumerate}
%\item[\texttt{\#1}:] Optional arguments to modify the appearance and actions of the link.
@@ -2623,13 +2998,18 @@
\AtBeginDocument{\setDef@ultLinkColor}
% \end{macrocode}
% \begin{macro}{\setLink}
-% \begin{macro}{\mlsetLink}
+% \cs{setLink} is the basic high-level link command, it is used to surround text
+% with a link annotation.
% \begin{macro}{\setLinkText}
-% This is the basic high-level link command, it is used to surround text.
+% \cs{setLinkText} is a synonym for \cs{setLink}.
+% \begin{macro}{\mlhypertext}
+% A command defined in the \pkg{aeb\_mlink} package.
+% \begin{macro}{\mlsetLink}
+% \cs{mlsetLink} expands to \cs{mlhypertext}
%\begin{verbatim}
-% \setLinkText[\A{\JS{this.pageNum=6;}}\Color{1 0 0}]{Go There!}
+% \setLink[\A{\JS{this.pageNum=6;}}\Color{1 0 0}]{Go There!}
%\end{verbatim}
-% \paragraph{Link Parameters.} This link takes two parameters, one of which
+% \paragraph{Link Parameters.} These high-level links takes two parameters, one of which
% is optional.
%\begin{enumerate}
%\item[\texttt{[\#1]}:] Optional key-value pairs to change the appearance or action
@@ -2647,17 +3027,28 @@
\newcommand\setLink{\begingroup
\ef@sanitize@toks\ef@setlinktext
}
-\newcommand{\mlsetLink}{\mlhypertext}
-\let\setLinkText\setLink
-\newcommand{\ef@setlinktext}[1][]{%
% \end{macrocode}
% \changes{v2.5b}{2009/12/24}{added path to \string\cs{mlhypertext}}
% Added a path to \cs{mlhypertext} of the \textsf{aeb\_mlink} package. When the
% user specifies \verb!\mlLink{true}! in the option list, we branch off to
-% \cs{mlhypertext}.
+% \cs{mlhypertext}. For example, if we say,
+%\begin{verbatim}
+%\setLink[\mlLink{true}\A{\JS{app.alert("Hello World!");}}]{Hello World!}
+%\end{verbatim}
+% then we branch off to \cs{mlhypertext}. The above, then, is equivalent to,
+%\begin{verbatim}
+%\mlhypertext[\A{\JS{app.alert("Hello World!");}}]{Hello World!}
+%\end{verbatim}
+%If you've created a link using \cs{setLink} and the text does not wrap around to the next
+%link, simply insert \verb!\mlLink{true}! as an option to declare this link is a multi-line
+%link. Of course, you can also change the name from \cs{setLink} to \cs{mlsetLink} (or to \cs{mlhypertext}).
+%
+%In the next line, we \cs{let} \cs{setLinkText} to \cs{setLink}
% \begin{macrocode}
+\let\setLinkText\setLink
+\newcommand{\ef@setlinktext}[1][]{%
\endgroup\ef@searchmlLink#1\mlLink\end\@nil
- \ifx\ef@mlLink0\def\ef@next{\set@LinkText[#1]}\else
+ \ifx\ef@mlLink\ef@Zero\def\ef@next{\set@LinkText[#1]}\else
\def\ef@next{\mlhypertext[#1]}\fi\ef@next
}
\newcommand\set@LinkText[2][]{%
@@ -2688,6 +3079,16 @@
% \begin{macrocode}
\def\ef@postProcLinkProps{}
% \end{macrocode}
+% \cs{mlhypertext} is not defined unless \pkg{aeb\_mlink} is loaded; however,
+% we define \cs{mlsetLink} to expand to \cs{mlhypertext}.
+% \begin{macrocode}
+\newcommand{\mlsetLink}{\mlhypertext}
+\newcommand{\mlhypertext}[2][]{\@ifundefined{mlhypertext@i}
+ {\PackageWarning{eforms}{The \string\mlhypertext\space command
+ does nothing unless\MessageBreak the aeb_mlink package is loaded}}{}%
+ #2}
+% \end{macrocode}
+% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
@@ -3043,7 +3444,8 @@
\define@key{eforms}{default}{\@eqDV{#1}}
\define@key{eforms}{defaultstyle}{\@eqDS{#1}}
% \end{macrocode}
-% The \texttt{value}\IndexKey{value}\IndexKey{richvalue}\IndexKey{apprD} of the field (text, list, combobox). Example: \texttt{value=AcroTeX}.
+% The \texttt{value}\IndexKey{value}\IndexKey{richvalue}\IndexKey{apprD} of the field
+% (text, list, combobox). Example: \texttt{value=AcroTeX}.
% \begin{macrocode}
\define@key{eforms}{value}{\@eqV{#1}}
\define@key{eforms}{richvalue}{\@eqRV{#1}}
@@ -3202,6 +3604,19 @@
\ifcase\nr\relax\@eqinline{y}\or
\@eqinline{n}\fi
}{}
+\define@choicekey{eforms}{mlfix}[\val\nr]{yes,no}
+{%
+ \ifcase\nr\relax\@eqmlfix{y}\or
+ \@eqmlfix{n}\fi
+}{}
+\define@key{eforms}{mlstrut}[\strut]{\@eqmlstrut{#1}}
+\define@key{eforms}{mlcrackat}[]{\@eqmlcrackat{#1}}
+\define@key{eforms}{mlcrackinat}[]{\@eqmlcrackinsat{#1}}
+\define@choicekey{eforms}{mlhyph}[\val\nr]{yes,no}
+{%
+ \ifcase\nr\relax\@eqmlhyph{y}\or
+ \@eqmlhyph{n}\fi
+}{}
% \end{macrocode}
% Set presets\IndexKey{presets} from inside a \cs{ui} argument. For example,
%\begin{verbatim}
@@ -3705,17 +4120,29 @@
/ANN pdfmark}%
\to@insertStrucTabOrder{Link}\endgroup
}
+% \end{macrocode}
+% (2018/03/22) Defined \cs{pboxRect} to support
+% \cs{setLinkPbox}.
+% \changes{v2.9.19}{2018/03/22}{Defined \string\cs{pboxRect} to support
+% \string\cs{setLinkPbox}}
+% \begin{macrocode}
+\def\pboxRect{/Rect [\par@@Rect]}
+% \end{macrocode}
+% Added \cs{mllnkcontainer} to support textsf{aeb\_mlink} package.
+% \changes{v2.9.17}{2018/03/14}{Added \string\cs{mllnkcontainer}.}
+% \begin{macrocode}
+\def\mllnkcontainer#1{#1}
\def\setLinkPbox@driver
{%
\ifx\eq@A\@empty\else\expandafter\convertAToAction\eq@A\@nil\fi
\@eqBS{}%
- \literalps@out{%
- [ \eq@objdef/Rect [\par@@Rect]
+ \literalps@out{\mllnkcontainer{%
+ [ \eq@objdef\pboxRect
\eq@Border
\eq@QuadPoints % QuadPoints
\common@LinkCode
/Subtype /Link
- /ANN pdfmark}%
+ /ANN pdfmark}}%
\to@insertStrucTabOrder{Link}\endgroup
}
% \end{macrocode}