diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-12 23:54:10 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-12 23:54:10 +0000 |
commit | fa6f976f4c70a9e26eaecc0d2f932c440f961646 (patch) | |
tree | 37a91467162d803ba9d52819da7006a609862257 /Master/texmf-dist/tex/latex/dialogl | |
parent | c0329927c34c03827e08a56ae4c4f8cc9165f203 (diff) |
dialogl
git-svn-id: svn://tug.org/texlive/trunk@823 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/dialogl')
-rw-r--r-- | Master/texmf-dist/tex/latex/dialogl/dialog.sty | 347 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/dialogl/dialogl.sty | 532 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/dialogl/grabhedr.sty | 153 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/dialogl/menus.sty | 247 |
4 files changed, 1279 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/dialogl/dialog.sty b/Master/texmf-dist/tex/latex/dialogl/dialog.sty new file mode 100644 index 00000000000..f3eabee0c65 --- /dev/null +++ b/Master/texmf-dist/tex/latex/dialogl/dialog.sty @@ -0,0 +1,347 @@ +%% +%% This is file `dialog.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% dialog.dtx (with options: `2e') + +%%% ==================================================================== +%%% @LaTeX-style-file{ +%%% filename = "dialog.sty", +%%% version = "0.9y", +%%% date = "1994/11/08", +%%% time = "13:31:30 EST", +%%% checksum = "20801 1436 7278 54732", +%%% author = "Michael Downes", +%%% email = "mjd@math.ams.org (Internet)", +%%% codetable = "ISO/ASCII", +%%% keywords = "TeX, dialog", +%%% supported = "yes", +%%% abstract = "This file provides functions for writing +%%% messages and menus on screen, and reading user responses. It +%%% can be used with LaTeX as a documentstyle option, or in +%%% other forms of TeX by a standard \input statement.", +%%% docstring = "The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by the equivalent of +%%% the standard UNIX wc (word count) utility output of lines, +%%% words, and characters. This is produced by Robert Solovay's +%%% checksum utility.", +%%% } +%%% ==================================================================== +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{dialog}[1994/11/08 v0.9y] +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\RequirePackage{grabhedr} +%% The line break is significant here: +\localcatcodes{\@{11}\ {10}\ +{5}\~{13}\"{12}\#{6}\^{7}\`{12}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begingroup +\def\do{12 \catcode`} +\catcode`\~\do\!\do\@\do\#\do\$\do\^\do\& +\do\*\do\(\do\)\do\-\do\_\do\=\do\[\do\] +\do\;\do\:\do\'\do\"\do\<\do\>\do\,\do\. +\do\/\do\?\do\|12\relax +\escapechar -1 +\edef\\{\string\\} +\edef\{{\string\{}\edef\}{\string\}} +\catcode`\ =12\catcode`\%=12 +\xdef\otherchars +{ !"#$%&'()*+,-./:;<=>?[\\]^_`\{|\}~} +\endgroup % ^ ^ ^ +\begingroup +\endlinechar = -1 +\def\do{12 \catcode`} +\catcode`\^^@\do\^^A\do\^^B\do\^^C +\do\^^D\do\^^E\do\^^F\do\^^G\do\^^H\do\^^I +\do\^^J\do\^^K\do\^^L\do\^^M\do\^^N\do\^^O +\do\^^P\do\^^Q\do\^^R\do\^^S\do\^^T\do\^^U +\do\^^V\do\^^W\do\^^X\do\^^Y\do\^^Z\do\^^[ +\do\^^\\do\^^]\do\^^^\do\^^_\do\^^? 12\relax +\gdef\controlchars{^^@^^A^^B^^C^^D^^E^^F^^G + ^^H^^I^^J^^K^^L^^M^^N^^O^^P^^Q^^R^^S^^T + ^^U^^V^^W^^X^^Y^^Z^^[^^\^^]^^^^^_^^?} +\endgroup +\begingroup +\def\do{12 \catcode`} +\catcode`\^^80\do\^^81\do\^^82\do\^^83\do\^^84 +\do\^^85\do\^^86\do\^^87\do\^^88\do\^^89\do\^^8a +\do\^^8b\do\^^8c\do\^^8d\do\^^8e\do\^^8f +\do\^^90\do\^^91\do\^^92\do\^^93\do\^^94\do\^^95 +\do\^^96\do\^^97\do\^^98\do\^^99\do\^^9a\do\^^9b +\do\^^9c\do\^^9d\do\^^9e\do\^^9f +\do\^^a0\do\^^a1\do\^^a2\do\^^a3\do\^^a4\do\^^a5 +\do\^^a6\do\^^a7\do\^^a8\do\^^a9\do\^^aa\do\^^ab +\do\^^ac\do\^^ad\do\^^ae\do\^^af +\do\^^b0\do\^^b1\do\^^b2\do\^^b3\do\^^b4\do\^^b5 +\do\^^b6\do\^^b7\do\^^b8\do\^^b9\do\^^ba\do\^^bb +\do\^^bc\do\^^bd\do\^^be\do\^^bf +\do\^^c0\do\^^c1\do\^^c2\do\^^c3\do\^^c4\do\^^c5 +\do\^^c6\do\^^c7\do\^^c8\do\^^c9\do\^^ca\do\^^cb +\do\^^cc\do\^^cd\do\^^ce\do\^^cf +\do\^^d0\do\^^d1\do\^^d2\do\^^d3\do\^^d4\do\^^d5 +\do\^^d6\do\^^d7\do\^^d8\do\^^d9\do\^^da\do\^^db +\do\^^dc\do\^^dd\do\^^de\do\^^df +\do\^^e0\do\^^e1\do\^^e2\do\^^e3\do\^^e4\do\^^e5 +\do\^^e6\do\^^e7\do\^^e8\do\^^e9\do\^^ea\do\^^eb +\do\^^ec\do\^^ed\do\^^ee\do\^^ef +\do\^^f0\do\^^f1\do\^^f2\do\^^f3\do\^^f4\do\^^f5 +\do\^^f6\do\^^f7\do\^^f8\do\^^f9\do\^^fa\do\^^fb +\do\^^fc\do\^^fd\do\^^fe\do\^^ff 12\relax +\gdef\highchars{% +^^80^^81^^82^^83^^84^^85^^86^^87^^88% +^^89^^8a^^8b^^8c^^8d^^8e^^8f% +^^90^^91^^92^^93^^94^^95^^96^^97^^98% +^^99^^9a^^9b^^9c^^9d^^9e^^9f% +^^a0^^a1^^a2^^a3^^a4^^a5^^a6^^a7^^a8% +^^a9^^aa^^ab^^ac^^ad^^ae^^af% +^^b0^^b1^^b2^^b3^^b4^^b5^^b6^^b7^^b8% +^^b9^^ba^^bb^^bc^^bd^^be^^bf% +^^c0^^c1^^c2^^c3^^c4^^c5^^c6^^c7^^c8% +^^c9^^ca^^cb^^cc^^cd^^ce^^cf% +^^d0^^d1^^d2^^d3^^d4^^d5^^d6^^d7^^d8% +^^d9^^da^^db^^dc^^dd^^de^^df% +^^e0^^e1^^e2^^e3^^e4^^e5^^e6^^e7^^e8% +^^e9^^ea^^eb^^ec^^ed^^ee^^ef% +^^f0^^f1^^f2^^f3^^f4^^f5^^f6^^f7^^f8% +^^f9^^fa^^fb^^fc^^fd^^fe^^ff} +\endgroup +\def\actively#1#2{\catcode`#2\active + \begingroup \lccode`\~=`#2\relax + \lowercase{\endgroup#1~}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\mesjsetup{\begingroup \count@=12 + \def\do##1{\catcode`##1\count@ \do}% + \xp@\do\otherchars{a11 \@gobbletwo}% + \xp@\do\controlchars{a11 \@gobbletwo}% + \xp@\do\highchars{a11 \@gobbletwo}% + \actively\edef\^^I{ \space\space\space + \space\space\space\space}% + \endlinechar=`\^^M\actively\let\^^M=\relax + \catcode`\{=1 \catcode`\}=2 } +\def\sendmesj{\newlinechar`\^^J% + \actively\def\^^M{^^J}% + \immediate\write\sixt@@n{\mesjtext}\endgroup} +\def\mesj{\mesjsetup \afterassignment\sendmesj + \def\mesjtext} +\def\sendprompt{% + \newlinechar`\!\relax \actively\def\^^M{!}% + \message{\mesjtext}\endgroup} +\def\promptmesj{\mesjsetup + \afterassignment\sendprompt \def\mesjtext} +\def\storemesj#1{\mesjsetup + \catcode`\#=6 % to allow arguments if needed + \afterassignment\endgroup + \long\gdef#1} +\def\fmesj#1#2#{\mesjsetup + \catcode`\#=6 % restore to normal + \toks@{\long\gdef#1#2}% + \def\@tempa{% + \edef\@tempa{% + \the\toks@{% + \begingroup\def\nx@\mesjtext{\the\toks2 }% + \nx@\sendmesj}% + }% + \@tempa + \endgroup % Turn off the \mesjsetup catcodes + }% + \afterassignment\@tempa + \toks2=} +\def\xmesjsetup{\mesjsetup + \iffalse{\fi + \catcode`\\=0 \catcode`\%=14 + \begingroup \lccode`\0=`\\\lccode`\1=`\{% + \lccode`\2=`\}\lccode`\3=`\%% + \lowercase{\endgroup \def\\{0}\def\{{1}% + \def\}{2}\def\%{3}}% + \iffalse}\fi + \edef\&{\string &}% + \actively\let\&=\noexpand + \actively\let\^^M=\relax + \def\.{}% + \def\ { }\edef~{\string ~}% + \begingroup \lccode`\~=`\^^M% + \lowercase{\endgroup \def\^^M{~}}% + \let\^^J\^^M \def\par{\^^M\^^M}% +} +\def\xmesj{\xmesjsetup \afterassignment\sendmesj + \edef\mesjtext} +\def\promptxmesj{\xmesjsetup + \afterassignment\sendprompt \edef\mesjtext} +\def\storexmesj#1#2#{\xmesjsetup + \catcode`\#=6 % to allow arguments if needed + \edef\#{\string##}% + \afterassignment\endgroup + \long\xdef#1#2} +\def\fxmesj#1#2#{\xmesjsetup + \catcode`\#=6 % restore to normal + \edef\#{\string##}% + \toks@{\long\xdef#1#2}% + \def\@tempa{% + \edef\@tempa{% + \the\toks@{\begingroup + \def\nx@\nx@\nx@\mesjtext{\the\toks\tw@}% + \nx@\nx@\nx@\sendmesj}}% + \@tempa % execute the constructed xdef + \endgroup % restore normal catcodes + }% + \afterassignment\@tempa + \toks\tw@=} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\readline#1#2{% + \begingroup \count@ 12 % + \def\do##1{\catcode`##1\count@ \do}% + \xp@\do\otherchars{a11 \@gobbletwo}% + \xp@\do\controlchars{a11 \@gobbletwo}% + \xp@\do\highchars{a11 \@gobbletwo}% + \catcode`\ =10 \catcode`\^^I=10 % + \catcode`\^^M=9 % ignore + \endlinechar`\^^M + \read\m@ne to#2% + \edef#2{\def\nx@#2{#2}}% + \xp@\endgroup #2% + \ifx\@empty#2\def#2{#1}\fi +} +\def\xreadline#1#2{% + \begingroup + \xp@\let\csname bye\endcsname\relax + \xp@\let\csname newif\endcsname\relax + \xp@\let\csname newcount\endcsname\relax + \xp@\let\csname newdimen\endcsname\relax + \xp@\let\csname newskip\endcsname\relax + \xp@\let\csname newmuskip\endcsname\relax + \xp@\let\csname newtoks\endcsname\relax + \xp@\let\csname newbox\endcsname\relax + \xp@\let\csname newinsert\endcsname\relax + \xp@\let\csname +\endcsname\relax + \actively\let\^^L\relax + \catcode`\^^M=9 % ignore + \endlinechar`\^^M% reset to normal + \read\m@ne to#2% + \toks@\xp@{#2}% + \edef\@tempa{\def\nx@#2{\the\toks@}}% + \xp@\endgroup \@tempa + \ifx\@empty#2\def#2{#1}\fi +} +\def\readchar#1#2{% + \readline{#1}#2% + \edef#2{\xp@\@car#2#1{}\@nil}% +} +\def\readChar#1#2{% + \readline{#1}#2% + \changecase\uppercase#2% + \edef#2{\xp@\@car #2#1{}\@nil}% +} +\def\changecase#1#2{\@casetoks\xp@{#2}% + \edef#2{#1{\def\nx@#2{\the\@casetoks}}}#2} +\newtoks\@casetoks +\def\checkinteger#1#2{\let\scansign@\@empty + \def\scanresult@{#2}% + \xp@\scanint#1x\endscan} +\def\scanint#1{% + \ifodd 0#11 % + \def\@tempa{\afterassignment\endscan + \scanresult@=\scansign@#1}% + \else + \if -#1\relax + \edef\scansign@{% + \ifx\@empty\scansign@ -\fi}% + \def\@tempa{\scanint}% + \else + \if +#1\relax + \def\@tempa{\scanint}% + \else % not a valid number + \def\@tempa{% + \scanresult@=-\maxdimen\endscan}% + \fi\fi\fi + \@tempa +} +\def\endscan#1\endscan{} +\newcount\dimenfirstpart +\newtoks\dimentoks +\def\scandimen#1{% + \ifodd 0#11 + \def\@tempa{\def\@tempa{\scandimenb}% + \afterassignment\@tempa + \dimenfirstpart#1}% + \else + \if \if,#1.\else#1\fi.% + \def\@tempa{\scandimenc}% + \else + \if -#1% then flipflop the sign + \edef\scansign@{% + \ifx\@empty\scansign@ -\fi}% + \def\@tempa{\scandimen}% + \else + \if +#1% then ignore it + \def\@tempa{\scandimen}% + \else % not a valid dimen + \def\@tempa{% + \scanresult@=-\maxdimen\endscan}% + \fi\fi\fi\fi + \@tempa +} +\def\scandimenb#1{% + \if \if,#1.\else#1\fi.% + \def\@tempa{\scandimenc}% + \else + \def\@tempa{\scanunitsa#1}% + \fi + \@tempa +} +\def\scandimenc#1{% + \ifodd 0#11 \dimentoks\xp@{% + \the\dimentoks#1}% + \def\@tempa{\scandimenc}% + \else + \def\@tempa{\scanunitsa#1}% + \fi + \@tempa +} +\def\scanunitsa#1\endscan{% + \def\@tempa##1true##2##3\@tempa{##2}% + \lowercase{% + \xp@\ifx\xp@\end + \@tempa#1true\end\@tempa + }% + \let\dimentrue@\@empty + \def\@tempa{\scanunitsb#1\endscan}% + \else + \def\dimentrue@{true}% + \def\@tempa##1true##2\@tempa{% + \def\@tempa{##1}% + \ifx\@tempa\@empty + \def\@tempa{\scanunitsb##2\endscan}% + \else + \def\@tempa{\scanunitsb xx\endscan}% + \fi}% + \@tempa#1\@tempa + \fi + \@tempa +} +\def\scanunitsb#1#2{% + \def\@tempa##1#1#2##2##3\@nil{##2}% + \def\@tempb##1{T\@tempa + pcTptTcmTccTemTexTinTmmTddTspT##1F\@nil}% + \lowercase{% + \if\@tempb{#1#2}% + }% + \scanresult@=\scansign@ + \number\dimenfirstpart.\the\dimentoks + \dimentrue@#1#2\relax + \else + \scanresult@=-\maxdimen + \fi + \endscan +} +\def\checkdimen#1#2{% + \let\scansign@\@empty \def\scanresult@{#2}% + \let\dimentrue@\@empty + \dimenfirstpart\z@ \dimentoks{}% + \xp@\scandimen#1xx\endscan +} +\restorecatcodes +\endinput +%% +%% End of file `dialog.sty'. diff --git a/Master/texmf-dist/tex/latex/dialogl/dialogl.sty b/Master/texmf-dist/tex/latex/dialogl/dialogl.sty new file mode 100644 index 00000000000..edb58bccd8d --- /dev/null +++ b/Master/texmf-dist/tex/latex/dialogl/dialogl.sty @@ -0,0 +1,532 @@ +% dialogl.sty 2-Nov-1994 +% Customizations for the articles codialog.tex, dia-driv.tex, +% lis-driv.tex. +% +% Here is the main problem. I want to allow users to print out this +% document on US letter-size paper (8.5x11 inches) or on A4 paper +% (210x297 mm). And in order to fit maximum text on minimum paper +% (save the trees) I want to print with small margins and +% two-column layout (or even three-column, in the case of landscape +% printing, if that were feasible; but I don't want to assume that +% the user has Frank's multicol package). But the verbatim examples +% in the document consist in many cases of lines from TeX screen +% output, which can be up to 79 characters in length. It is +% difficult to give two columns wide enough to accommodate +% 80-character lines printed in cmtt unless the size is cut down +% very small. Then we encounter the difficulty that the +% lowest-common-denominator set of TeX fonts includes cmtt10, +% cmtt9, cmtt8, but not cmtt7 or any smaller sizes of cmtt. Well, +% perhaps that's just as well since things start to get a little +% hard to read anyway once you get down that small. +% +% But anyway there it is: How to fit two columns of text, each of +% minimum width approximately 80 cmtt characters, into the +% rectangles provided by US letter paper and A4 paper, while trying +% to keep a decent line length for readability in the neighborhood +% of two or three alphabets. +% +% It seems that one part of the answer is to print the 80-character +% verbatim lines in a smaller point size than the main text. + +% 8.5in = 614.295pt. +% 11in = 794.96999pt. +% 210mm = 597.50787pt. +% 297mm = 845.04684pt. + +% 80 characters, cmtt10: 419.99634pt. +% 80 characters, cmtt8: 340.00488pt. +% 76 characters, cmtt8: 323.00464pt. +% 70 characters, cmtt8: 297.50427pt. + +% Assume that minimum margins all around are 22pt, approx 8mm / +% 0.3in. And that desired gutter margin between columns is 6pt. +% Then subtract 50pt from paper width and divide by 2 to get +% available column width: 210mm 274pt, 8.5in 282pt, 11in 372pt, +% 297mm 397pt. +% +% Standard \headheight, \headsep are 12pt, 25pt. So next we look for +% minimum bounding rectangle for landscape, two-column printing: +% textheight limited by A4 short dimension = 210mm = 598pt. +% Subtract 44pt for margins, then another 37pt for running head, +% that leaves textheight of 517pt. +% +% Similarly for textwidth: Limited by the 11in long dimension of US +% letter size paper; subtract 50pt for margins and gutter, that +% leaves 745pt, or 372pt per column. + +\newcommand{\notthatsloppy}{\tolerance9999 \pretolerance3333 + \hbadness\tolerance +% The tolerance settings will eliminate most hyphenation unless we +% ameliorate the hyphen penalties. + \hyphenpenalty-100 \exhyphenpenalty-150 + \emergencystretch 3pc } + +% But then we'd better patch \raggedright up a litt.e +\toks@\expandafter{\raggedright \hyphenpenalty100 \exhyphenpenalty150 } +\edef\raggedright{\the\toks@} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\pagestyle{headings} +\let\sectionmark\@gobble +\def\@oddhead{\hfil{\small\rhtitle}\hfil\thepage} +\let\@evenhead\@oddhead +\def\title#1{\gdef\@title{#1}\uppercase{\gdef\rhtitle{#1}}} + +% Default layout is twocolumn, landscape, squeeze inside A4/US +% constraints +\def\defaultlayout{% +% \hoffset and \voffset are assumed to be -1in (see below) +% 210mm is A4 width, 11in is US-letter paper height + \textwidth11in \textheight210mm + \oddsidemargin30pt \evensidemargin\oddsidemargin + \advance\textwidth -2\oddsidemargin + \topmargin25pt + \advance\textheight-2\topmargin + \advance\textheight-\headheight \advance\textheight -\headsep + \let\Huge\large \let\huge\large \let\LARGE\large \let\Large\large +% \scaleup \normalsize + \@twocolumntrue +} + +% Twocolumn, portrait, squeeze inside A4/US +% constraints +\def\portraitlayout{% +% \hoffset and \voffset are assumed to be -1in (see below) +% 210mm is A4 width, 11in is US-letter paper height + \textheight11in \textwidth210mm + \oddsidemargin30pt \evensidemargin\oddsidemargin + \advance\textwidth -2\oddsidemargin + \topmargin25pt + \advance\textheight-2\topmargin + \advance\textheight-\headheight \advance\textheight -\headsep + \let\Huge\large \let\huge\large \let\LARGE\large \let\Large\large +% \scaleup \normalsize + \@twocolumntrue + \def\vffont{\footnotesize\tt}% + \def\verbatimfont{\small\tt}% +} + +% If the multicol package is loaded (via the doc package) we want to +% use that instead of the standard twocolumn option. +\def\multicoldefaultlayout{\defaultlayout\@twocolumnfalse} +\def\multicolportraitlayout{\portraitlayout\@twocolumnfalse} + +% Cancel the margins normally supplied by DVI drivers: +\hoffset-1in \voffset-1in + +% Set \hfuzz higher than normal in preference to dealing with +% insoluble hyphenation/line-breaking problems. +\hfuzz20pt + +% Set sloppiness of paragraphs very high because of the narrow +% column width and the frequency of difficult to break terms, but +% not so carelessly high as LaTeX's \sloppy command would give. +\notthatsloppy +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\scaleup{% + \let\tiny\scriptsize \let\scriptsize\footnotesize + \let\footnotesize\small \let\small\normalsize + \let\normalsize\large \let\large\Large +} + +\def\scaledown{% + \let\Huge\large \let\huge\large + \let\LARGE\large \let\Large\normalsize + \let\large\normalsize \let\normalsize\small + \let\small\footnotesize \let\footnotesize\scriptsize + \let\scriptsize\tiny +} +% +% Add protection built-in for \TeX and others +\newcommand{\ams}{{\the\textfont2 A\kern-.1667em% + \lower.5ex\hbox{M}\kern-.125emS\kern.05em}} +\def\tex/{\protect\TeX\@} +\def\amstex/{\protect\ams-\tex/} +\def\latex/{\protect\LaTeX\@} +\def\plaintex/{{\sc plain}\thinspace\tex/} +\def\eplain/{{\sc Eplain}} +\def\texbook/{{\it The \tex/book}} +\def\tugboat/{{\it TUGboat}} +\def\return/{{\sc return}} +\def\mf/{{\sf METAFONT\@}} +\def\mfbook/{{\it The \mf/book}} +\def\ascii/{{\sc ascii}} + +\newcommand{\ndash}{--} +\newcommand{\mdash}{---} +\newcommand{\btext}{\mbox} + +\newcommand{\5}{\penalty500 } +\newcommand{\underscore}{{\ntt\string _}} + +% Define some ltugboat.sty commands +\let\Dash\mdash +\let\dash\ndash +\def\TB{\texbook/} +\def\TUB{{\sl TUGboat\/}} +\def\TeXhax{{\ntt TeXhax}} + +\@ifundefined{selectfont}{% + \def\normalfont{}% +}{% + \@ifundefined{default@family}{% + \@ifundefined{normalfont}{% + \def\normalfont{}% ?? don't think this case can ever happen. + }{}% + }{% + \def\normalfont{\fontfamily\default@family + \fontseries\default@series \fontshape\default@shape \selectfont}% + }% +} + +% Maybe I should now change instances of \normalshape to \upshape. +% But this is what was used before. +\@ifundefined{normalshape}{% + \@ifundefined{upshape}{% + \newcommand{\normalshape}{\rm}% + }{% + \newcommand{\normalshape}{\upshape}% + }% +}{} + +\def\ntt{\protect\normalfont\protect\tt} + +% Function called at the beginning of \cw etc. to allow line +% breaks if several such objects occur contiguously. +\newcommand{\prebreak}{\leavevmode\ifmmode\hbox\else + \ifdim\lastskip=\z@\penalty9999 \fi\fi} + +% The \ifhmode test here is primarily to guard against math mode, +% where an attempt to set \spacefactor would cause a TeX error. +\newcommand{\postx}{\ifhmode\@\fi} + +% Control word +\newcommand{\cw}[1]{\protect\prebreak{\ntt\bslash#1\protect\postx}} +% Control symbol +\newcommand{\cs}[1]{\protect\prebreak{\ntt\string#1}\protect\postx} +\chardef\bslash=`\\ + +% Quoted character +\newcommand{\qc}[1]{% + \protect\prebreak{\ntt\escapechar-1 \string#1}\protect\postx} +% Control character +\newcommand{\ctrl}[1]{% + \protect\prebreak{\ntt\string ^\string ^#1}\protect\postx} +% Argument marker. Apply \string to #1 just in case it might be # +% instead of a number 1--9. +\renewcommand{\arg}[1]{% + \protect\prebreak{\ntt\string ##\string#1}\protect\postx} +\let\qarg\arg +% File name. +\newcommand{\fn}[1]{\leavevmode{\ntt#1}\protect\postx} +\let\pkg\fn +% Verbatim version of \ldots. +\newcommand\verbdots{\leavevmode{\ntt...}\protect\postx} + +\newcommand{\units}[1]{\thinspace#1} + +% For `meta' angle bracket notation. +\newcommand\m[1]{{\protect\the\textfont2 h{\it#1}i}} +% For definitions of terminology. +\newcommand{\term}[1]{\leavevmode{\it#1}} + +\def\eg.{e.g.\@} +\def\ie.{i.e.\@} + +%\def\mjd#1{\errhelp{#1}\errmessage{\the\errhelp}} +\def\mjd#1{} + +% ^^V at the beginning of a line serves as a substitute for +% \begin{verbatim} ... \end{verbatim} in this documentation. Partly +% done as an exercise to see if it was feasible; originally +% motivated by the way I had converted comments in non-doc form to +% doc form. +\catcode`\^^V\active % for verbatim +\def ^^V{\Vbtm} + +\def\activedef#1{\catcode`#1\active + \begingroup\lccode`\~=`#1\lowercase{\endgroup \def ~}} + +\def\Vbtmsetup{\let\do\@makeother +% Abandon \dospecials since it's too hard to make sure that it +% includes things like @, |, +. + \do\`\do\~\do\!\do\@\do\#\do\$\do\%\do\^\do\&\do\*\do\(\do\)\do\-% + \do\_\do\=\do +\do\\\do\|\do\[\do\{\do\]\do\}\do\;\do\:\do\'\do\"% + \do\,\do\<\do\.\do\>\do\/\do\?\do\ \do\^^M\do\^^I\do\^^J\do\^^L% + \activedef\ {\kern.5em}% + \activedef\'{\char`\'\kern\z@}% + \Vbtmfont \frenchspacing +} +% +\def\Vbtm{\par + \begingroup \Vbtmsetup + \activedef\^^M{\catcode`\%9 \catcode`\^7 + \futurelet\next\moreVbtm}% + \def\VbtmVbtm{\Vbtm}% for comparison with active ^^V. + \def\moreVbtm{% + \ifx\next \VbtmVbtm + \def\next{\egroup\penalty9999 }% + \else + \def\next{\egroup\endgroup \futurelet\next\endVbtm}% + \fi \next}% +% Locally change \Vbtm to omit the above setup and just process a +% single line. + \def\Vbtm{\hbox\bgroup}% + \Vbtmspace \Vbtmextra \Vbtm} +% +\def\endVbtm{% + \begingroup +% If the next token is a \par token, gobble it with \let. + \ifx\next\par \aftergroup\let \aftergroup\next \fi + \Vbtmspace \everypar{}\parskip0pt \noindent\endgroup +}% + +\def\Vbtmfont{\verbatimfont} +% +\def\Vbtmspace{\medskip} +\def\Vbtmextra{} +% +% Define a `usage' environment to draw a box around its contents, +% for examples illustrating the usage of salient functions. +\def\usage{\par \begingroup \Vbtmsetup \normalsize\tt +% Requires definition of \meta from doc.sty: + \activedef\<##1>{\meta{##1}}% + \activedef\^^M{\catcode`\%9\catcode`\\\z@ \catcode`\{11 \catcode`\}11 + \futurelet\next\moreusage}% + \if@inlabel\leavevmode\fi \ifhmode\unskip \par\fi + \addvspace\medskipamount + \global\setbox\@ne\vbox\bgroup \everypar{}% + \bgroup} +% +\expandafter\def\expandafter\moreusage\expandafter{% + \expandafter\ifx\csname end{usage}\endcsname\next + \egroup\egroup + \fboxsep1.7pt \noindent\fbox{\box\@ne}% + \endgroup + \else + \egroup + \hbox\bgroup\expandafter\string + \fi}% +% +\expandafter\def\csname end{usage}\endcsname{\end{usage}} +\def\endusage{\par\nobreak\vskip\medskipamount +% Since \endusage is called via \end, which adds an \endgroup, we +% need to throw these two items beyond the \endgroup in order for +% their local assignments not to be lost (\if@afterindent, +% \everypar): + \aftergroup\@afterindentfalse + \aftergroup\@afterheading} + +\def\verbatimfont{\tt} +\def\vffont{\small\tt} + +% Change verbatim environment to use \verbatimfont. + +\def\@verbatim{\trivlist \item[]\if@minipage\else\vskip\parskip\fi + \leftskip\@totalleftmargin\rightskip\z@ + \parindent\z@\parfillskip\z@ plus\columnwidth minus\columnwidth + \parskip\z@skip + \@@par + \@tempswafalse \def\par{\if@tempswa\hbox{}\fi\@tempswatrue\@@par + \penalty\interlinepenalty}% + \obeylines + \linepenalty\@M + \verbatimfont \normalbaselineskip1.1em\relax \normalbaselines + \catcode``=13 \@noligs \let\do\@makeother \dospecials} + +% Define a verbatim input command for printing example files. +\def\verbatiminput#1{\begingroup + \@verbatim \frenchspacing\@vobeyspaces + \exhyphenpenalty\@M \hyphenpenalty\@M +% Turn \hfuzz up high; if some lines in the file are a little long, +% we don't want to hear about it. + \hfuzz 5em\relax \vffont + \input{#1}% + \endverbatim + \endgroup} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Misc. +\setcounter{secnumdepth}{2} +\newcommand{\secref}[1]{\S\ref{#1}} +\renewcommand{\thetable}{\Alph{table}} + +% Change \l@section so we can allow wider room for `Appendix A' in +% the appendix section of the table of contents. +\renewcommand{\l@section}[2]{% + \ifnum\c@tocdepth>\z@ + \addpenalty{\@secpenalty}\addvspace{1.0emplus\p@}% + \setlength\@tempdima{\tocsecwd}\begingroup \parindent\z@ + \rightskip\@pnumwidth \parfillskip-\@pnumwidth \leavevmode \bf + \advance\leftskip\@tempdima \hskip-\leftskip #1\nobreak \hfil\nobreak + \hbox to\@pnumwidth{\hss#2}\par \endgroup + \fi} +\def\tocsecwd{1.5em} + +\toks@\expandafter{\appendix + \addtocontents{toc}{\protect\changesecwd{6.5em}}} +\edef\appendix{\the\toks@} +\def\changesecwd{\gdef\tocsecwd} + +\def\resetleftmargin#1{\dimen@\@totalleftmargin + \linewidth\columnwidth \advance\linewidth-\@totalleftmargin + \edef\@tempa{\parshape2 \the\dimen@\space \the\linewidth\space}% + \@totalleftmargin#1\relax + \linewidth\columnwidth \advance\linewidth-\@totalleftmargin + \@tempa \@totalleftmargin\linewidth \relax} + +% For raggedright parbox in tabular. +\newcommand{\rp}{\let\PBS\\\raggedright\let\\\PBS} + +% \readnumber reads a number into #1, default #2. +\def\readnumber#1#2{\begingroup + \def\do##1##2{\catcode\fam=##2 \ifnum\fam<##1 \advance\fam 1 + \expandafter\do \else\expandafter\@gobbletwo\fi{##1}{##2}}% + \fam=0 \do{255}{9}\fam=`\0\relax \do{`\9}{12}% + \global\read-1 to#1\endgroup + \ifx#1\@empty\gdef#1{#2}\fi +} + +\def\thebibliography#1{% + \section*{References}% + \small + \list{\@biblabel{\arabic{enumiv}}}{% + \settowidth\labelwidth{\@biblabel{#1}} + \leftmargin2em + \usecounter{enumiv}\let\p@enumiv\@empty + \renewcommand\theenumiv{\arabic{enumiv}}}% + \sloppy + \clubpenalty4000\widowpenalty4000\sfcode`\.=\@m} + +% \writepage{Example} or \writepage{Table} +\newcommand{\writepage}[1]{% + \edef\temp{\write16{#1 \@currentlabel: Page \noexpand\thepage}}% + \temp +} + +% \reqspace{2in} means start a new page if the current page does not +% have at least 2in of space available +\newcommand{\reqspace}[1]{\vskip#1plus.2\textheight + \penalty0\vskip-#1plus-.2\textheight\penalty0 } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Use {example}'s instead of {figure}'s. +\let\example\figure +\let\endexample\endfigure +\expandafter\let\csname example*\expandafter\endcsname + \csname figure*\endcsname +\expandafter\let\csname endexample*\expandafter\endcsname + \csname endfigure*\endcsname +\@namedef{fnum@figure}{Example \thefigure} + +\def\theexample{\thefigure} + +\newenvironment{examplebox}% +{% Can't use LaTeX \framebox because of embedded verbatim; can't +%% embed this inside definition of \example without too much work. + \vbox\bgroup\hrule + \hbox to\hsize\bgroup\vrule \hfil + \vbox\bgroup\advance\hsize-2em +}{% + \endgraf + \kern3pt\egroup\hfil\vrule\egroup\hrule\egroup % finish off the frame +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Ordinary \DocInput doesn't handle standardized file headers +% unless you enclose them in \iffalse ... \fi which I don't care to +% do. So instead here's an alternate version of \DocInput, called +% \hDocInput. + +\def\hDocInput#1{\MakePercentIgnore + \begingroup \begingroup \lccode`\~=`\@ + \lowercase{\endgroup\long\def ~}##1##{% + \catcode`\==12 \skipfileheader{##1}}% + \catcode`\@=\active \catcode`\==14 % comment + \@@input#1 \MakePercentComment} + +\def\skipfileheader#1#2 {\endgroup + \begingroup\catcode`\==9 \catcode`\ =9 \futurelet\0\endgroup +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Loosen up the float placement restrictions. +\def\textfraction{0.02} +\def\bottomfraction{0.98} +\def\topfraction{0.98} +\let\dbltopfraction=\topfraction +\def\floatpagefraction{0.8} +\let\dblfloatpagefraction=\floatpagefraction +\setcounter{bottomnumber}{3} +\setcounter{topnumber}{3} +\setcounter{dbltopnumber}{3} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\allowtthyphens{% + {\small\tt\hyphenchar\font=45 \normalsize\tt\hyphenchar\font=45 + \footnotesize\tt\hyphenchar\font=45 }} + +%%\renewcommand{\cw}[1]{\protect\prebreak{\ntt\bslash#1}\protect\postx +%% \sh{#1}} +%%% Control symbol +%%\renewcommand{\cs}[1]{\protect\prebreak{\ntt\string#1}\protect\postx +%% \sh{#1}} +%%\renewcommand{\fn}[1]{\leavevmode{\ntt#1}\protect\postx\sh{#1}} +%%\def\sh{\protect\showhyphens} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Fix up catcodes of the upper 128 characters just in case someone +% has an early release of LaTeX2e. (pre June 1994 patch-level 2) +\def\do{\catcode\count@\@tempa \advance\count@\@ne + \ifnum\count@>\@cclv \expandafter\@gobble\fi \do} + +\count@=128 \chardef\@tempa=12 \do + +\def\mstrip#1->{} +\def\jobswitch{% + \def\@tempa{dia-driv}% + \edef\@tempa{\expandafter\mstrip\meaning\@tempa}% + \edef\@tempb{\jobname}% + \ifx\@tempa\@tempb + \dialogtrue \menustrue \grabhedrtrue + \alltrue + \else + \csname\jobname true\endcsname + \title{The {\tt\jobname} package}% + \fi +} + +\newif\ifdialog \newif\ifall \newif\ifmenus \newif\ifgrabhedr + +\endinput + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Some old stuff from codialog.tex +\typeout{% +This document offers three printing options:^^J% +(1) A4 (297 x 210 mm), two columns, landscape orientation,^^J% +(2) US letter (11 x 8.5 inches), two columns, landscape orientation.^^J% +(3) US letter (8.5 x 11 inches), one column, portrait orientation.^^J% +} + +% \readnumber is defined in dialogm.sty +\message{Enter the number for your choice (default 2): } +\readnumber{\answer}{2} + +% \adjustlayout is defined in dialogm.sty +\ifcase \answer\relax + \typeout{Defaulting to US letter, landscape ...}% 0 + \adjustlayout{11in}{8.5in}% + \or \typeout{OK, using A4 layout ...}% 1 + \adjustlayout{297mm}{210mm}% + \or \typeout{OK, using 11x8.5 layout ...}% 2 + \adjustlayout{11in}{8.5in}% + \or \typeout{OK, using 8.5x11 layout ...}% 3 + \adjustlayout{8.5in}{11in}% + \else % 4,5,... + \typeout{Defaulting to US letter, landscape ...}% + \adjustlayout{11in}{8.5in}% +\fi + +% Maybe better to offer the choices USL, USP, A4L, A4P? diff --git a/Master/texmf-dist/tex/latex/dialogl/grabhedr.sty b/Master/texmf-dist/tex/latex/dialogl/grabhedr.sty new file mode 100644 index 00000000000..a0af96b9774 --- /dev/null +++ b/Master/texmf-dist/tex/latex/dialogl/grabhedr.sty @@ -0,0 +1,153 @@ +%% +%% This is file `grabhedr.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% grabhedr.dtx (with options: `2e') + +%%% ==================================================================== +%%% @LaTeX-style-file{ +%%% filename = "grabhedr.sty", +%%% version = "0.9j", +%%% date = "1994/11/08", +%%% time = "16:15:00 EST", +%%% author = "Michael Downes", +%%% email = "mjd@math.ams.org (Internet)", +%%% keywords = "TeX, file header, +%%% supported = "yes", +%%% abstract = "This file defines a function \inputfwh +%%% to be used instead of \input, to allow TeX to grab +%%% information from standardized file headers in the form +%%% proposed by Nelson Beebe during his term as president of the +%%% TeX Users Group. Of which all this here is an example.", +%%% checksum = "60397 519 2589 19482", +%%% docstring = "The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by the equivalent of +%%% the standard UNIX wc (word count) utility output of lines, +%%% words, and characters. This is produced by Robert Solovay's +%%% checksum utility.", +%%% } +%%% ==================================================================== +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{grabhedr}[1994/11/08 v0.9j] +\begingroup +\catcode96 12 % left quote +\catcode`\= 12 +\catcode`\{=1 \catcode`\}=2 \catcode`\#=6 +\catcode`\$=3 \catcode`\~=13 \catcode`\^=7 +\catcode`\_=8 \catcode`\^^M=5 \catcode`\"=12 +\catcode`\@=11 +\gdef\@empty{} +\long\gdef\@gobble#1{} +\long\gdef\@gobbletwo#1#2{} +\long\gdef\@gobblethree#1#2#3{} +\long\gdef\@car#1#2\@nil{#1} +\ifx\UndEFiNed\@@input % LaTeX not loaded. + \edef\0{\meaning\input}\edef\1{\string\input}% + \ifx\0\1% + \global\let\@@input\input + \else + \errhelp{% +Grabhedr.sty needs to know the name of the +\input primitive in order to define \inputfwh +properly. Consult a TeXnician for help.} + \errmessage{% + Non-primitive \noexpand\input detected}% + \fi +\fi +\global\toksdef\toks@=0 +\long\gdef\afterfi#1\fi{\fi#1} +\global\let\nx@\noexpand +\global\let\xp@\expandafter +\begingroup \lccode`\.=`\%% +\lowercase{\gdef\@percentchar{.}}% +\endgroup +\gdef\fileversiondate#1#2#3{% + \xp@\xdef\csname#1\endcsname{#2 (#3)}% + \def\filename{#1}\def\fileversion{#2}% + \def\filedate{#3}% + \message{#1 \csname#1\endcsname}% +} +\xdef\@filehdrstart{% + \@percentchar\@percentchar\@percentchar\space + ==================================% + ==================================} +\gdef\@scanfileheader#1@#2#{\@xscanfileheader} +\long\gdef\@xscanfileheader#1{% + \@yscanfileheader#1{} version = "??", + date = "??",\@yscanfileheader} +\long\gdef\@yscanfileheader + #1 filename = "#2",#3 version = "#4",% + #5 date = "#6",#7\@yscanfileheader{% + \endgroup + \csname fileversiondate\endcsname{#2}{#4}{#6}% +} +\begingroup +\lccode`\$=`\^^M +\lowercase{\gdef\@readfirstheaderline#1$}{% + \toks@{#1}% + \edef\@tempa{\@percentchar\the\toks@}% + \ifx\@tempa\@filehdrstart + \endgroup \begingroup + \catcode`\%=9 \catcode`\^^M=5 \catcode`\@=11 + \catcode`\ =10 \catcode`\==12 \catcode`\"=12 + \xp@\@scanfileheader + \else + \message{(* Missing file header? *)}% + \afterfi\endgroup + \fi} +\endgroup +\gdef\@xinputfwh{% + \ifx\next\@readfirstheaderline + \catcode`\%=12 \catcode`\{=12 \catcode`\}=12 + \catcode`\\=12 \catcode`\^^L=12 + \catcode`\^=12 + \catcode`\^^M=3\relax + \else \endgroup\fi +} +\gdef\@inputfwh{\futurelet\next\@xinputfwh} +\gdef\inputfwh#1{% + \begingroup\catcode`\%=\active + \endlinechar`\^^M\relax + \lccode`\~=`\%\relax + \lowercase{\let~}\@readfirstheaderline + \xp@\@inputfwh\@@input #1\relax +} +\gdef\localcatcodes#1{% + \ifx\@empty\@catcodestack + \gdef\@catcodestack{{}}% + \fi + \def\do##1##2{% + \ifnum##2>\z@ + \catcode\number`##1 \space + \number\catcode`##1\relax + \expandafter\do\fi}% + \xdef\@catcodestack{{\do#1\relax\m@ne}% + \@catcodestack}% + \def\do##1##2{\catcode`##1 ##2\relax\do}% + \do#1\ {\catcode32\let\do}% +} +\gdef\@catcodestack{{}} +\gdef\restorecatcodes{% + \begingroup + \ifx\@empty\@catcodestack + \errmessage{Can't pop catcodes; + \nx@\@catcodestack = empty}% + \endgroup + \else + \def\do##1##2\do{% + \gdef\@catcodestack{##2}% + \endgroup##1}% + \xp@\do\@catcodestack\do + \fi +} +\expandafter\gdef\csname trap.input\endcsname + \input#1 \relax{% + \expandafter\ifx\csname#1\endcsname\relax + \afterfi\inputfwh{#1}\relax + \fi} +\endgroup +\endinput +%% +%% End of file `grabhedr.sty'. diff --git a/Master/texmf-dist/tex/latex/dialogl/menus.sty b/Master/texmf-dist/tex/latex/dialogl/menus.sty new file mode 100644 index 00000000000..8732ae25be2 --- /dev/null +++ b/Master/texmf-dist/tex/latex/dialogl/menus.sty @@ -0,0 +1,247 @@ +%% +%% This is file `menus.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% menus.dtx (with options: `2e') + +%%% ==================================================================== +%%% @LaTeX-style-file{ +%%% filename = "menus.sty", +%%% version = "0.9x", +%%% date = "1994/11/08", +%%% time = "13:32:59 EST", +%%% checksum = "38585 989 4295 33156", +%%% keywords = "TeX, menus", +%%% author = "Michael Downes", +%%% email = "mjd@math.ams.org (Internet)", +%%% supported = "yes", +%%% abstract = "This file provides functions for writing +%%% messages and menus on screen, and reading user responses. It +%%% can be used with LaTeX as a documentstyle option, or in +%%% other forms of TeX by a standard \input statement.", +%%% docstring = "The checksum field above contains a CRC-16 +%%% checksum as the first value, followed by the equivalent of +%%% the standard UNIX wc (word count) utility output of lines, +%%% words, and characters. This is produced by Robert Solovay's +%%% checksum utility.", +%%% } +%%% ==================================================================== +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{menus}[1994/11/08 v0.9x] +\RequirePackage{dialog} +\localcatcodes{\@{11}% + \~{13}\"{12}\#{6}\^{7}\`{12}\${3}\:{12}} +\storexmesj\menuprefix{ +====================================================================== +} +\let\menusuffix=\menuprefix +\storemesj\inmenuA{ +} +\storemesj\inmenuB{ +} +\storemesj\menuline{ } +\def\menutopline{} +\def\menubotline{} +\storemesj\endmenuline{ +}% +\def\menunumber#1{[#1] } +\def\menuprompt{\promptmesj{Your choice? }} +\newtoks\menufirstpart +\newtoks\menuchoices +\newtoks\menulastpart +\def\fmenu#1#2#{\mesjsetup + \catcode`\#=6 % for parameters + \toks@{\fxmenub{\gdef}{\begingroup}{}#1{#2}}% + \def\@tempa##1##{% + \def\@tempa####1####{% + \def\@tempa{\the\toks@}% + \afterassignment\@tempa \menulastpart}% + \afterassignment\@tempa \menuchoices}% + \afterassignment\@tempa \menufirstpart +} +\begingroup % localize \lccode change +\lccode`\~=`\^^M +\lowercase{% +\long\gdef\stripM#1$~#2#3\stripM#4{% + \ifx$#2% + \stripMa#1\stripMa#4% + \else + \stripMb#2#3\stripMb#4% + \fi +} +}% end lowercase +\lowercase{% +\long\gdef\stripMa $#1\stripMa#2{% + \stripMb#1$~$$\stripMb#2} +}% end lowercase +\lowercase{% +\long\gdef\stripMb#1~$#2#3\stripMb#4{% + \ifx$#2% + \stripMc#1\stripMc#4% + \else + \stripMd#1\stripMd#4% + \fi +} +}% end lowercase +\long\gdef\stripMc#1$#2\stripMc#3{% + \stripMd#1\stripMd#3} +\long\gdef\stripMd#1\stripMd#2{#2{#1}} +\endgroup +\begingroup \lccode`\~=`\^^M +\lowercase{% +\gdef\stripcontrolMs#1{\xp@\stripM + \xp@$\the#1$~$$\stripM#1} +}% end lowercase +\lowercase{% +\gdef\addmenulines#1#2#3{% + \def ~##1~##2{% + #1\xp@{\the#1#2##1#3}% + \ifx\end##2\xp@\@gobbletwo\fi~##2}% + \edef\@tempa{\nx@~\the#1\nx@~}#1{}% + \@tempa\end} +}% end lowercase +\endgroup % restore lccode of ~ +\def\fxmenub#1#2#3#4#5{% + \stripcontrolMs\menufirstpart + \stripcontrolMs\menulastpart + \stripcontrolMs\menuchoices + \addmenulines\menuchoices\menuline\endmenuline + \actively\let\^^M\relax % needed for \xdef + \toks@{\long#1#4#5}% e.g. \xdef\foo##1##2 + \edef\@tempa{\the\menufirstpart}% + \ifx\@tempa\@empty + \let\nxa@\@gobble + \else + \addmenulines\menufirstpart + \menutopline\endmenuline + \let\nxa@\nx@ + \fi + \edef\@tempa{\the\menulastpart}% + \ifx\@tempa\@empty + \let\nxb@\@gobble + \else + \addmenulines\menulastpart + \menubotline\endmenuline + \let\nxb@\nx@ + \fi +\edef\@tempa{{#3\nx@#3#2% + \def#3\nx@#3\mesjtext{% + #3\nx@#3\menuprefix + \the\menufirstpart #3\nxa@#3\inmenuA + \the\menuchoices #3\nxb@#3\inmenuB + \the\menulastpart #3\nx@#3\menusuffix}% + #3\nx@#3\sendmesj + #3\nx@#3\menuprompt}}% + \toks2 \xp@{\@tempa}% + \edef\@tempa{\the\toks@\the\toks2 }% + \let\menutopline\relax \let\menuline\relax + \let\menubotline\relax \let\endmenuline\relax + \let\menunumber\relax + \@tempa % finally, execute the \gdef or \xdef + \endgroup % matches \mesjsetup done by \fxmenu +}% end \fxmenub +\def\fxmenu#1#2#{\xmesjsetup + \toks@{\fxmenub{\xdef}{\xmesjsetup}\nx@#1{#2}}% + \def\@tempa##1##{% + \def\@tempa####1####{% + \def\@tempa{\the\toks@}% + \afterassignment\@tempa \menulastpart}% + \afterassignment\@tempa \menuchoices}% + \afterassignment\@tempa \menufirstpart +} +\def\notyet#1{% + \errmessage{Not yet implemented: \string#1}} +\long\def\nmenu#1#2#3#4#5{\notyet\nmenu} +\long\def\nxmenu#1#2#3#4#5{\notyet\nxmenu} +\newtoks\optionstack +\let\curmenu\@empty +\let\estart\relax +\let\eend\relax +\def\pushoptions#1{% + \edef\pushtemp{\estart + \def\nx@\curmenu{\curmenu}% + \eend + \the\optionstack}% + \global\optionstack\xp@{\pushtemp}% + \edef\curmenu{\curmenu#1}% +} +\def\popoptions{% + \edef\@tempa{\the\optionstack}% + \ifx\@empty\@tempa + \errmessage{Can't pop empty stack + (\string\optionstack)}% + \else + \def\estart##1\eend##2\@nil{% + \global\optionstack{##2}% + \let\estart\relax##1}% + \the\optionstack\@nil + \fi +} +\fmesj\moptionX{Exiting . . .} +\def\repeatoption{% + \csname moption\curmenu\endcsname} +\def\moptionQ{\popoptions \repeatoption} +\fxmesj\badoptionmesj#1{% +?---I don't understand "#1".} +\def\optionexec#1{% + \if ?#1\relax \let\@tempa\moptionhelp + \else \if Q#1\relax + \ifx\curmenu\@empty \let\@tempa\moptionX + \else \let\@tempa\moptionQ \fi + \else \if X#1\relax \let\@tempa\moptionX + \else + \xp@\let\xp@\@tempa + \csname moption\curmenu#1\endcsname + \ifx\@tempa\relax + \badoptionmesj{#1}\let\@tempa\repeatoption + \else + \pushoptions{#1}% + \fi + \fi\fi\fi + \@tempa +} +\def\optionfileexec#1{\notyet\optionfileexec} +\def\xoptiontest#1{TT\fi + \begingroup \def\0{?}\def\1{Q}% + \def\2{q}\def\3{x}\def\4{X}% + \aftergroup\if\aftergroup T% + \ifx\0#1\aftergroup T% + \else\ifx\1#1\aftergroup T% + \else\ifx\2#1\aftergroup T% + \else\ifx\3#1\aftergroup T% + \else\ifx\4#1\aftergroup T% + \else \aftergroup F% + \fi\fi\fi\fi\fi + \endgroup +} +\fxmesj\menuhelpmesj{&\menuprefix% +A response of Q will usually send you back to % +the previous menu. +A response of X will get you entirely out of % +the menu system. +&\menusuffix% +Press the <Return> key ( Enter ) to continue: +} +\def\moptionhelp{% + \menuhelpmesj \readline{}\reply \repeatoption} +\def\moptionhelp{% + \menuhelpmesj \readline{}\reply \repeatoption} +\xp@\def\csname moption?\endcsname{% + \moptionhelp} +\def\specialhelp#1#2{% + \let\specialhelpreply=#1\def#1{?}\begingroup + \def\menuhelpmesj{\let#1\specialhelpreply + \promptxmesj{#2\ +Press <return> to continue:}\endgroup}% +} +\def\specialhelpreply{} +\def\lettermenu#1{% + \csname menu#1\endcsname + \readChar{Q}\reply \optionexec\reply +} +\restorecatcodes +\endinput +%% +%% End of file `menus.sty'. |