使用 tikz 指定文本周围矩形的宽度/高度

使用 tikz 指定文本周围矩形的宽度/高度

我正在尝试使用 tikz 绘制具有指定大小的矩形的文本(文本可能会或可能不会填充指定的空间)。我可以让它在指定位置绘制文本/矩形,并且可以指定文本的宽度(这很好),但矩形只会自动适应文本的大小。我想定义绘制部分的大小,与文本宽度分开。定义的大小可能在整个文档中有所不同,因此我不能全局定义它。

\documentclass{article}
\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
\node[draw,text width=4cm] at (2,-2) {some text spanning three lines with automatic line breaks};
\end{tikzpicture}

\end{document}

答案1

您可以使用minimum widthminimum height键。

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node[draw,text width=4cm,minimum height=6cm,minimum width=10cm] at 
     (2,-2) {some text spanning three lines with automatic line breaks};
\end{tikzpicture}
\end{document}

答案2

您可能可以通过使用 定义新的节点样式来实现这一点\tikzset,但使用宏更简单。用于[inner sep=...]调整/增加节点的大小。否则文本将不会居中。

\documentclass{article}
\usepackage{tikz}

\newsavebox{\tempbox}

\newcommand{\textbox}[1]% #1 = text
{\savebox{\tempbox}{#1}% get width
 \ifdim\wd\tempbox<4cm\relax
   \makebox[4cm]{\usebox{\tempbox}}%
 \else
   \parbox{4cm}{\raggedright #1}%
 \fi}
\begin{document}

\begin{tikzpicture}
\node (A) [draw] at (2,-2) {\textbox{some text spanning three lines with automatic line breaks}};
\node[right=1em,draw] at (A.east) {\textbox{short}};
\end{tikzpicture}

\end{document}

\文本框

相关内容