%format latexg

\documentstyle[11pt,din_a4,german]{article}

\parindent=0pt
\parskip=\baselineskip
\frenchspacing
\pagestyle{empty}

% Ein paar Makros f�r die Bequemlichkeit...
\def\ttot{{\tt TeX2TXT}}
\def\com#1{$\backslash${\tt #1}}

\title{
  \TeX\ to TXT \\[12pt]
  \LaTeX\ nach ASCII Konverter
}
\author{Roman Hodek}

\begin{document}

\maketitle

\begin{abstract}

\ttot\ ist ein {\em einfacher} Konverter, der \LaTeX-Texte in normale
ASCII-Texte �bersetzt. Ich habe ihn "`f�r den Hausgebrauch"' geschrieben, weil
ich es leid war, meine Programmanleitungen immer zweimal zu schreiben: einmal
als \TeX-Text und einmal als Ascii-Text f�r die Nicht-\TeX niker. Er hat aber
besser funktioniert, als ich es erwartet habe, und so habe ich mich
entschlossen, ihn zu ver�ffentlichen. Seit damals hat sich \ttot\ st�rmisch
entwickelt und bietet inzwischen einen recht gro�en Funktionsumfang.

\ttot\ kann aber nicht nur dazu verwendet werden, um \TeX-Texte f�r Ascii zu
recyclen. Es ist genausogut m�glich, \ttot\ als Textformatierer zu benutzen,
der dann eben einen �hnlichen Funktionsumfang wie \LaTeX\ bietet und in dessen
Bedienung man schon eingearbeitet ist.  

\end{abstract}

\clearpage
\tableofcontents
\clearpage

\section{Grunds�tzliches}
\label{vorwort}

Wie schon erw�hnt, habe ich \ttot\ urspr�nglich nur f�r meinen eigenen
Gebrauch und auch recht schnell geschrieben. Daraus resultieren einige
Einschr�nkungen:

\begin{itemize}

\item
\ttot\ ist ein Musterbeispiel der "`quick and dirty"'-Programmierung. Ich
habe oft auf eine saubere dynamische Speicherverwaltung verzichtet und die Daten
werden in Feldern fester Gr��e abgelegt. Daher kann es durchaus vorkommen, da�
\ttot\ mal Bomben wirft, weil eben eine solche L�nge �berschritten
wurde. Immerhin habe ich \ttot\ einen Stack von 24k mitgegeben, damit es nicht
schon an kleinen verschachtelten Sachen scheitert.

\item
Auch mit Fehlermeldungen wird recht sparsam umgegangen. \ttot\ folgt den
Prinzipien GIGO und GICO. (Garbage in $\rightarrow$ Garbage out bzw. Garbage in
$\rightarrow$ Crash out).

\item
Es befinden sich bestimmt noch Horden von Tipp- und logischen Fehlern in \ttot,
da es auch nicht sonderlich ausf�hrlich getestet wurde.

\item
Die Zeilennummern, die \ttot\ bei Fehlermeldungen ausgibt, sind nicht unbedingt
korrekt. Sie geben aber immerhin einen Anhaltspunkt, wo ungef�hr der Fehler liegen
k�nnte.

\end{itemize}

Daher gilt: NO WARRANTY! Die Benutzung ist auf eigene Gefahr, die Ergebnisse
auch. Ich habe nichts gegen Bugreports und Anregungen, allerdings werden diese
nur eingebaut, wenn ich gerade Zeit und Lust dazu habe. Meine E-Mail-Adresse:
\begin{quote}
  Roman Hodek @ N (Mausnetz) \\
  cdb0@faui60.informatik.uni-erlangen.de \\
  rnhodek@cip.informatik.uni-erlangen.de
\end{quote}
wobei mir das Mausnetz am liebsten ist.


\section{Vorwort zu Version 1.2 und sp�ter}

Urspr�nglich hatte ich eigentlich vor, \ttot\ nur f�r meinen pers�nlichen Bedarf
zu erweitern. Ver�ffentlicht habe ich es, weil ich dachte, da� es eben auch
anderen Leuten n�tzlich sein k�nnte. Wegen der �beraus zahlreichen,
konstruktiven und positiven R�ckmeldungen habe ich meinen Standpunkt etwas
ge�ndert: \ttot\ wird auch in Zukunft erweitert werden (auch nach
Anwenderw�nschen), Bugfixes erfolgen nach M�glichkeit, jenachdem wie ich Zeit
daf�r finde. Die Updates werden �ber das Mausnetz ---~ausgehend von @N~---
verbreitet. 

Da \ttot\ in seinem Umfang seit Version 1.0 doch recht betr�chtlich gewachsen ist
und damit auch die aufgewendete Entwicklungszeit, habe ich mich f�r folgenden
Copyrightstatus entschieden: \ttot\ bleibt weiterhin Freeware, vor allem, weil es
wenig ausgetestet ist und wahrscheinlich noch viele Bugs enth�lt. Ich will es
deswegen nicht zu Shareware machen. Andererseits steckt inzwischen doch recht
viel Zeitaufwand dahinter. Deswegen {\bf darf} man mir eine {\bf freiwillige}
Honorierung ($\ge$ 10,--DM) zukommen lassen, wenn man \ttot\ n�tzlich findet
und/oder h�ufig benutzt. Um es nochmals zu betonen: Ein Beitrag ist nicht
Pflicht wie bei Shareware und auch nicht in seiner H�he festgelegt. Er soll nur
eine kleine Belohnung f�r den Autor sein, wenn einem sein Gewissen dazu r�t.

Meine Bankverbindung:
\begin{quote}
  Roman Hodek \\
  Sparkasse Erlangen, BLZ 763 500 00 \\
  Konto 28 117 669 \\
\end{quote}
oder als Schein oder V-Scheck zusammen mit einem schriftlichen Feedback:
\begin{quote}
  Roman Hodek \\
  Baiersdorfer Str. 7 \\
  8521 M�hrendorf
\end{quote}
  

\section{Wie \ttot\ arbeitet}
\label{allgemeines}

\ttot\ bildet die Formatierungen von \LaTeX\ als Ascii-Text nach. Das dies
nicht immer so geht, ist wohl offensichtlich. Im Allgemeinen geht \ttot\ so vor:

Normaler Text wird genauso ausgegeben, wie er im \TeX-Text steht, nur halt mit
Blocksatz. Absatzende ist wie �blich eine Leerzeile, mehrere aufeinanderfolgende
Whitespace-Zeichen werden zu einem zusammengefa�t. Um den Randausgleich nicht
�berzustrapazieren, werden die \TeX-Vortrenner beachtet und es ist ein {\em
einfacher} Trennalgorithmus eingebaut. Wenn zum Randausgleich Spaces eingef�gt
werden m�ssen, so erfolgt dies (wegen der Optik) bevorzugt hinter Punkten,
Kommas, Strichpunkten und Doppelpunkten. Genaueres zur Trennung finden Sie in Kapitel
\ref{trennung}.

\ttot\ kennt bestimmte \TeX-Befehle und Environments (siehe Kapitel \ref{erkanntes}).
Alles, was \ttot\ nicht kennt, wird ignoriert. Dabei erscheint
eine Warnung auf dem Bildschirm, damit man besser den �berblick beh�lt, was
ignoriert wurde und ob es vielleicht doch wichtig war. Nach einem unbekannten
Kommando wird versucht, auch seine Argumente zu �berlesen. Da aber \ttot\ nicht
wei�, wieviel Argumente folgen sollten, wird so vorgegangen: Wenn dem Befehl direkt
und ohne Leerzeichen eine eckige oder geschweifte Klammer folgt, so nimmt \ttot\ an,
da� es sich hierbei um ein Argument handelt und es werden alle folgenden Texte in
`[' (nur einmal) und `\{' (beliebig oft) �berlesen. Ansonsten wird die Klammerstruktur
als unabh�ngig von dem vorherigen Makro betrachtet und ausgegeben. Dies ist nat�rlich
ein sehr heuristisches Vorgehen und kann zum falschen Ergebnis f�hren. Wird ein
Argument geschluckt, so erfolgt eine Warnung.

\ttot\ kann �ber die "`normale"' Formatierung hinaus noch ein paar
Spezialit�ten: Inhaltsverzeichnis, Fu�noten, Tabellen, Titelformatierung,
Referenzen und selbstdefinierte Makros/Environments.

Dollarzeichen werden ebenfalls schlichtweg ignoriert, der Mathematikteil wird so
wie �blich formatiert. Dies wird deshalb so gemacht, weil man dann die
Sonderzeichen, die nur im Mathemodus zug�nglich sind, auch in \ttot-Dokumente
aufnehmen kann. Ein richtiger Mathematiksatz ist ja mit ASCII-Zeichen sowieso
nicht m�glich. Man sollte halt nicht zu komplizierte Formeln
in eine Anleitung schreiben\dots

\ttot\ beherrscht auch die Verarbeitung einfacher \TeX-Makros. Dabei sind sogar
Argumente erlaubt. F�r die normalen Makros des Hausgebrauchs funktioniert es
ganz gut, aber kompliziertere Konstruktionen werden scheitern. Was insbesondere nicht
verarbeitet wird: Makros mit Patterns in der Argumentliste, also Sachen wie
\verb|\def\foo#1\par{...}|, bei dem das Argument beim Absatzende
aufh�rt. F�r die Pure-\LaTeX-Fans, wie lieber mehr tippen, gibt es auch
\com{newcommand} und \com{renewcommand}, die ja �hnlich funktionieren.
Allerdings pr�ft \ttot\ nicht, ob es den Befehl schon gibt. Auch
\com{newenvironment} und \com{renewenvironment} sind vorhanden und arbeiten wie
gewohnt.

Da \ttot\ Ascii-Texte produzieren soll, die vor allem auf dem Bildschirm
lesbar sind, wurde keine Seitenunterteilung implementiert. Eine solche w�re
nat�rlich w�nschenswert, wenn die Texte prim�r zum Ausdrucken gedacht sind, aber
ich habe mir die Arbeit gespart.

Als Beispiel f�r eine \ttot-�bersetzung dient der vorliegende Text. Er
wurde ganz normal bearbeitet. Zum Vergleich habe ich auch das \LaTeX-Original im
Archiv beigef�gt.


\section{Optionen}
\label{optionen}

In der Kommandozeile kann man neben (genau einem) \LaTeX-Quelltext (die
Extension "`.TEX"' kann weggelassen werden) noch ein paar Optionen angeben.
Diese Beeinflussen die rudiment�re Formatierung von \ttot:

\begin{description}

\item[--a] ("`pure Ascii"') \\
Es werden nur Zeichen aus dem Standard-Ascii verwendet, d.h. Zeichen mit Codes
$\le$ 127. Insbesondere werden auch keine Atari-Umlaute verwendet. Diese Option
ist vielleicht sinnvoll, wenn die Texte nicht nur auf einem Atari gelesen werden
sollen.

\item[--b {\it len}] ("`baselineskip"') \\
Setzt den (\ttot-internen) {\tt baselineskip} auf {\it len} pt. Dieser
wird nur bei der Umrechnung von \TeX-L�ngenma�en in Zeilen benutzt. Default: 12

\item[--f {\it len}] ("`footnoterule"') \\
Setzt die L�nge des Strichs vor den Fu�noten auf {\it len}. Default: 15

\item[--F] ("`flush footnotes after paging commands"') \\
Normalerweise gibt \ttot\ die Fu�noten nur am Ende eines Abschnitts aus, da es ja
keine Seitenunterteilung kennt. Mit dieser Option kann man erzwingen, da� die Fu�noten
auch nach den Kommandos \com{clearpage} und \com{cleardoublepage} ausgegeben werden.

\item[--h] ("`no questions on hyphenation"') \\
Unterdr�ckt die Anfragen nach der richtigen Trennstelle. Dies kann f�r Testl�ufe
n�tzlich sein, bei denen die richtige Trennung noch nicht wichtig ist,
sondern es nur nervt, wenn man andauernd RETURN dr�cken mu�.

\item[--i] ("`alternative italic formatting"') \\
Normalerweise wird der italic-Font durch Einschlie�en des Wortes in spitze Klammern
simuliert. Dies, weil man \com{it} in Anleitungen meist f�r Variablennamen
verwendet, die in ASCII �blicherweise als "`\verb|<...>|"' geschrieben werden.
F�r hervorgehobenen Text sollte \com{em} verwendet werden. St�rt jedoch dieses
Verhalten von \com{it}, so kann man mit der Option --i erreichen, da� \com{it}
dasselbe tut wie \com{em}.

\item[--l {\it len}] ("`leftmargin"') \\
Setzt den linken Rand auf {\it len} Zeichen. Default: 0

\item[--n] ("`no footnotes"') \\
Fu�noten unterdr�cken, Texte hinter \com{footnote} werden ignoriert.

\item[--o {\it filename}] ("`output"') \\
Die Ausgabe wird in die Datei {\it Filename} geschrieben. Ist der Name leer, d.h.
direkt hinter dem `o' kommt ein Space, so erfolgt die Ausgabe auf {\tt stdout}. Dies
kann n�tzlich sein, wenn man das Ergebnis z.B. in einer Pipe weiterverarbeiten
will.

\item[--p {\it len}] ("`parindent"') \\
Setzt die Breite des Einzugs am Beginn eines Absatzes auf {\it len} Spaces.
Funktioniert (fast) genauso wie bei \TeX. Default: 2

\item[--q] ("`alternative backquotes"') \\
Ich pers�nlich finde es unsch�n, wenn Zeichen in Backquote/Quote-Paare eingeschlossen
werden, da diese Zeichen im Atari-Font so unsymetrisch sind. Daher �bersetzt
auch \ttot\ Backquotes in Apostrophe. Da sich aber manche \TeX-Freaks schon so
daran gew�hnt haben, kann man diese �bersetzung mit --q unterdr�cken.

\item[--r] ("`no length rounding to zero"') \\
Unterdr�ckt das Abrunden zu Null der L�ngenangaben bei \com{vspace} etc. Dann wird
also bei jeden solchen Befehl mindestens eine Leerzeile ausgegeben.

\item[--s {\it len}] ("`parskip"') \\
Setzt die Anzahl Leerzeilen nach einem Absatz auf {\it len}. Default: 1, andere
Werte produzieren meist keine besonders sch�nen Ergebnisse.

\item[--t {\it len}] ("`titlewidth"') \\
Setzt die Mindestbreite der Titelumrahmung (\com{maketitle}) auf {\it len}. Ist der
enthaltene Text breiter, so wird der Sternchenrahmen nat�rlich auch vergr��ert. Wird
als Breite 0 angegeben, so wird nicht gerahmt. Default: 60

\item[--u] ("`supress the "`unknown\dots"' messages"') \\
Unterdr�ckt die Meldungen �ber unbekannte Kommandos, Environments etc., wenn diese
st�ren.

\item[--w {\it len}] ("`textwidth"') \\
Setzt die Zeilenbreite auf {\it len} Zeichen. \ttot\ geht genau bis zu
diesem Rand, d.h. ein eventuell gew�nschter rechter Rand ist bereits hier
einzurechnen. Default: 78

\end{description}

\ttot\ schreibt seine Ausgabe normalerweise in ein File mit demselben Namen wie
das \TeX-File, nur mit Extender "`.TXT"'. Eine eventuell bereits vorhandene
Datei dieses Namens wird �berschrieben. F�r das Inhaltsverzeichnis verwendet
\ttot\ eine tempor�re Datei mit Extender "`.TTC"', um nicht mit \LaTeX's
TOC-File zu kollidieren. Das selbe gilt f�r das "`.TAX"'-File, das dieselbe
Funktion erf�llt wie \LaTeX's "`.AUX"'-File. Des weiteren benutzt \ttot\ ein
tempor�res File mit dem Namen der Eingabedatei und Extender "`.TMP"'. F�r die
Leute, die die \ttot-Ausgabe in Pipes umlenken, ist vielleicht wichtig zu
wissen, da� w�hrend der Ausgabe das TMP- und (bei Bedarf) das TTC/TAX-File
ge�ffnet sind. Diese d�rfen also unter Multitasking nicht in derselben Pipe
beschrieben werden, ein TXT-File dagegen schon. Alle Bildschirmmeldungen von
\ttot\ erfolgen auf {\tt stderr}, ebenfalls wegen m�glicher Umlenkungen.


\section{Erkannte Kommandos und Environments}
\label{erkanntes}

Am Anfang steht jeweils eine Auflistung in alphabetischer Reihenfolge.
Wenn eine Erkl�rung n�tig ist, folgt sie darunter oder dahinter in Klammern.

\subsection{Doublequote-Sequenzen des {\tt german.sty}}
\label{doublequote}

\begin{quote}
\verb|"a|, \verb|"A|, \verb|"a|, \verb|"o|, \verb|"O|, \verb|"s|, \verb|"U|,
\verb|"u|, \verb|"'|, \verb|"-|, \verb|"<|, \verb|">|, \verb|"`|, \verb+"|+, 
\end{quote}

\subsection{Befehle, die einzelne Zeichen erzeugen}
\label{einzelzeichen}

\begin{quote}\raggedright
\com{backslash}, \com{copyright}, \com{dag}, \com{dots}, \com{geq}, \com{ge},
\com{LaTeX}, \com{leftarrow}, \com{Leftarrow}, \com{leftrightarrow},
\com{Leftrightarrow}, \com{leq}, \com{le}, \com{Longleftarrow},
\com{longleftarrow}, \com{Longleftrightarrow}, \com{longleftrightarrow},
\com{Longrightarrow}, \com{longrightarrow}, \com{pm} ($\pm$), \com{prime},
\com{rightarrow}, \com{Rightarrow}, \com{space}, \com{ss}, \com{TeX}, \com{TM}, 
\end{quote}

Zus�tzlich, wenn nicht Standard-Ascii gew�hlt wurde:

\begin{quote}\raggedright
\com{alpha}, \com{beta}, \com{delta}, \com{Gamma}, \com{infinity}, \com{in},
\com{mu}, \com{Omega}, \com P ($\P$), \com{phi}, \com{Phi}, \com{pi}, \com S
(Paragraphenzeichen), \com{sigma}, \com{Sigma}, \com{tau}, \com{Theta}
\end{quote}

\subsection{Formatierungsbefehle}
\label{formatbefehle}

\begin{quote}\raggedright
\com{$\backslash$[*]} (neue Zeile beginnen), \com / (italic correction,
ignoriert), \com{author}, \com{bf}, \com{bigskip}, \com{chapter[*]},
\com{cleardoublepage}, \com{clearpage}, \com{date}, \com{em}, \com{indent},
\com{it}, \com{maketitle}, \com{medskip}, \com{noindent}, \com{paragraph[*]},
\com{par}, \com{section[*]}, \com{smallskip}, \com{subparagraph[*]},
\com{subsection[*]}, \com{subsubsection[*]}, \com{thanks} (nur innerhalb
\com{author}), \com{title}, \com{verb}, \com{vspace[*]}
\end{quote}

\com{em}, \com{it} und \com{bf} werden durch Voranstellen und Nachstellen bestimmter Zeichen
simuliert: Bei \com{em} vorne und hinten ein Underscore (`{\tt \_}'), bei \com{bf} stattdessen ein
Stern und bei \com{it} spitze Klammern. Dies, weil man \com{it} in Anleitungen meist f�r
Variablen verwendet, die �blicherweise in Ascii-Text in spitzen Klammern
geschrieben werden.

Die Formatierungen f�r \com{chapter}, \com{section}\dots\ h�ngen davon ab, ob man beim
{\tt documentstyle} als main style "`{\tt article}"' oder etwas anderes angegeben hat (genau
wie bei \LaTeX). Das "`\verb|[*]|"' bedeutet, da� sowohl \com{section} als auch 
\com{section*} verarbeitet werden. Der Stern bewirkt, da� der Titel nicht nummeriert wird
und auch nicht im Inhaltsverzeichnis auftaucht.

\com{maketitle} zusammen mit \com{title}, \com{author} und \com{date} stellt
eine Simulation des \com{maketitle} von \LaTeX\ dar. Default f�r \com{date} ist
\com{today}. Der bei \com{title} angegebene Text wird normalerweise mit einem
Sternchenrahmen umgeben, um ihn besser hervorzuheben. Mit Hilfe der Option --t
kann dieser Rahmen unterdr�ckt werden.

Bei \com{vspace} und \com{$\backslash$}[\dots] mu� \ttot\ notgedrungen die absoluten
L�ngenangaben von \TeX\ in Zeilen umrechnen. Als L�ngenma�e sind dabei pt, pc (pica,
= 12pt), cm, mm, in und \com{baselineskip} erlaubt. Die L�ngenangabe wird in
Punkt umgerechnet, durch den (per Option --b einstellbaren) {\tt baselineskip} geteilt
und das gerundete Ergebnis als Anzahl Leerzeilen interpretiert. Vorsicht: Dies hat zur
Folge, da� eine Angabe von z.B. 4pt gar keine Leerzeile bewirkt, da sie zu 0
abgerundet wird. Eine Abrundung zu Null kann aber mit der Option --r unterdr�ckt
werden.

Innerhalb gewisser Klammernstrukturen und im Text zu einen {\tt tabular}- bzw.
{\tt tabbing} Environment sind nicht alle Kommandos erlaubt. Die Verbotenen sind
aber in diesem Kontext meist auch nicht sinnvoll. Benutzerdefinierte Kommandos
d�rfen dagegen �berall stehen.

\com{bigskip} erzeugt immer eine Leerzeile. Bei \com{medskip} und \com{smallskip}
ist dies nur der Fall, wenn per Option --r die Abrundung der L�ngenma�e nach 0
unterdr�ckt wurde. Andernfalls l�sen sie nur einen neuen Absatz aus, wenn man vorher
nicht schon im {\tt vertical mode} war.

\subsection{sonstige Befehle}
\label{sonstige-befehle}

\begin{quote}\raggedright
\com{addtocounter}, \com{footnote}, \com{includeonly}, \com{include},
\com{input}, \com{label}, \com{newcounter}, \com{newtheorem},
\com{refstepcounter}, \com{ref}, \com{setcounter}, \com{stepcounter},
\com{tableofcontents}, \com{today}
\end{quote}

\com{input} und \com{include} bewirken, da� der Inhalt eines Files an dieser Stelle
in den Eingabestrom eingef�gt wird. Der Filename mu� bei \ttot\ zwingend in
geschweiften Klammern stehen, Slashes sind als Pfadtrenner erlaubt und die
Extension "`.TEX"' kann weggelassen werden. Der Unterschied zwischen beiden ist
derselbe wie bei \LaTeX: \com{include} kann per \com{includeonly} angewiesen
werden, nur bestimmte Files zu lesen und alle anderen zu ignorieren. Das
neue-Seiten-Problem bei \LaTeX's \com{include} er�brigt sich bei \ttot.

\com{label} und \com{ref} funktionieren im Prinzip wie von \LaTeX\ gewohnt.
Allerdings ist "`fest verdrahtet"', welche Strukturen sinnvolle {\tt label}-Eintr�ge
erzeugen. Dies sind alle Abschnittsbefehle, also \com{chapter}, \dots,
\com{subsubsection}, mit \com{newtheorem} erzeugte Environments und die
einzelnen Punkte einer {\tt enumeration}. Die Daten f�r \com{label}/\com{ref}
werden in einem eigenen File verwaltet. Den Inhalt dieser "`.TAX"'-Datei sollte
man m�glichst nicht von Hand editieren. Wie bei \LaTeX\ sind die korrekten
Referenzen beim ersten Durchlauf noch nicht bekannt und werden dann durch "`??"'
ersetzt. Im Gegensatz dazu wird das Inhaltsverzeichnis bei jeder �bersetzung
aktualisiert und auch gleich in den Text eingef�gt.

Die Fu�noten werden folgenderma�en gehandhabt: Die Nummerierung erfolgt �ber das
ganze Dokument hinweg (nicht kapitelweise). Anstelle der hochstellten Zahl wird
eine in eckigen Klammern eingeschlossene verwendet.\footnote{Dies ist ein Beispiel
f�r eine Fu�note. Fu�noten k�nnen auch mehrere Abs�tze enthalten, was zu beweisen
ist:\par Hier geht der zweite Absatz los, der etwas ausf�hrlicher geschrieben
wird, damit man auch den korrekten Einzug am Absatzanfang erkennen kann.} Da \ttot\ ja keine
Seitenunterteilung kennt, werden die Fu�noten am Ende eines Kapitels, Abschnitts
\dots\ Unterunterabschnitts ausgegeben und werden ---~wie bei \TeX~--- durch einen
Strich abgetrennt. Nach den Fu�noten kommt ein etwas gr��erer Freiraum als
�blich.

Die {\tt counter}-Befehle funktionieren auch so wie bei \LaTeX. \ttot kennt auch die
"`abh�ngigen counter"', die auf Null gesetzt werden, wenn der �bergeordnete
hochgez�hlt wird. Die Kapitel-, Theorem- und Fu�notennummerierung von \ttot\ wird auch
�ber solche counters realisiert, so da� man bei Bedarf diese Z�hler ver�ndern
kann. Ihre Namen sind die gleichen wie in \LaTeX. Eine kleine Einschr�nkung
existiert leider: \com{refstepcounter} tut genau dasselbe wie \com{stepcounter}
wegen der Einschr�nkungen bei \com{label} (siehe oben).

Auch \com{newtheorem} bringt nicht viel Neues: Durch diesen Befehl wird ein
neues Environment erzeugt, das in bestimmter Weise nummeriert wird (siehe eine
\LaTeX-Beschreibung). Innerhalb eines solchen Environments funktioniert
\com{label} korrekt. Als Counter, von dem die Theoremnummerierung abh�ngig ist,
sind nur chapter, \dots, subsubsection erlaubt.


\subsection{\LaTeX-Environments}
\label{environments}

\begin{quote}\raggedright\tt
abstract, appendix, center, description, enumerate, itemize, quotation, quote,
tabbing, tabular, verbatim, verse
\end{quote}

Das \ttot-{\tt tabular} ist ein noch recht unvollst�ndiger (und wahrscheinlich auch noch
fehleranf�lliger) Nachbau seines \LaTeX-�quivalents. Man kann sich aber
einfache Tabellen damit zusammenzimmern. Innerhalb des Formatstrings sind `l',
`r', `c', `|' und @-Ausdr�cke erlaubt, `p'-Spalten sind bis jetzt wegen
technischer Schwierigkeiten noch nicht implementiert. Innerhalb des
{\tt tabular}-Texts sind die zus�tzlichen Befehle \com{hline}, \com{vline} und
\com{multicolumn} erlaubt. Die {\tt tabular}-Angelegenheit ist wegen ihrer Komplexit�t
relativ wenig getestet, daher kann es wohl gerne mal zu Fehlformatierungen
kommen. Ich bitte hier um Bugreports.

Im \ttot-{\tt tabbing} sind erlaubt: \com=, \com>, \com<, \com+, \com-,
\com{$\backslash$[*]}, \com{kill}, \com{pushtabs} und \com{poptabs} mit den
�blichen Funktionen. \ttot\ erlaubt maximal 20 Tabs und 8 push/pop-Ebenen.


\section{Die Trennung}
\label{trennung}

\ttot\ beinhaltet einen �u�ert simplen Trennalgorithmus, der aber
besser funktioniert, als seine Einfachheit erwarten l��t. Wenn es \ttot\ praktisch
erscheint, ein Wort zu trennen, so sucht es zun�chst nach Vortrennern,
das sind die `\com{-}'-Zeichen von \TeX, Trennstriche (`-') und Slashes (`/').
Erm�glicht eines von diesen eine passable Trennstelle, so wird sie benutzt.
Ansonsten sucht sich \ttot\ die Stelle im Wort, die ihm am plausibelsten
erscheint, und fr�gt den Benutzer, ob es richtig geraten hat. Die Trennung mu�
mindestens 2 Zeichen auf der alten Zeile lassen und mindestens 3 Zeichen auf die
neue Zeile setzen (wie bei \TeX).

Die Stelle wird folgenderma�en gesucht: Es kommen nur Positionen in Frage, denen
mindestens ein Vokal vorausging und denen zuerst ein Konsonant und dann ein
Vokal folgt ("`ein Konsonant zur n�chsten Silbe"'). Dabei werden aber Trennungen
in "`st"', "`ch"' und "`sch"' �bersprungen.

Wenn eine solche Stelle gefunden wurde, erscheint auf dem Bildschirm
"`{\tt Hyphenation: {\it Wort}}"'. Die Trennstelle innerhalb des Worts ist durch einen
Trennstrich gekennzeichnet. Man kann diesen mit den Cursortasten verschieben,
falls \ttot\ sich geirrt hat. Meist kann man aber gleich {\tt RETURN} dr�cken,
um die Trennstelle abzusegnen. Soll das Wort nicht getrennt werden, so dr�ckt
man statt {\tt RETURN} die Taste `{\tt N}'. Befindet sich beim {\tt RETURN} der Trennstrich hinter
einem Strich oder einem Slash, so wird dort getrennt, aber kein Trennstrich
eingef�gt. \ttot\ wei� ebenfalls, da� man "`ck"' in "`k-k"' trennt; dies
wird auch so angezeigt. Die Konsonantenvermehrung bei Doppelkonsonanten wurde
bis jetzt nicht implementiert. Die Trennstelle l��t sich nur soweit verschieben,
wie es der Text erlaubt, d.h. es gibt eine rechte Grenze, ab der das Wort nicht
mehr in die Zeile passen w�rde.

F�r die Trennung wird einem grunds�tzlich das ganze "`Wort"' pr�sentiert. Dieses
Wort ist alles zwischen zwei umgebenden Leerzeichen und kann auch Klammern,
Anf�hrungszeichen etc. umfassen. Das Wort kann sogar Leerzeichen enthalten. Dies
tritt dann auf, wenn im Text feste Spaces verwendet wurden, die z.B. von der
Tilde (`\verb|~|') erzeugt werden. \ttot\ macht bei diesen nicht ungefragt einen
Zeilenumbruch, man kann aber den Trennstrich auch hinter die Leerstelle setzen.
Dann wird bei dem festen Space ganz normal eine neue Zeile begonnen, als w�re es
ein normales Space.


\section{History}
\label{history}

\begin{description}

\item[V1.0:]
Erste ver�ffentlichte Version

\item[V1.1:]
Neue Option --n zum Unterdr�cken der Fu�noten;
Einr�ckungsfehler bei nur eine Zeile langen \com{item}-Elementen beseitigt;
Spaces werden neben `.', `,' und `:' nun auch hinter `;' bevorzugt eingef�gt; 
neue Kommandos f�r die arrow's;
L�ngenangaben f�r \com{vspace} und \com{$\backslash$}[\dots] implementiert;
\com{def}, \com{[re]newcommand} und \com{[re]newenvironment} implementiert

\item[V1.2:]
Neue Optionen: --u zum Unterdr�cken der "`unknown\dots"'-Meldungen,
--o zum Umleiten der Ausgabe,
--i und --q zur Beeinflussung, wie \com{it} bzw. ein Backquote gesetzt wird;
Neue Environments: {\tt verbatim}, {\tt tabular} und {\tt tabbing};
\com{vspace*} und \com{$\backslash$*} erlaubt;
\com{input}/\com{include} implementiert;
Umrahmung des Titels eingef�hrt

\item[V1.3:]
(ver�ffentlicht am 24.12.92 als kleines Weihnachtsgeschenk) \\
Meldungen bei Fehlern in Kommandozeile benutzerfreundlicher gemacht;
Fehler mit mehrzeiligen Kommentaren behoben;
\com{bigskip}, \com{medskip} und \com{smallskip} eingef�hrt;
Weglesen der Argumente unbekannter Kommandos verbessert;
Neue Optionen: --F zur Ausgabe der Fu�noten bei \com{clearpage} und
\com{cleardoublepage},
--r zum Unterdr�cken der Abrundung nach 0 bei vertikalem Freiraum; 
neues Environment: {\tt verse};
\LaTeX-Counters implementiert;
\com{label}, \com{ref} und \com{newtheorem} implementiert;
Zeilenz�hlung verbessert;
Formatierung der \com{item}'s verbessert;

\end{description}

\end{document}


