Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

(La)TeX Kontrollstrukturen?

4 views
Skip to first unread message

Robert Hartmann

unread,
Oct 13, 2009, 7:01:41 AM10/13/09
to
Hallo zusammen,

kann mir bitte jemand eine
Literaturempfehlung geben,
in der die Syntax von
TeX _und_ LaTeX Kontrollstrukturen
aufgezeigt und ᅵbersichtlich
die Grundbefehle zur Package-Programmierung
aufbereitet sind.

Diese Dokumente sind irgendwie nicht von der Art,
die ich suche - auch wenn sie doch zum Nachschlagen
geeignet sind.

# TeX by topic - a TeXnican's reference
http://www.cs.utk.edu/~eijkhout/texbytopic-a4.pdf

# The computer science of TeX and LaTeX
http://www.cs.utk.edu/~eijkhout/594-LaTeX/handouts/TeX%20LaTeX%20course.pdf

# Programmieren mit LaTeX
http://www.matthiaspospiech.de/blog/2008/04/13/latex-variablen-if-abfragen-und-schleifen


Danke,
Gruᅵ Robert

Christoph Bier

unread,
Oct 13, 2009, 12:45:56 PM10/13/09
to
Robert Hartmann schrieb am 13.10.2009 13:01:

> Hallo zusammen,
>
> kann mir bitte jemand eine
> Literaturempfehlung geben,
> in der die Syntax von
> TeX _und_ LaTeX Kontrollstrukturen
> aufgezeigt und ᅵbersichtlich
> die Grundbefehle zur Package-Programmierung
> aufbereitet sind.
>
> Diese Dokumente sind irgendwie nicht von der Art,
> die ich suche - auch wenn sie doch zum Nachschlagen
> geeignet sind.

[...]

source2e.pdf wird auch immer noch genannt.

Ich behaupte, es gibt ein solches Dokument nicht. Vor Jahren hatte
ich mich schon auf die Suche gemacht, hier nachgefragt, mich mit
Markus Kohm privat ausgetauscht. Irgendwann habe ich es aufgegeben.
LaTeX-Programmierung ist literaturmᅵᅵig nicht ansatzweise so gut
abgedeckt wie das Schreiben von Texten mit/in LaTeX. Es gibt weder
etwas wirklich Anfᅵngerfreundliches noch gibt es so etwas in
deutscher Sprache. Fᅵr Programmierer sind die Einstiegshᅵrden
wahrscheinlich leichter zu nehmen. Fᅵr einen LaTeX-Nutzer, der ᅵnurᅵ
ein eigenes Paket oder eine eigene Klasse schreiben mᅵchte, ohne
Programmiererfahrung sind die Hᅵrden nur mit *sehr* viel Aufwand zu
nehmen. YMMV.

Grᅵᅵe
Christoph
--
(La)TeX-FAQ: http://www.dante.de/faq/ +++ Minimalbeispiel erstellen
und Einfᅵhrung in de.comp.text.tex: http://www.latex-einfuehrung.de/
+++ Veraltete Befehle, Pakete und andere Fehler:
ftp://ftp.dante.de/tex-archive/info/l2tabu/german/l2tabu.pdf
+++ Typografie-Regeln (1.7): http://zvisionwelt.de/?page_id=56

Robert Hartmann

unread,
Oct 13, 2009, 3:41:36 PM10/13/09
to
Christoph Bier schrieb:

> Robert Hartmann schrieb am 13.10.2009 13:01:
>
>> Hallo zusammen,
>>
>> kann mir bitte jemand eine
>> Literaturempfehlung geben,
>> in der die Syntax von
>> TeX _und_ LaTeX Kontrollstrukturen
>> aufgezeigt und ᅵbersichtlich
>> die Grundbefehle zur Package-Programmierung
>> aufbereitet sind.
>>
>> Diese Dokumente sind irgendwie nicht von der Art,
>> die ich suche - auch wenn sie doch zum Nachschlagen
>> geeignet sind.
>
> [...]
>
> source2e.pdf wird auch immer noch genannt.
>
> Ich behaupte, es gibt ein solches Dokument nicht. Vor Jahren hatte
> ich mich schon auf die Suche gemacht, hier nachgefragt, mich mit
> Markus Kohm privat ausgetauscht. Irgendwann habe ich es aufgegeben.

Schade.


> LaTeX-Programmierung ist literaturmᅵᅵig nicht ansatzweise so gut
> abgedeckt wie das Schreiben von Texten mit/in LaTeX. Es gibt weder
> etwas wirklich Anfᅵngerfreundliches noch gibt es so etwas in
> deutscher Sprache.

Mhm ...

> Fᅵr Programmierer sind die Einstiegshᅵrden wahrscheinlich leichter zu nehmen.

Wahrscheinlich ist es von Vorteil, wenn man in mindestens _einem_
Programmierparadigma "zuhause" ist.

Aber selbst wenn man C und C++ programmieren kann, sowie Kenntnisse mit
Java und ein wenig in Scheme, Prolog und einem Assembler programmiert
hat, so braucht man doch irgendwie eine ᅵbersicht ᅵber die Grundlegenden
Befehle und die Syntax von Kontrollstrukturen - ohne sowas ist doch jede
Idee zum Scheitern verurteilt.

> Fᅵr einen LaTeX-Nutzer, der ᅵnurᅵ
> ein eigenes Paket oder eine eigene Klasse schreiben mᅵchte, ohne
> Programmiererfahrung sind die Hᅵrden nur mit *sehr* viel Aufwand zu
> nehmen. YMMV.

Wᅵre es nicht ein interessantes dctt-Projekt eine entsprechende
Hilfe in Form von Dokumenten wie "Programmieren lernen mit TeX und
LaTeX" sowie "Programmieren in TeX und LaTeX fᅵr Programmierer"
zu erarbeiten.

Es gibt doch bestimmt den einen oder anderen deutschsprachigen
Package-Author, die oder der bei so einem Projekt helfenderweise
teilnehmen wᅵrde?

Gruᅵ Robert

Andreas Matthias

unread,
Oct 13, 2009, 5:10:32 PM10/13/09
to
Robert Hartmann wrote:

> Christoph Bier schrieb:


>
>> Fᅵr Programmierer sind die Einstiegshᅵrden wahrscheinlich leichter zu
>> nehmen.

... wobei leichter weiter von leicht entfernt ist, als man hier
vermuten kᅵnnte. Der Vorsprung fᅵr Programmierer dᅵrfte gering
sein.

> Wahrscheinlich ist es von Vorteil, wenn man in mindestens _einem_
> Programmierparadigma "zuhause" ist.

TeX kennt kein Paradigma. Es ist eine Welt fᅵr sich. Keiner
der gerne TeX programmiert hat es nicht auch schon verflucht.

> Aber selbst wenn man C und C++ programmieren kann, sowie Kenntnisse mit
> Java und ein wenig in Scheme, Prolog und einem Assembler programmiert hat,
> so braucht man doch irgendwie eine ᅵbersicht ᅵber die Grundlegenden
> Befehle und die Syntax von Kontrollstrukturen - ohne sowas ist doch jede
> Idee zum Scheitern verurteilt.

Fᅵr einfache Sachen reicht der clsguide. Wenn man mehr will, muss
man sich source2e ansehen. Das Problem dabei: Um source2e zu
verstehen, sollte man TeX kᅵnnen.

> Wᅵre es nicht ein interessantes dctt-Projekt eine entsprechende
> Hilfe in Form von Dokumenten wie "Programmieren lernen mit TeX und LaTeX"
> sowie "Programmieren in TeX und LaTeX fᅵr Programmierer"
> zu erarbeiten.

TeX ist ein Luder. Es einfach und schnell zu erklᅵren, erfordert
alle Hᅵrden wegzulassen, ᅵber die man dann zielsicher sehr bald
stolpern wᅵrde. TeX ist eben TeX.

Man kommt eigentlich nicht an TeXbook oder TeX by topics vorbei.
Kᅵrzer und schneller geht es nicht. Verstᅵndlicher und damit
umfangreicher vielleicht schon. Aber wer will das dann noch
lesen? Den meisten sind doch schon diese zwei Bᅵcher zu viel.


Ciao
Andreas

ps: TeXbook und TeX by topics sind sehr lesenswert.

Rolf Niepraschk

unread,
Oct 14, 2009, 2:47:32 AM10/14/09
to
Andreas Matthias schrieb:
...

>
> Man kommt eigentlich nicht an TeXbook oder TeX by topics vorbei.
> Kürzer und schneller geht es nicht. Verständlicher und damit

> umfangreicher vielleicht schon. Aber wer will das dann noch
> lesen? Den meisten sind doch schon diese zwei Bücher zu viel.
>
Zusätzlich dazu (manchmal auch anstatt) kann man empfehlen, sich fertige
LaTeX-Software anzusehen, um zu lernen, wie Probleme dort gelöst werden.
Es bieten sich "latex.ltx" und Pakete von guten TeX-Programmierern an.
Darüber hinaus ist natürlich auch die Suche in news-group-Artikeln der
Vergangenheit gewinnbringend.

...Rolf

Heinrich Wolf

unread,
Oct 14, 2009, 11:08:34 AM10/14/09
to
Robert Hartmann <Robert_...@gmx.net> writes:

> Christoph Bier schrieb:
>> F -b�r Programmierer sind die Einstiegsh�rden wahrscheinlich leichter -A


>> zu nehmen.
>
> Wahrscheinlich ist es von Vorteil, wenn man in mindestens _einem_
> Programmierparadigma "zuhause" ist.
>
> Aber selbst wenn man C und C++ programmieren kann, sowie Kenntnisse mit
> Java und ein wenig in Scheme, Prolog und einem Assembler programmiert

> hat, so braucht man doch irgendwie eine -b�bersicht �ber die -A


> Grundlegenden
> Befehle und die Syntax von Kontrollstrukturen - ohne sowas ist doch jede
> Idee zum Scheitern verurteilt.

Damit sprichst Du wohl --- unbewu�t --- Dein Hauptproblem aus: Du
m�chtest TeX unter Verwendung der Begriffe verstehen, welche Du aus
anderen Sprachen kennst. Aber TeX ist ein Ding f�r sich.

[Scheme ist allerdings wirklich n�tzlich. Wie sollte es auch anders
sein, denn in Scheme begegnet man Grundideen der Programmierung fast
in Reinform, welche gelten �ber jede Syntax hinweg und genauso wenig
veralten k�nnen wie etwa das Infinitesimalkak�l.]

Wir m�ssen zwei Dinge unterscheiden: LaTeX und TeX. TeX, genauer
``plain TeX'', ist Knuths urspr�ngliches System. Dieses besteht aus
einem typographischen Prozessor, welcher etwa 300 Primitiven ---
typographischer Assembler --- kennt, sowie einem Makropaket mit etwa
400 Makros, welches die Nutzung dieser Primitiven etwas angenehmer
machen soll.

LaTeX verwendet ebenfalls Knuths Prozessor (samt Makroeinrichtung)
aber h�llt diesen Prozessor in eigene Makropakete ein, welche mit
beschr�nktem Erfolg versuchen, sich so zu benehmen, wie der mit
C/Pascal .... Prozeduren vertraute Nutzer erwartet. Zu LaTeX will ich
mich nicht weiter �ussern.

Da Du Scheme und Prolog genannt hast --- ich habe nicht-triviale
Projekte in Beiden durchgef�hrt --- m�chte ich Dir skizzieren, wie ich
einen Scheme-Kundigen in TeX einf�hren w�rde.

Zun�chst sind da die Primitiven. Diese kann man in zwei Gruppen
einteilen: Solche welche zur Steuerung des Prozessors selbst dienen
und dann die typographische Operationen --- typographischer Assembler.
Um zweite ``in den Kopf zu bringen'' mu� man vorallem die
Aufgabenstellungen an den Typographen kennen; das ist die
``fachliche'' Seite, wie man bei Softwareprojekten sagt.

[Neben Knuths Texbook (TTB) finde ich ``TeX for the Impatient'' n�tzlich um
diese Primitiven zu �berblicken.]

Wer Scheme kennt, kennt wohl auch SICP (Abelson & Sussman) und war
hoffentlich fasziniert von dem pr�zisen Ausf�hrungsmodell von Scheme,
welches es erm�glicht, die Grunz�ge der Sprache in wenigen Minuten,
h�chstens Stunden, zu verstehen.

TeX hat eine wesentlich kompliziertere Syntax als Scheme und es gibt
Bereiche, f�r welche ich kein �berschaubares Ausf�hrungsmodell kenne:
TeX (der typographische Prozessor) funktioniert dort eben so wie er
funktioniert. Man kann sich aus diesem ``verminten Gel�nde'' fast
immer heraushalten. Mein Ausf�hrungsmodell f�r die Masse steht unten.

Du kannst die Syntax von TeX mitten im Dokument ver�ndern; wir kennen
das ja auch aus Lisp wo man schon einmal den Reader �ndert. Bei TeX
geht es hier um \catcode und seine Freunde; siehe TTB.

Der Makromechanismus von TeX ist den Lisp Makros entfernt �hnlich;
zumindest ist er keine idiotische Stringsubstitution wie in C. Die
Syntax der Makroargumente, wie sie durch den Parametertext festgelegt
wird, zu verstehen ist von zentraler Bedeutung; siehe TTB.

Ich stelle mir TeX immer als drei Teile vor, welche in einer
Pfeifenleitung zusammenh�ngen: Scanner, Makroexpander und ``Kern''.
Vom Scanner zum Makroexpander l�uft ein Tokenstream. Der
Makroexpander arbeitet auf diesem �hnlich wie eine Stackmaschine.
Falls der erste Token expandierbar ist (ein Makro) wird dieses
expandiert. Das bedeutet, da� entsprechend dem Parametertext des
Makros nachfolgende Tokens als Argumente erfasst werden; diese werden
dann in die Tokenliste aus der Makrodefinition eingef�gt _und die so
erhalten Tokenliste an den Anfang des Tokenstreams gestellt_
(eingesplei�t).

Hier sehe ich die Analogie zur Stackmaschine: der Makroexpander liest
nicht nur vom Tokenstream sonder legt auch das Ergebnis der
Makroexpansion --- zu vergleichen mit der Bindung freier Variablen ---
an den Anfang des Tokenstreams (Push). Und dann beginnt das Spiel von
neuem: der Makroexpander schaut sich den ersten Token an ...

Was passiert mit nicht-expandierbaren Tokens am Anfang des
Tokenstreams? Ganz einfach: die wandern in den ``Kern'' und bewirken
dort etwas (oder im Fall von \relax nichts). Wennn es sich um
Schriftzeichen handelt gehen sie in den DVI file. Wenn es sich um
Primitiven handelt werden diese vom Kern ausgef�rt. Das kann
ebenfalls zu Output nach DVI f�hren aber auch zu �nderung des Zustands
von Scanner, Makroexpander oder Kern. Zum Beispiel kann man die
syntaktischen Klassen der Schriftzeichen (catcodes) ver�ndern. Wenn
dann der Vorrat im Tokenstream aufgebraucht ist und der n�chste Token
gelesen wird, kann sich das bemerkbar machen. Eher nicht ...

Die Primitiven k�nnen auch Argumente vom Tokenstream nehmen und dabei
k�nnen andere Regeln gelten, wie bei Makroargumenten; auch dies h�lt
versierte TeX Nutzer fit ...

>
> W -b�re es nicht ein interessantes dctt-Projekt eine entsprechende -A


> Hilfe in Form von Dokumenten wie "Programmieren lernen mit TeX und

> LaTeX" sowie "Programmieren in TeX und LaTeX f -b�r Programmierer" -A
> zu erarbeiten.

Hast Du diese Frage noch? Viel interessanter finde ich die Frage,
warum die LaTeX-, Texinfo-, ... Leute die Makromaschinerie von TeX
``mi�brauchen'' um Interpreter zu schreiben an statt einen Compiler
der TeX Primitiven erzeugt --- in einer hierf�r geeigneten
Hochsprache.

--
hw

David Kastrup

unread,
Oct 14, 2009, 11:56:41 AM10/14/09
to
Heinrich Wolf <mu...@hemedarwa.de> writes:

> Robert Hartmann <Robert_...@gmx.net> writes:
>
>> Christoph Bier schrieb:

>>> F�r Programmierer sind die Einstiegsh�rden wahrscheinlich leichter


>>> zu nehmen.
>>
>> Wahrscheinlich ist es von Vorteil, wenn man in mindestens _einem_
>> Programmierparadigma "zuhause" ist.
>>
>> Aber selbst wenn man C und C++ programmieren kann, sowie Kenntnisse
>> mit Java und ein wenig in Scheme, Prolog und einem Assembler

>> programmiert hat, so braucht man doch irgendwie eine �bersicht �ber
>> die Grundlegenden Befehle und die Syntax von Kontrollstrukturen -


>> ohne sowas ist doch jede Idee zum Scheitern verurteilt.
>
> Damit sprichst Du wohl --- unbewu�t --- Dein Hauptproblem aus: Du
> m�chtest TeX unter Verwendung der Begriffe verstehen, welche Du aus
> anderen Sprachen kennst. Aber TeX ist ein Ding f�r sich.

Stell Dir eine Programmiersprache vor, die Variablen nur zuweisen, aber
nicht abfragen kann. Die hat aber eine Schnittstelle zu m4, einem
Makropreprozessor, der lesenden Zugriff auf die Variablen hat. Und
Kontrollstrukturen, mit denen man Dinge durchlassen kann oder auch
nicht. Und die Programmiersprache hat auch schreibenden Zugriff auf m4
in einigen Bereichen und kann die Syntax �ndern.

So ist TeX, nur schlimmer. Mit Syntax von Kontrollstrukturen bist Du
zum Scheitern verurteilt, weil die Kontrollstrukturen ja nur in m4
existieren, der gar nicht Dein eigentliches System ist. Eine Syntax f�r
die ausf�hrende Sprache kann man definieren (gibt es auch im TeXbook),
aber die ist so ein wenig akademisch, weil man damit alleine ohnehin
nichts programmieren kann.

> Wir m�ssen zwei Dinge unterscheiden: LaTeX und TeX. TeX, genauer
> ``plain TeX'', ist Knuths urspr�ngliches System. Dieses besteht aus
> einem typographischen Prozessor, welcher etwa 300 Primitiven ---
> typographischer Assembler --- kennt, sowie einem Makropaket mit etwa
> 400 Makros, welches die Nutzung dieser Primitiven etwas angenehmer
> machen soll.

Die unheilige Allianz von lahmem Pr�prozessor und blindem Ausf�hrer ist
schon im Programm TeX inh�rent, da braucht man gar nicht erst plain TeX
oder LaTeX.

> Der Makromechanismus von TeX ist den Lisp Makros entfernt �hnlich;

Nicht im entferntesten. Lisp Makros haben Lisp-Syntax und arbeiten auf
Listen. TeX-Makros panschen mit Tokens rum.

> zumindest ist er keine idiotische Stringsubstitution wie in C. Die
> Syntax der Makroargumente, wie sie durch den Parametertext festgelegt
> wird, zu verstehen ist von zentraler Bedeutung; siehe TTB.

--
David Kastrup
de.comp.text.tex FAQ: <URL:http://www.dante.de/faq/de-tex-faq>

Martin Wilhelm Leidig

unread,
Nov 9, 2009, 3:53:09 AM11/9/09
to
> source2e.pdf wird auch immer noch genannt.
>
>Ich behaupte, es gibt ein solches Dokument nicht.

Äääh … http://www.tug.org/texlive/Contents/live/texmf-dist/doc/latex/base/source2e.pdf?

> Vor Jahren hatte ich mich schon auf die Suche gemacht

Obigen Link habe ich gerade selber als einen der ersten Einträge gefunden, noch über dem Link hierher.


-- Moss --

Christoph Bier

unread,
Nov 12, 2009, 12:59:50 PM11/12/09
to
Martin Wilhelm Leidig schrieb am 09.11.2009 09:53:

>> source2e.pdf wird auch immer noch genannt.
>>
>>Ich behaupte, es gibt ein solches Dokument nicht.
>
> Äääh … http://www.tug.org/texlive/Contents/live/texmf-dist/doc/latex/base/source2e.pdf?

So war das natürlich nicht gemeint! Die Erwähnung von source2e war
eine Ergänzung zu Roberts Liste. Natürlich gibt es source2e.pdf. Die
von Dir zitierte Behauptung bezog sich nicht auf source2e (das ich
im Übrigen schon recht häufig konsultiert habe). Daher auch die
Leerzeile als Absatzkennzeichnung zwischen den beiden Sätzen, die Du
zitierst, wovon der Zweite der Beginn eines Absatzes ist.

Ein Dokument wie es Robert sucht, gibt es IMO nicht. Darauf bezog
sich meine Behauptung.

>> Vor Jahren hatte ich mich schon auf die Suche gemacht
>
> Obigen Link habe ich gerade selber als einen der ersten Einträge gefunden, noch über dem Link hierher.

Du hast mich falsch verstanden. »texdoc source2e« reicht übrigens
völlig.

Schöne Grüße


Christoph
--
(La)TeX-FAQ: http://www.dante.de/faq/ +++ Minimalbeispiel erstellen

und Einführung in de.comp.text.tex: http://www.latex-einfuehrung.de/

Robert Hartmann

unread,
Nov 13, 2009, 4:11:38 AM11/13/09
to
Christoph Bier schrieb:
[...]

>>> Vor Jahren hatte ich mich schon auf die Suche gemacht
>> Obigen Link habe ich gerade selber als einen der ersten Einträge gefunden, noch über dem Link hierher.
>
> Du hast mich falsch verstanden. »texdoc source2e« reicht übrigens
> völlig.

Aber nur wenn entsprechendes Dokument auf der Festplatte von der
Distribution gefunden wird, oder die Distribution im anderen Fall
die Möglichkeit hat auf das Internet zuzugreifen.

Gruß Robert

Christoph Bier

unread,
Nov 17, 2009, 8:08:00 AM11/17/09
to
Robert Hartmann schrieb am 13.11.2009 10:11:

> Christoph Bier schrieb:
> [...]
>>>> Vor Jahren hatte ich mich schon auf die Suche gemacht
>>> Obigen Link habe ich gerade selber als einen der ersten Einträge gefunden, noch über dem Link hierher.
>>
>> Du hast mich falsch verstanden. »texdoc source2e« reicht übrigens
>> völlig.
>
> Aber nur wenn entsprechendes Dokument auf der Festplatte von der

> Distribution gefunden wird, [...]

source2e gehört in den base-Zweig, sollte also mit jeder
TeX-Distribution ausgeliefert werden. Und diese sollte natürlich
seine eigene Verzeichnisstruktur kennen (und source2e finden). Hast
Du andere Erfahrungen gemacht?

0 new messages