盒子里的力量来解释二进制书写

盒子里的力量来解释二进制书写

下面的代码是自动进行计算的宏在此处输入图片描述

输出使用了太多的水平间距。有没有办法使用内部空间较小的框?也许我应该使用另一种方法来格式化我的输出...用tabularray?欢迎任何建议。

\documentclass[12pt]{article}

\usepackage{amsmath}
\usepackage{color}

\newcommand\decopower[2]{%
    \overset{\raisebox{2pt}{\tiny\color{blue}\fbox{#2}}}{#1}}

\begin{document}

$(\decopower{1}{6}
  \decopower{0}{5}
  \decopower{0}{4}
  \decopower{1}{3}
  \decopower{1}{2}
  \decopower{0}{1}
  \decopower{1}{0})_2$

\end{document}

答案1

完全自动化的版本。抱歉\foo,请选择一个更好的名称。

\documentclass{article}
\usepackage{amsmath}
\usepackage{xcolor}

\ExplSyntaxOn

\NewDocumentCommand{\foo}{mm}
 {% #1 = positive integer, #2 = radix
  ( \projetmbc_foo:nn { #1 } { #2 } )\sb{#2}
 }

\tl_new:N \l__projetmbc_foo_tl
\dim_new:N \__projetmbc_foo_wd_dim

\cs_new_protected:Nn \projetmbc_foo:nn
 {
  \tl_set:Nx \l__projetmbc_foo_tl { \int_to_base:nn { #1 } { #2 } }
  \hbox_set:Nn \l_tmpa_box { \tiny \int_eval:n { \tl_count:N \l__projetmbc_foo_tl - 1 } }
  \dim_set:Nn \__projetmbc_foo_wd_dim { \box_wd:N \l_tmpa_box + 2pt }
  \int_step_inline:nnnn { \tl_count:N \l__projetmbc_foo_tl - 1 } { -1 } { 0 }
   {
    \overset
     {% the index
      \hbox:n { \color{blue!80!red} \__projetmbc_foo_index:n { ##1 } }
     }
     {
      \tl_item:Nn \l__projetmbc_foo_tl { \tl_count:N \l__projetmbc_foo_tl - ##1 }
     }
   }
   \hspace{\fboxrule}
 }

\cs_new_protected:Nn \__projetmbc_foo_index:n
 {
  \dim_set:Nn \fboxsep { 1pt }
  \framebox[\__projetmbc_foo_wd_dim]{ \tiny #1 }
  \hspace { -\fboxrule }
 }

\ExplSyntaxOff

\begin{document}

\begin{gather*}
\foo{147}{2} \\
\foo{147}{3} \\
\foo{12345}{2} \\
\foo{12345}{3} \\
\foo{12345}{4} \\
\foo{12345}{8}
\end{gather*}

\end{document}

在此处输入图片描述

答案2

这就是你所想的吗?

在此处输入图片描述

\documentclass{article}

\usepackage{tikz}

\newcommand{\decopower}[2][]{\tikz[baseline, anchor=base]{
  \foreach \d[count=\n] in {#2}{\xdef\nn{\n}}
  \foreach \d[count=\n, evaluate=\n as \m using int(\nn-\n)] in {#2}{
    \node[inner sep=0, label={[draw, blue, inner sep=1pt, outer sep=1pt, font=\tiny]90:\m}] at (\n/4,0){\d};
}}}

\begin{document}

$(\decopower{1,0,0,1,1,0,1})_2
\quad
(\decopower{1,0,2,0,0,2,1,2,1})_3$

\end{document}

相关内容