Anzeige:
Ergebnis 1 bis 12 von 12

Thema: Abfrage ob command definiert

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Registrierter Benutzer
    Registriert seit
    04.11.2012
    Beiträge
    23
    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.

  2. #2
    Registrierter Benutzer Avatar von sommerfee
    Registriert seit
    02.07.2006
    Beiträge
    1.603
    Zitat Zitat von javatar Beitrag anzeigen
    Okay, dieses \makeatletter und \makeatother war mir schon immer etwas suspekt
    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.)

  3. #3
    Registrierter Benutzer Avatar von cgnieder
    Registriert seit
    06.04.2011
    Ort
    Herrenberg
    Beiträge
    254
    Zitat Zitat von javatar Beitrag anzeigen
    Okay, dieses \makeatletter und \makeatother war mir schon immer etwas suspekt,
    Siehe z.B. Was machen eigentlich \makeatletter und \makeatother?

    daher hab ich die zweite Variante benutzt und konnte mein Problem so lösen. Vielen Dank.
    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:

    Code:
    \documentclass{scrartcl}
    \usepackage[utf8]{inputenc}
    \usepackage{etoolbox}
    \newcommand{\test}{Beispeil}
    
    \begin{document}
    \makeatletter
    \ifdef\test{abc}{xyz} 
    \makeatother
    \end{document}
    Grüße
    Clemens

  4. #4
    Registrierter Benutzer
    Registriert seit
    09.12.2005
    Beiträge
    1.327
    Da mit scrartcl auch scrbase bereits geladen wird, kann man auch einfach \ifundefinedorrelax verwenden:
    Code:
    \documentclass{scrartcl}
    \usepackage[utf8]{inputenc}
    
    \newcommand{\test}{Beispeil}
    
    \begin{document}
    \verb|\test| is \ifundefinedorrelax{test}{un}{}definiert.
    \end{document}
    Näheres zu der Anweisung ist der KOMA-Script-Anleitung zu entnehmen.

  5. #5
    Registrierter Benutzer
    Registriert seit
    04.11.2012
    Beiträge
    23
    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
    Code:
    \documentclass{scrartcl}
    \usepackage[utf8]{inputenc}
    \usepackage{etoolbox}
    \newcommand{\test}{Beispeil}
    
    \begin{document}
    \makeatletter
    \ifdef\test{abc}{xyz} 
    \makeatother
    \end{document}
    Warum hier die \make.. Befehle, da ist doch gar kein @ drin?

  6. #6
    Registrierter Benutzer Avatar von cgnieder
    Registriert seit
    06.04.2011
    Ort
    Herrenberg
    Beiträge
    254
    Zitat Zitat von javatar Beitrag anzeigen
    Nur noch eine Frage zu den Code von cgnieder
    [...]
    Warum hier die \make.. Befehle, da ist doch gar kein @ drin?
    Weil ich vergessen habe, sie nach dem Copy&Paste zu entfernen...

    Grüße
    Clemens

  7. #7
    Registrierter Benutzer
    Registriert seit
    04.11.2012
    Beiträge
    23
    Zitat Zitat von cgnieder Beitrag anzeigen
    Weil ich vergessen habe, sie nach dem Copy&Paste zu entfernen...
    Alles klar, danke nochmals und schöne Feiertage

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •