如何使用 TECkit 匹配空間

如何使用 TECkit 匹配空間

嘗試更改梵文的現有TECkit 地圖,以最終實現我想要的效果(在第二遍和第三遍將我的文本轉換為梵文之前,添加第一遍刪除音譯中輔音後面的空格)我當前的絆腳石是如何匹配空格?以下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 > ""

相關內容