diff options
author | Karl Berry <karl@freefriends.org> | 2013-01-25 23:16:00 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2013-01-25 23:16:00 +0000 |
commit | 220642dbc88e804b285b1d77b7785de73213236b (patch) | |
tree | 13fcfc4321774d63f2dc2dea4f623e4ce23ee3b1 /Master/texmf-dist/doc/latex/dialogl/dialogl-doc.sty | |
parent | 6e7e69cd3889f06015e1d00cd9ef3a7e582f238a (diff) |
dialogl 1.99a reinstated as lppl (24jan13)
git-svn-id: svn://tug.org/texlive/trunk@28946 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex/dialogl/dialogl-doc.sty')
-rw-r--r-- | Master/texmf-dist/doc/latex/dialogl/dialogl-doc.sty | 536 |
1 files changed, 536 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/dialogl/dialogl-doc.sty b/Master/texmf-dist/doc/latex/dialogl/dialogl-doc.sty new file mode 100644 index 00000000000..3077de1d653 --- /dev/null +++ b/Master/texmf-dist/doc/latex/dialogl/dialogl-doc.sty @@ -0,0 +1,536 @@ +% Copyright 1994 Michael John Downes +% Copyright 2013 TeX Users Group +% This file is part of the dialogl package, released under the LPPL; +% see dialogl.ins for details. +% +% Customizations for the articles/documentation 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? |