\framebox 的行如何排列?

\framebox 的行如何排列?

我想堆叠盒子。盒子的框架线应该完全位于彼此的顶部。

最初的问题

但是,当我定义两个框,让一个框从另一个框结束的地方开始(从空间上讲),线条不会重叠,而且我会得到一条粗线,因为两条细线相邻。我必须稍微移动一个框,这样它才能按照我想要的方式工作。请参阅下面的 MWE。

\documentclass[a4paper, 12pt, titlepage]{article}

\begin{document}

\setlength{\unitlength}{1cm}
\begin{picture}(6.6, 3.1)

\put(0.2,1.4){\framebox(2.4, 1){\shortstack{my bottom \\ is fat}}}
\put(0.2,0.7){\framebox(2.4, 0.7){}}

\end{picture}

\begin{picture}(6.6, 3.1)

\put(0.2,1.41){\framebox(2.4, 1){\shortstack{my bottom \\ is not fat}}}
\put(0.2,0.7){\framebox(2.4, 0.7){}}

\end{picture}

\end{document}

在此处输入图片描述

但是这个“解决方案”很糟糕,因为如果改变线条粗细,它就会崩溃。有没有办法说线条的中间应该正好位于框的边缘?

等等,还有更多

那么 MWE 中的 M 代表最小,对吧?那么为什么要费心为文档类添加所有这些参数呢?不应该无论如何,这里都很重要。因此,与第一个 MWE 相比,第二个 MWE(真正的 MWE)没有文档类的可选参数:

\documentclass{article}

\begin{document}

\setlength{\unitlength}{1cm}
\begin{picture}(6.6, 3.1)

\put(0.2,1.4){\framebox(2.4, 1){\shortstack{my bottom \\ is fat}}}
\put(0.2,0.7){\framebox(2.4, 0.7){}}

\end{picture}

\begin{picture}(6.6, 3.1)

\put(0.2,1.41){\framebox(2.4, 1){\shortstack{my bottom \\ is not fat}}}
\put(0.2,0.7){\framebox(2.4, 0.7){}}

\end{picture}

\end{document}

令我惊讶的是,这导致了肥胖程度的一点变化:

在此处输入图片描述

这是怎么回事?在什么条件下线条会排成一行?什么影响了这一点?我如何预测图片会是什么样子?我什么时候需要纠正框的位置,什么时候不需要?

答案1

如果只需要堆叠两个框,则tcolorbox可以使用。默认情况下,所有 tcolorbox 都有上部和下部。

\documentclass{article}
\usepackage[most]{tcolorbox}

\tcbset{nobeforeafter}

\newtcolorbox{mybox}[1][]{
   enhanced,
    notitle,
    colframe=black,
    colback=white,
    segmentation style={solid,line width=0.5mm},
    sharp corners,
    width=3cm,
    split=0.5,
    #1}

\begin{document}

\begin{mybox}
Upper part
\tcblower
Lower part
\end{mybox}
\begin{mybox}[height=4cm, valign=center]
Upper part
\tcblower
Lower part
\end{mybox}
\begin{mybox}[height=6cm, width=4cm, halign=center, valign lower=bottom]
Upper part
\tcblower
Lower part
\end{mybox}

\end{document}

在此处输入图片描述

如果需要两个以上的箱子,一个可能的解决方案可能是TiKZ splited rectangle,尽管在这种情况下控制空部件高度更加困难。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes.multipart, positioning}

\begin{document}

\begin{tikzpicture}

\node[rectangle split, rectangle split parts=2, draw, text width=2cm, align=center] (a) {Upper\nodepart{two}Lower};

\node[rectangle split, rectangle split parts=3, draw, text width=2cm, align=center, right = of a] (b) {Upper\nodepart{two}\rule{0pt}{2cm}\nodepart{three}};

\node[rectangle split, rectangle split parts=5, draw, text width=2cm, align=center, right=of b] (c) {Upper};

\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容