Ottenere danda in Devanagari in IAST

Sep 21 2020

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

1 ShreevatsaR Oct 18 2020 at 15:28

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).