Use of \@ doesn't match its definition.

Fragen und Probleme, die nicht den obigen Kategorien zugeordnet werden können


Besserwisser

Beitrag von Besserwisser »

Wenn du in \myword \myword selbst umdefinierst, kann es ja wohl nicht funktionieren, danach \myword wieder mit der ursprünglichen Bedeutung zu verwenden. Du hast da irgendwie seltsame oder gar keine Vorstellungen davon, wie Makros bei TeX funktionieren. Ansonsten wurde dir oben bereits erklärt, wie das mit dem @ im Makronamen funktioniert. Du kannst natürlich stattdessen auch einen Buchstaben verwenden. Allerdings erinnert mich dein Vorgaben eher an die Variablen von scrlttr2. Mit scrletter kann man diese auch mit scrartcl (nicht jedoch mit article) verwenden.

MoonKid
Forum-Meister
Forum-Meister
Beiträge: 690
Registriert: Sa 30. Jun 2012, 11:56

Beitrag von MoonKid »

Natürlich weiß ich, dass der Code so nicht funktionieren kann und auch warum. Wollte damit nur verdeutlichen, was ich mir vorstelle.

Wie ich diese @-Geschichte hier sinnvoll einsetzen kann, ist mir allerdings nicht klar. Habe das offensichtlich noch nicht ausreichend verstanden.
XeLaTeX, TeX Live, vim-latexsuite

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4300
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

MoonKid hat geschrieben: Wie ich diese @-Geschichte hier sinnvoll einsetzen kann, ist mir allerdings nicht klar. Habe das offensichtlich noch nicht ausreichend verstanden.
@ in einem Befehlsnamen ist ein (leichter) Schutz vor umbeabsichtigter Umdefinition. Diesen Schutz brauchst du eigentlich erst dann, wenn du Befehle schreibst, die "innere" Befehle benutzen, auf deren Verhalten du dich verlassen musst.

Es ist übrigens eines der Probleme von LaTeX, dass diverse wichtige Befehle (wie \def, \hbox, usw) zu leicht von einem normalen Benutzer verändert werden können. Auf tex.sx hat gerade jemand versucht \fi umzudefinieren -- mit ziemlich interessanten Folgen. http://tex.stackexchange.com/questions/ ... i-possible.
In LaTeX3 werden diese wichtigen Befehle deutlich besser versteckt.

Besserwisser

Beitrag von Besserwisser »

u_fischer hat geschrieben:In LaTeX3 werden diese wichtigen Befehle deutlich besser versteckt.
"Versteckt" ist der richtige Ausdruckt. Wobei auch das nur durch Namenskonvention und catcode geschieht, weil eben echte Kapselung o. ä. in TeX nicht realisierbar ist. Die Einhaltung bleibt damit Sache des Anwenders, Programmierers etc.

@MoonKid: Du liest wieder zu oberflächlich. Ich hatte nicht umsonst Alternativen für @ erwähnt, die für dich eher sinnvoll wären. Eventuell wären auch Pakete wie acro oder ein schlichtes \newcommand{\meinWort}{Wort} ausreichend, um dann an entsprechender Stelle \meinWort zu verwenden. Das kommt eben sehr darauf an, was du wirklich willst.

Antworten