在 Tikz 中仅绘制矩形的一部分

在 Tikz 中仅绘制矩形的一部分

我怎样才能只绘制矩形的一部分?我想省略矩形的一小部分来放置一些文本。由于我使用各种复杂的矩形,所以我不想构建自己的“开放矩形”。

有办法吗?也许类似于使用弧?


目前,我正在使用

\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}

整个情况现在看起来是这样的:

在此处输入图片描述

相关内容