PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anführungsstriche gehen in Makro verloren



rafael
04-01-2015, 19:28
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:


\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?

klops
04-01-2015, 19:50
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 (http://www.ctan.org/pkg/csquotes):
\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}

rafael
04-01-2015, 20:57
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.

u_fischer
05-01-2015, 10:33
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).