如何使用 TECkit 匹配空间

如何使用 TECkit 匹配空间

尝试更改现有的 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.mapteckit_compiled 到 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 > ""

相关内容