% \iffalse % % Copyright (C) 1993-1998 by Jochen R"utschlin. All rights reserved. % % This file is part of the `keys' package. % % IMPORTANT NOTICE: % % You are not allowed to change this file. % % You are NOT ALLOWED to distribute this file alone. You are NOT % ALLOWED to take money for the distribution or use of this file (or % a changed version). % % If you receive only some of these files from someone, complain! % % \fi % % \CheckSum{100} % % \CharacterTable % {Upper-case \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 % Lower-case \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 % Digits \0\1\2\3\4\5\6\7\8\9 % Exclamation \! Double quote \" Hash (number) \# % Dollar \$ Percent \% Ampersand \& % Acute accent \' Left paren \( Right paren \) % Asterisk \* Plus \+ Comma \, % Minus \- Point \. Solidus \/ % Colon \: Semicolon \; Less than \< % Equals \= Greater than \> Question mark \? % Commercial at \@ Left bracket \[ Backslash \\ % Right bracket \] Circumflex \^ Underscore \_ % Grave accent \` Left brace \{ Vertical bar \| % Right brace \} Tilde \~} % % \iffalse %<*driver> \documentclass[a4paper,11pt]{ltxdoc} \DisableCrossrefs \OnlyDescription \pagestyle{empty} \usepackage[german]{babel,keys} \usepackage{typearea} \typearea{15} \usepackage{multicol,mflogo} \renewcommand{\meta}[1]{{\normalfont\textit{#1}}} \renewcommand{\DescribeMacro}[1]{\relax} \renewcommand{\DescribeEnv}[1]{\relax} \newcommand*{\Describe}[1]{% \bigskip\noindent\fbox{\footnotesize\texttt{\bslash{}#1}}\par\smallskip} \begin{document} \DocInput{keys.dtx} \end{document} % % \fi % % \title{Das \textsf{keys} Paket v2.1b} % \author{Jochen R"utschlin} % \date{13.\ April 1998} % \maketitle % % \thispagestyle{empty} % % \begin{abstract} % In manchen Dokumentationen (z.\,B.\ \textsf{dvidrv}-Manual, % Turbo-Pascal) werden f"ur die Benutzung von Tasten bzw.\ % Tastenkombinationen \emph{Tastatursymbole} verwendet. Dies sind kleine, % die Taste repr"asentierende R"ahmchen, die im Innern die % Tastenbeschriftung aufweisen. Mit diesem Paket habe ich versucht, diese % Symbole nachzubilden. % \end{abstract} % % \noindent\rule{\hsize}{.4pt} % % \begin{multicols}{2} % Bei den Tastatursymbolen gibt es zwei Arten von Tasten: die Tasten mit % Argument und die Tasten ohne Argument. Die Tasten mit einem Argument % sind |\key| und |\fkey|. Das Argument bezeichnet dabei den % Tastenaufdruck. Die Tasten ohne Argument sind die Sondertasten, deren % Aufdruck bereits durch den Namen bezeichnet wird. % % \Describe{key\marg{Zeichen}} % \DescribeMacro{\key}% % |\key| erh"alt ein einzelnes \meta{Zeichen} als Argument und % repr"asentiert damit die \glqq{}normalen\grqq{}, einstelligen Tasten. % Man sollte jedoch bedenken, da"s \meta{Zeichen} \textbf{nicht} in einer % verbatim-"ahnlichen Umgebung gesetzt wird, und man somit bei der % Darstellung von beispielsweise \key{\&}, \key{\%} oder \key{\_} auf die % richtige Darstellung des Zeichen achten mu"s. % % \Describe{fkey\marg{Nummer}} % \DescribeMacro{\fkey}% % F"ur die Darstellung von Funktionstasten ist |\fkey| gedacht. Als % Argument wird hier die (maximal zweistellige) \meta{Nummer} der Taste % "ubergeben -- das \glqq{}F\grqq{} wird automatisch hinzugef"ugt: % \fkey{6} % % \subsubsection*{Sondertasten} % Der andere Typus von Tasten ist der ohne Argument. Er braucht auch % keines, weil es sich bei diesen Tasten um die Sondertasten (im % weitesten Sinne) handelt, und der Name die Beschriftung bereits % festlegt. Folgende Tabelle gibt die M"oglichkeiten wieder: % % \begin{center}\small % \begin{tabular}{@{}lcl@{}} % |\returnkey| &\returnkey & Eingabetaste\\ % |\escapekey| &\escapekey & Escape-Taste\\ % |\controlkey| &\controlkey & Steuerungstaste\\ % |\altkey| &\altkey & Alternate-Taste\\ % |\altgrkey| &\altgrkey & Alternate Gr-Taste\\ % |\tabkey| &\tabkey & Tabulatortaste\\ % |\shiftkey| &\shiftkey & Umschalt"-taste\\ % |\capslockkey| &\capslockkey & Feststell"-taste\\ % |\spacekey| &\spacekey & Leertaste\\ % |\backspacekey| &\backspacekey & R"ucktaste\\ % |\deletekey| &\deletekey & L"oschtaste\\ % |\cursorleftkey| &\cursorleftkey & Cursor links\\ % |\cursorrightkey| &\cursorrightkey& Cursor rechts\\ % |\cursorupkey| &\cursorupkey & Cursor hoch\\ % |\cursordownkey| &\cursordownkey & Cursor runter\\ % \end{tabular} % \end{center} % % \bigskip\noindent Da dieser Style f"ur die Tastenr"ahmchen einen % eigenen Zeichensatz ben"otigt, mu"s dieser vor der ersten Verwendung % des Styles generiert wer"-den. Die dazu notwendige \MF-Quell"-datei % \texttt{KEYS.MF} ist dem Paket beigef"ugt. Wie die "Ubersetzung des % Zeichensatzes vorzunehmen ist, entnimmt man am Besten der % \MF-Dokumentation. Zus"atzlich habe ich f"ur alle em\TeX-Benutzer die % Datei \texttt{KEYS.MFJ} dem Paket hinzugef"ugt, mit der die Erzeugung % der Zeichens"atze unter Zuhilfenahme von \textsf{mfjob} wesentlich % erleichtert werden kann (auch hier sollte man bei Problemen die % Dokumentation zu Rate ziehen). % \end{multicols} % \StopEventually{\Finale} % % \iffalse %<*package> % \fi % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{keys} [1998/04/13 v2.1b keys package (jr)] % \end{macrocode} % % \begin{macrocode} \DeclareOption{american}{% \ExecuteOptions{english} \PassOptionsToPackage{american}{babel} } \DeclareOption{british}{% \ExecuteOptions{english} \PassOptionsToPackage{british}{babel} } \DeclareOption{english}{% \addto\extrasenglish{% \def\controlkeyname{Ctrl}% \def\deletekeyname{Delete}% \def\capslockkey{Caps\,Lock}% \def\controlkey{\@key{103}{\controlkeyname}}% \def\deletekey{\@key{104}{\deletekeyname}}% \def\capslockkey{\@key{107}{% \setbox\@tempboxa\hbox{\capslockname}% \raise.6\dp\@tempboxa\box\@tempboxa}}% } \PassOptionsToPackage{english}{babel} } \DeclareOption{german}{% \addto\extrasgerman{% \def\controlkeyname{Strg}% \def\deletekeyname{Entf}% \def\capslockkeyname{{\key@font\symbol{2}}}% \def\controlkey{\@key{103}{% \setbox\@tempboxa\hbox{\controlkeyname}% \raise.6\dp\@tempboxa\box\@tempboxa}}% \def\deletekey{\@key{103}{\deletekeyname}}% \def\capslockkey{\capslockkeyname}% } \PassOptionsToPackage{german}{babel} } \ExecuteOptions{english} \ProcessOptions* \RequirePackage{babel} % \end{macrocode} % % \begin{macrocode} \def\key@font{\usefont{U}{keys}{m}{n}} % \end{macrocode} % % \begin{macrocode} \newlength{\key@size} \def\@key#1#2{% \key@size\f@size\p@% \ifdim\key@size>12pt% \key@size=0.694444444\key@size% \else% \advance\key@size by -2\p@% \fi% \settowidth{\@tempdima}{\key@font\symbol{#1}}% {\key@font\symbol{#1}}% \kern-\@tempdima% \hbox to\@tempdima{\key@font% \reset@font\fontsize{\strip@pt\key@size}{\f@baselineskip}% \hfil\textsf{#2}\hfil}} % \end{macrocode} % % \begin{macro}{\key} % \begin{macrocode} \newcommand{\key}[1]{\@key{101}{#1}} % \end{macrocode} % \end{macro} % % \begin{macro}{\fkey} % \begin{macrocode} \newcommand{\fkey}[1]{\@key{103}{F\,#1}} % \end{macrocode} % \end{macro} % % \begin{macro}{\returnkey} % \begin{macrocode} \newcommand{\returnkey}{{\key@font\symbol{0}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\shiftkey} % \begin{macrocode} \newcommand{\shiftkey}{{\key@font\symbol{1}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\metakey} \newcommand{\metakey}{{\key@font\symbol{8}}} % \end{macro} % % \begin{macro}{\tabkey} % \begin{macrocode} \newcommand{\tabkey}{{\key@font\symbol{3}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\cursorleftkey} % \begin{macrocode} \newcommand{\cursorleftkey}{{\key@font\symbol{4}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\cursorrightkey} % \begin{macrocode} \newcommand{\cursorrightkey}{{\key@font\symbol{5}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\cursorupkey} % \begin{macrocode} \newcommand{\cursorupkey}{{\key@font\symbol{6}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\cursordownkey} % \begin{macrocode} \newcommand{\cursordownkey}{{\key@font\symbol{7}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\backspacekey} % \begin{macrocode} \newcommand{\backspacekey}{{\key@font\symbol{11}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\spacekey} % \begin{macrocode} \newcommand{\spacekey}{{\key@font\symbol{106}}} % \end{macrocode} % \end{macro} % % \begin{macro}{\altkey} % \begin{macrocode} \newcommand{\altkey}{\@key{102}{Alt}} % \end{macrocode} % \end{macro} % % \begin{macro}{\altgrkey} % \begin{macrocode} \newcommand{\altgrkey}{\@key{104}{Alt\,Gr}} % \end{macrocode} % \end{macro} % % \begin{macro}{\escapekey} % \begin{macrocode} \newcommand{\escapekey}{\@key{103}{Esc}} % \end{macrocode} % \end{macro} % \iffalse % % \fi % %\iffalse %<*fd> % \begin{macrocode} \DeclareFontFamily{U}{keys}{}{} \DeclareFontShape{U}{keys}{m}{n} { <-> keys }{} % \end{macrocode} % % %<*mf> % \begin{macrocode} mode_setup; font_size 10pt#; font_identifier:="KEYS"; font_coding_scheme:="UNSPECIFIED"; u#:=21/36pt#; % unit width body_height#:=250/36pt#; % height of tallest characters comma_depth#:=50/36pt#; % depth of comma below baseline beginchar(0,22u#,body_height#,comma_depth#); "return"; linewidth#:=0.4pt#; boldlinewidth#:=0.9pt#; define_pixels(linewidth,boldlinewidth); z1 = (0,0); z2 = (0,h-d); z3 = (d,h); z4 = (w-d,h); z5 = (w,h-d); z6 = (w,0); z7 = (w-d,-d); z8 = (d,-d); z1a = (.15w,.50h-.2h); z2a = (.40w,.25h-.2h); z3a = (.40w,.75h-.2h); z4a = (.40w,.50h-.2h); z5a = (.80w,.50h-.2h); z6a = (.80w,.80h-.2h); % draw it pickup pencircle scaled linewidth; draw z1{up}..z2{up}..z3{right}..z4{right}..z5{down}..z6{down}..z7{left}..z8{left}..cycle; pickup pencircle scaled boldlinewidth; draw z4a--z5a--z6a; fill z1a--z2a--z3a--cycle; endchar; beginchar(1,22u#,body_height#,comma_depth#); "shift"; linewidth#:=0.4pt#; define_pixels(linewidth); z1 = (0,0); z2 = (0,h-d); z3 = (d,h); z4 = (w-d,h); z5 = (w,h-d); z6 = (w,0); z7 = (w-d,-d); z8 = (d,-d); z1a = (.5w,.875h); z2a = (.5w+.225w,.425h); z3a = (.5w+.075w,y2a); z4a = (x3a,0); z5a = (w-x4a,y4a); z6a = (w-x3a,y3a); z7a = (w-x2a,y2a); % draw it pickup pencircle scaled linewidth; draw z1{up}..z2{up}..z3{right}..z4{right}..z5{down}..z6{down}..z7{left}..z8{left}..cycle; draw z1a--z2a--z3a--z4a--z5a--z6a--z7a--cycle; endchar; beginchar(2,22u#,body_height#,comma_depth#); "shift lock"; linewidth#:=0.4pt#; define_pixels(linewidth); z1 = (0,0); z2 = (0,h-d); z3 = (d,h); z4 = (w-d,h); z5 = (w,h-d); z6 = (w,0); z7 = (w-d,-d); z8 = (d,-d); z1a = (.5w,-.25); z2a = (.5w+.225w,.425h); z3a = (.5w+.075w,y2a); z4a = (x3a,.85h); z5a = (w-x4a,y4a); z6a = (w-x3a,y3a); z7a = (w-x2a,y2a); % draw it pickup pencircle scaled linewidth; draw z1{up}..z2{up}..z3{right}..z4{right}..z5{down}..z6{down}..z7{left}..z8{left}..cycle; draw z1a--z2a--z3a--z4a--z5a--z6a--z7a--cycle; endchar; beginchar(3,22u#,body_height#,comma_depth#); "tabulator"; linewidth#:=0.4pt#; boldlinewidth#:=0.6pt#; define_pixels(linewidth,boldlinewidth); z1 = (0,0); z2 = (0,h-d); z3 = (d,h); z4 = (w-d,h); z5 = (w,h-d); z6 = (w,0); z7 = (w-d,-d); z8 = (d,-d); z1al = (.20w,.5h-.5d+.25h); z2al = (.45w,.3h-.5d+.25h); z3al = (.45w,.7h-.5d+.25h); z4al = (.45w,.5h-.5d+.25h); z5al = (.75w,.5h-.5d+.25h); z1ll = (x1al,.3h-.5d+.25h); z2ll = (x1ll,.7h-.5d+.25h); z1ar = (.80w,.5h-.5d-.25h); z2ar = (.55w,.3h-.5d-.25h); z3ar = (.55w,.7h-.5d-.25h); z4ar = (.55w,.5h-.5d-.25h); z5ar = (.25w,.5h-.5d-.25h); z1lr = (x1ar,.3h-.5d-.25h); z2lr = (x1lr,.7h-.5d-.25h); % draw it pickup pencircle scaled linewidth; draw z1{up}..z2{up}..z3{right}..z4{right}..z5{down}..z6{down}..z7{left}..z8{left}..cycle; pickup pencircle scaled boldlinewidth; draw z1ll--z2ll; fill z1al--z2al--z3al--cycle; draw z4al--z5al; draw z1lr--z2lr; fill z1ar--z2ar--z3ar--cycle; draw z4ar--z5ar; endchar; beginchar(4,13u#,body_height#,comma_depth#); "cursor left"; linewidth#:=0.4pt#; boldlinewidth#:=0.9pt#; define_pixels(linewidth,boldlinewidth); z1 = (0,0); z2 = (0,h-d); z3 = (d,h); z4 = (w-d,h); z5 = (w,h-d); z6 = (w,0); z7 = (w-d,-d); z8 = (d,-d); z1a = (.15w,.50h-.5d); z2a = (.50w,.25h-.5d); z3a = (.50w,.75h-.5d); z4a = (.50w,.50h-.5d); z5a = (.80w,.50h-.5d); % draw it pickup pencircle scaled linewidth; draw z1{up}..z2{up}..z3{right}..z4{right}..z5{down}..z6{down}..z7{left}..z8{left}..cycle; pickup pencircle scaled boldlinewidth; draw z4a--z5a; fill z1a--z2a--z3a--cycle; endchar; beginchar(5,13u#,body_height#,comma_depth#); "cursor right"; linewidth#:=0.4pt#; boldlinewidth#:=0.9pt#; define_pixels(linewidth,boldlinewidth); z1 = (0,0); z2 = (0,h-d); z3 = (d,h); z4 = (w-d,h); z5 = (w,h-d); z6 = (w,0); z7 = (w-d,-d); z8 = (d,-d); z1a = (.85w,.50h-.5d); z2a = (.50w,.25h-.5d); z3a = (.50w,.75h-.5d); z4a = (.50w,.50h-.5d); z5a = (.20w,.50h-.5d); % draw it pickup pencircle scaled linewidth; draw z1{up}..z2{up}..z3{right}..z4{right}..z5{down}..z6{down}..z7{left}..z8{left}..cycle; pickup pencircle scaled boldlinewidth; draw z4a--z5a; fill z1a--z2a--z3a--cycle; endchar; beginchar(6,13u#,body_height#,comma_depth#); "cursor up"; linewidth#:=0.4pt#; boldlinewidth#:=0.9pt#; define_pixels(linewidth,boldlinewidth); z1 = (0,0); z2 = (0,h-d); z3 = (d,h); z4 = (w-d,h); z5 = (w,h-d); z6 = (w,0); z7 = (w-d,-d); z8 = (d,-d); z1a = (.50w,.90h); z2a = (.25w,.45h); z3a = (.75w,.45h); z4a = (.50w,.45h); z5a = (.50w,0); % draw it pickup pencircle scaled linewidth; draw z1{up}..z2{up}..z3{right}..z4{right}..z5{down}..z6{down}..z7{left}..z8{left}..cycle; pickup pencircle scaled boldlinewidth; draw z4a--z5a; fill z1a--z2a--z3a--cycle; endchar; beginchar(7,13u#,body_height#,comma_depth#); "cursor down"; linewidth#:=0.4pt#; boldlinewidth#:=0.9pt#; define_pixels(linewidth,boldlinewidth); z1 = (0,0); z2 = (0,h-d); z3 = (d,h); z4 = (w-d,h); z5 = (w,h-d); z6 = (w,0); z7 = (w-d,-d); z8 = (d,-d); z1a = (.50w,-.05h); z2a = (.25w,.45h-.05h); z3a = (.75w,.45h-.05h); z4a = (.50w,.45h-.05h); z5a = (.50w,.90h-.05h); % draw it pickup pencircle scaled linewidth; draw z1{up}..z2{up}..z3{right}..z4{right}..z5{down}..z6{down}..z7{left}..z8{left}..cycle; pickup pencircle scaled boldlinewidth; draw z4a--z5a; fill z1a--z2a--z3a--cycle; endchar; beginchar(8,13u#,body_height#,comma_depth#); "meta"; linewidth#:=0.4pt#; boldlinewidth#:=0.9pt#; define_pixels(linewidth,boldlinewidth); z1 = (0,0); z2 = (0,h-d); z3 = (d,h); z4 = (w-d,h); z5 = (w,h-d); z6 = (w,0); z7 = (w-d,-d); z8 = (d,-d); z1a = (.15w,.50h); z2a = (.50w,.85h); z3a = (.85w,.50h); z4a = (.50w,.10h); % draw it pickup pencircle scaled linewidth; draw z1{up}..z2{up}..z3{right}..z4{right}..z5{down}..z6{down}..z7{left}..z8{left}..cycle; pickup pencircle scaled boldlinewidth; fill z1a--z2a--z3a--z4a--cycle; endchar; beginchar(11,22u#,body_height#,comma_depth#); "backspace"; linewidth#:=0.4pt#; boldlinewidth#:=0.9pt#; define_pixels(linewidth,boldlinewidth); z1 = (0,0); z2 = (0,h-d); z3 = (d,h); z4 = (w-d,h); z5 = (w,h-d); z6 = (w,0); z7 = (w-d,-d); z8 = (d,-d); z1a = (.15w,.50h-.5d); z2a = (.40w,.25h-.5d); z3a = (.40w,.75h-.5d); z4a = (.40w,.50h-.5d); z5a = (.80w,.50h-.5d); % draw it pickup pencircle scaled linewidth; draw z1{up}..z2{up}..z3{right}..z4{right}..z5{down}..z6{down}..z7{left}..z8{left}..cycle; pickup pencircle scaled boldlinewidth; draw z4a--z5a; fill z1a--z2a--z3a--cycle; endchar; beginchar(101,13u#,body_height#,comma_depth#); "key frame one"; linewidth#:=0.4pt#; define_pixels(linewidth); z1 = (0,0); z2 = (0,h-d); z3 = (d,h); z4 = (w-d,h); z5 = (w,h-d); z6 = (w,0); z7 = (w-d,-d); z8 = (d,-d); % draw it pickup pencircle scaled linewidth; draw z1{up}..z2{up}..z3{right}..z4{right}..z5{down}..z6{down}..z7{left}..z8{left}..cycle; endchar; beginchar(102,22u#,body_height#,comma_depth#); "key frame two"; linewidth#:=0.4pt#; define_pixels(linewidth); z1 = (0,0); z2 = (0,h-d); z3 = (d,h); z4 = (w-d,h); z5 = (w,h-d); z6 = (w,0); z7 = (w-d,-d); z8 = (d,-d); % draw it pickup pencircle scaled linewidth; draw z1{up}..z2{up}..z3{right}..z4{right}..z5{down}..z6{down}..z7{left}..z8{left}..cycle; endchar; beginchar(103,31u#,body_height#,comma_depth#); "key frame three"; linewidth#:=0.4pt#; define_pixels(linewidth); z1 = (0,0); z2 = (0,h-d); z3 = (d,h); z4 = (w-d,h); z5 = (w,h-d); z6 = (w,0); z7 = (w-d,-d); z8 = (d,-d); % draw it pickup pencircle scaled linewidth; draw z1{up}..z2{up}..z3{right}..z4{right}..z5{down}..z6{down}..z7{left}..z8{left}..cycle; endchar; beginchar(104,40u#,body_height#,comma_depth#); "key frame four"; linewidth#:=0.4pt#; define_pixels(linewidth); z1 = (0,0); z2 = (0,h-d); z3 = (d,h); z4 = (w-d,h); z5 = (w,h-d); z6 = (w,0); z7 = (w-d,-d); z8 = (d,-d); % draw it pickup pencircle scaled linewidth; draw z1{up}..z2{up}..z3{right}..z4{right}..z5{down}..z6{down}..z7{left}..z8{left}..cycle; endchar; beginchar(105,49u#,body_height#,comma_depth#); "key frame five"; linewidth#:=0.4pt#; define_pixels(linewidth); z1 = (0,0); z2 = (0,h-d); z3 = (d,h); z4 = (w-d,h); z5 = (w,h-d); z6 = (w,0); z7 = (w-d,-d); z8 = (d,-d); % draw it pickup pencircle scaled linewidth; draw z1{up}..z2{up}..z3{right}..z4{right}..z5{down}..z6{down}..z7{left}..z8{left}..cycle; endchar; beginchar(106,58u#,body_height#,comma_depth#); "key frame six (space)"; linewidth#:=0.4pt#; define_pixels(linewidth); z1 = (0,0); z2 = (0,h-d); z3 = (d,h); z4 = (w-d,h); z5 = (w,h-d); z6 = (w,0); z7 = (w-d,-d); z8 = (d,-d); % draw it pickup pencircle scaled linewidth; draw z1{up}..z2{up}..z3{right}..z4{right}..z5{down}..z6{down}..z7{left}..z8{left}..cycle; endchar; beginchar(107,67u#,body_height#,comma_depth#); "key frame seven"; linewidth#:=0.4pt#; define_pixels(linewidth); z1 = (0,0); z2 = (0,h-d); z3 = (d,h); z4 = (w-d,h); z5 = (w,h-d); z6 = (w,0); z7 = (w-d,-d); z8 = (d,-d); % draw it pickup pencircle scaled linewidth; draw z1{up}..z2{up}..z3{right}..z4{right}..z5{down}..z6{down}..z7{left}..z8{left}..cycle; endchar; bye. % \end{macrocode} % % %<*mfj> % \begin{macrocode} input [modes]; def tfm_target=[local]; def s=[s0]; { base=plain; m; mags=s; fonts=keys; } % \end{macrocode} % %\fi % \Finale