在 xlop 包中围绕数字绘制一个圆圈

在 xlop 包中围绕数字绘制一个圆圈

我正在写一些关于进制转换(从十进制到其他进制)的内容。我正在使用 xlop 包来生成一系列长除法。结果不错,但如果我能在余数(以及最后一个除法的商)周围画一个圆圈,即转换后的数字,那就完美了。也就是说,我想要这样的东西:

图像

我的代码是

    \begin{align*}
        \opidiv[displayintermediary=all,voperation=top]{196101}{16}
        \quad
        \opidiv[displayintermediary=all,voperation=top]{12256}{16}
        \quad
        \opidiv[displayintermediary=all,voperation=top]{766}{16}
        \quad
        \opidiv[displayintermediary=all,voperation=top]{47}{16}
        \quad
    \end{align*}

我知道应该有使用 pstricks 和类似包的方法,但我不知道如何使用它们。我希望有人能帮助我。

答案1

这是一个使用、参数允许TiKz的数字风格化的解决方案。xlopoperandstyleremainderstyle

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

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

我创建了两个宏:

  • 第一个调用的宏使用\chiffreTiKz 创建一个以数字本身为中心的节点。
  • 第二个函数\entoure创建一个形状节点,该节点围绕作为参数给出的两个节点。它使用 tikz 库fitshapes

这些命令需要双重编译将节点放置在正确的位置。

\documentclass[11pt]{article}
\usepackage{tikz}
\usetikzlibrary{fit,shapes}
\usepackage{xlop}

\newcommand{\chiffre}[2]{\tikz[remember picture] \node[inner sep=0pt](#1){#2};}

\newcommand{\entoure}[2]{\tikz[remember picture,overlay] \node[preaction={draw=black,ultra thick,opacity=.2,
transform canvas={xshift=1.5pt,yshift=-1.5pt}},draw,ellipse,ultra thick,inner sep=.5em,fit=(#1.center)(#2.center)]{} ;}


\begin{document}

 \begin{align*}
        \opidiv[displayintermediary=all,voperation=top,remainderstyle.5.1=\chiffre{A}]{196101}{16}
        \entoure{A}{A}
        \quad
        \opidiv[displayintermediary=all,voperation=top,remainderstyle.3=\chiffre{B}]{12256}{16}
        \entoure{B}{B}
        \quad
        \opidiv[displayintermediary=all,voperation=top,remainderstyle.2.1=\chiffre{C},remainderstyle.2.2=\chiffre{D}]{766}{16}
        \entoure{C}{D}        
        \quad
        \opidiv[displayintermediary=all,voperation=top,remainderstyle.1.1=\chiffre{E},remainderstyle.1.2=\chiffre{F},resultstyle.1=\chiffre{G}]{47}{16}
        \entoure{F}{E}
        \entoure{G}{G}
        \quad
    \end{align*}

\end{document}

输出:

绕椭圆形

答案2

事实上,这并不容易。在一个数字周围画一个圆(或椭圆)是直线(使用 pstricks,我相信使用 TikZ 也是如此)。在两个数字周围画一个椭圆更难,因为在输入一个数字和输入下一个数字之间有很多操作。以下是一个可能的答案:

\documentclass{article}
\usepackage[a4paper, margin=2cm]{geometry}
\usepackage{xlop}
\usepackage{pst-node, pstricks-add}

\begin{document}

\begin{center}
    \psset{boxsep=false,framesep=1pt, linecolor=red, linewidth=1.5pt}
    \opset{displayintermediary=all, voperation=top}%
    \opidiv[remainderstyle.5=\psovalbox]{196101}{16}%
    \quad
    \opidiv[remainderstyle.3=\psovalbox]{12256}{16}%
    \quad
    \opidiv[remainderstyle.2.1={\pnode(-1.5\opcolumnwidth,0.5ex){L}},
        remainderstyle.2.2={\pnode(2.2\opcolumnwidth,0.5ex){R}}]
        {766}{16}%
    \psRelNode(L)(R){0.5}{M}
    \psccurve(L)([offset=-1.5ex]M)(R)([offset=1.5ex]M)
    \quad
    \opidiv[resultstyle=\psovalbox,
        remainderstyle.1.1={\pnode(-1.5\opcolumnwidth,0.5ex){L}},
        remainderstyle.1.2={\pnode(2.2\opcolumnwidth,0.5ex){R}}]
        {47}{16}%
    \psRelNode(L)(R){0.5}{M}
    \psccurve(L)([offset=-1.5ex]M)(R)([offset=1.5ex]M)
\end{center}
\end{document} 

相关内容