在 IAST 中获取梵文的 danda

在 IAST 中获取梵文的 danda

我正在尝试获取 IAST 中梵文的 danda 符号。我的代码是

\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在序言中声明的 which 时,我可以在 \rom 环境中获取 danda。有没有办法直接在环境中获取 danda,\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已定义之后(以及|位于文件中用于除作为 Devanagari danda 之外的任何其他目的的任何字符之后)。

相关内容