如何使用 xlop 在法语除法算法中放置进位数字?

如何使用 xlop 在法语除法算法中放置进位数字?

20 世纪 60 年代,法国小学教授了除法算法。这是一种可以快速执行所有除法的算法。在此算法中,进位数字放在数字前面,这样就不必进行减法。法国算法的解释如下(法语):

法语区

例如,在 11945 除以 47 时,第一步是乘以 2×7 = 14,这个结果必须在 9 处删除。这是不可能的;你必须在 9 前面放 1,然后删除 14 到 19。也就是 5。进位数 1 必须添加到下一次乘法的结果中。

退休金部门

一位 MWE 表示:

\documentclass{article}
\usepackage{xlop}

\begin{document} 

\opidiv{11945}{47}

\end{document}

如何用xlop将这个进位的数字放在数字前面?

使用 www.DeepL.com/Translator 翻译

答案1

这是一个使用TiKz允许的数字风格化的解决方案,xlopoperandstyleremainderstyle。为此,我已将给出的解决方案调整为以下问题:在 xlop 包中围绕数字绘制一个圆圈

使用 时xlop,当通过宏应用数字样式时,最后一个参数(要样式化的数字)由 xlop 本身提供给该宏。

因此,该宏声明有 2 个参数,但只有第一个参数提供给其调用,xlop 本身提供最后一个参数。

我创建了两个宏:

  1. 第一个调用的宏\chiffre用 TiKz 创建一个节点,它有两个参数:第一个是它的名称,第二个是用于对其进行风格化的数字;

  2. 第二个宏调用\retenue将进位的数字放在数字的左下角(正如我自己学会做的),它的第一个参数是数字的名称,它的第二个参数是进位的数字。

代码如下:

\documentclass{article}
\usepackage{xlop}
\usepackage{tikz}

\newcommand{\chiffre}[2]{\tikz[remember picture] \node[inner sep=0pt](#1){#2};}
\newcommand{\retenue}[2]{\tikz[remember picture,overlay] 
                          \node[inner sep=0pt,
                                outer sep=2pt,
                                anchor=north east,
                                font=\tiny]at(#1){#2} ;}

\begin{document} 
\opidiv[dividendbridge,
        operandstyle.1.3=\chiffre{a},
        remainderstyle.1.1=\chiffre{b},
        remainderstyle.2.1=\chiffre{c}]{11945}{47}
\retenue{a}{1}
\retenue{b}{4}
\retenue{c}{3}
\end{document}

输出:

法国退休人员部门

使用 www.DeepL.com/Translator 翻译

答案2

我没有找到解决方案xlop,但是,由于还没有人回答,所以这是一个手动解决方法tikzmark

\documentclass{article}
\usepackage{xlop}
\usepackage{tikz}
\usetikzlibrary{tikzmark}

\begin{document} 

\tikzmark{mydiv}\opidiv[dividendbridge, columnwidth=1.1em]{11945}{47}
\begin{tikzpicture}[overlay,remember picture]
    \node[font=\tiny, shift={(2.3em,8.75ex)}] at (pic cs:mydiv)
    {1};
    \node[draw=red, shift={(2.6em,9ex)}, circle, thick, text width=6pt] at (pic cs:mydiv)
    {};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容