%% %% This is file `insdljs.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% insdljs.dtx (with options: `copyright,package') %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% insdljs.sty package, %% %% Copyright (C) 2001-2021 D. P. Story %% %% dpstory@uakron.edu %% %% %% %% This program can redistributed and/or modified under %% %% the terms of the LaTeX Project Public License %% %% Distributed from CTAN archives in directory %% %% macros/latex/base/lppl.txt; either version 1 of the %% %% License, or (at your option) any later version. %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{insdljs} [2021/06/19 v2.5.5 Insert Document Level JavaScripts (dps)] \usepackage{xkeyval} \RequirePackage{ifpdf}[2006/02/20] \RequirePackage{ifxetex}[2006/08/21] \RequirePackage{ifluatex} \DeclareOptionX{dvipsone}{\def\dljs@drivernum{0}% \AtBeginDocument{\dvips@marker}} \DeclareOptionX{dvips}{\def\dljs@drivernum{0}% \AtBeginDocument{\dvips@marker}} \DeclareOptionX{textures}{\def\dljs@drivernum{0}% \AtBeginDocument{\dvips@marker}} \DeclareOptionX{pdftex}{\def\dljs@drivernum{1}} \DeclareOptionX{luatex}{\def\dljs@drivernum{1}} \DeclareOptionX{dvipdfm}{\def\dljs@drivernum{2}} \DeclareOptionX{dvipdfmx}{\def\dljs@drivernum{2}} \DeclareOptionX{xetex}{\def\dljs@drivernum{2}} \let\dl@YES=y \let\dl@NO=n \let\dl@One=1 \let\dl@Zero=0 \let\dljs@YES=y \let\dljs@NO=n \edef\dl@restoreCats{% \catcode`\noexpand\"=\the\catcode`\"\relax \catcode`\noexpand\'=\the\catcode`\'\relax \catcode`\noexpand\,=\the\catcode`\,\relax \catcode`\noexpand\(=\the\catcode`\(\relax \catcode`\noexpand\!=\the\catcode`\!\relax \catcode`\noexpand\_=\the\catcode`\_\relax } \@makeother\"\@makeother\'\@makeother\,% \@makeother\(\@makeother\!\@makeother\_ \def\dlpkgInfo{\@nameuse{ver@\@currname.\@currext}} \def\dlSetPkgInfo{% \edef\dlpkgInfoExpd{\dlpkgInfo}% \expandafter\dlparsePkgInfo\dlpkgInfoExpd\@nil} \def\dlparsePkgInfo#1 #2 #3:#4\@nil{% \def\dlPkgInfoDate{#1}% \def\dlPkgInfoVer{#2}% \def\dlPkgInfoPkg{#3}% \def\dlPkgInfoDesc{#4}} \def\dvips@marker{\ifx\dljspresent\dl@NO\@OAction\fi} \let\isOpenAction\dl@NO \DeclareOptionX{nodljs}{\let\importdljs\dl@NO} \let\importdljs\dl@YES \let\firstdljs\dl@YES \let\dljspresent\dl@NO \DeclareOptionX{debug}{\let\dljs@debug\dl@YES} \let\dljs@debug\dl@NO \DeclareOptionX{execJS}{\execJSOn} \def\execJSOn{\let\execjs\dl@YES} \def\execJSOff{\let\execjs\dl@NO} \execJSOff \DeclareOptionX{nopro}{\let\dl@gopro\dl@NO} \let\dl@gopro\dl@YES \@ifpackageloaded{web}{% \ExecuteOptionsX{\eq@driver@name}% }{% \@ifpackageloaded{eforms}{% \ExecuteOptionsX{\ef@driver}% }{% \ifpdf\ExecuteOptionsX{pdftex}\else \ifxetex\ExecuteOptionsX{xetex}\else \@ifundefined{l@tex@@@@driver}{\ExecuteOptionsX{dvips}} {\ExecuteOptionsX{dvipsone}}\fi\fi }% } \DeclareOptionX{reqjs}{\let\dl@reqJS\dl@YES} \let\dljs@reqJS\dl@YES \DeclareOptionX{!reqjs}{\let\dl@reqJS\dl@NO} \DeclareOptionX{usealtadobe}{\let\usedAdbFuncs\dl@YES \def\inputAltAdbFncs{\InputIfFileExists{altadbfncs.def} {\PackageInfo{insdljs}{Inputting code for usealtadobe option}} {\PackageWarning{insdljs}{Cannot find altadbfncs.def.\MessageBreak Reinstall or refresh your file name database.}}}} \let\usedAdbFuncs\dl@NO \let\inputAltAdbFncs\relax \ProcessOptionsX \edef\dl@dquoteCat{\the\catcode`\"} \catcode`\"=12\relax \@ifundefined{dljs@drivernum}{\PackageError{insdljs}% {You have not specified dvips, dvipsone, pdftex,\MessageBreak dvipdfm, dvipdfmx, or xetex in the option list \MessageBreak of the insdljs package} {Place one of the drivers dvips, dvipsone, pdftex, dvipdfm, dvipdfmx, or xetex \MessageBreak in the option list of the insdljs package.} }{} \@ifundefined{ifpdfmarkup}{\newif\ifpdfmarkup}{}\pdfmarkupfalse \ifpdf\else\ifxetex\else\pdfmarkuptrue\fi\fi \RequirePackage{hyperref} \ifpdf\ifx\pdfextension\@undefined\else \protected\def\pdfnames{\pdfextension names } \def\pdfpageref{\pdffeedback pageref}\fi\fi \ifpdfmarkup \IfFileExists{acrotex-js.sty}{\let\reqpkg\relax} {\PackageWarningNoLine{insdljs}{% The acrotex-js package is required.\MessageBreak Before continuing, install this package,\MessageBreak read the documentation, and place\MessageBreak aeb.js in the expected folder }\def\reqpkg{\usepackage{acrotex-js}[2021/06/19]} } \expandafter\reqpkg\fi \RequirePackage{verbatim} \let\dlcomment\comment \let\enddlcomment\endcomment \usepackage{conv-xkv}[2017/01/03] \@ifundefined{dljs@drivernum}{% \@ifundefined{eq@drivernum}{% \PackageWarning{insdljs} {No driver specified, will check for pdftex.} \@ifundefined{pdfoutput}{% \@ifundefined{@pdfm@mark}{\def\eq@drivernum{2}% \def\dljs@drivernum{1}\let\isOpenAction\dl@NO \PackageWarning{insdljs}{No pdftex, but detected dvipdfm}}% {\PackageWarning{insdljs}{Neither pdftex nor dvipdfm, assuming dvips/dvipsone.}% \def\eq@drivernum{0}\def\dljs@drivernum{0}% \let\isOpenAction\dl@YES} }{% \ifcase\pdfoutput \def\eq@drivernum{1}\def\dljs@drivernum{1}% \let\isOpenAction\dl@NO \PackageInfo{insdljs}{Pdftex detected.}% \else \def\eq@drivernum{0}\def\dljs@drivernum{0}% \let\isOpenAction\dl@YES \PackageWarning{insdljs}{Pdftex engine detected, but is outputting dvi. Assuming dvips as the driver.}% \fi }% }{% \begingroup \count0=\eq@drivernum \xdef\dljs@drivernum{\ifcase\count0 0\or1\or2\or0\else0\fi} \ifnum\dljs@drivernum=0\global\let\isOpenAction\dl@YES \else\global\let\isOpenAction\dl@NO\fi \endgroup }% }{} \ifnum\dljs@drivernum=1\relax \RequirePackage{everyshi} \fi \def\AEB@psMrk{[%] \space} \ifx\dl@reqJS\dl@YES \def\dl@@reqJS{/Type/Requirement/S/EnableJavaScripts} \ifpdf\pdfcatalog{\dl@@reqJS}\else \ifxetex\immediate\@pdfm@mark{put @catalog <<\dl@@reqJS>>}\else \literalps@out{\AEB@psMrk{Catalog} <<\dl@@reqJS>> /PUT pdfmark}\fi\fi \fi \newif\ifthereisdjs \thereisdjsfalse \def\applydljs#1{\ifthereisdjs\else#1 \global\thereisdjstrue\fi} \providecommand\JS[1]{/S/JavaScript/JS(#1)} \providecommand{\Named}[1]{/S/Named/N/#1} \providecommand{\GoTo}{/S/GoTo/D} \providecommand{\GoToD}{/S/GoTo/D} \providecommand{\GoToR}{/S/GoToR} \providecommand{\Thread}[1]{/S/Thread/D(#1)} \providecommand{\URI}[1]{/S/URI/URI(#1)} \providecommand{\Launch}[1]{/S/Launch/F(#1)} \def\previewMiKTeX{\def\jsR{\string\r}\def\jsT{\string\t}} {\obeylines % \gdef\js@@R{\noexpand }} \def\pdfSPDef{\string\040} \def\dl@sp@ce{ } \newif\ifpdfspaces\pdfspacesfalse \def\pdfSpacesOn{\global\pdfspacestrue\let\pdfSP\pdfSPDef} \def\pdfSpacesOff{\global\pdfspacesfalse\let\pdfSP\dl@sp@ce} \pdfSpacesOff \ifpdf\else\ifxetex\else\pdfSpacesOn\fi\fi \def\pdfLBr{\string\173} \def\pdfRBr{\string\175} \bgroup\obeyspaces \gdef\dl@restorespcs{\global\let =\dl@sp@ce}\egroup \let\dljstfor\@tfor \def\dfnJSCR#1{\gdef\dfnJSR{#1}\gdef\defineJSjsR{#1}} \def\dfnJSCRDef{\dfnJSCR{\string\r\eqbs^^J}} \dfnJSCRDef \def\jsR{\string\r\string\n} \def\jsN{\string\n} {\catcode`\^^I\active % \gdef^^I{\noexpand^^I}% \gdef\js@@T{\noexpand^^I}% }% end of \catcode`\^^I \let\jsT=\js@@T \newwrite\js@verbatim@out \def\iwvo#1{\immediate\write\js@verbatim@out{#1}} \def\dl@EForAF4#1_{\ifx\usedAdbFuncs\dl@YES EF\else AF\fi#1_} \def\dl@EForAFMergeChange{% \ifx\usedAdbFuncs\dl@YES EF\else AF\fi MergeChange} \def\dl@lparen{(}\def\dl@rparen{)} \def\genericNL{^^J} \def\defjsLB{\gobiv} \def\genericLB{\eqbs\eqbs^^J} \def\pdfmarkLB{\eqbs^^J} \def\jscsDflt{\let\protect\noexpand\let\jslit\string \let\~\dl@tilda\let\^\dl@sup \def\\{\eqbs\eqbs}\def\cs##1{\\\\##1}% \def\r{\\r}\def\t{\\t}\def\n{\\n}% \let\{\dl@lBrace\let\}\dl@rBrace \ifx\jsstr@useUni\dl@One\def\Uni{\\u}\else\def\u{\\u}\fi \ifx\jsstr@parens\dl@One\let\l@paren\dl@lparen \let\r@paren\dl@rparen\else \let\l@paren\@empty\let\r@paren\@empty\fi \dl@paramlocal\let\LB\genericLB\let\NL\genericNL } \def\jscsDLJS{\let\protect\noexpand\let\jslit\string \let\~\dl@tilda\let\^\dl@sup \ifxetex\def\\{\eqbs\eqbs}\else\def\\{\eqbs}\fi\def\cs##1{\\\\##1}% \def\r{\\r}\def\t{\\t}\def\n{\\n}% \let\{\dl@lBrace\let\}\dl@rBrace \ifx\jsstr@useUni\dl@One\def\Uni{\\u}\else\def\u{\\u}\fi \ifx\jsstr@parens\dl@One\let\l@paren\dl@lparen \let\r@paren\dl@rparen\else \let\l@paren\@empty\let\r@paren\@empty\fi \ifpdfmarkup\let\LB\pdfmarkLB\else \let\LB\genericLB\fi \let\NL\genericNL } \ifpdf\let\jscsDLJS\jscsDflt\fi \let\dl@JSCS\jscsDflt \bgroup\obeyspaces \gdef\flJSStr{\bgroup\global\let =\pdfSP \let\dl@JSCS\jscsDflt \obeyspaces\@ifstar{\def\isStar{*}\dl@defJSStr}% {\let\isStar\relax\dl@defJSStr}}\egroup \let\fieldJSStr\flJSStr \let\defineJSStr\flJSStr \newcommand{\dlJSStr}{\bgroup \@ifstar{\def\isStar{*}\let\dl@JSCS\jscsDLJS\dl@defJSStr} {\let\isStar\relax\let\dl@JSCS\jscsDLJS\dl@defJSStr}} \define@key{jsstr}{quotes}[]{\let\jsstr@quotes\dl@One} \define@key{jsstr}{noquotes}[]{\let\jsstr@quotes\dl@Zero} \define@key{jsstr}{parens}[]{\let\jsstr@parens\dl@One} \define@key{jsstr}{noparens}[]{\let\jsstr@parens\dl@Zero} \let\jsstr@quotes\dl@One\let\jsstr@parens\dl@Zero % noparens the default \define@key{jsstr}{useUni}[]{\let\jsstr@useUni\dl@One} \let\jsstr@useUni\dl@Zero \newcommand{\dl@defJSStr}[3][quotes]{\def\dl@argi{#1}\ifx\dl@argi\@empty \else\ifx\dl@JSCS\jscsDLJS\let\jsstr@parens\dl@Zero\fi \setkeys{jsstr}{#1}\fi\dl@JSCS \ifx\jsstr@quotes\dl@One \xdef#2{\l@paren"#3"\r@paren}\else \xdef#2{\l@paren#3\r@paren}\fi \if\isStar*\gdef\dl@afterAction{{\Hy@unicodefalse\expandafter \pdfstringdef\expandafter#2\expandafter{#2}}}\else \global\let\dl@afterAction\relax\fi \aftergroup\dl@afterAction\egroup\dl@restorespcs} \def\dlTC#1{try{#1}catch(e){}} \def\js@R{\ifcase\dljs@drivernum^^J\else\jsR\fi} \def\db#1\db{\ifx\dljs@debug\dl@YES\space\space\space#1\js@R\fi} \newcounter{dljs@cnt} \newcounter{dljssegs}\setcounter{dljssegs}{2} \newenvironment{js@verbatimwrite}{% writes to current \js@verbatim@out \@bsphack \let\do\@makeother\dospecials\catcode`\^^M\active \def\verbatim@processline{\immediate \write\js@verbatim@out{\the\verbatim@line}}\verbatim@start }{\@esphack} \def\closejs@verbatim@out{\immediate\closeout\js@verbatim@out} \begingroup \catcode`\@=0 @catcode`@\=12 @gdef@eqbs{\} @gdef@ccpdfmark{@gdef@eqesc{\}@gdef@eqesci{}} @endgroup \begingroup \catcode`<=1 \catcode`\>=2 \@makeother\{ \@makeother\} \gdef\definebraces<\def\{<\eqesc{>\def\}<\eqesc}>> \endgroup \def\eqdospecials{\do\ \do\{\do\}\do\$\do\&% \do\#\do\^\do\_\do\~} \begingroup \catcode`\~=\active \lccode`\~=`\^^M \lowercase{\endgroup \def\eqverbatim@#1~{\verbatim@@#1*end\@nil}% \def\eqverbatim@@#1*end{% \verbatim@addtoline{#1}% \futurelet\dl@next\eqverbatim@@@}% \def\eqverbatim@@@#1\@nil{% \ifx\dl@next\@nil \verbatim@processline \verbatim@startline \let\dl@next\eqverbatim@ \else \def\@tempa##1*end\@nil{##1}% \@temptokena{*end}% \def\dl@next{\expandafter\verbatim@test\@tempa#1\@nil~}% \fi\dl@next}% }% \def\jsexpverbatimwrite {% writes to current \js@verbatim@out \@bsphack \ccpdfmark \catcode`\<=12 \catcode`\>=12 \input{dljscc.def}% \let\verbatim@=\eqverbatim@ \let\verbatim@@=\eqverbatim@@ \let\verbatim@@@=\eqverbatim@@@ \let\do\@makeother\eqdospecials% \catcode`\^^M=\active\catcode`\^^I=12% \def\verbatim@processline{% \edef\expVerb{\the\verbatim@line}% \immediate\write\js@verbatim@out{\expVerb}}% \verbatim@start% } \def\endjsexpverbatimwrite{\immediate\closeout\js@verbatim@out\@esphack} \let\js@Path\@empty \def\insPath#1{\def\js@Path{#1}} \begingroup \catcode`\{=12 \catcode`\}=12 \catcode`\<=1 \catcode`\>=2 \gdef\dl@lBrace<\string\{> \gdef\dl@rBrace<\string\}> \gdef\dl@tilda<\string~> \gdef\dl@sup<\string^> \endgroup \def\makeJSspecials{% \def\\{\eqbs\eqbs}% % define \\ to be \\ \let\jslit\string \let\{\dl@lBrace\let\}\dl@rBrace \let\u\@empty \def\({\eqbs(}\def\){\eqbs)}% \makespecialJS % make \r=\jsR and \t=\jsT } \def\dl@fitpage{/Fit} \def\dl@actualsize{/XYZ null null 1.0} %{/XYZ -32768 -32768 1.0} \def\dl@fitwidth{/FitH null} %{/FitH -32768} \def\dl@fitheight{/FitV null} %{/FitV -32768} \def\dl@fitvisible{/FitBH null} %{/FitBH -32768} \def\dl@inheritzoom{/XYZ 0 0 0} \def\dl@mag#1{/XYZ null null #1} \edef\dl@Page#1{\ifcase\dljs@drivernum {Page#1}\or\noexpand\pdfpageref#1\space\space 0 R\or @page#1\fi} \def\dl@preProcDefns{\let\Page\dl@Page\let\mag\dl@mag \let\fitpage\dl@fitpage\let\actualsize\dl@actualsize \let\fitwidth\dl@fitwidth\let\fitheight\dl@fitheight \let\fitvisible\dl@fitvisible\let\inheritzoom\dl@inheritzoom } \let\aeb@additionalOpenAction\@empty \let\aeb@addActionCode\@empty \let\addActionObj\@empty \let\aebpopentoks\@empty \let\aebpFA\dl@NO \def\aebp@rightDelimiters{} \newcommand{\addToDocOpen}[1]{% \ifx\aebpFA\dl@NO \g@addto@macro\aebpopentoks{#1}% \def\aeb@additionalOpenAction{/Next {pubAddToDocOpen}}% \ifpdf \def\aeb@addActionCode{\immediate\pdfobj{<< \aebpopentoks\aebp@rightDelimiters >>}% \edef\addActionObj{\the\pdflastobj\space 0 R}}% \else\ifxetex \def\aeb@addActionCode{\immediate \@pdfm@mark{obj @objAddActionObj << \aebpopentoks\aebp@rightDelimiters >> }}% \def\addActionObj{@objAddActionObj}% \else % postscript \def\aeb@addActionCode{\literalps@out{% \AEB@psMrk/_objdef {pubAddToDocOpen} /type/dict /OBJ pdfmark^^J% \AEB@psMrk{pubAddToDocOpen} << \aebpopentoks\aebp@rightDelimiters >> /PUT pdfmark}}% \def\addActionObj{{pubAddToDocOpen}}% \fi\fi \global\let\aebpFA\dl@YES \let\@pdfstartview\@empty \else \edef\aebp@dljstmp{\aebp@rightDelimiters}% \xdef\aebp@rightDelimiters{\aebp@dljstmp >> }% \g@addto@macro\aebpopentoks{/Next << #1 }% \fi } \def\dljs@OpenActions{/OpenAction \addActionObj} \def\dljs@setOpenActions{\bgroup\makeJSspecials\dl@preProcDefns \aeb@addActionCode \ifpdf\pdfcatalog{\dljs@OpenActions}\else \ifxetex\immediate \@pdfm@mark{put @catalog <<\dljs@OpenActions>>}\else \literalps@out{\AEB@psMrk {Catalog} <<\dljs@OpenActions>> /PUT pdfmark}\fi\fi\egroup} \@ifpackageloaded{aeb_pro}{} {\AtBeginDocument{\ifx\aebpFA\dl@YES\expandafter \dljs@setOpenActions\fi}} \let\@CloseAction\@empty \def\@OAction@pdfmark{\literalps@out{% \AEB@psMrk{ThisPage} << /AA << /O << \theFirstAction\space \opentoks\@rightDelimiters >> \@CloseAction >> >> /PUT pdfmark}} \def\@POAction@pdfmark{\literalps@out{% \AEB@psMrk{ThisPage} << /AA << \@thisOpenAction \@thisCloseAction >> >> /PUT pdfmark}% } \def\@OAction@pdftex{% \ifx\isOpenAction\dl@YES \xdef\pdftexOAction{/AA << /O << \theFirstAction\space \opentoks\@rightDelimiters >> \@CloseAction >>}% \AtNextShipout{\pdfpageattr=\expandafter{\pdftexOAction}}\fi } \def\@POAction@pdftex{% \xdef\thisPageActionpdftex{/AA << \@thisOpenAction \@thisCloseAction >>}% \AtNextShipout{\pdfpageattr=\expandafter{\thisPageActionpdftex}}% } \def\@OAction@dvipdfm{\ifx\isOpenAction\dl@YES \@pdfm@mark{put @thispage << /AA << /O << \theFirstAction\space \opentoks\@rightDelimiters >> \@CloseAction >> >>}\fi } \def\@POAction@dvipdfm{% \@pdfm@mark{put @thispage << /AA << \@thisOpenAction \@thisCloseAction >> >>}% } \ifcase\dljs@drivernum \let\@OAction\@OAction@pdfmark \let\@POAction\@POAction@pdfmark \gdef\theFirstAction{/S/JavaScript/JS (\the\importfdftoks)} \let\isOpenAction\dl@YES \or \let\@OAction\@OAction@pdftex \let\@POAction\@POAction@pdftex \AtBeginDocument{\@OAction@pdftex} \or \let\@OAction\@OAction@dvipdfm \let\@POAction\@POAction@dvipdfm \AtBeginDocument{\@OAction@dvipdfm} \fi \def\opentoks{} \def\makespecialJS{% \let\r\jsR\let\t\jsT\let\n\jsN} \def\@rightDelimiters{} \def\OpenAction{\@ifnextchar\Next {\expandafter\@OpenAction\@gobble}{\@OpenAction}} \def\@OpenAction#1{% \ifx\isOpenAction\dl@NO {\makespecialJS\xdef\theFirstAction{#1}}% \global\let\isOpenAction\dl@YES \else \edef\dljstmp{\@rightDelimiters}% \xdef\@rightDelimiters{\dljstmp >> }% {\makespecialJS\xdef\dljstmp{\opentoks /Next << #1 }}% \xdef\opentoks{\dljstmp}% \fi \@nextOpenAction } \def\@nextOpenAction{\@ifnextchar\Next{\expandafter \@OpenAction\@gobble}{}} \def\protectJSCtrls{\def\r{\string\r\string\n}% \def\t{\string\t}\def\n{\string\n}} \def\dljs@tstlp{\@ifnextchar\bgroup {\let\dljs@multi\dl@YES\dljs@tstlpi}% {\let\dljs@multi\dl@NO\dljs@tstlpi}} \def\dljs@tstlpi#1\@nil{}% \def\dljs@bldScript#1#2#3{\bgroup \dljs@tstlp#1\@nil \ifx\dljs@multi\dl@NO{\protectJSCtrls\xdef#3{/#2<<#1>>}}\else \toks0={}\let\dljs@rAngles\@empty\count0=0 \@tfor\dljs@arg:=#1\do{% \ifnum\count0=0 \toks0=\expandafter{\dljs@arg}\else \toks2=\expandafter{\dljs@arg}% \edef\holdtokstmp{\the\toks0 /Next<<\the\toks2 }% \edef\dljs@rAngles{\dljs@rAngles\space>>}% \toks0=\expandafter{\holdtokstmp}% \fi \advance\count0by\@ne }{\protectJSCtrls\xdef#3{/#2<<\the\toks0 \dljs@rAngles>>}% \xdef#3{#3}}% \fi \egroup} \newcommand{\thisPageAction}[2]{% \let\@CloseAction\@empty \let\@thisOpenAction\@empty \let\@thisCloseAction\@empty \def\dljs@argi{#1}\def\dljs@argii{#2}% \ifnum\value{page}=1\relax \ifx\dljs@argii\@empty\else \dljs@bldScript{#2}{C}{\@CloseAction}\fi \ifx\dljs@argi\@empty\else\dljs@tstlp#1\@nil \ifx\dljs@multi\dl@NO\OpenAction{#1}\else \@tfor\dljs@arg:=#1\do{\expandafter \OpenAction\expandafter{\dljs@arg}% }\fi\fi \else \ifx\dljs@argi\@empty\else \dljs@bldScript{#1}{O}{\@thisOpenAction}\fi \ifx\dljs@argii\@empty\else \dljs@bldScript{#2}{C}{\@thisCloseAction}\fi \@POAction \fi } \let\insdljsloadVar\@empty \newenvironment{insDLJS}[3][] {% \gdef\detectdljs{#1}\gdef\dljsBase{#2}% \ifxetex{\def\1{\string\1}\def\2{\string2}% \def\3{\string\3}\xdef\dljsName{#3}}\else \Hy@unicodefalse\pdfstringdef{\dljsName}{#3}\fi \ifx\detectdljs\@empty \stepcounter{dljs@cnt}% \xdef\detectdljs{_bInsdljsload\arabic{dljs@cnt}}% \edef\insdljsloadVar{var \detectdljs=true;}% \addtocounter{dljs@cnt}{-1}% \fi \global\let\multisegments\dl@NO\setcounter{dljssegs}{2}% \global\dljsobjtoks={}\expandafter \ifx\csname dljs\dljsBase\endcsname\relax \else\@insjserrDuplicate\fi \ifcase\dljs@drivernum \let\insert@DLJS\insert@DLJS@pdfmark \let\endinsDLJS\endinsert@DLJS@pdfmark \let\newsegment\newsegment@pdfmark \let\endnewsegment\endnewsegment@pdfmark \or \let\insert@DLJS\insert@DLJS@pdftex \let\endinsDLJS\endinsert@DLJS@pdftex \let\newsegment\newsegment@pdftex \let\endnewsegment\endnewsegment@pdftex \or \let\insert@DLJS\insert@DLJS@dvipdfm \let\endinsDLJS\endinsert@DLJS@dvipdfm \let\newsegment\newsegment@dvipdfm \let\endnewsegment\endnewsegment@dvipdfm \fi \insert@DLJS }{} \newenvironment{insDLJS*}[2][] {% \gdef\detectdljs{#1}\gdef\dljsBase{#2}% \ifx\detectdljs\@empty \stepcounter{dljs@cnt}% \xdef\detectdljs{_bInsdljsload\arabic{dljs@cnt}}% \edef\insdljsloadVar{var \detectdljs=true;}% \addtocounter{dljs@cnt}{-1}% \fi \global\let\multisegments\dl@YES\setcounter{dljssegs}{2}% \global\dljsobjtoks={}% \expandafter\ifx\csname dljs\dljsBase\endcsname\relax \else\@insjserrDuplicate\fi \ifcase\dljs@drivernum \let\insert@DLJS\insert@DLJS@pdfmark\expandafter \let\csname endinsDLJS*\endcsname\endinsert@DLJS@pdfmark \let\newsegment\newsegment@pdfmark \let\endnewsegment\endnewsegment@pdfmark \or \let\insert@DLJS\insert@DLJS@pdftex\expandafter \let\csname endinsDLJS*\endcsname\endinsert@DLJS@pdftex \let\newsegment\newsegment@pdftex \let\endnewsegment\endnewsegment@pdftex \or \let\insert@DLJS\insert@DLJS@dvipdfm\expandafter \let\csname endinsDLJS*\endcsname\endinsert@DLJS@dvipdfm \let\newsegment\newsegment@dvipdfm \let\endnewsegment\endnewsegment@dvipdfm \fi \insert@DLJS }{} \def\@insjserrDuplicate{% \typeout{^^J! insdljs Package error.} \typeout{! insDLJS environment: On line number \the\inputlineno,} \typeout{! the base name `\dljsBase' has already been chosen.} \typeout{! A DLJS earlier defined has been overwritten!} \typeout{! Choose another name for the first required argument} \typeout{! of the insDLJS environment.^^J} } \newif\ifisdljs \isdljsfalse \begingroup \catcode`\~=12 \catcode`\#=12 \gdef\efdlspecials{\catcode`\~=12 \catcode`\#=12} \endgroup \def\ckivspace#1{\if\noexpand#1\space\else\expandafter#1\fi} \let\DLspecialDefs\@empty \def\fdfAfterheader#1{% \iwvo{\string\begingroup\string\efdlspecials} \iwvo{\string\DLspecialDefs\string#1} \iwvo{\string\isdljstrue} \iwvo{\string\makeatletter} \iwvo{\string\immediate\string\openout\string \js@verbatim@out=\string\js@Path\space\dljsBase.fdf}% \iwvo{\string\begin{jsexpverbatimwrite}} \iwvo{\string\firstFDFline} \iwvo{1 0 obj} \iwvo{<< /FDF << /JavaScript << /Doc 2 0 R /After 3 0 R >> >> >> } \iwvo{endobj} \iwvo{2 0 obj} \let\x\@empty \applydljs{\def\x{^^Jvar _thereisdjs=true;}}% \ifpdfmarkup \iwvo{[ (ExecJS \dljsBase) (var _\dljsBase\space = true;\x) ] }\else \iwvo{[ (00 ExecJS \dljsBase) (var _\dljsBase\space = true;\x)] }\fi \iwvo{endobj} \iwvo{3 0 obj} \iwvo{<<>>} \iwvo{stream} } \def\restoreDLspecialDefs{\let\DLspecialDefs\@empty} \newenvironment{execJS}[2][\relax] {% \def\x{#1}\ifx\x\@empty\def\x{\relax}\fi \gdef\detectdljs{\string_#2}\gdef\dljsBase{#2}% \global\dljsobjtoks={}% \expandafter\gdef\csname dljs\dljsBase\endcsname{}% \ifx\importdljs\dl@YES\ifx\execjs\dl@YES \ifx\dl@gopro\dl@YES \ifnum\dljs@drivernum=0\relax \addImportAnFDF\importAnFDFTemplate \else \OpenAction{/S/JavaScript/JS (\importAnFDFTemplate)}% \fi\fi \fi\fi \immediate\openout \js@verbatim@out \js@Path\dljsBase.djs \expandafter\fdfAfterheader\expandafter{\x}% \js@verbatimwrite }{% \fdfendstreamobj \endjs@verbatimwrite \fdftrailer \iwvo{\string\restoreDLspecialDefs}% \closejs@verbatim@out \expandafter\xdef\csname\dljsBase OBJ\endcsname{\the\dljsobjtoks}% \edef\@dljstmp{\noexpand\AtBeginDocument{% \noexpand\input{\js@Path\dljsBase.djs}}}\@dljstmp } \newtoks\JStoks \def\dl@param(#1){\csname p@r@m#1\endcsname} \def\dl@paramlocal{\let\p\dl@param} \let\eParams\relax \def\bParams#1{\def\p@r@m{p@r@m}\c@dljs@cnt\z@ \@ifnextchar\eParams{\expandafter \def\csname\p@r@m1\endcsname{#1}} {\bParams@i{#1}}} \def\bParams@i#1\eParams{\@tfor\x:=#1\do{\advance\c@dljs@cnt\@ne \JStoks=\expandafter{\x}\expandafter \edef\csname\p@r@m\the\c@dljs@cnt\endcsname{\the\JStoks}}} \def\dlcombine(#1)(#2){#1#2} \def\dlcontig(#1){#1} \def\escIs#1{\def\Eschr{#1}} \def\dl@makeesc#1{\catcode`#1=0\relax} \def\dl@makecmt#1{\catcode`#1=14\relax} \def\dlgobToFi#1\fi{\fi\defjsLB} \let\gobiv\@gobblefour \newif\ifdlfortypeset \dlfortypesetfalse \def\dl@typesetthis{\global\dlfortypesettrue \dfnJSCR{\hfil\break\null}} \def\@initdfnJS{\let\jsFrstLne\dl@One\let\makeesc\dl@makeesc \let\makecmt\dl@makecmt\let\typeset\dl@typesetthis} \def\@vrbsetupdfnJS{\def\verbatim@processline{\ifx\jsFrstLne\dl@One \let\jsFrstLne\dl@Zero \xdef\JS@temp{\the\JStoks\the\verbatim@line}\else \xdef\JS@temp{\the\JStoks\defineJSjsR\the\verbatim@line}\fi \global\JStoks=\expandafter{\JS@temp}}% \let\do\@makeother\dospecials\catcode`\^^M\active} \def\b@vrbdfnJS#1{\ifpdfspaces\let\space\pdfSP \makeatletter\obeyspaces\fi% #1\ifdlfortypeset% \global\JStoks={\bgroup\leavevmode\dl@paramlocal}\fi% \verbatim@start} \def\e@vrbdfnJS{\gdef\eq@JStemp{\ifdlfortypeset\global \JStoks=\expandafter{\the\JStoks\egroup}\fi\expandafter \edef\defineJSArg{\the\JStoks}\global \dlfortypesetfalse}\global\let\space\dl@sp@ce\aftergroup\eq@JStemp} \newenvironment{defineJS}[2][]{\@initdfnJS \expandafter\@ifundefined\expandafter{% \expandafter\@gobble\string#2}{}{\PackageWarning{insdljs} {The command \string#2 already defined}}% \gdef\defineJSArg{#2}\global\JStoks={}% \@vrbsetupdfnJS \b@vrbdfnJS{#1}}{\e@vrbdfnJS} \newenvironment{@defineJS}[2][]{\@initdfnJS \gdef\defineJSArg{#2}\global\JStoks={}% \@vrbsetupdfnJS \b@vrbdfnJS{#1}}{\e@vrbdfnJS} \newenvironment{defineJS*}[2][]{\@initdfnJS \gdef\defineJSArg{#2}\global\JStoks={}% \@vrbsetupdfnJS \b@vrbdfnJS{#1}}{\e@vrbdfnJS} \newenvironment{localJS}[1][]{}{\ifvmode\else\unskip\fi} \newenvironment{willClose}[1][] {\@defineJS[#1]{\will@Close}} {\end@defineJS} \let\will@Close\@empty \newenvironment{willSave}[1][] {\@defineJS[#1]{\will@Save}} {\end@defineJS} \let\will@Save\@empty \newenvironment{didSave}[1][] {\@defineJS[#1]{\did@Save}} {\end@defineJS} \let\did@Save\@empty \newenvironment{willPrint}[1][] {\@defineJS[#1]{\will@Print}} {\end@defineJS} \let\will@Print\@empty \newenvironment{didPrint}[1][] {\@defineJS[#1]{\did@Print}} {\end@defineJS} \let\did@Print\@empty \def\dljs@willDidActions{/AA << \ifx\test@will@Close\@empty\else/WC << \JS{\will@Close} >>\fi \ifx\test@will@Save\@empty\else/WS << \JS{\will@Save} >>\fi \ifx\test@did@Save\@empty\else/DS << \JS{\did@Save} >>\fi \ifx\test@will@Print\@empty\else/WP << \JS{\will@Print} >>\fi \ifx\test@did@Print\@empty\else/DP << \JS{\did@Print} >>\fi >> } \newcommand\dljs@setDocActions{% \edef\test@will@Close{\will@Close}% \edef\test@will@Save{\will@Save}% \edef\test@did@Save{\did@Save}% \edef\test@will@Print{\will@Print}% \edef\test@did@Print{\did@Print}% \ifpdf\pdfcatalog{\dljs@willDidActions}\else \ifxetex\immediate \@pdfm@mark{put @catalog <<\dljs@willDidActions>>}\else \literalps@out{\AEB@psMrk {Catalog} <<\dljs@willDidActions>> /PUT pdfmark}\fi\fi } \@ifpackageloaded{aeb_pro}{} {\AtBeginDocument{\dljs@setDocActions}} \begingroup \catcode`\%=12 \gdef\firstFDFline{%FDF-1.2} \gdef\lastFDFline{%%EOF} \endgroup \def\fdfheader {% \iwvo{\string\begingroup\string\efdlspecials} \iwvo{\string\isdljstrue} \iwvo{\string\makeatletter} \iwvo{\string\immediate\string\openout\string \js@verbatim@out=\string\js@Path\space\dljsBase.fdf}% \iwvo{\string\begin{jsexpverbatimwrite}} \iwvo{\string\firstFDFline} \iwvo{1 0 obj} \iwvo{<< /FDF << /JavaScript << /Doc 2 0 R >> >> >>} \iwvo{endobj} \iwvo{2 0 obj} \iwvo{[ \string\csname\string\@gobble\space\dljsBase% OBJ\string\endcsname]} \iwvo{endobj} } \def\fdfbeginstreamobj {% \iwvo{\thedljssegs\space 0 obj} \iwvo{<<>>} \iwvo{stream} \applydljs{\iwvo{var _thereisdjs=true;}} \ifx\insdljsloadVar\@empty\else \iwvo{\insdljsloadVar} \global\let\insdljsloadVar\@empty\fi } \def\fdfendstreamobj{% \iwvo{endstream} \iwvo{endobj} } \def\fdftrailer{% \iwvo{trailer} \iwvo{<< /Root 1 0 R >>} \iwvo{\string\lastFDFline} \iwvo{*end{jsexpverbatimwrite}} \iwvo{\string\endgroup} } \newtoks\importfdftoks \importfdftoks={} \newtoks\dljsobjtoks \dljsobjtoks={} \def\importAnFDFTemplate{% if(typeof \detectdljs\space == "undefined")\jsR\jsT ( app.viewerVersion > 8 ) ? % aebTrustedFunctions( this, aebImportAnFDF, % "\js@Path\dljsBase.fdf") : % this.importAnFDF("\js@Path\dljsBase.fdf");\jsR } \def\addImportAnFDF#1{% \ifx\importdljs\dl@YES \edef\importAnFDFtmp{\the\importfdftoks#1}% \global\importfdftoks=\expandafter{\importAnFDFtmp}\fi } \def\importAnFDF{\ifx\importdljs\dl@YES\@OAction\fi} \newenvironment{newsegment@pdfmark}[1]{% \addtocounter{dljssegs}{1}\addtocounter{dljs@cnt}{1}% \Hy@unicodefalse\pdfstringdef{\dljsName}{#1}% \edef\@dljstmp{\the\dljsobjtoks(\dljsName) \thedljssegs\space 0 R\space}% \global\dljsobjtoks=\expandafter{\@dljstmp}% \fdfbeginstreamobj \js@verbatimwrite }{% \fdfendstreamobj \endjs@verbatimwrite } \def\insert@DLJS@pdfmark{% \global\let\dljspresent\dl@YES \expandafter\gdef\csname dljs\dljsBase\endcsname{}% \ifx\importdljs\dl@YES\ifx\dl@gopro\dl@YES \addImportAnFDF\importAnFDFTemplate\fi\fi \immediate\openout \js@verbatim@out \js@Path\dljsBase.djs \fdfheader \ifx\multisegments\dl@NO\expandafter \newsegment\expandafter{\expandafter\dljsName\expandafter}\fi } \def\endinsert@DLJS@pdfmark{% \ifx\importdljs\dl@YES \ifx\multisegments\dl@NO\expandafter\endnewsegment\fi \fdftrailer \closejs@verbatim@out \expandafter\xdef\csname\dljsBase% OBJ\endcsname{\the\dljsobjtoks}% \edef\@dljstmp{\noexpand\AtBeginDocument{% \noexpand\input{\js@Path\dljsBase.djs}}}% \@dljstmp \ifx\firstdljs\dl@YES \AtBeginDocument{\edef\@dljstmp{\importAnFDF}% \@dljstmp}\global\let\firstdljs\dl@NO \fi \fi } \begingroup \catcode`\@=0 @catcode`@\=12 @gdef@ccpdftex{@gdef@eqesc{\\}@gdef@eqesci{\}} @endgroup \def\begindljs {% \iwvo{\string\begingroup\string\efdlspecials} \iwvo{\string\isdljstrue} \iwvo{\string\makeatletter} {\uccode`c=`\%\uppercase{% \iwvo{\string\obeyspaces\string\obeylines \string\let\string^\string^M=\string\jsR c}}} {\escapechar=-1 \lccode`C=`\%\lowercase{% \iwvo{\string\\catcode`\string\\"=12C}}} } \def\beginseg{% {\lccode`P=`\{\lccode`C=`\%\lowercase{% \iwvo{\string\gdef\string\dljs\dljsBase\roman{dljssegs}PC}}}% \applydljs{\iwvo{var _thereisdjs=true;}}% } \def\endseg{{\uccode`c=`\%\uccode`p=`\}\uppercase{\iwvo{pc}}}} \def\enddljs{\iwvo{\string\endgroup}} \def\@roman#1{\romannumeral#1} \def\write@objs{% \iwvo{\begingroup} \iwvo{\string\catcode`\string\<=12 } \iwvo{\string\catcode`\string\>=12 } {\lccode`C=`\%\lowercase{\iwvo{\string\ccpdftex C}}} {\lccode`C=`\%\lowercase{\iwvo{% \string\input{dljscc.def}C\the\dljsobjtoks}}} \iwvo{\endgroup} } \newenvironment{newsegment@pdftex}[1]{% \addtocounter{dljssegs}{1}% \addtocounter{dljs@cnt}{1}% \edef\tmp{^^J\string\immediate\string\pdfobj{ << /S/JavaScript/JS% (\string\dljs\dljsBase\roman{dljssegs}) >> }}% \edef\@dljstmp{\the\dljsobjtoks\tmp}% \global\dljsobjtoks=\expandafter{\@dljstmp}% \edef\tmp{^^J\string\xdef\string\obj\dljsBase\roman{dljssegs}% {\string\the\string\pdflastobj\string\space 0 R}}% \edef\@dljstmp{\the\dljsobjtoks\tmp}% \global\dljsobjtoks=\expandafter{\@dljstmp}% \edef\curr@Cnt{\ifnum\arabic{dljs@cnt}<10 0\fi\arabic{dljs@cnt}}% \Hy@unicodefalse\pdfstringdef{\dljsName}{#1}% \edef\dljspdftextmp {\the\importfdftoks (\curr@Cnt\space\dljsName) \noexpand\csname obj\dljsBase\roman{dljssegs}% \noexpand\endcsname\space}% \global\importfdftoks=\expandafter{\dljspdftextmp}% \beginseg \js@verbatimwrite }{% \endjs@verbatimwrite \endseg } \newenvironment{insert@DLJS@pdftex}{% \expandafter\gdef\csname dljs\dljsBase\endcsname{}% \immediate\openout \js@verbatim@out \js@Path\dljsBase.djs \begindljs \ifx\multisegments\dl@NO\expandafter \newsegment\expandafter{\expandafter\dljsName\expandafter}\fi }{% \ifx\multisegments\dl@NO\expandafter\endnewsegment\fi \enddljs \write@objs \endjs@verbatimwrite \closejs@verbatim@out \edef\@dljstmp{\noexpand\AtBeginDocument{% \noexpand\input{\js@Path\dljsBase.djs}}}% \@dljstmp \ifx\importdljs\dl@YES \ifx\firstdljs\dl@YES \AtEndDocument{\edef\@dljstmp{\setDLJSRef@pdftex}\@dljstmp} \global\let\firstdljs\dl@NO \fi \fi } \def\setDLJSRef@pdftex{\noexpand \immediate\noexpand\pdfobj {% << /Names [\the\importfdftoks] >> }% \edef\noexpand\objNames{\noexpand\the\noexpand\pdflastobj\space 0 R}% \pdfnames {/JavaScript \noexpand\objNames}% } \newenvironment{newsegment@dvipdfm}[1] {% \addtocounter{dljssegs}{1}\addtocounter{dljs@cnt}{1}% \edef\tmp{^^J\string\immediate\string \csname\space @pdfm@mark\string\endcsname {obj @obj\dljsBase\roman{dljssegs}\space << /S/JavaScript% /JS(\string\dljs\dljsBase\roman{dljssegs}) >> }}% \edef\@dljstmp{\the\dljsobjtoks\space\tmp}% \global\dljsobjtoks=\expandafter{\@dljstmp}% \edef\curr@Cnt{\ifnum\arabic{dljs@cnt}<10 0\fi\arabic{dljs@cnt}}% {\def\1{\string\1}\def\2{\string2}% \def\3{\string\3}\xdef\dljsName{#1}}% \edef\dljspdftextmp {\the\importfdftoks (\curr@Cnt\space \dljsName) % @obj\dljsBase\roman{dljssegs}\space}% \global\importfdftoks=\expandafter{\dljspdftextmp}% \beginseg \js@verbatimwrite }{% \endjs@verbatimwrite \endseg } \def\setDLJSRef@dvipdfm {% \immediate\@pdfm@mark{obj @objnames % << /Names [\the\importfdftoks] >> }% \@pdfm@mark{put @names % << /JavaScript @objnames >> }% } \newenvironment{insert@DLJS@dvipdfm} {% \expandafter\gdef\csname dljs\dljsBase\endcsname{}% \immediate\openout \js@verbatim@out \js@Path\dljsBase.djs \begindljs \ifx\multisegments\dl@NO\expandafter\newsegment\expandafter{% \expandafter\dljsName\expandafter}\fi }{% \ifx\multisegments\dl@NO\expandafter\endnewsegment\fi \enddljs \write@objs \endjs@verbatimwrite \closejs@verbatim@out \edef\@dljstmp{\noexpand\AtBeginDocument{% \noexpand\input{\js@Path\dljsBase.djs}}}% \@dljstmp \ifx\importdljs\dl@YES \ifx\firstdljs\dl@YES \AtBeginDocument{\setDLJSRef@dvipdfm}% \global\let\firstdljs\dl@NO \fi \fi } \catcode`\"=\dl@dquoteCat \inputAltAdbFncs \dl@restoreCats \endinput %% %% End of file `insdljs.sty'.