Innerhalb eines komplexeren Befehls benötige ich die Open in Online-Editor
\documentclass{article} \usepackage{xparse} \ExplSyntaxOn \NewDocumentCommand \Unterklammer {m m} { \underbrace{#1}_{#2} } \ExplSyntaxOff \begin{document} Direkt eingegebener mathematischer Ausdruck mit Unterklammer: \[\underbrace{x^2+4}_{f(x)}\] Mittels xparse-Befehl eingegebener mathematischer Ausdurck mit Unterklammer: \[\Unterklammer{x^2+4}{f(x)}\] \end{document} Das Minimalbeispiel funktioniert zwar, wenn gefragt 22 Mär '16, 13:48 Cletus |
Ich würde gar nicht versuchen, dem Unterstrich wieder seine „ursprüngliche“ Bedeutung (also Kategorie-Code 8) zu geben, sondern auf die verfügbaren Alternativen zugreifen. LaTeX definiert (in Open in Online-Editor
\let\sp=^ \let\sb=_ was bedeutet, dass man in Makros jederzeit auf Open in Online-Editor
\c_math_superscript_token \c_math_subscript_token Beide Alternativen dürften in Deinem Fall funktionieren: Open in Online-Editor
\documentclass{article} \usepackage{expl3,xparse} \ExplSyntaxOn \cs_new:Npn \my_math_command:nn #1#2 { {#1} \sb {#2} } \cs_new:Npn \my_other_math_command:nn #1#2 { {#1} \c_math_subscript_token {#2} } \NewDocumentCommand \mathone {mm} { \my_math_command:nn {#1} {#2} } \NewDocumentCommand \mathtwo {mm} { \my_other_math_command:nn {#1} {#2} } \ExplSyntaxOff \begin{document} $\mathone{a}{b}$ $\mathtwo{a}{b}$ \end{document} PS: beachte, dass ich im Beispiel auf die in l3 erwünschte Trennung von Dokumentenebene und Codeebene Rücksicht genommen habe. Das heißt hier konkret: für jeden Befehl auf Dokumentenebene gibt es eine entsprechende Funktion der Codeebene, mit der der Dokumentenbefehl definiert wird. beantwortet 22 Mär '16, 19:50 cgnieder |