如何使用 arabxetex 为阿拉伯语文本的特定部分着色

如何使用 arabxetex 为阿拉伯语文本的特定部分着色

梅威瑟:

 \documentclass[12pt]{article}
 \usepackage{xcolor}
\usepackage[voc]{arabxetex}

\setmainfont{AlQalamQuranMajeedWeb}
\newfontfamily\arabicfont[Script=Arabic,Scale=1.1]{AlQalamQuranMajeedWeb}

\definecolor{Kalkola}{HTML}{EE171F} %
\newcommand{\kal}{\color{Kalkola}}%

  \begin{document}
{\Huge\begin{arab}
sub".ha"A
\end{arab}
}
  \end{document}

这提供了:

在此处输入图片描述
我想要得到:

在此处输入图片描述

答案1

这是我在 XeTeX 中能做到的最好的事情。奇怪的是,第一个连接符对齐得很好,但第二个连接符在着色时却对齐得不好。这可能是arabxetex软件包中的一个错误。在新版本中可能会有所改进。

完整代码:

\documentclass[12pt]{article}
 \usepackage{xcolor}
\usepackage[voc]{arabxetex}

\setmainfont{AlQalamQuranMajeedWeb.ttf}
\newfontfamily\arabicfont[Script=Arabic, Scale=1.1]{AlQalamQuranMajeedWeb.ttf}

\definecolor{Kalkola}{HTML}{EE171F} %
\newcommand{\kal}{\textcolor{Kalkola}}%

\begin{document}
{\Huge\begin{arab}
su-\kal{-b"-}-.ha"A

su-b"-.ha"A

\end{arab}}
 \end{document}

![阿拉伯语示例 1

但你也可以尝试其他方法arabluatex。这个方法很有效:

阿拉伯语示例 2

LuaTeX 的完整代码:

\documentclass[12pt]{article}

\usepackage{arabluatex}
\newfontfamily\arabicfont{AlQalamQuranMajeedWeb.ttf}[Script=Arabic]

 \usepackage{xcolor}
 \definecolor{Kalkola}{HTML}{EE171F} %
\newcommand{\kal}{\textcolor{Kalkola}}%
 
\begin{document}

{\Huge \begin{arab}[fullvoc]
 su\kal{b}.hA
\end{arab}}

\end{document}

答案2

以图形方式剪辑单词的三个副本是可行的,但需要手动调整剪辑开始/结束的位置:

剪切文本

(基于 egreg 的回答两种颜色的字符

平均能量损失

\documentclass[12pt]{article}
 \usepackage{xcolor}
\usepackage{trimclip}
\usepackage[voc]{arabxetex}

\setmainfont{Al Qalam Quran Majeed Web}
\newfontfamily\arabicfont[Script=Arabic,Scale=1.1]{AlQalamQuranMajeedWeb}

\definecolor{Kalkola}{HTML}{EE171F} %
\definecolor{Kalkolab}{HTML}{12AF1F} %
%\newcommand{\kal}{\color{Kalkola}}%

  \begin{document}
{\Huge\begin{arab}
\mbox{%
\textcolor{Kalkolab}{\clipbox{0 0 {0.7\width} 0}{sub".ha"A}}%
\textcolor{Kalkola}{\clipbox{{0.3\width} 0 {0.5\width} 0}{sub".ha"A}}%
\textcolor{Kalkolab}{\clipbox{{0.5\width} 0 0 0}{sub".ha"A}}%
}

sub".ha"A
\end{arab}
}
  \end{document}

添加

从同一链接问题调整 Tikz 解决方案(也使用剪辑)也是可能的,并且在概念上更容易,但在编码方面更复杂,并且生成的 Tikzpicture 需要与文本一起从右到左装箱(可以这样\mbox做),并且需要相对于基线垂直降低少量(这里,用\raisebox一个负量)。

tikz 版本

平均能量损失

\documentclass[12pt]{article}
 \usepackage{xcolor}
%\usepackage{trimclip}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage[voc]{arabxetex}


\setmainfont{Al Qalam Quran Majeed Web}
\newfontfamily\arabicfont[Script=Arabic,Scale=1.1]{AlQalamQuranMajeedWeb}

\definecolor{Kalkola}{HTML}{EE171F} %
\definecolor{Kalkolab}{HTML}{12AF1F} %
%\newcommand{\kal}{\color{Kalkola}}%

\newcommand{\Atwo}[3][A]{%
  \begin{tikzpicture}
    %place the underlying word
    \node[inner sep=0pt,outer sep=0pt,text=#2] (a) {#1};
    %define the clip rectangle
    \clip  (a.south east) [xshift=-1ex] rectangle (a.north);
    % place the clipped word above
    \node[inner sep=0pt,outer sep=0pt,text=#3]  {#1};
  \end{tikzpicture}
}

  \begin{document}
{\Huge\begin{arab}
\fbox{sub".ha"A} {\raisebox{-.482ex}{\fbox{\Atwo[sub".ha"A]{Kalkolab}{Kalkola}}}}  sub".ha"A sub".ha"A 

sub".ha"A sub".ha"A {\raisebox{-.482ex}{{\Atwo[sub".ha"A]{Kalkolab}{Kalkola}}}}

sub".ha"A
\end{arab}
}
  \end{document}

相关内容