Okay, dieses \makeatletter und \makeatother war mir schon immer etwas suspekt, daher hab ich die zweite Variante benutzt und konnte mein Problem so lösen. Vielen Dank.
Okay, dieses \makeatletter und \makeatother war mir schon immer etwas suspekt, daher hab ich die zweite Variante benutzt und konnte mein Problem so lösen. Vielen Dank.
Da ist eigentlich nichts suspektes dran; wenn man Makros mit @ im Namen definieren oder benutzen möchte, muß man den Code entweder in ein LaTeX-Paket packen (und mit \usepackage einbinden), oder aber mit \makeatletter... \makeatother klammern. (Dies soll die Verwendung oder gar das ungewollte Überschreiben von internen Makros in regulären Dokumenten erschweren.)
Siehe z.B. Was machen eigentlich \makeatletter und \makeatother?
Wenn Du gerne auf die TeX-Syntax verzichten möchtest und die lieber eine LaTeX-Syntax hättest, dann gäbe es dafür auch noch etoolbox' Wrapper:daher hab ich die zweite Variante benutzt und konnte mein Problem so lösen. Vielen Dank.
GrüßeCode:\documentclass{scrartcl} \usepackage[utf8]{inputenc} \usepackage{etoolbox} \newcommand{\test}{Beispeil} \begin{document} \makeatletter \ifdef\test{abc}{xyz} \makeatother \end{document}
Clemens
Da mit scrartcl auch scrbase bereits geladen wird, kann man auch einfach \ifundefinedorrelax verwenden:Näheres zu der Anweisung ist der KOMA-Script-Anleitung zu entnehmen.Code:\documentclass{scrartcl} \usepackage[utf8]{inputenc} \newcommand{\test}{Beispeil} \begin{document} \verb|\test| is \ifundefinedorrelax{test}{un}{}definiert. \end{document}
Die Funktion vpn den beiden Befehlen hatte ich im Prinzip schon verstanden, ich kam bisher nur nie in die Situation diese verwenden zu müssen und hatte daher wahrscheinlich noch Berühungsängste. Bishre war mir nur die Logik dahinter nicht klar, warum man das @ verwendet, wenn man weiß, dass man das immer so ein Konstrukt rum basteln muss, aber die Begründung hast du jetzt ja drekt mit geliefert.
Nur noch eine Frage zu den Code von cgnieder
Warum hier die \make.. Befehle, da ist doch gar kein @ drin?Code:\documentclass{scrartcl} \usepackage[utf8]{inputenc} \usepackage{etoolbox} \newcommand{\test}{Beispeil} \begin{document} \makeatletter \ifdef\test{abc}{xyz} \makeatother \end{document}
Lesezeichen