有理数的周期小数除法

有理数的周期小数除法

我想编写自己的 Lua(LaTeX) 代码来获得如下所示的周期性十进制除法。我知道该xlop软件包,但我想要另一种格式。

在此处输入图片描述

我的问题只是关于格式和我的 MWE 中缺少的装饰。

\documentclass{article}

\begin{document}

% -------------- %
% -- 10 by 11 -- %
% -------------- %

\begin{tabular}{*{7}{c}}
    1 & 0 &   & & 1 & 1
    \\
    1 & 0 & 0 & & \kern2pt0, & 9 & 0
    \\
         && 1 
    \\
         && 1 & 0
\end{tabular}

\end{document}

获得输出。

在此处输入图片描述

答案1

这是一个想法。

TikZ 矩阵的第一列是图表的左侧,第二列是图表的右侧。

width(" ")我正在使用可以在 PGFmath 中的多个位置访问的空间的宽度:

  1. 作为column sep
  2. 作为inner xsep
  3. 最重要的是风格s

这样,我们可以说s=2,它会将节点向右移动大约两位数。使用默认值1,您也可以简单地说s, s将其向右移动大约两位数。

与第二列类似,您也可以插入假货\0来填充节点的左侧。

所有节点左anchor=base west对齐。

在第二列中,我用来\hphantom{0}填充节点的右侧,以便线append after command足够长。

你也可以这样做node family={text width=\tikzmatrixname, text width align=left} 和我的ext.node-families图书馆

或者在构建矩阵之后绘制这些线,并使用矩阵的右边框(与第二列最右边的节点紧密贴合,即

(m-2-x.north west) |- (m-2-x.south-|m.east)

根据这些图表的动态,采用tikz-cd和使用可能会很有趣\arrow[uuuu, <half arc>]

代码

\documentclass[tikz]{standalone}
\usetikzlibrary{
  matrix,
  calc,
}
\begin{document}
\begin{tikzpicture}[
 s/.style={xshift=#1*width("0 ")},
 s/.default=1, % shifts one digit to the right
 m/.style={fill=orange!10, draw=orange!50},
]
\matrix[
  matrix of nodes,
  column sep=2*width(" "),
  every outer matrix/.append style={inner sep=+0pt},
  /utils/exec=\def\,{\rlap{,}}%    % overwriting \, doesn't seem like a good idea
              \def\0{\hphantom{0}},% but it is local to the \matrix
  nodes={
    anchor=base west, % left-aligned
    inner xsep=.5*width(" ")
  },
  column 2/.append style={
    nodes={
      text depth=+0pt,% comma doesn't contribute to the node size,
                      % alternatively: \def\,{\smash{\rlap{,}}}
      outer sep=+0pt, % anchors on the actual border, just to be safe
      append after command={% draw west and south border of node
                            % overlay so that it doesn't contribute
                            % to the cell's size
        (\tikzlastnode.north west) edge[
          overlay, to path={|-(\tikzlastnode.south east)}]()}
    }
  },
] (m) {
 |[m]| 1 0     & 1   1 \0 \\
       1 0 0   & 0\, 9 0  \\
 |[s, s ]| 1   \\
 |[m,s=2]| 1 0 \\
};
\draw[m, fill=none]
  let \p{angle}=($(m-4-1.south)-(m-1-1.west)$) in
  (m-4-1.south) arc[% half arc between m-4-1.south and m-1-1.west
                  start angle={atan2(\y{angle},\x{angle})},
                  delta angle=-180,
                  radius=.5*veclen(\p{angle})];
\end{tikzpicture}
\end{document}

输出

在此处输入图片描述

相关内容