Obtendo danda em Devanagari no IAST

Obtendo danda em Devanagari no IAST

Estou tentando obter o símbolo danda que está em Devanagari no IAST. Meu código é

\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 utilizo \sdo que declarei no preâmbulo, posso obter o danda no ambiente \rom. Existe uma maneira de colocar o danda diretamente no \romambiente sem usar o \sdusando alguma declaração no preâmbulo.

insira a descrição da imagem aqui

Responder1

Você pode declarar o personagem |como ativo (para que seja tratado como uma macro) e dar a ele a mesma definição que seu \sd, adicionando estas duas linhas:

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

Modificando seu exemplo:

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

Saída:

saída por exemplo

Na prática, você provavelmente desejaria colocar essas linhas no topo do arquivo; apenas certifique-se de que foi \sddefinido depois (e depois de qualquer |caractere em seu arquivo que esteja sendo usado para qualquer finalidade que não seja um Devanagari danda).

informação relacionada