我正在尝试使用 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 width
和minimum 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}