[🛈Start+]   [🥋Taekwon-Do+]   [🛀Autogenes Training+]   [Mathematik]   [💡Physik]   [🔭Astronomie]
[🔑Impressum+]   [⚙️Technik+]   [📙Forschung & Lehre+] [🐧GNU/Linux+]   [📜LATEX]   Sprache:  [GB-NA-Flagge] 

JMB Blue Ribbon Icon (Freie Rede)


TEX/LATEX

Das wissenschaftliche Satzprogramm


Inhaltsverzeichnis zu JMB's Seite über TEX/LATEX


Bedeutung von TEX, LATEX und dem Begriff Satzprogramm

TEX:
Textsatzsystem, das gemeinsam mit METAFONT von Donald E. Knuth ab 1977 entwickelt und 1986 fertiggestellt wurde. Es ermöglicht, anders als die diversen Office-Systeme, einen druckreifen Textsatz.
Seit 1990 ist es eingefroren und wird von Weiterentwicklungen wie pdfTEX emuliert.

LATEX:
Ein Softwarepaket, das von Leslie Lamport Anfang der 1980er Jahre entwickelt wurde und die Benutzung des Textsatzsystems TEX mit Hilfe von Makros vereinfacht – aktuell in Fassung 2ε.
Analog wurde BIBTEX 1985 von Oren Patashnik und Leslie Lamport entwickelt.

TEX Live: 
die umfangreichste verfügbare TEX-Distribution, die vielen 🐧GNU/Linux-Distributionen (insbesondere den Desktop-Distributionen Debian, Ubuntu und Mint) in aktueller Fassung beiliegen – d.h. ohne großen Aufwand durch Installation des Pakets texlive-full aus den Repositories komplett installiert werden kann. Hier die aktuell bedeutendsten Versionen (natürlich sollte man immer eine möglichst aktuelle verwenden und auch online bzw. bei Büchern auf die verwendete Version achten):
2013: LuaTEX mit Updated auf Lua 5.2 – enthalten in Ubuntu 13.10 + 14.04 LTS Trusty – vom 21. Juni 2013;
2014: mit TEX- und MetaFont-Updates – enthalten in Debian Squeeze stable – vom 18. Juni 2014;
2015: mit Verschmelzung vieler LATEX-Fixe von externen Paketen in LATEX selbst, JPEG Exif-Support in pdfTEX sowie Bild-Handling-Fixe in XETEX – enthalten in Debian experimental sowie Ubuntu 15.04 + 16.04 LTS Xenial – vom 11. Juni 2015;
2016: mit LuaTEX 0.95 – enthalten in Ubuntu 16.10 – vom 05. Juni 2016;
2017: mit LuaTEX 1.0.4, das das Einbinden von Lua-Programmen in TEX-Dokumenten erlaubt – enthalten in Ubuntu 17.10 + 18.04 LTS Bionic – vom 04. Juni 2017 + 26. April 2018;
2019: mit Lua 5.3 in 2019 in Ubuntu 18.10+19.04 [beide als dev/Debian+19.10 [nun final, d.h. TeX Live 2019/Debian] – vom 29. April 2019;
2020: geplant am 10. April 2020, d.h. wohl erst in Xubuntu 20.10 STS enthalten.

Ein erster Start ...

Analog zu den Hello World!-Programmen hier ein einfach gehaltenes, aber nicht zu triviales LATEX-Dokument, wenn man mit TEX / LATEX noch nie gearbeitet hat:

% ************************************************************************
% *  Author: JMB,  ............... Volle Adresse ......................  *
% ************************************************************************
% ************************  Hello_World_JMB.tex  *************************
% ************************************************************************
% ***  Erste Fassung: 24.08.2017  *****  Letzte Aenderung: 26.08.2017  ***
% ************************************************************************
%
% * Linux-Kommandozeilenbefehle zum Erstellen eines PDFs:
%    latex -interaction=nonstopmode Hello_World_JMB     % (1) TEX -> DVI
%    dvips Hello_World_JMB.dvi -o Hello_World_JMB.ps    % (2) DVI -> PS
%    ps2pdfwr Hello_World_JMB.ps Hello_World_JMB.pdf    % (3) PS  -> PDF
%
\documentclass[12pt,twoside,a4paper]{article}
%
% * Nutzen von Eigenheiten der Deutschen Sprache:
\usepackage{german}
%
% * Definition des europaeischen Waehrungssymbols:
\usepackage[official,right]{eurosym}
%
% * Festlegen der Seitenparameter:
\textHEIGHT25.5cm       % Texthoehe -  Din A4 maximal: 29.7cm (27.5cm ohne SZ)
\textwidth17.9cm        % Textbreite - Din A4 maximal: 20.9cm
\topmargin-1.1cm        % Obiger Rand
\oddsidemargin-1.00cm   % Linker Rand bei ungeradzahligen Seiten
\evensidemargin-1.00cm  % Linker Rand bei Geradzahligen Seiten
%
% * Allgemeine Workarounds zu LaTeX2e bzgl. Zeichensatz-Problemen:
\tolerance800
\emergencystretch2em
\doublehyphendemerits5000
\hfuzz0pt
\leftskip0pt minus 1pt
\rightskip0pt minus 1pt
%
% * Einige nuetzliche Definitionen von JMB:
\newcommand{\normfont}{\rmfamily \upshape}
\newcommand{\allnormfont}{\rmfamily \mdseries \upshape}
\newcommand{\fntsep}{\vspace*{-0.08cm}}
%
\begin{document}
%
% ***********************************************************************
% *****************************  Seite  01  *****************************
% ***********************************************************************
\thispagestyle{plain}   % Seitenzahl erscheint auf aktueller Seite
%\thispagestyle{empty}  % Seitenzahl erscheint nicht auf aktueller Seite
\setcounter{page}{1}    % Setzen der aktuellen Seitenzahl
%\vspace*{-2.55cm}

\noindent % * Unterdruecken des Einrueckens trotz fuehrender freier Zeile.
\centerline{\Large \scshape Hello World$\,$!}\\[1.2cm]
$E=m \cdot c^2$~-- {\TeX} ist Spezialist f\"ur Formeln ... und
kann noch viel mehr ... z.B. Schaltskizzen, Grafiken, 3-D-Spielereien,
Plots, Norm-Briefe, B\"ucher inkl. Einbindung von Bildern, automatischer
Nummerierung {\small (Abb., Tab., Gleichungen, Seiten und Variabler
mit Berechnungen {\footnotesize \{z.B. f\"ur Seitenverweise bzw. Anzahl
aller Tabellen etc.\}})} ...
hier nur ein paar wenige Einstiegsbeispiele.

Hierzu gibt es viele B\"ucher, Wikis und eine F\"ulle von online
zug\"anglicher Dokumentation, die alle Aspekte abdecken, inkl.
FAQ-Sammlungen. Hier noch eine simple Tabelle:

\noindent % * Unterdruecken des Einrueckens trotz fuehrender freier Zeile.
\begin{tabular}{l|l}  % * Tabellenstart mit zwei linksbuendigen Spalten.
Ware        & Preis\\
\hline
Artikel 1   & \EUR{0,00}\\
2. Artikel  & \EUR{9,99}\\
\hline
\multicolumn{2}{l}{\footnotesize
Alle Preisangaben inkl. 19\% MwSt., \fntsep}\\
\multicolumn{2}{l}{\footnotesize
ebenso inkl. Porto und Verpackung.}
\end{tabular}         % * Tabellenende
\\[0.25cm]  % * Neue Zeile mit zusaetzlichem Abstand
{\bfseries Have fun!}
%
\end{document}
Alles, was nach "\end{document}" kommt, wird ignoriert ... ist also so wie
ein Kommentar, nur dass man die %-Zeichen nicht mehr benoetigt.
% ************************************************************************
% ************************************************************************
% ************************************************************************

[[PDF-Icon] Öffnen des Printerzeugnisses Hello_World_JMB.pdf in neuem Browser-Tab]
[[ASCII-Icon] Öffnen der Quelltextdatei Hello_World_JMB.tex in neuem Browser-Tab]

Zur Erklärung:
  1. Eine *.tex-Datei heißt (LA-) TEX-Quelle, die (Zwischen-) Ausgaben in Form einer
    *.dvi-Datei (DVI: device independent; für dieses Standard-Ausgabeformat von TEX gibt es Betrachtungsprogramme {Viewer; z.B. xdvi}, heute aber eher nur als Zwischenstufe ohne direkte Verwendung in Gebrauch),
    *.ps-Datei (PS: PostScript; Seitenbeschreibungssprache für professionelle Drucker und Belichter ohne verlustbehaftete Kompression; für PSTricks ist dieses Format zwingend in der Kette nötig {PS wurde wie die graphische Benutzeroberfläche [GUI], die Maus oder der LASER-Drucker in Xeorx PARC entwickelt}),
    *.pdf-Datei (PDF: Portable Document Format; von Adobe auf PS-Grundlage entwickelt, auf Grund der Kompression ein praktisches, semi-professionelles Austauschformat mit riesiger Verbreitung) bezeichne ich im Folgenden als Druckerzeugnis, auch wenn es am Bildschirm betrachtet oder projiziert werden soll.
    Unter einem 🐧Debian-Derivat mit installiertem TEX Live-System kann man alles mit einem Kommando übersetzen lassen (d.h. alle Druckerzeugnis-Dateien werden generiert):
    latex -interaction=nonstopmode Hello_World_JMB; dvips Hello_World_JMB.dvi -o Hello_World_JMB.ps; ps2pdfwr Hello_World_JMB.ps Hello_World_JMB.pdf.
  2. Alles nach einem Prozentzeichen ohne führenden Backspace (d.h. %; nicht aber \%, was im Druck wirklich als Prozentzeichen erscheint: dies gilt z.B. auch für \$, \{ und \}) bis zum Zeilenende kann gelöscht werden, ohne dass sich das Druckerzeugnis ändern würde. Das Prozentzeichen ist somit für Kommentare reserviert.
  3. Der Backslash (\) kennzeichnet Befehle, die man über \newcommand{}{} auch selbst definieren kann (bzw. mit \renewcommand{}{} umdefiniert werden).
    Befehle gelten innerhalb der aktuellen Umgebung, die man durch geschweifte Klammern { } einschränken kann.
    Komplexere Befehle werden mit \begin{} und \end{} eingefasst, wie z.B. bei Tabellen (tabular) oder Unterseiten (minipage) der Fall.
    Speziell ist noch der Mathematikmodus, der mit dem Dollarzeichen $ beginnt und auch wieder endet.
  4. Nach Punkt 2 beginnt unser Dokument also mit documentclass, das mit den Parametern eine Schrift in Briefgröße von 12pt, doppelseitigen Einsatz und das Papierformat A4-hochkant (d.h. portrait – im Gegensatz zum Querformat mit landscape) vorgibt. Das Papierformat A4 sollte auf diese Weise vorgegeben werden, da die LATEX-Übersetzer die Defaults im TEX Live-System ggf. ignorieren und ansonsten das Papierformat Letter vorgeben. Neben article, das ich auch für große Bücher verwende, ist z.B. powerdot für Präsentationen sinnvoll, dann natürlich mit anderen Optionen (z.B. muss das Layout mit style=... vorgegeben werden).
  5. Der Befehl \usepackage{} bindet weitere Pakete mit Konstanten- und Befehlsdefinitionen ein – hier mit germany eine Sprachvorgabe (z.B. bzgl. der Trennungs-Regeln oder Umlaute) oder mit eurosym das EUR-Symbol (\EUR{9,99}: 99 €). Es gibt sehr viele Pakete, u.a. zum Einbinden von PS-Bildern (graphics oder seine Erweiterung graphicx), bzgl. variantenreichem Unterstreichen (ulem), für weitere Symbole (marvosym), zur Verwendung von Farbe (color), für eine genauere Wahl des Papierformats (geometry), PostScript‑Spielereien (pstricks) und vieles mehr ...
  6. Setzen von Konstanten auf speziell gewünschte Werte (hier für Seiten-Format und Font-Handling), so dass ein jeweiliges Anpassen schnell vonstatten gehen kann.
  7. Mit \begin{document} startet die eigentliche Ausgabe, d.h. die Gestaltung der ersten Seite.
    Zunächst eine Textpassage, dann eine Tabelle und zum Abschluss eine Zeile in Fettdruck (\bfseries – der Default wäre \mdseries; daneben gibt es kursiv über \itshape (neben \slshape und \scshape)  und mit aufrechten Ligaturen der Default \upshape; und ebenso Schreibmaschinenschrift \ttfamily  und der Default \rmfamily).
    Mit \end{document} endet die Ausgabe, d.h. alles nach diesem Befehl wird als Kommentar interpretiert und ändert den Druck nicht.
  8. Manche Fehler sind nicht leicht zu finden – hier hilft ein Auskommentieren problematischer Zeilen, bis kein Fehler mehr gemeldet wird, und sukzessives Dekommentieren, bis der Fehler wieder da ist. Entsprechend kann mit \end{document} das danach Kommende ausgeblendet werden.
    Auf diese Weise lassen sich auch hartnäckige Fehler identifizieren.
Beispiele der Fähigkeiten von TEX / LATEX sind auf meiner 📋PDF-Downloads-Seite zu finden.

... und Möglichkeiten der Erweiterung

Einsatz von Mathematischen Formeln

Soll in einer Textzeile (z.B. direkt nach der 42. Zeile im obigen Hello_World_JMB.tex) eine kleine Formel oder mathematische Angabe stehen, so ist diese in Dollarzeichen einzubinden (das Dollarzeichen ist mit {\$} im Text zu erzeugen). Ein sehr einfaches Beispiel wäre:
Die Fl\"ache eines Quadrats mit Seitenl\"ange $a$ ist $A = a^2$.
Als weitere Quellen sei für den Anfang auf:
[PDF-Icon] Mathematischer Satz mit LATEX,
[PDF-Icon] Mathematik mit LATEX
verwiesen.

Nutzung der Zeichensätze ZapfDingbats und MarVoSym sowie Einsatz weiterer Zeichensatz-Pakete

Der folgende Codeschnipsel zur Einbindung des ZapfDingbats-Fonts könnte z.B. in Hello_World_JMB.tex nach der 21. Zeile eingearbeitet und dann im Hauptteil über z.B. {\datachar} im Text als Zeichen  verwendet werden (vgl. ZapfDingbats-Block meines 🌐WWW-Manuals, da ZapfDingbats im Unicode enthalten und somit in HTML aufrufbar ist – hier mit ✇):

%% ************************************************************************
%%... hier steht sonst der Start mit documentclass, Kommentaren etc. ...
\usepackage{pifont}
% ... Einbinden des Pakets zur Nutzung des ZapfDingbats-Symbol-Fonts
%% ... hier weitere "usepackage"-Aufrufe ...
%%
% * Definitionen für Sonderzeichen aus einem PS-Font (über pifont):
\newcommand{\uscissorchar}{\ding{33}}
\newcommand{\scissorchar}{\ding{34}}
\newcommand{\lscissorchar}{\mbox{$_{_{\mbox{\ding{35}}}}$}}
%\newcommand{\lscissorchar}{\ding{35}}
\newcommand{\dscissorchar}{\ding{36}}
\newcommand{\phonechar}{\ding{37}}
\newcommand{\circphonechar}{\ding{38}}
\newcommand{\datachar}{\ding{39}}
\newcommand{\planechar}{\ding{40}}
\newcommand{\envelopechar}{\ding{41}}
\newcommand{\bphandchar}{\ding{42}}
\newcommand{\phandchar}{\ding{43}}
\newcommand{\victchar}{\ding{44}}
\newcommand{\whandchar}{\ding{45}}
\newcommand{\rdpencilchar}{\ding{46}}
\newcommand{\rpencilchar}{\ding{47}}
\newcommand{\rupencilchar}{\ding{48}}
\newcommand{\symhookchar}{\ding{51}}
\newcommand{\symhookbchar}{\ding{52}}
\newcommand{\symcrosschar}{\ding{53}}
\newcommand{\symcrosstchar}{\ding{54}}
\newcommand{\symcrossmchar}{\ding{55}}
\newcommand{\symcrossbchar}{\ding{56}}
\newcommand{\symcrossbl}{\ding{61}}
\newcommand{\symwhitecrosschar}{\ding{62}}
\newcommand{\starfchar}{\ding{73}}   % filigran
\newcommand{\starchardpent}{\ding{78}}
\newcommand{\starcharpent}{\ding{79}}
\newcommand{\starshadow}{\ding{80}}
\newcommand{\starchar}{\ding{85}}
\newcommand{\circstarchar}{\ding{89}}
\newcommand{\raystarchar}{\ding{90}}
\newcommand{\fcteardropast}{\ding{91}}
\newcommand{\octeardropast}{\ding{92}}
\newcommand{\frostchar}{\ding{93}}
\newcommand{\mcdotchar}{\raisebox{0pt}[0pt][0pt]{\raisebox{0.30ex}{\mbox{$\;$\tiny \ding{93}$\;\,\,$}}}}
\newcommand{\darkflowerchar}{\ding{95}}
\newcommand{\flowerchar}{\ding{96}}
\newcommand{\snowflakedchar}{\ding{99}}
\newcommand{\fullcircchar}{\ding{108}}
\newcommand{\opencircchar}{\ding{109}}
\newcommand{\whiteboxchar}{\hspace*{-0.68cm}\bfseries\Box}
\newcommand{\blackboxchar}{\ding{110}}
\newcommand{\downshadowboxchar}{\ding{111}}
\newcommand{\upshadowboxchar}{\ding{112}}
\newcommand{\downtshadowboxchar}{\ding{113}}
\newcommand{\uptshadowboxchar}{\ding{114}}
\newcommand{\frsquarechar}{\ding{117}}
\newcommand{\heartexcl}{\ding{163}}
\newcommand{\psheart}{\ding{164}}
\newcommand{\circone}{\ding{172}}
\newcommand{\circtwo}{\ding{173}}
\newcommand{\circthree}{\ding{174}}
\newcommand{\circfour}{\ding{175}}
\newcommand{\circfive}{\ding{176}}
\newcommand{\circsix}{\ding{177}}
\newcommand{\circseven}{\ding{178}}
\newcommand{\circeight}{\ding{179}}
\newcommand{\circnine}{\ding{180}}
\newcommand{\circzero}{\ding{181}}
\newcommand{\circoneinv}{\ding{182}}
\newcommand{\circtwoinv}{\ding{183}}
\newcommand{\circthreeinv}{\ding{184}}
\newcommand{\circfourinv}{\ding{185}}
\newcommand{\circfiveinv}{\ding{186}}
\newcommand{\circsixinv}{\ding{187}}
\newcommand{\circseveninv}{\ding{188}}
\newcommand{\circeightinv}{\ding{189}}
\newcommand{\circnineinv}{\ding{190}}
\newcommand{\circzeroinv}{\ding{191}}
\newcommand{\arrowdrf}{\ding{216}}
\newcommand{\rightpsarrow}{\ding{217}}
\newcommand{\uppsarrow}{\ding{218}}
\newcommand{\bigrightroundarrow}{\ding{220}}
\newcommand{\downrightleadstochar}{\ding{221}}
\newcommand{\leadstochar}{\ding{223}}
\newcommand{\arrowcnb}{\ding{226}}
\newcommand{\arrowcna}{\ding{227}}
\newcommand{\psarrowfromup}{\ding{229}}
\newcommand{\psarrowfromdown}{\ding{230}}
\newcommand{\arrowdru}{\ding{233}}
\newcommand{\arrowdld}{\ding{234}}
\newcommand{\arrowdlt}{\ding{235}}
\newcommand{\arrowdut}{\ding{236}}
\newcommand{\arrowdln}{\ding{237}}
\newcommand{\arrowdun}{\ding{238}}
\newcommand{\arrowbdd}{\ding{239}}
\newcommand{\arrowbud}{\ding{241}}
\newcommand{\circarrow}{\ding{242}}
%% ... hier weitere Definitionen und das eigentliche Dokument ...
%% ************************************************************************

Dieses Zusatz-Beispiel kann so leicht in das obige Start-Beispiel oder in eigene Dateien integriert werden.
Einen Überblick über alle Zeichen des ZapfDinbats-Fonts können neben dem ZapfDingbats-Block meines 🌐WWW-Manuals auch die folgenden drei PDF-Dateien vermittelt:
[PDF-Icon] ZapfDingbats-Font für LATEX-Dokumente wie oben beschrieben geeignet und
[PDF-Icon] ZapfDingbats-Unicode-Block für HTML geeignet (vgl. mein 🌐WWW-Manual).

Ein anderes Beispiel, an bestimmte Sonderzeichen zu kommen, ist das MarVoSym Schrift-Pakets.
Dies wird analog zum obigen \usepackage{pifont} eingebunden:
     \usepackage{marvosym}
und ermöglicht einige interessante neue Symbole wie:
\Smiley, \Frowny, \Lightning, \Mobilefone, \Telefon, \ComputerMouse, \Keyboard, \Printer, \Mundus, \Email etc.
Einen Überblick über alle Zeichen des MarVoSym Schrift-Pakets ermöglicht die folgende PDF-Datei:
[PDF-Icon] MarVoSym.

Einen generellen Überblick an verfügbaren Sonderzeichen und Symbolen unter LATEX mit Hinweis auf die Paket-Einbindung bzw. die Zugehörigkeit zum Standardumfang liefert das sehr nützliche PDF:
[PDF-Icon] Die umfassende LATEX-Symbol-Liste.

Empfehlungen  zum Einarbeiten in und Nachschlagen zu TEX/LATEX


Persönlicher Hintergrund

Der Autor verwendet TEX/LATEX seit 1992 – zunächst als emTEX von Eberhard Mattes unter DOS (installiert über einen 3.5" Diskettenberg im ersten Jahr an der Uni), dann als teTEX (1994-05/2006; von Thomas Esser) unter 🐧GNU/Linux, das dann durch TEX Live (verfügbar seit 1996) unter GNU/Linux abgelöst wurde. Debian und deren Derivate haben immer eine aktuelle TEX-Distribution an Bord (d.h. in deren Repositories), was andere nicht aufweisen.
Es gibt schon länger auch WYSIWYG‑Editore, die per Maus bedient werden können und sofort das Druckresultat zeigen (eben What You See Is What You Get).
Ich verwende aber immer noch den Editor vim (mittlerweile in Version 8.2; für Unix-Admins ist vi/vim Pflicht – nicht Einsteiger-freundlich, aber für Fortgeschrittene empfehlenswert und für Experten extrem effizient; aktuellste Fassung via PPA; vgl. auch Bemerkung zu 💾Programmier‑Editoren) und code die LATEX- und gelegentlichen TEX‑Anweisungen selbst, ähnlich wie bei einer Programmiersprache.
Im mathematisch-naturwissenschaftlichen Bereich wird man kaum um die Nutzung von TEX/LATEX herumkommen, das insbesondere von allen namhaften Fachpublikationen gefordert wird (als Beispiel der [PDF-Icon] A&A Author's Guide (06/2018), der Europäischen Fachzeitschrift für 🔭Astronomie & Astrophysik).
Bei Fragen / Problemen mit dieser Seite bzw. meiner Webpräsenz kontaktieren Sie mich bitte:
      E-Mail:  📧jmb@jmb-edu.de
© 1992-2020 JMB           Bitte beachten Sie hierzu auch mein 📄Impressum.                   W3C: Valid HTML 4.01 Transitional
[Zurück zur 🏁Startseite]
Erste Fassung:24. Juni 2017
Letzte Änderung: 01. Januar 2020