
Ich versuche, das Danda-Symbol zu erhalten, das in Devanagari in IAST ist. Mein Code ist
\documentclass[letterpaper,12pt]{article}
\usepackage{fontspec}
\newfontfamily{\san}[Script=Devanagari,Mapping=velthuis-sanskrit]{Shobhika}
\newfontfamily{\rom}[Mapping=itrans-iast]{Noto Serif}
\newcommand{\sd}{{\san|}}
\begin{document}
{\san
namaste|
}\\
{\rom
namaste{\sd}
}\\
{\rom
namaste|
}
\end{document}
Wenn ich \sd
das in der Präambel deklarierte verwende, kann ich das Danda in der \rom-Umgebung abrufen. Gibt es eine Möglichkeit, das Danda direkt in der Umgebung abzurufen, \rom
ohne das zu verwenden, \sd
indem ich eine Deklaration in der Präambel verwende?
Antwort1
Sie können das Zeichen |
als aktives Zeichen deklarieren (so dass es wie ein Makro behandelt wird) und ihm dieselbe Definition wie Ihrem geben \sd
, indem Sie diese beiden Zeilen hinzufügen:
\catcode`|=\active
\let|=\sd
Modifizierung Ihres Beispiels:
\documentclass[letterpaper,12pt]{article}
\usepackage{fontspec}
\newfontfamily{\san}[Script=Devanagari,Mapping=velthuis-sanskrit]{Shobhika}
\newfontfamily{\rom}[Mapping=itrans-iast]{Noto Serif}
\newcommand{\sd}{{\san|}}
\begin{document}
{\san
namaste|
}
{\rom
namaste{\sd}
}
{\rom
namaste| (before)
}
\catcode`|=\active
\let|=\sd
{\rom
namaste| (after)
}
\end{document}
Ausgabe:
In der Praxis werden Sie diese Zeilen wahrscheinlich am Anfang der Datei einfügen wollen; stellen Sie einfach sicher, dass sie danach \sd
stehen (und nach jedem |
Zeichen in Ihrer Datei, das für einen anderen Zweck als als Devanagari-Danda verwendet wird).