Ottenere danda in Devanagari in IAST
Sto cercando di ottenere il simbolo danda che è in Devanagari in IAST. Il mio codice è
\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}
Quando uso quello \sdche ho dichiarato nel preambolo, posso ottenere il danda nell'ambiente \ rom. C'è un modo per ottenere direttamente il danda \romnell'ambiente senza usare il \sdusando qualche dichiarazione nel preambolo.
Risposte
Puoi dichiarare che il personaggio |è un personaggio attivo (in modo che venga trattato come una macro) e dargli la stessa definizione della tua \sd, aggiungendo queste due righe:
\catcode`|=\active
\let|=\sd
Modifica il tuo esempio:
\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}
Produzione:
In pratica probabilmente vorresti mettere quelle righe all'inizio del file; assicurati solo che sia dopo che \sdè stato definito (e dopo qualsiasi |carattere nel tuo file che viene utilizzato per scopi diversi da quello di Devanagari danda).