Zdobywanie dandy w Devanagari w IAST
Próbuję uzyskać symbol dandy, który jest w Devanagari w IAST. Mój kod to
\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}
Kiedy używam tego, \sdco zadeklarowałem w preambule, mogę uzyskać dandę w środowisku \ rom. Czy jest sposób, żebym mógł bezpośrednio dostać dandę do \romśrodowiska bez użycia polecenia \sd, używając jakiejś deklaracji w preambule.
Odpowiedzi
Możesz zadeklarować znak |jako aktywny znak (aby był traktowany jak makro) i nadać mu taką samą definicję jak twoja \sd, dodając te dwie linie:
\catcode`|=\active
\let|=\sd
Modyfikowanie przykładu:
\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}
Wynik:
W praktyce prawdopodobnie chciałbyś umieścić te wiersze na początku pliku; po prostu upewnij się, że \sdzostał zdefiniowany po (i po każdym |znaku w twoim pliku, który jest używany w innym celu niż jako danda Devanagari).