Obtener danda en Devanagari en IAST

Sep 21 2020

Estoy tratando de 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 utilizo lo \sdque he declarado en el preámbulo, puedo obtener el danda en el entorno \ rom. ¿Hay alguna manera de que pueda obtener directamente el danda en el \romentorno sin usar el \sdusando alguna declaración en el preámbulo?

Respuestas

1 ShreevatsaR Oct 18 2020 at 15:28

Puede declarar que el personaje |es un personaje activo (para que se trate como una macro) y darle la misma definición que su \sd, agregando estas dos líneas:

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

Modificando tu 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}

Salida:

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