Obtenir Danda à Devanagari dans IAST

Sep 21 2020

J'essaie d'obtenir le symbole danda qui se trouve en Devanagari dans IAST. Mon code est

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

Quand j'utilise \sdce que j'ai déclaré dans le préambule, je peux obtenir le danda dans l'environnement \ rom. Existe-t-il un moyen d'obtenir directement le danda dans l' \romenvironnement sans utiliser le \sden utilisant une déclaration dans le préambule.

Réponses

1 ShreevatsaR Oct 18 2020 at 15:28

Vous pouvez déclarer le caractère |comme étant un caractère actif (pour qu'il soit traité comme une macro) et lui donner la même définition que la vôtre \sd, en ajoutant ces deux lignes:

\catcode`|=\active
\let|=\sd

Modifier votre exemple:

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

Production:

En pratique, vous voudrez probablement placer ces lignes en haut du fichier; assurez-vous simplement que c'est après \sdavoir été défini (et après tout |caractère de votre fichier qui est utilisé à d'autres fins que comme Devanagari danda).