Andrey
26-10-2008, 12:50
Schönen guten tag allerseits.
Ich benutze MikTeX mit Texnixcenter und versuche seit gut einer Stunde den \ifthenelse in der definition eines neuen befehls zu verwenden. Auf das Wesentliche reduziert sieht es so aus:
% der erste befehl x macht von dem zweiten befehl y gebrauch
\newcommand{\x}[1]{ irgendwas hinschreiben... zaehler aktualisieren... \y{#1}}
% der zweite befehl y soll entweder leicht abgewandelten inhalt des parameters darstellen (da soll ein klammerpaar gesetzt werden), oder einfach gar nichts tun.
\newcommand{\y}[1]{
\ifthenelse{\equals{#1}{}}{}{(#1)}
}
Problem: solange ich nur \y mitten im dokumentenrumpf aufrufe, funktioniert es.
Versuche ich dagegen, \y in der definition von \x zu verwenden, fliegen irgendwelche fehlermeldungen. Diese sind selbstverständlich völlig unverständlich, und netterweiße kann man die nicht mal aus dieser bescheuerten fehlerkonsole rauskopieren (großes Lob an TeXnicCenter-entwickler... :mad:) deswegen zitiere ich die nur auszugsweise:
(1)
Extra \or
<argument> \or
...stelle, wo der fehler herkommt (ohne zeilenangaben?)
Runaway definition?
(2)
Tex capacity exceeded, nicht genug memory blah blah...
(3)
Fatal error occured, nix geht...
Dabei bin ich mir ziemlich sicher, dass ich keine klammer vergessen habe o.ä.
Außerdem ist es anscheinend egal, in welcher reihenfolge die Befehle definiert werden (dazu frage: funktioniert \newcommand eher wie methoden definition in normalen programmiersprachen, oder eher wie ein textersetzungsmakro?)
Hab versucht bei www.ctan.org irgedwas zu ifthen-package zu finden, aber da ist so ziemlich alles "Not known" außer dem package-namen selbst, oder ich hab was übersehen... :confused:
Kann mir evtl jemand einen tipp geben, warum da irgendwas schief läuft? Oder irgendein link, wo etwas genauer steht, was man bei newcommand beachten soll?
Vielen Dank im Voraus.
greetz, Andrey.
Ich benutze MikTeX mit Texnixcenter und versuche seit gut einer Stunde den \ifthenelse in der definition eines neuen befehls zu verwenden. Auf das Wesentliche reduziert sieht es so aus:
% der erste befehl x macht von dem zweiten befehl y gebrauch
\newcommand{\x}[1]{ irgendwas hinschreiben... zaehler aktualisieren... \y{#1}}
% der zweite befehl y soll entweder leicht abgewandelten inhalt des parameters darstellen (da soll ein klammerpaar gesetzt werden), oder einfach gar nichts tun.
\newcommand{\y}[1]{
\ifthenelse{\equals{#1}{}}{}{(#1)}
}
Problem: solange ich nur \y mitten im dokumentenrumpf aufrufe, funktioniert es.
Versuche ich dagegen, \y in der definition von \x zu verwenden, fliegen irgendwelche fehlermeldungen. Diese sind selbstverständlich völlig unverständlich, und netterweiße kann man die nicht mal aus dieser bescheuerten fehlerkonsole rauskopieren (großes Lob an TeXnicCenter-entwickler... :mad:) deswegen zitiere ich die nur auszugsweise:
(1)
Extra \or
<argument> \or
...stelle, wo der fehler herkommt (ohne zeilenangaben?)
Runaway definition?
(2)
Tex capacity exceeded, nicht genug memory blah blah...
(3)
Fatal error occured, nix geht...
Dabei bin ich mir ziemlich sicher, dass ich keine klammer vergessen habe o.ä.
Außerdem ist es anscheinend egal, in welcher reihenfolge die Befehle definiert werden (dazu frage: funktioniert \newcommand eher wie methoden definition in normalen programmiersprachen, oder eher wie ein textersetzungsmakro?)
Hab versucht bei www.ctan.org irgedwas zu ifthen-package zu finden, aber da ist so ziemlich alles "Not known" außer dem package-namen selbst, oder ich hab was übersehen... :confused:
Kann mir evtl jemand einen tipp geben, warum da irgendwas schief läuft? Oder irgendein link, wo etwas genauer steht, was man bei newcommand beachten soll?
Vielen Dank im Voraus.
greetz, Andrey.