TeX, LaTeX, Metafont

Home

Dynamische Systeme: DynManif

vltx - eine TeX-Shell

Die TeX-Shell xlatex ist nun schon ein wenig in die Jahre gekommen - und xtem ist mir ein wenig zu umfangreich. Daher habe ich für den Hausgebrauch eine eigene, erweiterbare TeX-Shell - angelehnt an xlatex - in Tcl/Tk entworfen: vltx.

screenshot

Vielleicht suchen Sie ja auch solch ein Programm?


Gesammelte Makros

Es ist zwar noch ein weiter Weg zum "TeXpert", aber gemäß der Hierarchy of TeXnical Accomplishments habe ich zumindest den Status des "Hackers" erreicht, wie diese kleine Kollektion nützlicher LaTeX-Makros hoffentlich zeigt. ;-)

Hinweis: Makros, die das Zeichen "@" enthalten, funktionieren nur, wenn dieses als normales Zeichen interpretiert wird. Dies gelingt durch den Befehl "\catcode`\@=11" bzw. "\makeatletter". Hinterher das Zurückschalten mittels "\catcode`\@=12" bzw. "\makeatother" nicht vergessen!


Kommentar-Umgebung

Sämtlicher Text, der zwischen "\begin{comment}" und "\end{comment}" eingeschlossen ist, wird ignoriert - sofern er nicht so lang ist, daß er den Arbeitsspeicher von TeX sprengt. Ein Schachteln der Umgebungen ist nicht möglich.

\begingroup
  \catcode`|=0\catcode`[=1\catcode`]=2%
  \@makeother\{\@makeother\}\@makeother\\
  |long|gdef|c@mment#1\end{comment}[|end[comment]]
|endgroup
\def\comment{\let\do\@makeother\dospecials\c@mment}
\def\endcomment{\@ignoretrue}

Einem Editor mit konfigurierbarem Syntax-Highlighting kann man sogar beibringen, diese Umgebung dann andersfarbig (so wie die normalen Kommentare) darzustellen.


Formelnummer zwischen zwei Zeilen

Durch "\midnumber\\" am Ende einer Zeile eines "eqnarray" wird die Formelnummer zwischen der aktuellen und der folgenden Zeile positioniert, falls beide den normalen Abstand - also "\baselineskip" - voneinander haben.

\def\midnumber{\global\@tempdima\baselineskip
  \global\advance\@tempdima\jot
  \nonumber\\[-0.5\@tempdima]&&\\[-1.5\@tempdima]\nonumber}


Mengensymbole für die natürlichen, reellen, rationalen und komplexen Zahlen

(Die ersten beiden Makros stammen nicht von mir.)

\def\N{{\rm I\mkern-3mu N}}
\def\R{{\rm I\mkern-3mu R}}
\def\Q{{\@QC Q}}
\def\C{{\@QC C}}
\def\@QC#1{\mathpalette{\setbox0=\hbox\bgroup$\rm}%
  {\egroup C$\egroup\rm\rlap{\kern0.4\wd0\vrule
  width 0.05\wd0 height 0.97\ht0 depth -0.01\ht0}%
  #1\bgroup}}


Mengensymbol für die ganzen Zahlen

Man kann ein Symbol für die ganzen Zahlen zwar wie oben aus zwei Buchstaben zusammenbasteln, das sieht aber nicht besonders gut aus. Stattdessen kann man aber mit Metafont ein eigenes Zeichen definieren. Um das Zeichen aus dem Font cmmz10.mf dann in LaTeX2e einzubinden, muß man nur noch folgende Befehle - vor "\begin{document}" - in sein Dokument aufnehmen:

\DeclareFontFamily{U}{cmmz}{}
\DeclareFontShape{U}{cmmz}{m}{n}{<-8><8><9><10>%
  <10.95><12><14.4><17.28><20.74><24.88>cmmz10}{}
\DeclareSymbolFont{mz}{U}{cmmz}{m}{n}
\DeclareMathSymbol\Z{\mathord}{mz}{"5A}

Die Zeile $$\Z^\Z$$ liefert dann:

ZZ


Mengen

Wer keine Lust hat, "$\{\,x\;|\;x>0\,\}$" zu tippen, um die Menge "{ x  | x > 0 }" zu erhalten, der sollte einmal das folgende Makro probieren:

\def\set#1{\{\,\s@t#1&\,\}}
\def\s@t#1&#2&{#1\;|\;#2}

Die Befehlsfolge "$\set{x&x>0}$" liefert dann dasselbe Resultat.


Seitenstil

Dies ist ein Seitenstil, der die Seitenüberschriften durch eine Linie vom Rest der Seite trennt - er wird durch "\pagestyle{vrstyle}" aktiviert:

\def\ps@vrstyle{\let\@mkboth\markboth
  \def\@oddhead{\underline{\rule[-2pt]\z@\z@
    \hb@xt@\textwidth{\rm\rightmark\hfill\thepage}}}%
  \def\@evenhead{\underline{\rule[-2pt]\z@\z@
    \hb@xt@\textwidth{\rm\thepage\hfill\leftmark}}}%
  \def\@oddfoot{}%
  \def\@evenfoot{}%
  \def\chaptermark##1{\markboth{\@chapapp\ \thechapter. \ ##1}{}}%
  \def\sectionmark##1{\markright{\thesection. \ ##1}}%
  \def\subsectionmark##1{}}


Fußnoten

Zum Schluß noch eine Anwendung von "\expandafter": In mathematischen Texten ist es ungünstig, Fußnoten mit Zahlen oder kleinen Buchstaben durchzunumerieren, da sie leicht mit Exponenten verwechselt werden können. Will man statt dessen einige graphische Symbole verwenden, hat man das Problem, daß es meist nur so wenige davon gibt, daß sie nicht für ein ganzes Kapitel reichen. Leider läßt es sich nicht gut automatisieren, die Zählung auf jeder Seite beim ersten Symbol neu zu starten: Man kann bei einem Absatz, der über eine Seitengrenze umgebrochen wird, kaum feststellen, ob eine Fußnote noch auf der alten Seite steht (Zähler nicht zurücksetzen) oder schon auf der neuen (Zähler zurücksetzen). Manuell kann man dies mit Hilfe der folgenden Makros leicht machen: Hängt man an "\footnote", "\footnotemark" oder "\footnotetext" einen Stern an, so wird der Zähler zurückgesetzt. Die üblichen optionalen Parameter kann man dann danach anhängen.

\let\f@@tnote\footnote
\let\f@@tnotemark\footnotemark
\let\f@@tnotetext\footnotetext
\def\footnote
  {\@ifnextchar*{\c@footnote\z@\expandafter\f@@tnote\@gobble}\f@@tnote}
\def\footnotemark
  {\@ifnextchar*{\c@footnote\z@\expandafter\f@@tnotemark\@gobble}\f@@tnotemark}
\def\footnotetext
  {\@ifnextchar*{\c@footnote\@ne\expandafter\f@@tnotetext\@gobble}\f@@tnotetext}

Und das sind meine persönlichen Favoriten unter den Fußnoten:

\def\thefootnote{\ensuremath{\ifcase\c@footnote
  \or\dagger\or\ddagger\or\dagger\dagger\or\ddagger\ddagger\else\@ctrerr\fi}}


Volker Reichelt, letzte Änderung am 11. Juli 2005

Valid XHTML 1.0 Transitional