更改 xlop 乘法的显示样式

更改 xlop 乘法的显示样式

当我使用xlop例如乘法如下:

\documentclass{article}


\usepackage{xlop}
\begin{document}

\opmul{0.436}{0.35}

\end{document}

我得到以下输出:

输出 Xlop

但是我需要以下风格:

输出

我怎样才能实现这个目标?

我想通过对宏进行一些修改应该可以实现,\op@muldisplayone但是我的纯文本能力太有限,无法做到这一点......

答案1

不是xlop,但是只要付出一些努力expl3就可以做到。

\documentclass{article}
\usepackage{xparse,l3regex}
\ExplSyntaxOn
\NewDocumentCommand{\showmult}{mm}
 {
  \anna_showmult:nn { #1 } { #2 }
 }

\tl_new:N \l__anna_temp_tl
\tl_new:N \l__anna_factora_tl
\tl_new:N \l__anna_factorb_tl
\tl_new:N \l__anna_result_tl
\tl_new:N \l__anna_table_tl
\seq_new:N \l__anna_partial_products_seq

\cs_new_protected:Npn \anna_showmult:nn #1 #2
 {
  % remove leading zeros and the decimal point
  \tl_set:Nn \l__anna_factora_tl { #1 }
  \tl_set:Nn \l__anna_factorb_tl { #2 }
  \regex_replace_all:nnN { (\A 0\.0*|\.) } { } \l__anna_factora_tl
  \regex_replace_all:nnN { (\A 0\.0*|\.) } { } \l__anna_factorb_tl
  \tl_reverse:N \l__anna_factorb_tl
  % compute the partial products
  \tl_clear:N \l__anna_padding_tl
  \seq_clear:N \l__anna_partial_products_seq
  \tl_map_inline:Nn \l__anna_factorb_tl
   {
    \seq_put_right:Nx \l__anna_partial_products_seq
     { \int_to_arabic:n { ##1 * \l__anna_factora_tl } \l__anna_padding_tl }
    \tl_put_right:Nn \l__anna_padding_tl { \anna_padding: }
   }
  \seq_reverse:N \l__anna_partial_products_seq
  % do the multiplication
  \tl_set:Nx \l__anna_result_tl { \fp_eval:n { #1 * #2 } }
  % prepare the table
  \tl_set:Nn \l__anna_table_tl { #1\cdot#2 \\ \hline }
  \tl_put_right:Nx \l__anna_table_tl
   { \seq_use:Nnnn \l__anna_partial_products_seq { \\ } { \\ } { \\ } }
  \tl_put_right:Nn \l__anna_table_tl { \\ \hline \l__anna_result_tl }
  $\begin{array}{@{}r@{}}
  \l__anna_table_tl
  \end{array}$
 }
\cs_new_protected:Npn \anna_padding: { \hphantom{0} }
\ExplSyntaxOff

\begin{document}
\showmult{0.436}{0.35}

\medskip

\showmult{1.2}{34}

\medskip

\showmult{1.222}{3.4}

\medskip

\showmult{0.022}{3.04}
\end{document}

在此处输入图片描述

相关内容