Conseguir danda en Devanagari en IAST

Conseguir danda en Devanagari en IAST

Estoy intentando obtener el símbolo danda que está en Devanagari en IAST. mi codigo es

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

Cuando uso \sdlo que declaré en el preámbulo, puedo obtener el danda en el entorno \rom. ¿Hay alguna manera de obtener directamente el danda en el \romentorno sin utilizar \sdalguna declaración en el preámbulo?

ingrese la descripción de la imagen aquí

Respuesta1

Puedes declarar el personaje |como un personaje activo (para que sea tratado como una macro) y darle la misma definición que tu \sd, agregando estas dos líneas:

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

Modificando su ejemplo:

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

Producción:

salida por ejemplo

En la práctica, probablemente querrás poner esas líneas en la parte superior del archivo; solo asegúrese de que sea posterior a \sdhaber sido definido (y después de cualquier |carácter en su archivo que se esté utilizando para cualquier propósito que no sea el de Devanagari danda).

información relacionada