Eine umfassende Dokumentation zur Programmierung von LaTeX Klassen und Paketen gibt es leider nicht. In den Anfängen kommt man zwar mit dem LaTeX Begleiter und dem clsguide.pdf in das Thema hinein, hat dann aber nicht zum Anschließen. Häufig wird man bei dem Thema auf das TeXBook verwiesen welches TeX und PlainTeX in aller Ausführlichkeit erklärt aber ganz offensichtlich alle LaTeX Befehle auslässt die einem die Programmierung erheblich vereinfachen können bzw. notwendig zur LaTeX Klassen und Paket Programmierung sind. Im Folgenden versuche ich meine Erkenntnisse (vielleicht in einer Serie) hier darzustellen.
Für die TeX Kommandoes empfehle ich ebenfalls in diese Liste zu schauen: TeX Primitive Control Sequences.
\newcounter{mycounter}
\setcounter{mycounter}{2}
\value{mycounter}
\the
\themycounter\arabic{mycnt} % Wert von mycounter als Textstring in arabischen Ziffern \roman{mycnt} % Wert von mycounter als Textstring in römischen Ziffern
\setcounter{mycounter}{2} % mycounter = 2 \addtocounter{mycounter}{4} % mycounter = 6 \addtocounter{mycounter}{\value{othercounter}}
\stepcounter{mycounter} % Zähler um 1 inkrementieren
\newlength{\mylen} %Deklaration \setlength{\mylen}{<NeueLänge>} %Zuweisung \addtolength{\mylen}{<ZusatzLänge>} % Operator
\setlength{\mylen}{<NeueLänge>plus <P> minus <M>}
\the
\the\mylen
\newcounter{mycounter} \themycounter \newlength{\mylength} \the\mylength
\newcount\mycounter \the\mycounter \newskip\mylength \the\mylength
\settowidth welche die Länge eines Textes vermisst und in einem Längenregister speichert.
\settowidth{\mylen}{Text} % misst die Breite von "Text"
\newboolean{boolvar} %Deklaration \setboolean{boolvar}{false} %Zuweisung
\boolean{boolvar}
\ifthenelse{\boolean{boolvar}}{}{}
\advance\advance<Numerische Variable> by <Zahl>\divide\divide<Numerische Variable> by <Zahl>\multiply\multiply<Numerische Variable> by <Zahl>\if ... \else ... \fi
\ifundefined \ifnum \ifodd \ifdim \iftrue \iffalse \ifx ...
\count0 kleiner ist als 100
\ifnum\count0<100 ... \else ... \fi
% Alles TeX und kein LaTeX Code! \newcount\WertA \newcount\WertB \WertA=20 \WertB=\WertA \ifnum\WertA=\WertB Werte stimmen überein \fi
\ifdim
\newlength{\firstlen} \newlength{\secondlen} \settowidth{\firstlen}{Text} % misst die Breite von "Text" \settowidth{\secondlen}{anderer Text} % misst die Breite von "anderer Text" \ifdim\firstlen=\secondlen Werte sind gleich und haben die Länge \thefirstlen \else Werte sind ungleich \fi
\lengthtest{1pt < 2pt} was dem \ifdim entspricht.
\relax reicht dafür aus)
\ifundefined{TeX} true text \else false text \fi
\ifx. Hier ein Beispiel aus dem TeXBook
\def\a{\c} \def\b{\d} \def\c{\e} \def\d{\e} \def\e{A} \ifx\c\d wahr \fi \ifx\a\b nicht wahr \fi
The condition is true if (a) the two tokens are not macros, and they both represent the same (character code, category code) pair or the same TEX primitive or the same \font or \chardef or \countdef, etc.; or if (b) the two tokens are macros, and they both have the same status with respect to \long and \outer, and they both have the same parameters and “top level” expansion.
\equal {\Makro }{ ABC }, \and, \or, \not sowie zum Schachteln von Bedingungen die Klammern , \( und , \).
\ifcase Anweisung\ifcase\number text for case 0 \or text for case 1 \or ... \or text for case n \else text for all other cases \fi
\string\relax\g@addto@macro\g@addto@macro{\<macroname>}{<Zus. Befehle>}
\newcounter{ctra} \setcounter{ctra}{1} \whiledo {\value{ctra} < 7}% {% \thectra {\large \ding{111}}% \stepcounter {ctra}% }
\loop \ifnum\n>0 % Abbruchbedingung (\if ohne \fi) ... \repeat
\newcounter{ct} \forloop{ct}{1}{\value{ct} < 5}% {% \arabic{ct} }
Hallo Matthias,
super Seite! Vielleicht kannst Du noch im Abschnitt “Wahrheitswerte (boolean)” in die erste Zeile schreiben “Benötigt das Paket ifthen”. Da bin ich drüber gestolpert beim Ausprobieren.
Gruß,
Christof
Hallo,
super informativ.
Gibt es vielleicht eine Moeglichkeit 2 Textteile zu vergleichen, die auf Parametern stehen?
oder kann ich mir da irgendwie anders behelfen?
Gruss
Ich weiß nicht genau was du meinst. Aber vielleicht ist das Paket xstring was für dich. Getestet habe ich das Paket allerdings nicht.
Sehr schöne Übersicht! Zum schnellen Nachschlagen fänd ich aber noch ein Beispiel einer komplexeren IF-Bedindung sehr schön. Mir war die Existenz von \and etc. erst beim genaueren Durchlesen aufgefallen.
Die Bedeutung und der Nutzen von \string wird leider auch nicht ganz klar.
Hallo!
Sehr informativ – auch wenn ich für meine Problemstellung keine Lösung gefunden habe – vielleicht sehe ich auch “den Wald vor lauter Bäumen nicht”.
Ich beschreibe mal kurz das Problem. Ich mache einen Serienbrief – der ist fertig bis auf die letzte Logik. In der Adressdatenbank dazu sind die Informationen über Zahlungsrückstände, kein Rückstand und Überzahlungen zu finden Feld #4. In einem weiteren Feld #6 ist die Art der Mitgliedschaft Ermäßigt, Vollzahler, Ruhend. Aus diesen Informationen ist der Brieftext auszuwählen.
D.h. Überzahler bekommen die Info dass sie nichts zahlen müssen, Rückstand den Text für Rückstand, bzw. Rückstand und kein Rückstand bekommen zusätzlich die Info für den nächsten Beitrag.
Die Lösung mit jenen die nichts zahlen müssen (die Überzahler) schaffe ich nicht zu implementieren – die Verschachtelung gelingt nicht. Habt ihr da Ideen dazu? Danke
[...] LaTeX Variablen, If Abfragen und SchleifenLaTeX typesetting as a programming languageTips für LaTeX und BibtexUni Karlsruhe: BibTeX-Einträge erstellen Basic presentations with LaTeX BeamerLaTeX Beamer: Optionen für Frame Kommentare (0) [...]
Hi,
Cool wären noch ein paar Worte zu Zeichenkettenvariablen
.
Ralf
Leider bin ich kein Experte in der LaTeX/TeX Programmierung. Der Artikel hier habe ich beim Lernen zusammengeschrieben. Daher kann ich leider auch nichts zu ‘Zeichenkettenvariablen’ verfassen, wobei ich aber auch nicht weiß was du genau meinst.
Ich hatte gerade selbst das Problem eine Art Switch-Klausel zu konstruieren, die eine Buchstabenliste in Bezug auf einen Buchstaben auswertet. Dabei bin ich auf folgende Lösung gekommen:
\documentclass{article}
\usepackage{etextools}
\begin{document}
\ifincharlist{x}{a b c}{ja}{nein}
\ifincharlist{b}{a b c}{ja}{nein}
\end{document}
P.S.: Noch besser erscheint mir das Paket “substr”. Der Name ist Programm.
http://tug.ctan.org/tex-archive/macros/latex/contrib/substr/
Hallo,
deine allg. Vorlage ist nicht schlecht! Verbessere mal die Angabe für Bilder etwas. Es hat sich in letzter Zeit einiges getan. Bsp. Caption und Hyperref – da ist es jetzt ganz einfach die Verlinkung vom Abbildungsverzeichnis aufs Bild zu gestalten. Also nicht wie davor, wo man nur auf den Bildkommentar gelandet ist, sondern das die Verlinkung oben aufs Bild zeigt.
Wenn du mir ein Beispiel oder direkt einen Patch zusendest kann ich es viel schneller einbauen, als wenn ich mir diese Informationen selber zusammensuchen muss. Zugegebenerweise bin ich nur dann selber auf einem aktuellen Stand wenn ich mich aktiv darum kümmere und dazu fehlt mir aktuell die Zeit.
Die aktuelle Version von caption hat die Nummer 3.1m (14.1.2010), und im Zusammenspiel von caption und hyperref hat sich im letzten Jahr einiges getan.
Hypcap wird nicht mehr benötigt! Den Unterschied wirst merken. Einfach \usepackage{caption} mit einbinden und freuen. So einfach ist es
\captionsetup[figure]{position=above}
hab ich doch beim letzten Post das wichtigste vergessen. sry