%------------------------------------------------------------------------ %File: Mhelp.sty % %Style-File zur Erstellung von MuPAD-Helpseiten. %------------------------------------------------------------------------ %% Copyright 2002 SciFace Software GmbH % % This program may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.2 % of this license or (at your option) any later version. % The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.2 or later is part of all distributions of LaTeX % version 1999/12/01 or later. % % This program consists of the files Mhelp.sty, Mhyper.sty, % Mcompat.sty, Mbook.sty, Mreprt.sty, Mfonts.sty, Mwrite.sty, % and MuPAD.mf. \errorcontextlines=1600 \NeedsTeXFormat{LaTeX2e}[97/01/01] % % automatisiertes Erzeugen der Datumsangaben und Versionsnummern % aus dem cvs-String: \def\splitcvs $#1: #2.sty,v #3 #4 #5$ to #6#7#8\relax{% \def#6{#2}% \def#7{v#3}% \def#8{#4}% } \splitcvs $Id: Mhelp.sty,v 1.7 2003/11/21 15:23:43 nthiery Exp $ to % \filename\fileversion\filedate\relax % \ProvidesPackage{\filename}[\filedate] \immediate\typeout{Package: `\filename' \fileversion \space \filedate \space (roehrig, metzner, billing, ccr)} \RequirePackage{Mwrite} %% \RequirePackage{verbatim,longtable,keyval,afterpage,calc} \RequirePackage{float,everyshi,count1to,array,tabularx,graphicx} \RequirePackage[ngerman,german,francais,english]{babel} \RequirePackage{Mhyper}[2003/10/20] \RequirePackage{ifpdf,hhparmrk,booktabs} % \RequirePackage{listings}[2002/04/01] \errorcontextlines=255 \providecommand*{\smallcube}{\ensuremath{\bullet}} \providecommand*{\T}[1]{} %---------------- Wichtige Einstellungen und Definitionen --------------- \def\iM@layout{ \setlongtables % \setlength{\parindent}{0pt} % \setlength{\parskip}{1ex plus 0.4ex minus 0.2ex} \raggedbottom } \newread\LTOCIN %------------------------------------------------------------------------ %--------------------- Zeichendefinition -------------------------------- \chardef\Mhat="5E % ^ %------------------------------------------------------------------------ %------Definition der am Anfang bzw. Ende des Dokuments ----------------- %----------- auszufuehrenden Befehle ----------------------------------- \AtBeginDocument {% \ifhypermode \iMhytexpagesize % \Mhelpindexref \fi \Mnoaddtoc \global\textwidth=\columnwidth \write\@auxout{\string\catcode`\string\%=11\string\relax}% } \AtEndOfPackage{\Mlanggerman} %------------------------------------------------------------------------ %-------------- if-Definitionen und Initialisierungen ------------------ \newif\ifnoteof % if-Definition fuer das Mcontents-Makro % xxx das sollte durch einen eleganteren Mechanismus ersetzt werden. \newif\ifprint % if-Definitionen fuer die Wahl des % Ausgabeformats. \newif\ifhytex % Werden in den Stil-Optionen gesetzt. \newif\ifascii \newif\ifhtml \newif\iffullscreen \newif\iflaptop \newif\ifpaper \newif\ifpaperwide \newif\ifpackage % if-Definition zur Feststellung, ob man % sich in einer Package-Umgebung befindet \newif\ifMwarning % true - nur Warnungen bei Verwendung alter Makros % false - Fehler \newif\ifMDebug % besondere Meldungen und Hervorhebungen im Text: % 1. fehlende Knoten in \Mup, \Mhref werden eingerahmt % ... \newif\ifMextref % global f"ur: Abschalten von `externen Referenzen' \newif\ifMnoextref % extreftrue - immer zweites Argument von \Mextref % noextreftrue - immer erstes Argument von \Mextref % false - \Mextref entscheidet selbst (siehe dort) \newif\ifMfailref % true - trotz fehlendem Knoten wird eine HyTeX- % Referenz angelegt (nicht Datei-"ubergreifend!!) \newif\ifbookversion % Ist Mhelp im Handbuch verwendet worden \newif\ifiaddtoc % Wird von den Makros \Maddtoc und \Mnoaddtoc % gesetzt bzw. gel"oscht \newif\ifkomma % Soll \Mup Kommata setzen? \newif\ifiMreallylarge \newif\ifiMmark % Sollen Hyperlinks im dvi markiert werden? \newif\ifiMformat % Ist ein Ausgabeformat gewaehlt worden? \newif\ifiMindex % Sind wir im Index? \newif\ifiMlayout % Mhelp-Layout verwenden? \newif\ifMbspmode \newif\ifhytexwarnings \newif\ifhypermode \newif\ifiM@Mvintest % Fuer die Parameter von Mvin und Mvout \newif\ifiM@Mvinclick \newif\ifiM@Mvinhide \newif\ifiM@Mvincollect \newif\ifiM@Mvinsamepage \newif\ifiM@Mvinfirstinseries \newif\ifiM@Mvinplot \newif\ifiM@MvoutTeX \newif\ifiM@Mvout % input or output? \newif\ifiM@springer % Layout nach Springer-Vorgaben? \newif\ifiM@meth@read % Methoden bereits eingelesen? \newif\ifM@helppage % Momentan auf einer Hilfeseite? \newif\if@tempswb \newif\if@Msplittoc \newif\if@Mnonewcontext \newif\if@Mhadintro \newif\if@M@anim \newif\if@M@wideparam \newlength{\iMtmplength} % Temporaere Variable in der Mchange Umgebung \printtrue \hytexfalse \asciifalse \htmlfalse \fullscreenfalse \laptopfalse \papertrue \paperwidefalse \packagefalse \Mwarningfalse \MDebugfalse \Mextreftrue \Mnoextreffalse \Mfailreffalse \kommatrue \iMreallylargefalse \iMmarkfalse \iMindexfalse \iMlayouttrue \Mbspmodefalse \hytexwarningstrue \iM@springerfalse \M@helppagefalse \@Msplittoctrue \@Mnonewcontextfalse \@Mhadintrofalse %----------------------- Tokenregister ---------------------------------- \newtoks\iM@tok % Scratch-Register \newtoks\iM@tok@ \newtoks\M@allpages % collect help page titles, \M@allpages{} % for checking consistency with the interface \long\def\iM@appendtok#1+=#2\iM@appendtok{#1=\expandafter\expandafter\expandafter{\expandafter\the\expandafter#1#2}} %------------------------------------------------------------------------ %----------------------- Die Counterdefinitionen ------------------------ %----------------------- interne Counter -------------------------------- \newcounter{first} % Zaehler fuer die Anzahl der gedruckten % Helpseiten in der Mpackage-Umgebung. Wird fuer % die Kommasetzung im Mcontents-Makro benoetigt. \newcounter{iManzMargs} %Z"ahler f"ur die Schachtelungstiefe von %Margs-Makros \newcounter{iMenv} % "Environment-Variable". Wird benoetigt, da % manche Makros (Mmeta,Mvar,Mfunc ...) % Ihr "verhalten" aendern, je nachdem in welchem % Zusammenhang sie benutzt werden. % Dabei werden folgende Werte angenommen: % 0 Standard, 1 Mseealso-Umgebung, % 2 Margs-Makro & Moverloading-Umgebung, % 3 M[d]math-Makro, 4 Msuperdomain- % & Mcategories- & Maxioms-Umgebung, % 5 Mmethod-Makro & 6 Msyntax-Umgebung. \newcounter{iMpack} % Flag fuer Mpackage-Umgebungen \newcounter{iMtitlepage} % Flag fuer Verwendung von Mpacktitle \newcounter{iMdepth} % Zaehler fuer die Schachtelungstiefe bei % optionalen Parametern. "Merkt" sich, in welcher % Tiefe man sich gerade "befindet". \newcounter{iMhelppage} % Counter fuer die Nr. der aktuellen % Mhelppage-Umgebung. Wird benoetigt, % um am Anfang der ersten Helpseite die % Fileausgaben zu oeffnen. \newcounter{iM@example}[iMhelppage] % Zählt die Beispiele auf einer Helppage %\newcounter{iM@Methoddetails}[iMhelppage] \newcounter{iM@inputs}[iMhelppage] % Zaehlt die Mvin-Umgebungen einer Hilfeseite % wird momentan benutzt, um plot-Ausgaben zuzuordnen \newcounter{iMlang} % Counter fuer die gewuenschte Ausgabesprache. % Wird mit dem Mlanggerman- bzw. % Mlangenglish-Makro veraendert. % Belegung: 0 -- Englisch % 1 -- Deutsch (default) % 2 -- French \newcounter{iMoutput} % Flag fuer Ausgabe der Versionsnr. % Belegung: 0 -- keine Ausgabe % 1 -- Ausgabe der Versionsnr. % unter der Helpseiten- % ueberschrift (default). \newcounter{iMenglish} % Werden zum Einstellen der benutzten \newcounter{iMgerman} % Ausgabesprache mit dem Mlanguage-Makro \newcounter{iMfrench} % benoetigt. \newcounter{iMhead} % Schalter f"ur die "Anderung der Kopfzeilen % f"ur Mpacktitle. Werte: % 1 an(default), 0 aus (durch die Option "nohead"). \newcounter{iM@tempa} % Für temporären Platz. \newcounter{iM@tempb} % Für autobutton: \newcounter{iM@allchap} % In article.sty steht dort in Wahrheit section drin \newcounter{iM@allsect}[iM@allchap] %Initialisierung: \setcounter{first}{1} \setcounter{iManzMargs}{0} \setcounter{iMpack}{0} \setcounter{iMtitlepage}{0} \setcounter{iMenv}{0} \setcounter{iMdepth}{0} \setcounter{iMlang}{1} \setcounter{iMoutput}{1} \setcounter{iMenglish}{0} \setcounter{iMgerman}{1} \setcounter{iMfrench}{2} \setcounter{iMhelppage}{0} \setcounter{iMhead}{1} \setcounter{iM@allchap}{0} \setcounter{iM@allsect}{0} \setcounter{iM@inputs}{0} %------------------------------------------------------------------------ \gdef\iMhytexpagesize{% \ifbookversion\else \ifhypermode \topmargin -25mm \oddsidemargin -20mm \evensidemargin -20mm \textwidth 150mm \ifiMreallylarge \textheight 800mm \else \textheight 160mm \fi\fi\fi% } % Die \usepackage-Befehle müssen entweder vor dem ersten \DeclareOption % oder nach \ProcessOptions stehen. % Das hier dient zur automatisierten Setzung von next chapter/section-Knöpfen: \DeclareOption{autobutton}{\M@autobutton}% Definiert in Mhyper.sty \DeclareOption{nosplittoc}{\@Msplittocfalse} % "no change of layout" \DeclareOption{nclayout}{\global\iMformattrue% \global\iMlayoutfalse% \global\let\iMhytexpagesize\relax% \@Msplittocfalse } \DeclareOption{nohead} {% \setcounter{iMhead}{0} } \DeclareOption{springer}{\global\let\ps@plain\ps@empty\global\iM@springertrue} \DeclareOption{nomark} {\global\iMmarkfalse} \DeclareOption{a4}% {% \global\iMformattrue \global\printtrue \global\hytexfalse \global\hypermodefalse \global\asciifalse \global\htmlfalse % aus a4.sty \ifcase \@ptsize \textheight 53\baselineskip \or \textheight 46\baselineskip \or \textheight 42\baselineskip \fi \advance\textheight by \topskip \ifcase \@ptsize \textwidth 5.00in \marginparwidth 1.00in \if@twoside \oddsidemargin 0.55in \evensidemargin 0.75in \else \oddsidemargin 0.55in \evensidemargin 0.55in \fi \or \textwidth 5.20in \marginparwidth 1.00in \if@twoside \oddsidemargin 0.45in \evensidemargin 0.65in \else \oddsidemargin 0.45in \evensidemargin 0.45in \fi \or \textwidth 5.70in \marginparwidth 0.80in \if@twoside \oddsidemargin 0.20in \evensidemargin 0.40in \else \oddsidemargin 0.20in \evensidemargin 0.20in \fi \fi } \DeclareOption{a4wide}% {% \global\iMformattrue \global\printtrue \global\hytexfalse \global\hypermodefalse \global\asciifalse \global\htmlfalse \ifcase \@ptsize % Aus "a4wide.sty" % mods for 10 pt \oddsidemargin 0.15 in % Left margin on odd-numbered pages. \evensidemargin 0.35 in % Left margin on even-numbered pages. \marginparwidth 1 in % Width of marginal notes. \oddsidemargin 0.25 in % Note that \oddsidemargin = \evensidemargin \evensidemargin 0.25 in \marginparwidth 0.75 in \textwidth 5.875 in % Width of text line. \or % mods for 11 pt \oddsidemargin 0.1 in % Left margin on odd-numbered pages. \evensidemargin 0.15 in % Left margin on even-numbered pages. \marginparwidth 1 in % Width of marginal notes. \oddsidemargin 0.125 in % Note that \oddsidemargin = \evensidemargin \evensidemargin 0.125 in \marginparwidth 0.75 in \textwidth 6.125 in % Width of text line. \or % mods for 12 pt \oddsidemargin -10 pt % Left margin on odd-numbered pages. \evensidemargin 10 pt % Left margin on even-numbered pages. \marginparwidth 1 in % Width of marginal notes. \oddsidemargin 0 in % Note that \oddsidemargin = \evensidemargin \evensidemargin 0 in \marginparwidth 0.75 in \textwidth 6.375 in % Width of text line. \fi } \DeclareOption{hytex}{\iMhytexoutput}% \def\iMhytexoutput{% \global\iMformattrue \global\printfalse \global\hytextrue \global\hypermodetrue \global\asciifalse \global\htmlfalse \global\fullscreentrue \global\laptopfalse \global\paperwidefalse \global\paperfalse \ifiMlayout \global\setlength{\textheight}{160mm}% \global\setlength{\textwidth}{150mm}% \pagestyle{hyperheads}% \fi % \gdef\smallcube{\ensuremath{\bullet}}% } \DeclareOption{hytexsmall}% {% \global\iMformattrue \global\printfalse \global\hytextrue \global\hypermodetrue \global\asciifalse \global\htmlfalse \global\fullscreenfalse \global\laptoptrue \global\paperwidefalse \global\paperfalse \ifiMlayout \setlength{\textheight}{100mm}% \setlength{\textwidth}{150mm}% \pagestyle{hyperheads}% \fi % \gdef\smallcube{\ensuremath{\bullet}}% } \DeclareOption{ascii}% {% \AtEndOfPackage{ \def\DeclareMathAlphabet#1#2#3#4#5{}% \providecommand{\@svsechd}{}% } % \def\startpar{\special{html:

}} % \let\orig@xsect\@xsect % \let\orig@startsec\@startsection % \def\@startsection#1#2{% % \def\@xsect##1{% % \@tempskipa ##1\relax % \ifdim \@tempskipa>\z@ % \par \nobreak % \vskip \@tempskipa %%% added %% \special{html:}% %%% end of added % \@afterheading % \else % \@nobreakfalse % \global\@noskipsectrue % \everypar{% % \if@noskipsec % \global\@noskipsecfalse % {\setbox\z@\lastbox}% % \clubpenalty\@M % \begingroup \@svsechd \endgroup % \unskip %%% added %% \special{html:}% %%% end of added % \@tempskipa ##1\relax % \hskip -\@tempskipa % \else % \clubpenalty \@clubpenalty % \everypar{}% % \fi}% % \fi % \ignorespaces}% % \expandafter\def\expandafter\startpar\expandafter{\expandafter% % \def\expandafter\startpar\expandafter{\startpar}% % \special{html:}% % }% % \orig@startsec{#1}{#2}}% % % \newtoks\evpar % \evpar{} % % \everypar{\startpar\the\evpar} % \let\everypar\evpar % \let\clearpage\relax % \let\cleardoublepage\relax \global\iMformattrue \global\printfalse \global\hytexfalse \global\hypermodefalse \global\asciitrue \global\htmltrue \global\fullscreenfalse \global\laptopfalse \global\paperwidefalse \global\papertrue \global\def\smallcube{o}% \pagestyle{empty}% \global\let\ps@plain\ps@empty % \setlength{\textheight}{1000mm} % \setlength{\textwidth}{100mm}% % \renewcommand*{\rmdefault}{\ttdefault}% % \renewcommand*{\sfdefault}{\ttdefault}% % \renewcommand*{\bfdefault}{\ttdefault}% \lefthyphenmin=100000 \raggedright } \DeclareOption{html4}% {% \providecommand{\@svsechd}{}% \let\@orig@startsection\@startsection \global\def\@startsection#1#2{% \ifnum#2<4\relax% bis zur subsubsection % Ein Seitenumbruch kommt, wenn seit der letzten Ueberschrift % Text ausgegeben wurde. % Sonst macht ein Seitenumbruch wenig Sinn. \if@nobreak\else\clearpage\null\vspace*{-1.2cm}\fi\fi \csname iM@prep@#1\endcsname% \@orig@startsection{#1}{#2}% }% \global\iMformattrue \global\printfalse \global\hytexfalse \global\hypermodefalse \global\asciifalse \global\htmltrue \global\fullscreenfalse \global\laptopfalse \global\paperwidefalse \global\papertrue \global\def\smallcube{\HCode{o }}% \pagestyle{empty}% \global\let\ps@plain\ps@empty % \setlength{\textheight}{1000mm} % \setlength{\textwidth}{100mm}% % \renewcommand*{\rmdefault}{\ttdefault}% % \renewcommand*{\sfdefault}{\ttdefault}% % \renewcommand*{\bfdefault}{\ttdefault}% \lefthyphenmin=100000 \raggedright % fonts should not become too small \DeclareMathSizes{10}{10}{9}{8}% \DeclareMathSizes{11}{11}{10}{8}% \DeclareMathSizes{12}{12}{10}{8}% \DeclareMathSizes{14}{14}{12}{10}% \DeclareMathSizes{17}{17}{14}{11}% } % Die Option hytexlarge bewirkt, daß die Seitenlänge auf 1m % eingestellt wird und bei jedem Abschnittsbefehl bis zu subsubsection % ein Seitenumbruch stattfindet. % Außerdem wird der Seitenstil plain umdefiniert und der Abstand % ueber einer Kapitelueberschrift wird verkleinert. \DeclareOption{hytexlarge}{% \global\iMformattrue \global\@twosidefalse \global\printfalse \global\hytextrue \global\asciifalse \global\htmlfalse \global\fullscreenfalse \global\laptopfalse \global\paperwidefalse \global\paperfalse \global\iMreallylargetrue \global\hypermodetrue \global\textheight 800mm\relax \global\setlength{\textwidth}{150mm}% \global\setlength{\paperheight}{1000mm}% \global\setlength{\paperwidth}{160mm}% \special{papersize=\the\paperwidth,\the\paperheight}% % \global\setlength{\@fptop}{\z@}% % \global\setlength{\@dblfptop}{\z@}% \global\let\cleardoublepage\clearpage % \gdef\smallcube{\ensuremath{\bullet}}% \pagestyle{hyperheads}% % \iM@layout must be called prior to \iM@prepare@largepages \ifiMlayout \iM@layout \global\let\iM@layout\relax \fi % Aus Mhyper.sty: \iM@prepare@largepages }% %% pagestyles \def\ps@helppage{% \def\@oddfoot{}\def\@evenfoot{}% \def\@evenhead{\hfil {\large\rightmark\rlap{\hskip\bigskipamount\thepage}}}% \let\@oddhead\@evenhead } \def\ps@helppagefirst{% \def\@oddfoot{}\def\@evenfoot{}% \def\@evenhead{\hfil {\large\rlap{\hskip\bigskipamount\thepage}}}% \let\@oddhead\@evenhead } \def\ps@hyperheads{ \def\@oddfoot{}\def\@evenfoot{}% \def\@evenhead{\hfil {\large\rightmark\rlap{\hskip\bigskipamount\thepage}}}% \let\@oddhead\@evenhead } \def\ps@mymuheadings{\let\@mkboth\@gobbletwo \def\@oddfoot{}\def\@evenfoot{}% No feet. \def\@evenhead{\rmfamily \thepage \hfil {\leftmark}}% Left heading. \def\@oddhead{{\rightmark} \hfil \rmfamily\thepage}% Right heading. \ifiM@springer% \def\chaptermark##1{\markboth{{\small\rm ##1}}{}}% \def\sectionmark##1{\markright{{\small\rm ##1}}}% \else% \def\chaptermark##1{\markboth {{\scshape ##1}}{}}% % Stichwort Kapitel erscheint nicht im Kopf \def\sectionmark##1{\markright {{\scshape ##1}}}% \fi}% %Definition f"ur Kopfzeilen: \gdef\iMmyline{\hbox to\hsize\relax} \gdef\iMmyheadlineodd#1{\vbox {\hrule \iMmyline{\strut {\small\sffamily #1}} \hrule}} \gdef\iMmyheadlineeven#1{\vbox {\hrule \iMmyline{\strut {\small\sffamily #1}} \hrule}} \headheight 16pt \ifhypermode \def\ps@Mlibheadings{\let\@mkboth\@gobbletwo \def\@oddhead{\iMmyheadlineodd{\rlap{\rightmark}\hfill\textrm{\thepage}}} \def\@oddfoot{} \def\@evenhead{\@oddhead} \def\@evenfoot{\@oddfoot} \def\sectionmark##1{} \def\subsectionmark##1{}} \else \def\ps@Mlibheadings{\let\@mkboth\@gobbletwo \def\@oddhead{\iMmyheadlineodd\rightmark\hfill} \def\@oddfoot{\hfill \textrm{\thepage}\hfill} \def\@evenhead{\iMmyheadlineeven\rightmark\hfill} \def\@evenfoot{\hfill \textrm{\thepage}\hfill} \def\sectionmark##1{} \def\subsectionmark##1{}} \fi %% and process the options \iMformatfalse \ProcessOptions \relax \ifiMformat\else\iMhytexoutput\fi % Default/Fallback \def\iMhytexoutput{} \ifiMlayout\iM@layout\fi \ifhtml \RequirePackage[Mhelp-tex4ht,html4,hyperref,html]{tex4ht} \RequirePackage[extension=html,hypertex]{hyperref}% \newtoks\M@csscollect \M@csscollect{}% \newcommand*{\M@flushcss}{% \the\M@csscollect \M@csscollect{}% } \bgroup \lccode`\@=`\# \lowercase{\egroup \AtBeginDocument{% \renewcommand*{\toprule}[1][1pt]{% \global\iM@appendtok\M@csscollect+=\Css{tr@TBL-\TableNo-1- td{border-top:#1 solid}}\iM@appendtok% \aftergroup\M@flushcss } \renewcommand*{\bottomrule}[1][1pt]{% \global\iM@appendtok\M@csscollect+=\Css{tr@TBL-\TableNo-\HRow- td{border-bottom:#1 solid}}\iM@appendtok% \aftergroup\M@flushcss } \renewcommand*{\midrule}[1][0.5pt]{% \global\iM@appendtok\M@csscollect+=\Css{tr@TBL-\TableNo-\HRow- td{border-bottom:#1 solid}}\iM@appendtok% \aftergroup\M@flushcss } } } \else \ifpdf \RequirePackage{hyperref}% \pdfstringdefDisableCommands{\def\Mex#1{#1}\def\Mup#1{#1}} \else \RequirePackage[extension=mdvi,hypertex]{hyperref}% \fi \fi \@ifundefined{chapter}{% nicht book.cls \usepackage{Mreprt}% }{%book.cls \usepackage{Mbook}% } %----------------------- externe Counter -------------------------------- \newcounter{norule} % Flag zur Unterdrueckung einer Linie %--------------- Counter zum Merken der env-Einstellungen --------------- \newcounter{envMargs} \newcounter{envMmetas} \newcounter{envMdmath} \newcounter{envMmath} \newcounter{envMmethod} \newcounter{envMseealso} \newcounter{envMoverloading} \newcounter{envMsyntax} \newcounter{envMsuperdomain} \newcounter{envMcategories} \newcounter{envMaxioms} %------------------------------------------------------------------------ %-- Counter fuer Zeilenwechsel ((Nicht) erstes Makro in der Umgebung?) -- \newcounter{firstMsyntax} %------------------------------------------------------------------------ %------ Counter f"ur die Umgebungen zur Beispielausgabe (Mvin...) ------- \newcounter{iMexcounter} % Initialisierung: \setcounter{iMexcounter}{0} %--------------- Interne Makros ----------------------------------------- \def\shouldbe@samepage{% \interlinepenalty10000% \postdisplaypenalty500% \interdisplaylinepenalty9000% \@beginparpenalty\@M% \@endparpenalty\@M% \@itempenalty600% \@secpenalty250% \interfootnotelinepenalty1000% } \def\iMleer{}% % Mehrfach benoetigte Vergleichsvariable % zum Pruefen auf leere Eingabe. \def\iM@filename{\jobname}% Wird im Makro \Minput umdefiniert \def\iMspace{ } \let\Mpackname\@empty \let\Mdirname\@empty \let\Mprefix\@empty \def\iMpacknode{\Mprefix} % Dummydefinition \newsavebox{\iMupwarningcontents} % Wird nur fuer das \sbox{\iMupwarningcontents}{% % "\Mwarning-Makro" benoetigt. \unitlength1.0mm \begin{picture}(10,10) \thicklines \put(0,0){\line(1,0){10}} \put(0,0){\line(1,2){5}} \put(10,0){\line(-1,2){5}} \put(0,-1){\makebox(10,10){\LARGE !}} \end{picture} } \DeclareRobustCommand{\iMtt}[1] % Makro f"ur Typewriting im Mathe- UND Textmodus {% \ifmmode% \mathtt{#1}% \else% \texttt{\frenchspacing{}#1}% \fi% } \newcommand*{\iMversioncheck}% % Falls als viertes Argument eine Version % angegeben wurde,und die % Versionsnummernausgabe eingestellt % ist, so wird diese % unter der Helpseitenueberschrift % ausgegeben. % Ansonsten erscheint eine Warnung. {\ifx\iMversion\iMleer% \ifnum\value{iMlang}=\value{iMgerman}% \\[-2.5mm] \fbox{\large\bfseries\sc% ACHTUNG: Diese Helpseite ist nicht mehr aktuell}\\% \else% \fbox{\large\bfseries\sc% WARNING: This Helppage isn't up-to-date}\\% \fi\vspace*{-5mm}% \else% \ifnum\value{iMoutput}=1 {\footnotesize V\iMversion ~}% \fi% %\ifx\iMauthor\iMleer% % Falls als drittes Argument ein Autor % angegeben wurde, so wird dieser % ausgegeben. % \else {\footnotesize \iMauthor}% %\fi% \fi} \newcommand*{\iMfileopen} {\ifnum\value{iMhelppage}=1 \Mwrite{mltoc}{\jobname.mltoc} \ifnum\value{iMpack}=1 \vspace{.5cm} \ifprint \hrule \nopagebreak[4] \vspace{.5cm} \fi \fi \else \ifprint \ifnum\value{norule}=0 \hrule \nopagebreak[4] \vspace{.5cm} \fi \setcounter{norule}{0} \fi \fi} \newcommand*{\iMwriteout}% Benutzt die globalen Variablen % \iMnod, \iMobject, \iMdescription {{\def\_{\noexpand\_}% \Mwrite{mltoc}{\iMnod}% \Mwrite{mtoc}{\string\tocMhelppage{\iMnod}}% {\iM@tok=\expandafter{\iMobject}% \Mwrite{mltoc}{\the\iM@tok}% \Mwrite{mtoc}{{\the\iM@tok}}% }% {\iM@tok=\expandafter{\iMdescription}% \Mwrite{mltoc}{\the\iM@tok}% \Mwrite{mtoc}{{\the\iM@tok}{\thepage}{\iMidx@entry}}% }% }} \providecommand*{\M@new@all@parts}{} \newcommand*{\Mpart}[1]{% \clearpage \Mwrite{mtoc}{\string\Msection{#1}}% \gdef\M@cur@part{#1}% \xdef\M@new@all@parts{\M@new@all@parts\string\do{#1}}% } \AtEndDocument{\immediate\write\@auxout{\string\gdef\string\M@all@parts{\M@new@all@parts}}} \newcommand*{\tocentry}[3]{% \begingroup\expandafter\expandafter\expandafter\endgroup \expandafter\ifx\csname l@#2\endcsname\relax \@dottedtocline{1}{0pt}{1em}{#1}{#3}% \else \csname l@#2\endcsname{#1}{#3}% \fi } \newcommand*{\tocMhelppage}[5]{{% \tocentry{{\iM@foreach{#2}{,}{\Mup[#5]}{, % \hskip\z@ plus0.001fil\penalty10\hskip\z@ plus-0.001fil\relax \ignorespaces}}~~---\ \ #3}{helppage}{#4}% }} \newcommand*{\Mprintconts}[1][\jobname]{{% \parindent\z@\relax \parskip.5\baselineskip\relax \catcode`\%=12\relax \renewcommand*{\numberline}[1]{% \setbox0=\hbox{##1\ }% \@tempdima=0pt% \loop \advance\@tempdima by 1em\relax \ifdim\@tempdima<\wd0 \repeat \wd0=\@tempdima \box0}% \raggedright \ifhtml\tableofcontents{}\fi \makeatletter \catcode`\^=7 % \InputIfFileExists{#1.mtoc}{}{}\relax }} \let\M@addcont=\addcontentsline \renewcommand*{\addcontentsline}[3]{{% \def\temp@a{toc}% \def\temp@b{#1}% \ifx\temp@a\temp@b\iM@protected@Mwrite{mtoc}{\string\tocentry{\string\Mhref[\iMidx@entry]{#3}}{#2}{\thepage}}\fi \M@addcont{#1}{#2}{#3}% }} \def\expanded#1{% \edef\M@expanded{\noexpand#1}% \M@expanded } % % Makro \iMwritehelp % Dieses dient zum Eintragen von Begriffen in die Help-Index Dateien % \newcommand*{\iMwritehelp}[2] % Schreibt die n"otigen Informationen % in die MuPAD-Help-Index Dateien {% \if\relax#1\relax\else % Ausgabe in die Helpdatei f"ur die HyTeX % Version \expanded{\Mwrite{help}{#1\string\\#2}}% \if!\Mpackname!% {\ifx\iM@filename\@empty\else \expanded{\Mwrite{helpascii}{#1\string\\% \if!\Mdirname!\else\Mdirname/\fi\iM@filename}}\fi}% \else \if!\Mdirname!% {\ifx\iM@filename\@empty\else \expanded{\Mwrite{helpascii}{#1\string\\% \iMpacknode\iM@filename}}\fi}% \else% {\ifx\iM@filename\@empty\else \expanded{\Mwrite{helpascii}{#1\string\\% \Mdirname/\iM@filename}}\fi}% \fi \fi \fi } % \tabularx mit Seitenumbrüchen drin. % Leider können wir nicht einfach ltablex.sty laden, der kommt nicht % damit klar, dass \tabularx innerhalb einer anderen Umgebung % verwendet wird. \newif\ifTX@convertX@ \TX@convertX@true \ifhtml\else \renewcommand\TX@endtabularx{% \expandafter\TX@newcol\expandafter{\tabularxcolumn{\TX@col@width}}% \let\verb\TX@verb \def\@elt##1{\global\value{##1}\the\value{##1}\relax}% \edef\TX@ckpt{\cl@@ckpt}% \let\@elt\relax \TX@old@table=\maxdimen \TX@col@width=\TX@target \global\TX@cols=\@ne \TX@typeout@ {\@spaces Table Width\@spaces Column Width\@spaces X Columns}% % % define \endhead, etc. to be \\ so that in this part % of the process they are just rows % \let\savecaption\caption \@namedef{caption}{\\} % Not using \def, to make font-lock happy \let\saveendhead\endhead \def\endhead{\\} \let\saveendfirsthead\endfirsthead \def\endfirsthead{\\} \let\saveendfoot\endfoot \def\endfoot{\\} \let\saveendlastfoot\endlastfoot \def\endlastfoot{\\} \let\saveMmath\Mmath \def\Mmath##1##2{\ensuremath{##2}} \let\saveMdmath\Mdmath \def\Mdmath##1##2{\ensuremath{##2}} % % \ifTX@convertX@ \TX@trial{\def\NC@rewrite@X{\NC@find l}} \ifdim\wd\@tempboxa<\TX@target \TX@newcol{l} \else \TX@convertX@false \fi \fi \ifTX@convertX@ \relax \else \TX@trial{\def\NC@rewrite@X{% \global\advance\TX@cols\@ne\NC@find p{\TX@col@width}}}% \loop \TX@arith \ifTX@ \TX@trial{}% \repeat \fi {\let\@footnotetext\TX@ftntext\let\@xfootnotenext\TX@xftntext % we may as well set \LTchunksize to be \maxdimen as the whole % thing is already in memory anyway so we may as well do it in one % chunk. if it is too big for one chunk we are already dead.. \LTchunksize\maxdimen % % restore \endhead, etc. % \let\caption\savecaption \let\endhead\saveendhead \let\endfirsthead\saveendfirsthead \let\endfoot\saveendfoot \let\endlastfoot\saveendlastfoot \let\Mmath\saveMmath \let\Mdmath\saveMdmath % \expandafter\longtable \the\toks@ \endlongtable }% \global\TX@ftn\expandafter{\expandafter}\the\TX@ftn \ifnum0=`{\fi}% \expandafter\end\expandafter{\@currenvir} } \fi% \ifhtml \TX@convertX@false %---------------------------- Makros ------------------------------------ \def\@makeother#1{\catcode`#1=12\relax} %% Das Drumherum mit der Gruppe ist erst dann notwendig, wenn z.B. \_ auf _ %% gemappt werden soll. Argumente werden aber unevaluiert übergeben. %\bgroup % \@makeother\_\@makeother\$ % \def\x{ \DeclareRobustCommand*{\iM@sanitize}{% \@makeother\_% \@makeother\$% \@makeother\^% }% %}% %\expandafter\egroup\x % Makros f"ur einige Sonderzeichen \def\Mbsl{\ifmmode\backslash\else$\backslash$\fi} \newcommand*{\iMout}{\ifvmode\else\/\fi\tt} \newcommand*{\Mproofread}[3]{} \newskip\iM@presectskip \iM@presectskip=3ex \@plus 1ex \@minus .2ex\relax \ifhtml \newcommand*\Msection[1]{\HCode{

}#1\HCode{

}} \newcommand*\iM@sect@line[1]{\par\HCode{
}% \HCode{

}#1\HCode{

}} \newcommand*\iM@sect@nobreak[1]{% \HCode{

}#1\HCode{

}} \newcommand*\iM@sect@line@nobreak[1]{\par\HCode{
}% \HCode{

}#1\HCode{

}} \else \newcommand*\Msection{\@startsection{none}{10}{\z@}% {-\iM@presectskip}% {1ex \@plus .2ex}% {\normalfont\normalsize\bfseries}*} \newcommand*\iM@sect@line{\@startsection{none}{10}{\z@}% {-\iM@presectskip}% {1ex \@plus .2ex}% {\hrule\vskip\iM@presectskip% \normalfont\normalsize\bfseries}*} \newcommand*\iM@sect@nobreak{\@startsection{none}{10}{\z@}% {-\iM@presectskip}% {-1.5ex \@plus -.2ex}% {\normalfont\normalsize\bfseries}*} \newcommand*\iM@sect@line@nobreak{\@startsection{none}{10}{\z@}% {-0.5\iM@presectskip}% {-1.5ex \@plus -.2ex}% {\hrule\vskip\iM@presectskip% \normalfont\normalsize\bfseries}*} \fi \gdef\mupad{\textsf{MuPAD}} \gdef\xmupad{\textsf{XMuPAD}} %??% \gdef\hytex{\textsf{Hy{\TeX}}} \gdef\scilab{\textsf{Scilab}} % Das Makro \Maddtoc sorgt daf"ur, da\3 f"ur jede Helpseite ( Environment % Mhelppage ) ein Eintrag in das Inhaltsverzeichnis durchgef"uhrt wird. % \Mnoaddtoc stellt dies ab. % % Standardeinstellung ist \Mnoaddtoc % % \Msysfun sorgt daf"ur, da\3 f"ur die Helpseite ( Environment % Mhelppage ) ein Indexeintrag als subsection unter system functions % durchgef"uhrt wird. Hierbei enth"alt \iMhzwei das zweite Argument % aus der Mhelpumgebung. % % \Menvvar sorgt daf"ur, da\3 f"ur die Helpseite ( Environment % Mhelppage ) ein Indexeintrag als subsection unter environment variables % durchgef"uhrt wird. Hierbei enth"alt \iMhzwei das zweite Argument % aus der Mhelpumgebung. % % \Mbook wird benutzt wenn Mhelp Style und Handbuch zusammenarbeiten sollen % - HyTeX Seitenlayout Initialisierung findet nicht statt. % % \Mclearbuttons l"oscht die Buttons beim HyPage Previewer. % % \Mbookbuttons Setzt die HyTeX Buttons welche auf jeder Seite % vorhanden seien sollten. % % \Msynopsison sorgt daf"ur, da\3 der Inhalt der Msynopsis Umgebung ausgegeben % wird. % \Msynopsisoff sorgt daf"ur, da\3 der Inhalt der Msynopsis Umgebung % nicht ausgegeben wird. % % Standardeinstellung ist \Msynopsison % % Autor: tom 03.04.96 % % \def\iMsysfun{system function} \def\iMenvvar{environment variable} %bij% neuer Index-Befehl \def\Msysfun{\MIndex[\iMsysfun]{\iMhzwei}} \def\Menvvar{\MIndex[\iMenvvar]{\iMhzwei}} %bij% - Anfang ------------------------- % xxx Das hier auch in Mhyper.sty? % Indexeintr"age % Ausgabeoption hytex: alle Index-Befehle mit HyTeX-Unterst"utzung % (sonst normal) % \index normaler Index-Eintrag % \Index hervorgehobener Index-Eintrag % \Mindex normaler Index-Eintrag eines MuPAD-Objektes % \MIndex hervorgehobener Index-Eintrag eines MuPAD-Objektes % 06.08.97 - bij - \def\innnbf#1#2{\hyperlink{#1}{\bf#2}} \def\ibf#1{{\bf#1}} \def\makeindex{% \def\iindex{\@bsphack\begingroup% \@sanitize% \@wrindex}% \def\iIndex{\@bsphack\begingroup% \@sanitize% \@wrIndex}% \immediate\typeout{Writing index file \jobname.idx via \jobname.col}% \let\makeindex\@empty% }% \@onlypreamble\makeindex% \def\@wrindex#1{% \iM@protected@Mwrite{idx}{\string\indexentry{#1}{\thepage}}% \endgroup% \@esphack}% \def\iindex{\@bsphack\begingroup\@sanitize\@index} \ifhypermode% \renewcommand*{\index}[1]{\iindex{#1|hyperlink{\iMidx@entry}}}% \newcommand*{\Index}[1]{\iindex{#1|innnbf{\iMidx@entry}}}% \else% \renewcommand*{\index}[1]{\iindex{#1}}% \newcommand*{\Index}[1]{\iindex{#1|ibf}}% \fi% % \newcommand*{\Mindex}[2][]% {{% \iMescapeChar{_}{\noexpand\_}{#1}% \let\@tempa\iMescaped% \def\${\noexpand\$}% \def\iMtt{\noexpand\iMtt}% \iMescapeChar{_}{\noexpand\_}{#2}% \ifx\@tempa\@empty% \edef\@tempb{\iMescaped{}@\noexpand\iMtt{\iMescaped}}% \else% \edef\@tempb{\@tempa!\iMescaped{}@\noexpand\iMtt{\iMescaped}}% \fi% \ifhypermode% \expandafter\iindex\expandafter{\@tempb|hyperlink{\iMidx@entry}}% \else% \expandafter\iindex\expandafter{\@tempb}% \fi% }}% % \newcommand*{\MIndex}[2][] {{% \iMescapeChar{_}{\noexpand\_}{#1}% \let\@tempa\iMescaped% \def\${\noexpand\$}% \def\iMtt{\noexpand\iMtt}% \iMescapeChar{_}{\noexpand\_}{#2}% \ifx\@tempa\@empty\edef\@tempb{\iMescaped{}@\protect\iMtt{\iMescaped}}% \else\edef\@tempb{\@tempa!\iMescaped{}@\protect\iMtt{\iMescaped}}% \fi% \ifhypermode% \expandafter\iindex\expandafter{\@tempb|innnbf{\iMidx@entry}}% \else% \expandafter\iindex\expandafter{\@tempb|ibf}% \fi% }}% % % Referenzen % \label Markierung im Text f"ur LaTeX- u n d HyTeX-Referenzen % Nur lokal für die Datei. \AtBeginDocument{% \let\globallabel=\label% \def\label#1{% \Mnode{#1}% \globallabel{#1}% \Mnode{\iM@docname @\iM@filename @#1}% \globallabel{\iM@docname @\iM@filename @#1}% } % \let\globalref=\ref% \def\ref#1{\@ifundefined{r@\iM@docname @\iM@filename @#1}% {\globalref{#1}}{\globalref{\iM@docname @\iM@filename @#1}}}% % \let\globalpageref=\pageref% \def\pageref#1{\globalpageref{\iM@docname @\iM@filename @#1}}% } \def\MTutoriumSetup{% %% \AtBeginDocument{% %% \def\label##1{% %% \Mnode{##1}% %% \Mnode{\iM@docname @\iM@filename @##1}% %% \globallabel{\iM@docname @\iM@filename @##1}% %% }} } % In der .aux-Datei können Label mit %-Zeichen etc. vorkommen. \AtBeginDocument{% \let\M@newlabel=\@newl@bel% \def\M@@newlabel#1#2#3{\egroup\M@newlabel{#1}{#2}{#3}}% \def\@newl@bel{\bgroup\iM@sanitize\@makeother{\%}\M@@newlabel}% \let\M@testdef=\@testdef% \def\M@@testdef#1#2#3{\egroup\M@testdef{#1}{#2}{#3}}% \def\@testdef{\bgroup\iM@sanitize\@makeother{\%}\M@@testdef}% } % \edef\iM@docname{\jobname} \def\Mdocname#1{\def\iM@docname{#1}} % global label: \iM@globallabel{label name} sets a global label % inside the current document as defined by \Mdocname resp. \iM@docname \def\iM@globallabel#1{% \Mnode{#1}% \globallabel{#1}% \Mnode{\iM@docname @#1}% \@bsphack\iM@protected@Mwrite{exl}{\string\iMdefgloballabel% {\iM@docname}{#1}{\iM@therealpage}{\thepage}{\iMidx@entry}{\@currentlabel}}% } % For the Method descriptions, possibly imported from other files. \newcommand*{\iMMethod}{\bgroup\iM@sanitize\iM@Method} \newcommand*{\iM@Method}[2]{\egroup% \iM@@Method{#1}{#2}} \newcommand*{\iM@@Method}[3]{% \expandafter\gdef\csname iM@Method@descr@#1@#2\endcsname{#3}} \newcommand*{\iM@useMethod}[2]{% \Mex{#2} & \@ifundefined{iM@Method@descr@#1@#2}{% \ifcase\value{iMlang}% no description yet (package #1) \or% noch nicht beschrieben (Paket #1) \or% pas encore documenté (bibliothèque #1) \fi% }{\csname iM@Method@descr@#1@#2\endcsname% \def\temp@a{#1}% \edef\temp@b{\if!\Mprefix!\else\Mprefix::\fi% \iM@func}% % xxx Das Sprungziel ist noch falsch. \ifx\temp@a\temp@b\else\space \Mhref[#1]{(inherited)}\fi}\\} %% % input dependencies, but only .exl files %% \def\iM@readthose#1: #2\iM@readthose{% %% \def\iM@readifexl##1{\def\temp@a{##1}% %% \ifx\@empty\temp@a\else% %% \filename@parse{\temp@a}% %% \def\temp@b{exl}% %% \ifx\temp@b\filename@ext% %% \InputIfFileExists{##1}{}{}% %% \fi% %% \fi}% %% \iM@foreach{#2}{ }{\iM@readifexl}{\ignorespaces}\relax% %% } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% \AtBeginDocument{% %% \InputIfFileExists{\jobname.exl}{}{}% %% % \IfFileExists{\jobname.Mde}{% %% % \openin\LTOCIN=\jobname.Mde\relax %% % \read\LTOCIN to \iM@Mdepline% %% % \closein\LTOCIN% %% % \expandafter\iM@readthose\iM@Mdepline\iM@readthose% %% % }{% %% % \PackageWarning{Mhelp}{\jobname.Mde non-existent. External references % %% % won't work.}% %% % } %% } % rp@@