我创建了包含拉丁文和高棉文(柬埔寨文)字符的文档。要输入 Unicode,我使用包fontspec
并使用 进行排版XeLaTeX
。要在两种文字之间移动,我使用包ucharclasses
。
我的问题是:当我将两个或更多Khmer
单词放入表格环境中时,任何应该针对整个字符串的文本样式只会改变字符串中的第一个单词。这是一个 MWE:
\documentclass{article}
\usepackage{fontspec}
\setromanfont[Mapping=tex-text]{Times}
\usepackage[Khmer]{ucharclasses}
\setTransitionTo{Khmer}{\fontspec[Scale=0.8,Script=Khmer]{Khmer Mondulkiri}}
\setTransitionFrom{Khmer}{\normalfont}
\begin{document}
\begin{tabular}{l l}
ខុសហើយ & \quad not bolded\\
\textbf{នេះ ខុស ដែ} & \quad \textbf{three bolded words}\\
\bf នេះ ខុស ដែ & \quad \bf three bolded words\\
\end{tabular}
\end{document}
排版后看起来是这样的:
请注意,对于高棉语来说,除了第一个词以外,\boldface
nor 都不起作用。\bf
(要使 MWE 示例正常运行,您需要一个合适的高棉字体:许多预装的库存高棉字体根本没有粗体。我使用了 Khmer Mondulkiri,这是 SIL 提供的一种开放字体。)
答案1
您正在使用\normalfont
进行过渡,显然空间是过渡位置,这会重置系列。仅使用\rmfamily
。最好为 khmer 定义专用字体系列,而不是使用 fontspec:: 加载它
\documentclass{article}
\usepackage{fontspec}
\setmainfont[Mapping=tex-text]{Times New Roman}
\newfontfamily\khmerfamily[Scale=0.8,Script=Khmer]{Khmer Mondulkiri}
\usepackage[Khmer]{ucharclasses}
\setTransitionTo{Khmer}{\khmerfamily}
\setTransitionFrom{Khmer}{\rmfamily}
\begin{document}
\begin{tabular}{l l}
ខុសហើយ & \quad not bolded\\
\textbf{នេះ ខុស ដែ} & \quad \textbf{three bolded words}\\
\bfseries នេះ ខុស ដែ & \quad \bfseries three bolded words\\
\end{tabular}
\end{document}