![在 XeTeX 中将某个 Unicode 字符替换为另一个](https://linux22.com/image/477473/%E5%9C%A8%20XeTeX%20%E4%B8%AD%E5%B0%86%E6%9F%90%E4%B8%AA%20Unicode%20%E5%AD%97%E7%AC%A6%E6%9B%BF%E6%8D%A2%E4%B8%BA%E5%8F%A6%E4%B8%80%E4%B8%AA.png)
我使用 XeLaTeX 和 XePersian 编写波斯语文档。不幸的是,波斯语中一些常用的字体不支持重要的字符,例如ی所以我应该用阿拉伯语来代替它们,比如ي以获得预期结果。其他一些人支持它,所以我应该恢复更改。
我无法将 ی 中的每个字符都替换为 ي,因为这样,我的波斯语宏和本地化的 XePersian 命令将失败,如果我手动执行此操作,则在更改字体后,我将不得不再次执行此操作。当然,这可以在字体级别修复,但我无法编辑字体。:-/
我的问题是,从宏观层面上来说,是否可以用 ي 代替 ی?
我尝试了这个,但是没有用:
\documentclass[14pt,a4paper]{article}
\usepackage[localised]{xepersian}
\settextfont{Arial}
\defی{ي}
\begin{document}
میشود.
% added to show the problem with the localised commands
% even without it, it won't compile when placing replace commands
%before including xepersian
\سطرجدید %it means new line
\newline
\end{document}
答案1
答案2
您可以使用 将所写的字符变为活动字符\catcode
,然后将其定义为其他字符:
\documentclass[14pt,a4paper]{article}
\usepackage{xepersian}
\settextfont{Arial Unicode MS}
\catcode`\ی=\active
\def ی{ي}
\begin{document}
میشود.
\end{document}
(我必须更改系统上的字体)