以下是我为实现此目标所做的事情
\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
的数量和 确实因节点而异。parts
labels
最后,我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}