Danda in Devanagari im IAST bekommen

Danda in Devanagari im IAST bekommen

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 \sddas 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, \romohne das zu verwenden, \sdindem ich eine Deklaration in der Präambel verwende?

Bildbeschreibung hier eingeben

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:

Ausgabe beispielsweise

In der Praxis werden Sie diese Zeilen wahrscheinlich am Anfang der Datei einfügen wollen; stellen Sie einfach sicher, dass sie danach \sdstehen (und nach jedem |Zeichen in Ihrer Datei, das für einen anderen Zweck als als Devanagari-Danda verwendet wird).

verwandte Informationen