
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 \sd
lo que declaré en el preámbulo, puedo obtener el danda en el entorno \rom. ¿Hay alguna manera de obtener directamente el danda en el \rom
entorno sin utilizar \sd
alguna declaración en el preámbulo?
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:
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 \sd
haber 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).