尝试更改现有的 TECkit 梵语映射以最终实现我想要的效果(添加第一遍,删除音译中辅音后的空格,然后第二遍和第三遍将我的文本转换为 Devanāgarī),我目前的障碍是如何匹配空格?以下 MWE
\documentclass{article}
\usepackage{polyglossia}
\usepackage{fontspec}
\setdefaultlanguage{english}
\setotherlanguage{sanskrit}
\newfontfamily\sanskritfont[Mapping=mytest]{Latin Modern Roman}
\begin{document}
Something that stays. \textsanskrit{Something to be transformed.}
\end{document}
具有最小值mytest.map
(teckit_compile
d 到 a mytest.tec
):
LHSName "UNICODE"
RHSName "UNICODE"
pass(Unicode)
"o" > "x"
"g" > ""
" " > ""
U+0020 > ""
因此,虽然我可以用字母做一些事情,并定义它们的类别等等,但我仍然没有找到匹配空格的方法。我想有办法做到这一点,但也许没有?
答案1
映射常规空格(U+0020 或 U+00A0)似乎根本不起作用,但映射其他 Unicode 空格字符却可以。不清楚这对您是否有帮助。
由于您要丢弃空格,因此也可以将常规空格字符设为其他类别(类别代码 12)。这样也可以映射常规空格。我创建了一个名为 的环境,\translit
其中将空格的类别代码设置为 12。但请注意,宏内的空格将无法正确映射。
这是显示一些选项的完整文档。
\documentclass{article}
\usepackage{polyglossia}
\usepackage{fontspec}
\newcommand{\ENspace}{\symbol{"2002}}
\newcommand{\emspace}{\symbol{"2001}}
\newcommand{\thirdspace}{\symbol{"2004}}
\newcommand{\mymacro}{This is macro text!}
\setdefaultlanguage{english}
\setotherlanguage{sanskrit}
\newfontfamily\sanskritfont[Mapping=mytest]{Latin Modern Roman}
\newenvironment{translit}{%
\catcode` =12
\sanskritfont
}{}
\begin{document}
Something that stays.
\textsanskrit{Something\emspace to\thirdspace be\ENspace transformed.}
The source text can also contain the space characters directly:
\textsanskrit{Something to be transformed.}
The next source line contains only regular spaces.
\begin{translit}Some more text to be transformed\end{translit}
But regular spaces within macros will not be transformed:
\begin{translit}Some more text \mymacro{} containing a macro\end{translit}
Some regular text.
\end{document}
地图文件:
LHSName "UNICODE"
RHSName "UNICODE"
pass(Unicode)
"o" > "x"
"g" > ""
U+0020 > ""
U+00A0 > ""
U+2002 > ""
U+2003 > ""
U+2001 > ""
U+2004 > ""