我已经发布了一个问题更改 arabtex 中的数字格式 我正在尝试使用 PiCot 提供的解决方案,但它不起作用(几年前它运行良好)!?
我需要以马格里布形式 0 1 2 出现的数字......但看起来使用的阿拉伯字体不包含这些形式的数字,那么我怎样才能从包含这些形式的数字的字体中进行自动替换呢?
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[arabic]{babel}
\usepackage{expl3}
\ExplSyntaxOn
\tl_new:N \l_sun_tl
\cs_new:Npn \sun #1{
\tl_set:Nn \l_sun_tl{#1}
\regex_replace_all:nnN {[0-9]+}{ \c{textLR}\cB{\0 \cE} } \l_sun_tl
\tl_use:N \l_sun_tl
}
\ExplSyntaxOff
\begin{document}
\section{عنوان}
1 2 3
\end{document}
答案1
该宏\sun
只对其参数起作用,因此您必须实际将其用于数字。此外,最好使用 来定义前端宏\NewDocumentCommand
(如果您不想这样做,则应使用\sun
来定义\cs_new_protected:Npn \sun #1
,因为它需要执行赋值,因此应将其定义为受保护的)。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[arabic]{babel}
\usepackage{expl3}
\ExplSyntaxOn
\tl_new:N \l_sun_tl
\NewDocumentCommand \sun { m }
{
\tl_set:Nn \l_sun_tl{#1}
\regex_replace_all:nnN {[0-9]+}{ \c{textLR}\cB{\0 \cE} } \l_sun_tl
\tl_use:N \l_sun_tl
}
\ExplSyntaxOff
\begin{document}
\section{عنوان}
\sun{1 2 3}
\end{document}