Lokale Variable gesucht

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Lokale Variable gesucht

Re: Lokale Variable gesucht

von sommerfee » Mi 9. Feb 2011, 18:27

Juetho hat geschrieben:Als Programmierer bin ich es gewohnt, dass Variable möglichst nicht global, sondern (soweit sinnvoll) nur lokal gelten sollten. Bei LaTeX gibt es (wenn ich Literatur und Forumsbeiträge richtig verstehe) nur Variable, die global im gesamten Dokument gelten.
Nein, TeX-Variablen sind lokal und gelten nur innerhalb der aktuellen Gruppe bzw. Box. Globale Veränderungen erzwingt man mit \global, wobei es für \global\def die Abkürzung \gdef und für \global\edef die Abkürzung \xdef gibt.

Siehe auch TeXbook und http://eijkhout.net/texbytopic/texbytopic.html

Lokale Variable gesucht

von Juetho » Mi 9. Feb 2011, 10:52

Als Programmierer bin ich es gewohnt, dass Variable möglichst nicht global, sondern (soweit sinnvoll) nur lokal gelten sollten. Bei LaTeX gibt es (wenn ich Literatur und Forumsbeiträge richtig verstehe) nur Variable, die global im gesamten Dokument gelten.

So benötige ich in Makros und eigenen Umgebungen temporäre Werte, die - abhängig von Argumenten - im Makro etwas steuern sollen. Beispiel:
\newlength\tempLineWidth
% wenn #1 leer ist, dann linewidth auf 1pt setzen, sonst auf 0pt
\ifstr{#1}{}
  {\setlength{\tempLineWidth}{1pt}}
  {\setlength{\tempLineWidth}{0pt}}
Aber solche Variablen bleiben für alle Zeiten gültig. Allenfalls String-Variable kann man über \renewcommand überschreiben, und Integer-Variable durch \count73 ebenso (oder welches Register man sich reserviert). Andererseits: Wenn ich für jede Situation eigene Variable definiere, komme ich u.U. schnell an die Grenze von 255 Registern.

Ich habe mir jetzt mit je 5 Variablen (für Integer, Length, Strings und Farbnamen) beholfen, die am Anfang eines (langen) Dokuments definiert und wahlweise benutzt werden. Aber das ist nicht schön, zumal Namen wie myTempLengthA alles andere als aussagekräftig sind.

Gibt es eine vernünftige Lösung für solche lokalen Variablen? Mit Links auf ein geeignetes Paket oder eine Arbeitsanleitung bin ich zufrieden.

Danke! Jürgen

Nach oben