Arabluatex 宏的扩展不起作用

Arabluatex 宏的扩展不起作用

我与 ArabLuatex 合作编辑一本阿拉伯语学术文本。

在我的阿拉伯语文本中,我想区分完全发声的片段和很少发声的文本块。我希望用另一种颜色标记这些片段。

当我将以 开头的说明\RL直接放在文本中时,片段会被正确地着色和发声。

但是,当我将代码放入宏中时,片段是彩色的,但vocfullvoc指令不起作用。

有人有解决办法吗?

下面是一个最小的例子(用 lualatex 处理)。

\documentclass[12pt,a4paper]{book}
\usepackage{xcolor}
\usepackage{arabluatex}
\newfontfamily\arabicfont[Script=Arabic, Scale=1.35]{Scheherazade}
\setmainfont[Numbers=OldStyle]{Gentium Book Basic}

%\newcommand*{\trk}[1]{\LR{\textcolor{red}{1 #1} \arb[fullvoc]{2 #1}}}
%\newcommand{\trk}[1]{{{\color{red}{{#1}}}}}
\newcommand*{\trk}[1]{\LR{\textcolor{red}{\arb[fullvoc]{#1}}}}
%\newcommand*{\trk}[1]{\LR{\textcolor{red}{\arb[fullvoc]{#1}}}}
%\long\gdef\trk#1{\textcolor{red}{\arb[fullvoc]{#1}}}

\begin{document}
\begin{arab}[novoc]

'a_hAfu mina 'l-malik-i 'lla_dI ya.zlimu 'l-nAs-a 

\RL{\textcolor{green}{\arb[fullvoc]{'a_hAfu mina 'l-malik-i 'lla_dI ya.zlimu 'l-nAs-a}}}

\trk{'a_hAfu mina 'l-malik-i 'lla_dI ya.zlimu 'l-nAs-a}

\end{arab}
\end{document}

答案1

嗯,这与 TeX 扩展机制无关,也与颜色命令无关。实际上,arabluatex任何单参数命令都要求其参数中包含阿拉伯文本:有关更多信息,请参阅文档第 37 页第 10 节中列出的一般原则。

例如,如果您尝试创建这个简单的命令:\newcommand{\fvarabic}[1]{\arb[fullvoc]{#1}},然后在一个环境中使用它,它将始终产生非发声的阿拉伯语,因为它的参数在看到它之前novoc已经被规则处理过。novoc\fvarabic

我认为这更多的是一个特性而不是一个实际的错误;)

目前,作为一种解决方法,您可以在任何想要创建的新命令前加上前缀,\RL以使其被接受为arabluatex不仅在参数中运行阿拉伯语文本的命令,如下所示:

\newcommand{\RLtrk}[1]{\textcolor{red}{\arb[fullvoc]{#1}}}

这会起作用。

的下一个版本arabluatex(将在几天后发布)将允许“声明”此类新命令,以便像、之类的命令arabluatex一样处理它们。\RL\LR


编辑 arabluatex 1.9 已发布几天后应该会在 CTAN 镜像中可用。\MkArbBreak已添加一个新命令,允许“声明”要在阿拉伯语环境中插入的新命令(请参阅 v1.9 文档中的 10.1 第 39 页)。

答案2

不幸的是,Ulrike 的回应不起作用。红色文本中没有显示发声。

我找到了以下解决方案:

\newcommand{\trk}[1]{\RL{\textcolor{red}{\arb[fullvoc]{#1}}}}

\begin{luacode}
function trk_help ( s )
 s = string.gsub ( s , "\\trk%b{}"   ,   "\\RL{%0}" )
 return s
end
luatexbase.add_to_callback ( "process_input_buffer", trk_help , "trk_help" )
\end{luacode}

但我不知道它为什么会起作用。

相关内容