我怎样才能只绘制矩形的一部分?我想省略矩形的一小部分来放置一些文本。由于我使用各种复杂的矩形,所以我不想构建自己的“开放矩形”。
有办法吗?也许类似于使用弧?
目前,我正在使用
\begin{tikzpicture}
\draw[rounded corners=3pt] (-5,-5) rectangle (5,5);
\node at (0,5) {text with line in the middle from rectangle};
\end{tikzpicture}
我已经尝试过了
使用圆弧裁剪矩形或使用以下方法保留矩形的某些部分如何在 TikZ 中反转“剪辑”选择?,但两者都太复杂、太脆弱,无法正常工作。一定有简单的方法!?
更新:
因为下面还有其他的图画,所以在文字下面用填充色是没办法的。下面这个例子很简单,在其他图片中,文字后面还有更“生动的背景”……
答案1
你的问题不太清楚。
也许下面的代码可以帮助到你:
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
% first solution
\node (label) at (0,5) {text with line in the middle from rectangle};
\draw[rounded corners=3pt]
(label) -| (-5,-5) -| (5,5) -- (label);
% second solution (with filled rectangle and node)
\node (label) at (0,4)
{\phantom{text with line in the middle from rectangle}};
\draw[rounded corners=3pt,fill=red!10]
(label) -| (-4,-4) -| (4,4) -- (label);
\node[draw,fill=lime!10,rounded corners=3pt] (label) at (0,4)
{text with line in the middle from rectangle};
\end{tikzpicture}
\end{document}
答案2
也许这个append after command
选项能帮到你。它允许放置所有节点并仅绘制边框的一部分。这只是一个部分解决方案,因为如果你想填充它们,你需要使用多个覆盖层。我希望有人能提供更好的解决方案。
无论如何,这里有一个例子:
\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\begin{tikzpicture}
\draw node[label={[name=mylabel,label distance=-2mm]above:label},
append after command={[rounded corners]
(b.north-|mylabel.west)-|(b.west)|-(b.south)-|(b.east)|-(b.north-|mylabel.east)},
]
(b) {My first rectangle};
\draw node[minimum width=3cm,minimum height=3cm,align=center,
append after command={(mylabel.north-|c.west)|-(c.north east)|-(c.south west)--(b.south-|c.west)},
]
(c) at (2,1) {My second rectangle};
\end{tikzpicture}
\end{document}
答案3
我的最终解决方案
我接受了 Paul Gaborit 的建议,我需要手工绘制矩形,而不是使用类似的东西(0,0) rectangleArc (30:360:1cm)
。所以我最终得到了:
\documentclass[tikz,border=3mm]{standalone}
\begin{document}
\newcommand{\labeledRectangle}[7]{
\node[text=black, opacity=0.45, anchor=west] (label) at (#2+0.01, #3-0.01) {#4};%
\node[text=#1, anchor=west] at (#2,#3) {#4};%
\draw[#1, rounded corners=3pt]
(label) -| (#5,#6) -| (#7,#3) -- (label);
}
\begin{tikzpicture}
\labeledRectangle{red}{-.4}{2}{B\"uchi}{-1}{-3.2}{3.5}{2};
\end{tikzpicture}
\end{document}
整个情况现在看起来是这样的: