Получение данды в деванагари в IAST

Получение данды в деванагари в IAST

Я пытаюсь получить символ данды, который есть в деванагари в IAST. Мой код

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

Когда я использую \sdто, что я объявил в преамбуле, я могу получить данду в среде \rom. Есть ли способ, которым я могу напрямую получить данду в среде \romбез использования \sdс помощью некоторого объявления в преамбуле.

введите описание изображения здесь

решение1

Вы можете объявить символ |активным (чтобы он рассматривался как макрос) и дать ему такое же определение, как и вашему \sd, добавив эти две строки:

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

Модифицируем ваш пример:

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

Выход:

выход например

На практике вы, вероятно, захотите поместить эти строки в начало файла; просто убедитесь, что они находятся после \sdопределения (и после любого |символа в вашем файле, который используется для какой-либо цели, кроме как в качестве деванагари-данды).

Связанный контент