在 XeLaTeX 中,如何在不使用宏的情况下格式化某些字符?

在 XeLaTeX 中,如何在不使用宏的情况下格式化某些字符?

[从 StackOverflow.com 移出]

如何在不使用宏的情况下格式化某些字符?例如,如果我想使字符“f”的所有实例变为粗体,如何让 TeX 自动执行此操作?

我正在使用 XeLaTeX 来处理我的文档。

(其实该文档是简体中文,我的字体里的亚洲句号('。',U+3002)的小圆圈是放在中间的,跟中国大陆的标准不一致,而且句号是每句话后面都有的,用宏的话就太麻烦了。)

答案1

一种方法是使字符处于活动状态,然后定义它。下面是一个例子(对 ascii 字符这样做很危险,我只是为了举例而已!)

\documentclass[a4paper,10pt]{article}

\begin{document}
\begingroup
\catcode`\y=\active
\defy{\textbf{\char121}}
abcyyabc
\endgroup
\end{document}

如果您只想在字体中使用其他字形,您也可以使用映射,例如 tex-text 映射,它将 -- 映射到 \endash。您需要 teckit 来生成此类映射。

http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=TECkit

答案2

如果你谈论的是文本模式下的字符,恐怕没有一个好的方法可以自动完成这一点。不过,Paul Isambert 的xesearch 包也许能够达到您想要的效果。

答案3

最好使用简体中文字体,例如“SimSun”、“Adobe Song Std”和免费的“AR PLBaosong2GBK Light”。句号位于中国大陆的正确位置。

在 XeTeX 中,这些工作可以通过使用\XeTeXinterchartoks和来完成\XeTeXcharclass,这就是xeCJKucharclass包的工作原理。有关详细(但低级)示例,请参阅此问题: XeTeX 中特定字符的字体选择

顺便说一句,你似乎不知道xeCJK包。它可以正确处理简体中文标点符号。

相关内容