带有文本或数字的框

带有文本或数字的框

我正在尝试获得类似这样的更简洁的版本我想要得到什么

以下是我为实现此目标所做的事情

\begin{equation*}
 \begin{aligned}
     \overbrace{\fbox{r}\fbox{r+1}\dots\fbox{2r-1}}_{Block-2}\ \ \ \ &\underbrace{\fbox{2r}\dots\fbox{r+k-1}\fbox{0}\dots\fbox{r-1}}_{Block-3}\ \ \ \ \overbrace{\fbox{r+k}\dots\fbox{k+2r-1}}_{Block-4}\\
       & \hspace{1ex}\Big\downarrow\\
    \underbrace{\fbox{2r}\dots\fbox{r+k-1}\fbox{0}\dots\fbox{r-1}}_{Block-3}\ \ \ \ 
       & \overbrace{\fbox{r+k}\dots\fbox{k+2r-1}}_{Block-4} \ \ \ \ 
    \overbrace{\fbox{r}\dots\fbox{k+r-1}}_{Block-2}
 \end{aligned}
 \end{equation*}

有些盒子大小不同。我希望箭头位于中间,并且箭头下方的下部与上部对齐。

我也想获得以下内容,但不知道如何开始

没有线索

文字可以是黑色的。我只是画了张图来展示我想要得到的东西。

任何帮助都将受到赞赏。

答案1

您可以使用定义中的a 来定义自己的框,其高度k和深度分别为 a 。您可以根据需要更改哪些块具有a 。j\vphantom{$jk$}\overbrace\underbrace

然后将三行放在array第二\Big\downarrow行的 中。您可以根据需要使用不同的大小,例如\big\bigg。间距使用 进行调整\arraystretch{2.5}。您可以通过更改 来调整间距2.5

在此处输入图片描述

\documentclass{article}

\usepackage{amsmath}

\newcommand{\mybox}[1]{\framebox{$#1$\vphantom{$jk$}}}

\begin{document}
\[\renewcommand*{\arraystretch}{2.5}
\begin{array}{c}
\overbrace{\mybox{r}\mybox{r+1}\cdots\mybox{2r-1}}^{\textup{Block }-2}\qquad
    \overbrace{\mybox{2r}\cdots\mybox{r+k-1}\mybox{0}\cdots\mybox{r-1}}^{\textup{Block }-3}\qquad
    \overbrace{\mybox{r+k}\cdots\mybox{k+2r-1}}^{\textup{Block }-4}\\
\Big\downarrow\\
\underbrace{\mybox{2r}\cdots\mybox{r+k-1}\mybox{0}\cdots\mybox{r-1}}_{\textup{Block }-3}\qquad
    \underbrace{\mybox{r+k}\cdots\mybox{k+2r-1}}_{\textup{Block }-4}\qquad
    \underbrace{\mybox{r}\mybox{r+1}\cdots\mybox{2r-1}}_{\textup{Block }-2}
\end{array}
\]
\end{document}

答案2

以下是创建第一张图表或绘图的一种方法:

结果

我使用tikz,其shapes.multipart库用于split rectangles,以及positioning用于相对放置。请参阅 pfg 手册中的详细信息。

基本上,您仍将\node语句放置在相对位置(右侧、下方),并且{text}仍在括号内。我故意没有创建尽可能最紧凑的代码版本,因此您仍然可以跟踪开发细节。

放置完所有 6 个节点后,我移动了公共style选项,将其称为reg,就在语句之后\tikz。此样式包含在每个节点中,并且split在那里给出了 和 的详细信息。通过使用忽略功能,这些部分可以编写得更紧凑。这样一来,节点labels的数量和 确实因节点而异。partslabels

最后,我draw从节点 (b) 到 (d) 画了一个箭头,这两个节点恰好是两行中间的东西:可以将起点和终点稍微后退一点。如果需要,还可以更改箭头的尖端。在我看来,括号不是必需的:它们不会添加更多相关信息,不是吗?

请在每行后的评论中寻找相关的新想法。

\documentclass[10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.multipart, positioning}

\begin{document}


    \tikz [reg/.style={draw=black!60, rectangle split, rectangle split horizontal}]{
        % --- 1st row --------------------
        \node  [reg,% <<< common style, see above 
                rectangle split parts=4,% <<< 4 split rectangles 
                label=$Block-2$] (a)    {% <<< label above, naming this node (a)
            $r$
            \nodepart{two} $r+1$
            \nodepart{three} $...$
            \nodepart{four} $2r-1$
        };
        
        \node [reg, rectangle split parts=6, 
               right=of a,% <<< positioning it somehow right of node (a)
               label=$Block-3$] (b)     {
            $2r$
            \nodepart{two} $...$
            \nodepart{three} $r+k-1$
            \nodepart{four} $0$
            \nodepart{five} $...$
            \nodepart{six} $r-1$
        };

        \node [reg, rectangle split parts=3, right=of b, label=$Block-4$] (c)   {
            $r+k$
            \nodepart{two} $...$
            \nodepart{three} $k+2r-1$
        };
        
        % --- 2nd row --------------------
        \node [reg, rectangle split parts=6, 
               below=of a,% <<< put below node (a)
               label=below:$Block-3$] (f)   {% put nodes label below of this thingie
            $2r$
            \nodepart{two} $...$
            \nodepart{three} $r+k-1$
            \nodepart{four} $0$
            \nodepart{five} $...$
            \nodepart{six} $r-1$
        };

        \node [reg, rectangle split parts=3, below=of b, label=below:$Block-4$] (d)     {
            $r+k$
            \nodepart{two} $...$
            \nodepart{three} $k+2r-1$
        };

        \node [reg, rectangle split parts=3, below=of c, label=below:$Block-2$] (e)     {
            $r$
            \nodepart{two} $...$
            \nodepart{three} $k+r-1$
        };

      % --- connecting both middle thingies ---------
      \draw [->] (b) -- (d);% "draw -> from node (b) to node (d)"       
    }
 
\end{document}

相关内容