即使设置了最小宽度和高度,TikZ 节点也会根据文本长度改变大小

即使设置了最小宽度和高度,TikZ 节点也会根据文本长度改变大小

我在 TikZ 中有一个梯形节点,无论在\tikzpicture.

\documentclass[10pt]{article}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}

\tikzstyle{object} = [draw, trapezium, trapezium left angle=70, trapezium right angle=-70, minimum width=3cm, minimum height=1cm, text centered, draw=black]

\begin{document}

\begin{tikzpicture}[node distance=2cm]
    \node(n1)[object]{a};
    \node(n2)[object, right of=n1, xshift=1cm]{ab};
    \node(n3)[object, right of=n2, xshift=1cm]{abc};
\end{tikzpicture}

\end{document}

设置最小高度和宽度似乎是解决许多与该主题相关的问题的首选,但它却产生了意想不到的结果。

最小宽度和高度

这些梯形的尺寸各不相同,而且梯形内部的字符越少,高度似乎就越高。为什么节点的高度越来越高,字符却越来越少?它试图容纳什么?我希望通过保持宽度不变来增加高度,以容纳更多文本。

% Same as before
\tikzstyle{object} = [draw, trapezium, trapezium left angle=70, trapezium right angle=-70, text width=3cm, text height=1cm, text centered, draw=black]
% Same as before

使用text heighttext width代替minimum变体,即使使用 ,文本仍会偏离中心text centered。同时使用它们两个会产生相同的图像。

文字宽度和高度

我也尝试过设置inner sep各种值,但效果并不好。任何解决方案都值得赞赏。

答案1

设置文本宽度和文本高度应该会导致 TikZ 使用\parbox,但显然没有使用[c]

\documentclass[10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}

\tikzset{object/.style={draw, trapezium, trapezium left angle=70, trapezium right angle=-70, draw=black, inner sep=0pt}}

\begin{document}

\begin{tikzpicture}[node distance=2cm]
    \node(n1)[object]{\parbox[c][1cm][c]{3cm}{\centering a}};
    \node(n2)[object, right=1cm] at (n1.east) {\parbox[c][1cm][c]{3cm}{\centering ab}};
    \node(n3)[object, right=1cm] at (n2.east) {\parbox[c][1cm][c]{3cm}{\centering abc}};
    \node[draw=red,minimum width=3cm, minimum height=1cm] at (n1.center){};
    \node[draw=red,minimum width=3cm, minimum height=1cm] at (n2.center){};
    \node[draw=red,minimum width=3cm, minimum height=1cm] at (n3.center){};
\end{tikzpicture}

\end{document}

演示

相关内容