LaTeX für AnfängerInnen

Für Installation unter windoze gibt es Doku am Ende dieses Skripts.
Dort gibt es auch noch ein paar mehr Beispiele.

(Letzte Änderung: Mit Mär  7 19:20:55 CET 2001)

Die gesamte Dokumentation kann jetzt komplett heruntergeladen werden: latex_vortrag.tgz (279 kB)



LaTeX ist ein Textsatzsystem, das besonders für wissenschaftliche Arbeiten geeignet ist. LaTeX selbst ist dabei ein Makropaket, das auf den Motor TeX zugreift:

TeX gilt seit 1992 als fehlerfrei. Der TeX-Autor Donald E. Knuth ist als perfektionistischer Autor umfangreicher Werke wie "The Art Of Computer Programming" berühmt und hat für die Entdeckung eines Programmierfehlers in TeX eine Belohnung von 215 US-Cents (ca. EUR 350) ausgesetzt. Es existieren eine Reihe von weiteren Anekdoten zu TeX: Z.B. nähern sich die Versionsnummern pi an. Der Quelltext zu TeX gilt als eines der ästhetischsten Programmcodes.
Tatsächlich ist der Perfektionismus vielleicht gerade eine Schwäche von TeX: Wegen besserer Lesbarkeit sind die Schriftschnitte kleiner und großer Buchstaben unterschiedlich. Später haben sich Schriftsysteme mit niedrigerem Anspruch (PostScript, TrueType) durchgesetzt, die einfach nur proportional vergrößert werden. Dadurch muß man Hürden überwinden, um andere Schriften einzubinden.

LaTeX wurde von Leslie Lamport geschrieben. Es stellt fertige Funktionen zur Satz umfangreicher Dokumente zur Verfügung.
Da diese freie Software schon seit vielen Jahren im Umfeld von Universitäten und Verlagen gebräuchlich ist, gibt es sehr viele Erweiterungen wie z.B. Notensatz, Unterstützung der arabischen, hebräischen, mongolischen, tibetischen Sprache etc.
Für die deutsche Sprache gibt es spezielle Pakete, die für korrekte Silbentrennung sowohl in der alten wie auch neuen Rechtschreibung sorgen. Im Gegensatz zu früheren Versionen, die sich streng an den ASCII-Standard hielten, kann man heute auch deutsche Sonderzeichen einfach hinschreiben, anstatt Umschreibungen wie "u für ü zu bemühen. Es soll aber viele geben, die sich an die alte Schreibweise so gewöhnt haben, daß sie nur noch so schreiben!
 
 
%% "einfaches_beispiel0.tex" - Einfaches LaTeX-Beispiel 0

\documentclass[12pt,german]{article}
\usepackage[T1]{fontenc} \usepackage[latin1]{inputenc} \usepackage{babel} \makeatletter

\begin{document}
Hier ist Text.
\end{document}

Mit
latex  einfaches_beispiel0.tex

wird diese Datei in ein auflösungsunabhängiges (device independent) *.dvi-Format übergeführt, das mit xdvi (unter Windoze gibt es auch "Yap") angezeigt werden kann.
Um die Datei zu drucken, reicht ein
dvips einfaches_beispiel0.dvi

So sieht das Ergebnis aus:

Wenn ich 1994 gewußt hätte, wie einfach LaTeX ist, hätte ich mir keinen windoze-Computer zugelegt!
Damals brauchte ich skalierbare Fonts und Formelsatz. Damals hat mich Win3.1 mit Winword 2.0b überzeugt.
Als ich mir einen Palm-kompatiblen Handrechner zulegte, wollte ich mit vollwertigen Formatierungen schreiben können. Ich testete also LaTeX, und probierte alle mir wichtigen Funktionen. Diese hatte ich an einem Abend gelernt.
Es geht aber noch einfacher: Mit LyX existiert eine intuitive Oberfläche, die man wie herkömmliche Office-Pakete bedient. Hier braucht man im Grunde gar nichts lernen. Es gibt auch windoze-Versionen von LyX, die aber eine virtuelle UNIX-Umgebung brauchen (u.a. einen X-Server) und schwierig zu konfigurieren sind.
LaTeX dagegen gibt es für alle gängigen Betriebssysteme, wobei miktex(?) (URL) unter windoze wohl die verbreitetste ist. Die Installation von LaTeX ist im Gegensatz zu LyX auf windoze-Plattformen trivial.
Auf http://www.dante.de wird ein CTAN-Mirror zur Verfügung gestellt, auf dem sich die neuesten Versionen der jeweiligen Pakete (auch per Suchmaschine) finden lassen. Allein das Inhaltsverzeichnis der Dateien (FILES.byname) dort ist 4 MB groß.
Zum leidigen Thema der windoze-Formate gibt es diverse Konvertierer im support-Verzeichnis im CTAN. Der beste Konvertierweg besteht wohl über das RTF-Format; die entsprechenden Konvertierer bauen dabei auch gleich die Grafiken (*.wmf, *.gif et al. werden unterstützt) um und werden laufend aktualisiert. Aber bei OLE-Objekten haben selbst windoze-User keine Chance, wenn die verwendeten Programme nicht auf ihrem Rechner installiert sind.
Neben diesen proprietären Formaten gibt es aber auch Konverter wie html2latex, die auch ein Weg sein können, die Lerninvestition gering zu halten, indem man einen intuitiven HTML-Editor (z.B. Netscape Composer) verwendet und hinterher nach LaTeX wandelt.

Warum sollte ich in Zeiten der WYSIWYG-Editoren LaTeX verwenden?

Ein erweitertes Beispiel:

 
%% Erweitertes LaTeX-Beispiel

\documentclass[12pt,german]{article}
\usepackage[T1]{fontenc} \usepackage[latin1]{inputenc} \usepackage{babel} \usepackage[dvips]{graphics} \usepackage{palatino} \makeatletter

\begin{document}
\section{Überschrift in \LaTeX{}}
Dies ist normaler Text
\subsection{Eine Unter-Überschrift}
Weiterer Text...
Eine Formel:\\
$\sqrt{\frac{\pi}{2}}$\\ %% Der Doppel-Backslash erzeugt einen Zeilenumbruch.
"`Deutsche Anführungsstriche"'  %% Eine Leerzeile trennt Absätze.

\textbf{Formatierung:} Als Beispiel stehen hier \textbf{fetter,} \emph{kursiver, }sowie \textsf{serifenloser} Text.
Für Code-Beispiele ist \texttt{diese Notation gebräuchlich, }gelegentlich auch in der \texttt{\textbf{fetten Variante.}}

Eine kompliziertere Formel:

\begin{equation}
f(x)=\frac{1}{\sqrt{2\pi}\sigma}~e^{-\frac{(x-\mu)^2}{2 \sigma^2}}
\end{equation}
Seitenumbruch \footnote{!`Mit Fußnote!}
\newpage
\begin{figure}
\includegraphics{a.ps}\caption{Eine eingebettete (PostScript-)Grafik}
\end{figure}

\end{document}

Das Ergebnis sieht so aus: einfaches_beispiel1.pdf

Praxis auf dem Hand-Computer (PDA)

Ich will einen Geschäftsbrief auf meinem Hand-Computer schreiben:
 
%% "Gelber-Schein.tex"
\documentclass[12pt,german]{g-brief} \usepackage{palatino}
\usepackage[T1]{fontenc} \usepackage[latin1]{inputenc} \usepackage{babel} \makeatletter \lochermarke \faltmarken \fenstermarken \trennlinien\makeatother \begin{document} \Name{Jochen Plumeyer} \Unterschrift{\emph{Jochen}} \Strasse{Schwachhauser Heerstr. 4} \Zusatz{} \Ort{28203 Bremen} \Land{} \RetourAdresse{} \Telefon{+49 173 7723607} \Telefax{} \Telex{} \EMail{plumeyer@gmx.de } \HTTP{www.plumeyer.org} \Bank{Sparkasse in Bremen} \BLZ{290 501 01} \Konto{12547618}

\Adresse{Ingenieurbüro Kochjohann GmbH\\
Röntgenstr. 1\\
27283 Verden}

\Betreff{Gelber Schein}
\Anrede{Lieber Chef,}
\Gruss{Bis Mittwoch dann,}{0.5cm}

\begin{g-brief}
mich hat gerade eine Atemwegsinfektion ereilt. Geburtstagsfeiertechnisch ist das natürlich ein bißchen blöde. Andererseits spare ich natürlich Unmengen durch das ausgefallene Geburtstagsbuffet \texttt{;-)}.

Mindestens zwei Tage Ruhe und Kräutertee empfahl mir der Doc, der mich schon sechs Jahre nicht mehr gesehen hatte. \\
Also tipp ich eben \LaTeX{} auf meinem Palm und schlürfe den Tee. Ein nettes C-Buch kann ich mir dann auch gleich zu Gemüte führen. \\
 

\end{g-brief}
\end{document}
 

Auf dem Palm sieht das dann z.B. so aus:

Wie kann ich diese LaTeX-Datei nun drucken?
Die Datei wird mit dem Befehl latex LaTeX-Datei in das *.dvi-Format übergeführt. Achtung: Um Inhaltsverzeichnisse und Seitenreferenzen ausrechnen zu können, muß dieser Vorgang dreimal ausgeführt werden!
Im xdvi kann das Produkt dann betrachtet werden. Dabei werden eingebettete Grafiken oder gedrehte Schriften mitunter nicht vollständig angezeigt.
Vollständigkeit auf dem Monitor bekommt man mit GhostView (gv), der die PostScript-Datei, die auch auf den Drucker gegeben wird, anzeigt.

Um diesen Vorgang zu automatisieren, habe ich das Mini-Perlskript "tv" (TeX-View) geschrieben:
 
#!/usr/bin/perl
# 'tv' - Ansehen einer LaTeX-Datei in GhostView
$infile=$ARGV[-1];
system ("latex $infile");
system ("latex $infile");
system ("latex $infile");
$infile=~ /(.*)\./;
$name=$1;
system ("dvips -o $name.ps $name.dvi");
system ("gv $name.ps");

Das PDF-Format, für das auf nahezu allen Plattformen und Browsern Betrachtungsprogramme zur Verfügung stehen, ist dem PostScript-Format sehr ähnlich. Während man für Adobe Acrobat ca. DM 600 bezahlen muß, werden PDF's mit LaTeX ganz einfach mit

pdflatex LaTeX-Datei

erzeugt. Das Ergebnis ist dann in nahezu jedem Browser zu betrachten: Gelber-Schein.pdf



LaTeX ist ein systematisches Reintext-Format. Dies ist von unschätzbarem Vorteil, um individuelle Anpassungen vornehmen zu können.

Mithilfe einfacher Skriptsprachen und freien GNU-Werkzeugen können so billig und effizient Anforderungen erfüllt werden.
 

Beispiel: Verbindung von LaTeX mit Datenbank-Inhalten

Die "Schweizer-Messer-Sprache" Perl soll hier der Leim zwischen LaTeX und einer PostgreSQL-Datenbank sein.
In der Beispiel-Adreß-Datenbank "adressen" befindet sich die folgende Tabelle (die auch unpädagogischerweise 'adressen' heißt):
 
vorname nachname abteilung organisation strasse hausnummer postfach postleitzahl ort tel fax email http weiblich
Belunge Mboso Strategische Planung WHO Heinburger Ring 14 Postfach 13243 13324 Duisburg +49 3427 234987 +49 3427 234933 mboso@who.org http://www.who.org f
Marita Heinzmann Bäckereiinnung Klöckesberger Str. 255 b 65536 Töllinghausen +49 8963 322325 +49 8963 322325 heinzmann@baeckereiinnung.de http://www.baeckereiinnung.de t
Volker Anglicisco Dufte Partydüfte Steineichenallee 12 24535 Rheingur +49 6398 345877 +49 6398 345811 volki@dufteduefte.de http://www.dufteduefte.de f
Retrieved 3 rows * 14 fields

Auf einem Debian GNU/Linux-System habe ich das Ansprechen der Datenbank hier mit dem Paket libpgperl und dem Perl-Modul Pg.pm realisiert. Hier wird auch das obenerwähnte Skript "tv" für die Ausgabe verwendet.

Anmerkung zu PosgrSQL:

Ich war froh, anläßlich der "Zimmermann-Anfrage" dieses Datenbank-System kennengelernt zu haben, da es sich nicht nur um ein Paket mit reichhaltigen Funktionen, sondern auch um eine deutlich beschleunigtes System handelt.
Es hat fast so viele Möglichkeiten wie Oracle, und ist dabei auch fast so schnell und klein wie MySQL. Mit empfehlenswerten Paketen wie pgaccess ist das Erstellen von Datenbanken, Abfragen und Datenobjekten ausgezeichnet vereinfacht.

Beispiel Serienbrief:

Ein Brief soll an viele Personen verschickt werden. Dabei gilt es, geschlechtsspezifische Anreden und korrekte Adreßfelder zu generieren.
Der Beispielbrief:

Das Skript habe ich lpg.pl genannt (LaTeX-Postgres).
 
#!/usr/bin/perl -w
# Hauptvariablen; sie sind an andere Anforderungen anzupassen.
   $LatexFile="Einladung.tex";
   $Abfrage='select * from adressen';
   $OutFile="Einl_";
   $WhatToDo="tv";
   
   # Mal eben die LaTeX-Datei einlesen
   open(LATEX, "< $LatexFile");
   $j="";
   while(defined($i=<LATEX>))
   {
      $j.=$i;
   }
   close(LATEX);

   use Pg;# Das PosgreSQL-Modul wird geladen.
   
   # Die Datenbank-Verbindung wird aufgebaut.
    $conn = Pg::connectdb("dbname=adressen");
   Pg::doQuery($conn, $Abfrage, \@ary); # Referenz der Antwort-Tabelle wird übergeben. 
         # Das Ergebnis wird als "Liste von Listen" zurückgegeben.


    for $i ( 0 .. $#ary )
    {
        for $j ( 0 .. $#{$ary[$i]} )
        {
         # Überflüssige Leerzeichen werden entfernt.
            $ary[$i][$j]=~ s/\s*(.*)\s*/$1/;
        }
    }
   for $i ( 0 .. $#ary )
   {
   # Variablen werden aus der Datenbank mit Werten gefüllt.
      ($Vorname, $Nachname, $Abteilung, $Organisation, $Strasse, $Hausnummer, $Postfach, $Postleitzahl, $Ort, $Tel, $Fax, $email, $HTTP, $weiblich)=@{$ary[$i]};
      # Sonderinhalte werden speziell verändert.
      $Abteilung=&ol($Abteilung); $Organisation=&ol($Organisation); $Postfach=&ol($Postfach);
      # Das Ergebnis wird ausgegeben.
      &drucke_Einladung;
   }

sub drucke_Einladung()
{
   $PostgresAdresse="$Vorname $Nachname\\\\\n$Abteilung$Organisation$Strasse $Hausnummer\\\\\n$Postfach$Postleitzahl $Ort";
#  print $PostgresAdresse;

   if($weiblich eq "t")
   {
      $PostgresAnrede="Sehr geehrte Frau $Vorname $Nachname,";
   }
   else
   {
      $PostgresAnrede="Sehr geehrter Herr $Vorname $Nachname,";
   }
#  print $PostgresAnrede;
   # Hier werden die "$Postgres"-Zeichen in der LaTeX-Datei interpretiert.
   ($out=$j)=~ s/PostgresAdresse/$PostgresAdresse/gs;
   ($out=$out)=~ s/PostgresAnrede/$PostgresAnrede/gs;
   open(LATEXOUT, "> $OutFile$i.tex");
   print LATEXOUT ("$out");
   close(LATEXOUT);
   system("$WhatToDo $OutFile$i.tex");
}

sub ol
{
   my $a=shift;
   if(defined($a) && length($a)!=0)
   {
      $a.="\\\\\n";
   }
   return $a;
}

Auf UNIX/ Linux-Systemen können mit demselben Skript auch Massenfaxe oder Mails versendet werden. Dafür braucht nur die Variable $WhatToDo angepaßt werden. Wegen der Mausklick-Philosophie von windoze sind Automatisierungsaufgaben unter dem Micros~1-Betriebssystem meist wesentlich schwieriger, teuer oder gar nicht zu lösen. Manchmal drückt McMurphy aber ein Auge zu.

Fazit:
LaTeX läßt sich dank seines gut durchdachten Formats nahtlos in andere Anwendungen einbinden.
 

Anhang mit weiteren Beispielen

Thema Dateien
Mein erstes LaTeX-File vom Abend des 2. Dezember 2000 meinersteslatexfile.tex
redsquare.ps
LaTeX auf windoze (Installation, Tuning und Einbinden von Gnuplot-Diagrammen unter windoze) LaTeX-Lisa.tex
test.tex

Bei großen LaTeX-Dateien wie dem Gnuplot-Beispiel muß unter Linux der "main memory" in der Konfigurationsdatei /etc/texmf/texmf.cnf (vielleicht um 1 Mio.) erhöht und texconfig init aufgerufen werden.