进行乘法运算并使用 expl3 在外文脚本中显示结果

进行乘法运算并使用 expl3 在外文脚本中显示结果

我正在尝试制作一个宏,它能够执行简单的算术运算,并将结果显示在外语脚本中的等价结果旁边。我尝试expl3使用\tl_put_right:Nn或来执行此:Nx操作。我的尝试导致了一个奇怪的结果。我期望得到这样的结果:“30 = ३०”、“40 = ४०”...

\documentclass{beamer}
\mode<presentation>
{    \usetheme{metropolis}    }

\usepackage{polyglossia}
\newfontfamily\devanagarifontsf[Script=Devanagari]{NotoSansDevanagari}

\newcommand{\devanagarinumeral}[1]{%
  \devanagaridigits{\number\csname c@#1\endcsname}}

\setotherlanguages{english}
\newfontfamily\englishfontsf{NotoSans}
\newcommand{\eng}[1]{\textenglish{#1}}

\setmainlanguage{sanskrit}
\setmainfont[Script=Devanagari]{NotoSansDevanagari}
\newcommand{\sam}[1]{\textsanskrit{#1}}

\ExplSyntaxOn
\tl_new:N \l_mystack_tl
\NewDocumentCommand\putnumbers { m m } {
  \tl_put_right:Nx { #1 } { \int_eval:n { 10 * #2 } }
  \tl_put_right:Nx { #1 } { = \devanagaridigits{ \int_eval:n { 10 * #2 } } }
\tl_use:N #1
}
\ExplSyntaxOff

\begin{document}
\begin{frame}
  $\putnumbers{\l_mystack_tl}{3}$

\end{frame}
\end{document}

答案1

在此处输入图片描述

您需要使用文档约定访问 L3 变量,我c在这里使用,因此可以构造名称。

在应用天城体数字之前也要进行算术运算,\text因为我使用的字体未在数学模式下设置。

\documentclass{beamer}
\mode<presentation>
{\usetheme{metropolis}}

\usepackage{polyglossia}
\newfontfamily\devanagarifontsf[Script=Devanagari]{NotoSansDevanagari}

\newcommand{\devanagarinumeral}[1]{%
  \devanagaridigits{\number\csname c@#1\endcsname}}

\setotherlanguages{english}
\newfontfamily\englishfontsf{NotoSans}
\newcommand{\eng}[1]{\textenglish{#1}}

\setmainlanguage{sanskrit}
\setmainfont[Script=Devanagari]{NotoSansDevanagari}
\newcommand{\sam}[1]{\textsanskrit{#1}}

\ExplSyntaxOn
\tl_new:N \l_mystack_tl
\NewDocumentCommand\putnumbers { m m } {
  \tl_put_right:cx {l_ #1 _tl } { \int_eval:n { 10 * #2 } }
  \tl_put_right:cx {l_ #1 _tl } { = 
    \exp_not:N\text{\exp_not:N\devanagarifontsf{
        \exp_not:N\devanagaridigits{ \int_eval:n { 10 * #2 } } }}}
\tl_use:c {l_ #1 _tl }
}
\ExplSyntaxOff

\begin{document}
\begin{frame}
  $\putnumbers{mystack}{3}$

\end{frame}
\end{document}

相关内容