% % Mhyper.sty -- The hypertext functionality used by MuPAD documents. % % Currently, it *must* be included from Mhelp.sty. %% 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. \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: Mhyper.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)} %----------------------- Tokenregister ---------------------------------- \newtoks\iMindexentries % Hier wird gespeichert, fuer welche Eintraege \iMindexentries{} % in der Kopfzeile Links angelegt werden. % xxx in Mhelp.sty sind einige Referenzen hierauf. \newtoks\iM@bsplines % Hier werden die Beispieleingaben gesammelt, \iM@bsplines{} % um sie am Ende des Beispiels in ein \special % schreiben zu koennen. % xxx in Mhelp.sty sind einige Referenzen hierauf. \newtoks\iM@bsp@par \iM@bsp@par{} \newtoks\iM@menuhrefs % Hier werden die Mmenuhref{}s gesammelt, \iM@menuhrefs{} % Um mit autobutton nicht zu kollidieren. \newcommand*{\iM@prepare@largepages}{% % Hier wird die LaTeX-Routine, die für das % Anhängen von Fußnoten zuständig ist, ein % wenig aufgebohrt, so daß unten die % \Mbottomline drankommt. Außerdem stimmt so % endlich auch die Angabe der Seitenlänge. \newcounter{iM@floatsthispage}[page] \newdimen\iM@pageheight \def\@makecol{% \ifvoid\footins \setbox\@outputbox\box\@cclv \else \setbox\@outputbox \vbox{% \boxmaxdepth\@maxdepth \unvbox\@cclv \vskip\skip\footins \color@begingroup \normalcolor\footnoterule \unvbox\footins \color@endgroup} \fi % \xdef\@freelist{\@freelist\@midlist}% \global\let\@midlist\@empty \@combinefloats \iMtmplength=\dp\@outputbox\relax \advance\iMtmplength\ht\@outputbox% \relax % For the first page of an index: \ifx\@dbltoplist\@empty \else \def\@elt####1{% \global\advance\iMtmplength\ht####1\relax \global\advance\iMtmplength\dp####1\relax}% \@dbltoplist \let\@elt\relax \global\advance\iMtmplength by\dbltextfloatsep \fi % \ifdim\iMtmplength>\iM@pageheight% \global\iM@pageheight=\iMtmplength% \fi% \ifvbox\@kludgeins \@makespecialcolbox \else \setbox\@outputbox \vbox to\@colht{% \@texttop \dimen@\dp\@outputbox \unvbox\@outputbox \vskip -\dimen@\@textbottom }% \fi \global\maxdepth\@maxdepth } % \newpage enthält ein für diese Zwecke fatales \vfil, hier die % Variante ohne diesen Befehl: \def\newpage{% \if@noskipsec\ifx\@nodocument\relax% \leavevmode\global\@noskipsecfalse% \fi\fi% \if@inlabel% \leavevmode% \global\@inlabelfalse% \fi% \if@nobreak% \@nobreakfalse% \everypar{}% \fi% \penalty-\@M% }% % Und nun noch das pageheight-\special ausgeben. % Um das Ende einer Hilfeseite erkennen zu können, % brauchen wir einen speziellen penalty-Wert. % Um den abfangen zu können, kann nicht mehr % \EveryShipout verwendet werden, weil die LaTeX- % \output-Routine dann schon die komplette Seite % verworfen hätte. \gdef\M@output{% \ifnum\outputpenalty=-\@Mi\else \setbox\@tempboxa=\vbox{}% \ifnum\outputpenalty=-10037\relax \outputpenalty=-\@M\relax \else \ifM@helppage \setbox\@tempboxa=\vbox{\hbox to \linewidth{\hfill$\rightarrow$}}% % \advance\iM@pageheight by 2em\relax \fi \fi \setbox255=\vbox{% \vbox to \pagetotal{\unvbox255}\relax\unvbox\@tempboxa}% \fi} \let\M@orig@outputpage=\@outputpage \def\@outputpage{% % \iM@pageheight wird oben in \@makecol gesetzt. \advance\iM@pageheight by 60pt\relax \setbox\@outputbox=\vbox{\special{|pageheight|\the\iM@pageheight|}% \unvbox\@outputbox\vfill}\relax \global\iM@pageheight=0pt% \M@orig@outputpage} \expandafter\output\expandafter=\expandafter{\expandafter\M@output\the\output}% \gdef\iM@helppage@ueberschrift{}% % Kapitelanfänge werden nicht unten numeriert \global\let\ps@plain\ps@empty \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}% }% \@ifundefined{chapter}{% nicht book.cls }{% book.cls \let\@orig@chapter\chapter \gdef\chapter{% \if@Msplittoc \ifnum\c@chapter>0\addtocontents{toc}{\protect\newpage}\fi% \fi \Mnewcontext \@orig@chapter% } } \let\@orig@sect\@sect \gdef\@sect##1##2##3##4##5##6[##7]##8{% \ifnum##2<7\relax {% \iM@flat@Mwrite{mantoc}{##2\space ##8\space \string\\\space% \if!\Mpackname!\else\Mpackname??\fi\iMidx@entry}% } \fi \Mnewcontext \@orig@sect{##1}{##2}{##3}{##4}{##5}{##6}[{##7}]{##8}} \let\@orig@appendix\appendix \gdef\appendix{% \addtocontents{toc}{\protect\newpage}% \global\let\chapter\@orig@chapter% \@orig@appendix% } \let\iM@orig@makechapterhead\@makechapterhead% \gdef\@makechapterhead{\vspace*{-2.5cm}\iM@prep@chapter\iM@orig@makechapterhead}% \let\iM@orig@makeschapterhead\@makeschapterhead% \gdef\@makeschapterhead{\iM@prep@chapter\iM@orig@makeschapterhead}% \let\iM@orig@figure\figure \let\iM@orig@endfigure\endfigure \global\stepcounter{iM@floatsthispage}% \global\renewenvironment{figure}[1][H]{% \ifnum\value{iM@floatsthispage}>\value{totalnumber}\newpage\fi% \iM@orig@figure[H]}% {\iM@orig@endfigure}% \global\setcounter{errorcontextlines}{255}% \global\setcounter{topnumber}{256}% \global\setcounter{bottomnumber}{256}% \global\setcounter{totalnumber}{3}% \global\renewcommand\topfraction{0.99999}% \global\renewcommand\bottomfraction{0.9999}% \global\renewcommand\textfraction{0.00001}% \global\renewcommand\floatpagefraction{0.000001}% } %------------------------------------------------------------------------ %--------------- Die Hy\TeX-Makros -------------------------------------- % xxx Werden noch an \Mwrite angepasst \def\TRENNCHR{|} \def\@hywarning#1{% \ifhytexwarnings\typeout{>>HyTeX Warning: #1. (Input line \the\inputlineno)}\fi} % % The next two commands have their equivalents in |\pagebreak| and |\clearpage| % with the difference that they only act if hypermode is true % \def\hyperpagebreak{\ifhypermode\newpage\fi} \def\hyperclearpage{\ifhypermode\clearpage\fi} % % \iM@nodepageref sets button with reference to node in toprow of previewer % syntax : \iM@nodepageref {} {