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}

プリアンブルで宣言した を使用すると、 \rom 環境でダンダを取得できます。プリアンブルで何らかの宣言を使用することで、 を使用せずに環境\sdでダンダを直接取得する方法はありますか。\rom\sd

ここに画像の説明を入力してください

答え1

次の 2 行を追加することで、文字を|アクティブ文字として宣言し (マクロのように扱われるように)、 と同じ定義を与えることができます。\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定義された後 (および、|デーヴァナーガリー ダンダ以外の目的で使用されているファイル内の文字の後) に配置するようにしてください。

関連情報