Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Anführungsstriche gehen in Makro verloren

  1. #1
    Registrierter Benutzer
    Registriert seit
    26.07.2008
    Ort
    Dresden
    Beiträge
    136

    Anführungsstriche gehen in Makro verloren

    Hallo,

    ich stecke immer mal wieder Text mit \def in ein Makro und rufe es irgendwann im Dokument auf. Leider scheint es Probleme mit dem Expandieren zu geben, obwohl \def ja gerade nicht expandiert.

    Jedenfalls gehen die Anführungsstriche bei so etwas verloren:
    Code:
    \documentclass{article}
    
    \usepackage[ngerman]{babel}
    
    \newcommand{\mymakro}[1]{\def\MyMakro{#1}}
    \mymakro{"`Testmakro"'}
    
    \begin{document}
     
     Die ist ein "`Test"'
     
     Die ist ein \MyMakro, wo die G"ansef"u\ss chen verloren gehen.
    \end{document}
    Gibt es Abhilfe?

  2. #2
    Registrierter Benutzer
    Registriert seit
    09.12.2005
    Beiträge
    1.327
    Bei babel werden die Shorthands, die ja von \catcode-Änderungen abhängig sind, erst mit \begin{document} aktiviert. Man kann sie aber mit \shorthandon und \shorthandoff auch schon früher aktivieren und wieder deaktivieren. Näheres ist der babel-Anleitung zu entnehmen.

    Empfehlen würde ich jedoch einen etwas anderen Weg, nämlich die Verwendung des Pakets csquotes:
    Code:
    \documentclass{article}
    
    \usepackage[ngerman]{babel}
    \usepackage{csquotes}
    
    \newcommand{\mymakro}[1]{\def\MyMakro{#1}}
    \mymakro{\enquote{Testmakro}}
    
    \begin{document}
     
    Dies ist ein "`Test"'
     
    Dies ist ein \MyMakro, wo die G"ansef"u\ss chen ebenfalls gehen.
    \end{document}
    Geändert von klops (04-01-2015 um 18:55 Uhr) Grund: Tags korrigiert

  3. #3
    Registrierter Benutzer
    Registriert seit
    26.07.2008
    Ort
    Dresden
    Beiträge
    136
    Danke, das funzt.

    Ich dachte \MyMakro wird selbst erst im Dokument aufgerufen. Da sind doch die shorthands schon aktiviert.

    Aber mit csquotes geht es auch, zieht aber eben auch wieder eine Gruppe nach sich, was ich eigentlich vermeiden wollte, wegen der Fehleranfälligkeit der vielen Klammern.

  4. #4
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    Zitat Zitat von rafael Beitrag anzeigen
    Ich dachte \MyMakro wird selbst erst im Dokument aufgerufen. Da sind doch die shorthands schon aktiviert.
    Was zählt ist der Status bei der Definition. Die " sind dort nicht aktiv und werden auch so in der Definition gespeichert.

    Aber mit csquotes geht es auch, zieht aber eben auch wieder eine Gruppe nach sich, was ich eigentlich vermeiden wollte, wegen der Fehleranfälligkeit der vielen Klammern.
    An korrektes Schließen von Klammern musst du dich sowieso gewöhnen. Dafür würde ich nicht auf die Vorteile von \enquote verzichten - u.a. weniger Fehler bei den Anführungszeichen, weil du "' und "` und "´ und ` und ' und ´ und „ und “ und `` und '' nicht mehr verwechseln kannst, und schließende Anführungszeichen nicht vergessen kannst (viele Dokumente, die ich zu sehen bekomme, haben da eine ordentliche Streuung).

Lesezeichen

Berechtigungen

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