From a164e409af8e2c2c12db9b23daa2be95397ad89d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 3 Aug 2020 12:21:28 +0900 Subject: popupmenu update --- texmf-dist/tex/latex/popupmenu/popupmenu.sty | 293 +++++++++++++++++++-------- 1 file changed, 210 insertions(+), 83 deletions(-) (limited to 'texmf-dist/tex/latex') diff --git a/texmf-dist/tex/latex/popupmenu/popupmenu.sty b/texmf-dist/tex/latex/popupmenu/popupmenu.sty index 49dbb8d5..c2202755 100644 --- a/texmf-dist/tex/latex/popupmenu/popupmenu.sty +++ b/texmf-dist/tex/latex/popupmenu/popupmenu.sty @@ -1,83 +1,210 @@ -%% -%% This is file `popupmenu.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% popupmenu.dtx (with options: `copyright,package') -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% popupmenu.sty package, 2009-10-15 %% -%% Copyright (C) 2009 D. P. Story %% -%% dpstory@acrotex.net %% -%% storyd@nwfsc.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{popupmenu} - [2010/09/18 v1.0 Provides support for popup menus (dps)] -\RequirePackage{xkeyval} -\define@key{menustruct}{title}[]{\def\menustruct@title{#1}} -\define@boolkey{menustruct}{marked}[true]{} -\define@boolkey{menustruct}{enabled}[true]{} -\define@key{menustruct}{return}[]{\def\menustruct@return{#1}} -\let\pum@holdtoks\@empty -\newcommand{\@AddToMenuToks}{\g@addto@macro\pum@holdtoks} -\newcount\pum@cnt -\def\pum@updateindex{\global\advance\pum@cnt\@ne - \edef\pum@rc{\pum@topindex[\the\pum@cnt]}\edef\itemindex{'\pum@rc'}} -\def\pum@initIndexMenu#1{\global\pum@cnt=-1\relax\edef\pum@rc{#1}% - \edef\pum@topindex{\pum@rc}} -\newenvironment{popupmenu}[1]{\pum@initIndexMenu{}% - \let\pum@holdtoks\@empty - \toks@={\pum@mytab}\@makeother\~ - \gdef\msarg{#1}\@AddToMenuToks{\@gobble}% - \let\item\pum@item -}{% - \expandafter\xdef\csname\msarg\endcsname{% - var \msarg\space = [ \pum@holdtoks^^J];}% -} -\newcommand{\pum@item}[1]{\pum@updateindex - \edef\tmp@exp{\noexpand - \setkeys{menustruct}{title,marked=false,enabled,return,#1}}\tmp@exp - \edef\tmp@exp{,^^J\the\toks@ - {cName: "\menustruct@title"% - \ifKV@menustruct@marked, bMarked: true\fi% - \ifKV@menustruct@enabled\else, bEnabled: false\fi% - \ifx\menustruct@return\@empty\else, - cReturn: "\menustruct@return"\fi}}% - \expandafter\@AddToMenuToks\expandafter{\tmp@exp}% -} -\begingroup -\catcode`<=1 \catcode`\>=2 \@makeother\{ \@makeother\} -\gdef\pum@lbrace<{>\gdef\pum@rbrace<}> -\endgroup -\def\pum@mytab{\space\space\space\space} -\newenvironment{submenu}[1]{\pum@updateindex - \xdef\saved@pum@cnt{\the\pum@cnt}% - \pum@initIndexMenu{\pum@rc.oSubMenu}\edef\temp@toks{\the\toks@}% - \toks@=\expandafter{\temp@toks\pum@mytab}% - \setkeys{menustruct}{title,marked=false,enabled,return,#1}% - \edef\tmp@exp{,^^J\the\toks@ - \noexpand\pum@lbrace cName: "\menustruct@title"% - \ifKV@menustruct@marked, bMarked: true\fi% - \ifKV@menustruct@enabled\else, bEnabled: false\fi, - oSubMenu:^^J\the\toks@[}% - \expandafter\@AddToMenuToks\expandafter{\tmp@exp\@gobble}% -}{% - \edef\tmp@exp{^^J\the\toks@ ]\pum@rbrace}% - \expandafter\@AddToMenuToks\expandafter{\tmp@exp}% - \global\pum@cnt\saved@pum@cnt -} -\def\popUpMenu(#1){app.popUpMenuEx.apply( app, #1 )} -\providecommand{\urlPath}[1]{\def\pum@urlName{#1}% - \hyper@normalise\pum@urlPath} -\def\pum@urlPath#1{\expandafter\xdef\pum@urlName{#1}} -\endinput -%% -%% End of file `popupmenu.sty'. +%% +%% This is file `popupmenu.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% popupmenu.dtx (with options: `copyright,package') +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% popupmenu.sty package, %% +%% Copyright (C) 2009--2020 %% +%% dpstory@acrotex.net %% +%% %% +%% 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{popupmenu} + [2020/07/26 v1.2 Provides support for popup menus (dps)] +\RequirePackage{xkeyval} +\newif\iftrackingPU \trackingPUfalse +\DeclareOptionX{tracking}{\trackingPUtrue\def\puTracking{true}} +\DeclareOptionX{!tracking}{\trackingPUfalse\def\puTracking{false}} +\def\puTracking{false} +\ProcessOptionsX\relax +\edef\pu@restoreCats{% + \catcode`\noexpand\"=\the\catcode`\"\relax + \catcode`\noexpand\'=\the\catcode`\'\relax + \catcode`\noexpand\,=\the\catcode`\,\relax + \catcode`\noexpand\!=\the\catcode`\!\relax +} +\@makeother\"\@makeother\'\@makeother\,\@makeother\! +\RequirePackage{eforms} +\def\title@dash{-}\def\puNone{none} +\define@key{menustruct}{title}[]{\Hy@unicodefalse + \let\btitle@dash\ef@NO + \def\@rgi{#1}\ifx\@rgi\title@dash\let\btitle@dash\ef@YES\fi + \pdfstringdef\menustruct@title{#1}} +\define@boolkey{menustruct}{marked}[true]{} +\define@boolkey{menustruct}{enabled}[true]{} +\define@key{menustruct}{return}[]{\def\menustruct@return{#1}\relax + \ifx\menustruct@return\puNone\def\menustruct@return{null}\fi} +\let\pum@holdtoks\@empty +\let\pum@holdtoksEx\@empty +\def\@AddToMenuToks{\g@addto@macro\pum@holdtoks} +\def\@AddToMenuToksEx{\g@addto@macro\pum@holdtoksEx} +\newcount\pum@cnt +\def\pum@updateindex{\global\advance\pum@cnt\@ne + \edef\pum@rc{\pum@topindex[\the\pum@cnt]}\edef\itemindex{'\pum@rc'}} +\def\pum@initIndexMenu#1{\global\pum@cnt=\m@ne\edef\pum@rc{#1}% + \edef\pum@topindex{\pum@rc}} +\newcount\submenuLevel \submenuLevel\z@ +\newenvironment{popupmenu}[1]{\pum@initIndexMenu{}\submenuLevel\z@ + \ifpdfmarkup + \def\textbackslash{\eqbs}\relax + \def\Esc{\textbackslash}\relax + \def\csiv{\eqbs\eqbs}\relax + \def\cs##1{\csiv\csiv##1}\else + \def\Esc{\eqbs\eqbs}\def\cs{\Esc\Esc}\fi + \let\pum@holdtoks\@empty\let\pum@holdtoksEx\@empty + \toks@={\pum@mytab}\@temptokena={\pum@mytab}\@makeother\~% + \gdef\msarg{#1}\gdef\msargEx{#1Ex}\@AddToMenuToks{\@gobble}% + \@AddToMenuToksEx{\@gobble}\let\item\pum@item +\ignorespaces}{% + \csarg\xdef{\msarg}{var \msarg\space = [ \pum@holdtoks^^J];}% + \iftrackingPU + \csarg\xdef{\msargEx}{var \msargEx\space = [ \pum@holdtoksEx^^J];}\fi +\aftergroup\ignorespaces} +\newcommand{\pum@item}[1]{\pum@updateindex + \setkeys{menustruct}{title,marked=false,enabled,return,#1}\relax + \ifx\menustruct@title\@empty + \PackageWarning{popupmenu} + {A value of the key 'title' is required,\MessageBreak + putting in a place keeper title}% + \def\menustruct@title{This title is undefined}\fi + \edef\tmp@exp{,^^J\the\toks@ + {cName: "\menustruct@title"% + \ifKV@menustruct@marked, bMarked: true\fi% + \ifKV@menustruct@enabled\else, bEnabled: false\fi% + \ifx\menustruct@return\@empty\else,% + cReturn: "\menustruct@return"\fi}}\expandafter + \@AddToMenuToks\expandafter{\tmp@exp}% + \edef\tmp@expEx{,^^J\the\@temptokena + {cName: "\menustruct@title"% + \ifKV@menustruct@marked, bMarked: true\fi% + \ifKV@menustruct@enabled\else, bEnabled: false\fi% + \ifx\btitle@dash\ef@NO + \ifx\menustruct@return\@empty,% + cReturn:"[\itemindex,'\menustruct@title']"% + \else,cReturn:"[\itemindex,'\menustruct@return']"\fi\fi}}% + \expandafter\@AddToMenuToksEx\expandafter{\tmp@expEx}% +\ignorespaces} +\begingroup +\catcode`<=1 \catcode`\>=2 \@makeother\{ \@makeother\} +\gdef\pum@lbrace<{>\gdef\pum@rbrace<}> +\endgroup +\def\pum@mytab{\space\space\space\space} +\newenvironment{submenu}[1]{\pum@updateindex\advance\submenuLevel\@ne + \csarg\xdef{pum@cntLevel\the\submenuLevel}{\the\pum@cnt}% + \pum@initIndexMenu{\pum@rc.oSubMenu}\edef\temp@toks{\the\toks@}% + \def\temp@toksEx{\the\@temptokena}% + \toks@=\expandafter{\temp@toks\pum@mytab}% + \@temptokena=\expandafter{\temp@toksEx\pum@mytab}% + \setkeys{menustruct}{title,marked=false,enabled,return,#1}% + \edef\tmp@exp{,^^J\the\toks@ + \noexpand\pum@lbrace cName: "\menustruct@title"% + \ifKV@menustruct@marked, bMarked: true\fi% + \ifKV@menustruct@enabled\else, bEnabled: false\fi, + oSubMenu:^^J\the\toks@[}% + \expandafter\@AddToMenuToks\expandafter{\tmp@exp\@gobble}% + \edef\tmp@expEx{,^^J\the\@temptokena + \noexpand\pum@lbrace cName: "\menustruct@title"% + \ifKV@menustruct@marked, bMarked: true\fi% + \ifKV@menustruct@enabled\else, bEnabled: false\fi, + oSubMenu:^^J\the\@temptokena[}% + \expandafter\@AddToMenuToksEx\expandafter{\tmp@expEx\@gobble}% +\ignorespaces}{% + \edef\tmp@exp{^^J\the\toks@ ]\pum@rbrace}% + \edef\tmp@expEx{^^J\the\@temptokena ]\pum@rbrace}% + \expandafter\@AddToMenuToks\expandafter{\tmp@exp}% + \expandafter\@AddToMenuToksEx\expandafter{\tmp@expEx}% + \global\pum@cnt\@nameuse{pum@cntLevel\the\submenuLevel}% +\aftergroup\ignorespaces} +\def\popUpMenu(#1){app.popUpMenuEx.apply( app, #1 )} +\def\puProcessMenu(#1){\iftrackingPU + puProcessMenu("#1")\else\popUpMenu(#1)\fi} +\providecommand{\urlPath}[1]{\def\pum@urlName{#1}% + \hyper@normalise\pum@urlPath} +\def\pum@urlPath#1{\expandafter\xdef\pum@urlName{#1}} +\def\puUseTheseMenus{// No pop-up data defined^^J} +\let\puMenuCmds\@empty +\newcommand{\puUseMenus}[1]{\bgroup + \@for\pu@menu:=#1\do{\ifx\puMenuCmds\@empty + \def\puUseTheseMenus{// popupmenu: Begin popup menu data^^J}\fi + \expandafter\g@addto@macro\expandafter + \puMenuCmds\expandafter{% + \csname\pu@menu\endcsname^^J}\relax + \iftrackingPU + \expandafter\g@addto@macro\expandafter + \puMenuCmds\expandafter{% + \csname\pu@menu Ex\endcsname^^J}\relax + \fi + \edef\x{\expandafter\noexpand\@nameuse{\pu@menu}}% + \toks@=\expandafter{\x^^J}% + \expandafter\g@addto@macro\expandafter + \puUseTheseMenus\expandafter{\the\toks@}% + \iftrackingPU + \edef\x{\expandafter\noexpand\@nameuse{\pu@menu Ex}}% + \toks@=\expandafter{\x^^J}% + \expandafter\g@addto@macro\expandafter + \puUseTheseMenus\expandafter{\the\toks@}% + \fi + }\g@addto@macro\puUseTheseMenus + {// popupmenu: End of popup menu data}\egroup + \ifx\puUseTheseMenus\@empty + \def\puUseTheseMenus{// No pop-up data defined}\fi +} +\iftrackingPU +\begin{insDLJS}{pujs}{Pop-up Menu Data} +\puUseTheseMenus +\end{insDLJS} +\@onlypreamble\puUseMenus +\begin{insDLJS*}{pumenu} +\begin{newsegment}{popupmenu: Menu tracking support} +var trackingPU=\puTracking; +var PUdebug=false; +var aPULastChoice=new Array; +var bPULastChoice=false; +var bIsMarked=false; +function puProcessMenu(cMenu) { // aMenu->cMenu now a string + var cMenuEx=(trackingPU)?cMenu+"Ex":cMenu; + var aMenuEx=eval(cMenuEx); + var cChoice = app.popUpMenuEx.apply( app, aMenuEx ); + if (trackingPU) { + if ( cChoice != null ) { + aChoice=eval(cChoice); + if (aChoice[1]==""||aChoice[1]=="null") return null; + var puRtn=aChoice[1]; + var thisChoice=aChoice[0]; +// eval(cMenuEx+thisChoice).bMarked=true; + if (!bPULastChoice) { + eval(cMenuEx+aChoice[0]).bMarked=true; + } else { + var structLoc=aPULastChoice[1]; + if(aPULastChoice[0]+structLoc==cMenuEx+aChoice[0]) { + bIsMarked = eval(cMenuEx+aChoice[0]).bMarked; + eval(cMenuEx+aChoice[0]).bMarked=!(bIsMarked); + bPULastChoice=false; + if (bIsMarked) var puRtn=null + } else { + eval(aPULastChoice[0]+structLoc).bMarked=false; + eval(cMenuEx+aChoice[0]).bMarked=true; + } + } + aPULastChoice=[cMenuEx,aChoice[0]]; + bPULastChoice=true; + return puRtn; + } else return null; + } else return cChoice; +} +\end{newsegment} +\end{insDLJS*} +\fi +\pu@restoreCats +\endinput +%% +%% End of file `popupmenu.sty'. -- cgit v1.2.3