自动更改数字形式

自动更改数字形式

我已经发布了一个问题更改 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}

相关内容