我正在尝试制作一个宏,它能够执行简单的算术运算,并将结果显示在外语脚本中的等价结果旁边。我尝试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}