使用 XelaTex 可以做到这一点吗?(我使用 texmaker):
我已经尝试了这里发布的一些建议,例如使用 Arabtex。但我想用阿拉伯语文本来实现这一点,而不是音译所有内容。如果不行,有什么程序可以实现这一点?
提前致谢!
答案1
我尝试了一下,尽管答案可能还不完整/不最终。
这参考@Alan Munn 提到的 ConTeXt包含变音符号(元音)问题的解决方案,包括使用 Unicode 字符代替音译。但它使用一般规则以相同方式为给定类型的所有字形着色,而不是为单词中的个别字形着色。
我限制使用 XeLaTeX 以及有无音译的词尾(或单词的任何部分)的着色问题。自 20 多年前设计 ArabTeX 以来,就存在使用连字符“伪造”阿拉伯字母的首/中/尾位置的可能性。这也适用于 unicode 字形。
\documentclass{minimal} \usepackage{xcolor} \usepackage{arabxetex}
\newfontfamily\arabicfont[Script=Arabic, Scale=1.5]{Scheherazade}
\begin{document}
\def\rshift#1.{\vskip1cm\rightline{\textbf{#1}\hskip4cm}}
\def\r{\color{red}} \def\b{\color{blue}}
\def\kerningmsg{\textLR{\textit{\color{black}with kerning!}\ }}
\rshift Vocalised.
\begin{arab}[voc]\b
mu`allimu-{\r wna} ka_tiru{\r wna}
ma`a mu`allimi-{\r yna} ka_tiri{\r -yna}
ma`a mu`allimi-\kern-1pt{\r yna} ka_tiri{\r -yna} \kerningmsg
\end{arab}
\rshift No vocalisation.
\begin{arab}[novoc]\b
mu`allimu-{\r wna} ka_tiru{\r wna}
ma`a mu`allimi-{\r yna} ka_tiri{\r yna}
\end{arab}
\rshift Vocalised from unicode.
\begin{arab}[voc]\b
مُعَلِّمُ-{\r-ونَ} كَثئر-{\r\-ون}
\end{arab}
\rshift Vocalisation removed from unicode.
\begin{arab}[novoc]\b
مُعَلِّمُ-{\r-ونَ} كَثئر-{\r ون}
\end{arab}
\end{document}
将其保存在 中arabcolour.tex
。确保您安装了最新的 TeXlive 发行版或必要的 XeTeX、xcolor 和 arabxetex 包。
使用 生成的结果与xelatex arabcolour
原始问题中给出的模型非常相似。但请继续阅读以下内容!
训练有素的人会发现第二行中的 ya 与单词开头的距离太远。“字距调整”在这里会有所帮助,并且您可能必须逐个单词地尝试将单词重新粘合在一起的最佳方法。它可能因不同的字体而异,这些字体的效果不太好(请参阅 Amiri 字体中的 ha 变体从这里- 使用此字体无法合并 waw。)
我个人觉得音译输入更易读。虽然我尝试定义颜色变化的快捷方式,但左右/左右变化使“所见即所得”成为一种讽刺,并且可能取决于编辑器,甚至取决于换行符的确切位置。源代码确实不是例如,在 gedit 中看起来与此处相同,即使复制+粘贴在逻辑上应该保留内容,您也可以尝试。提示:在构造自己的单词时,首先键入完整的句子,然后{\r…}
一次性插入要突出显示的部分。
不过我相信这是 XeLaTeX 所能达到的最大效果。因此,完整的答案可能是上面提到的 ConTeXt 和这个的组合,无论是否带有音译功能。