嘗試更改梵文的現有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.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 > ""