如何控制 TikZ 形状中的文本边距

如何控制 TikZ 形状中的文本边距

当使用 TikZ 库中的不同形状时,它们对文本具有不同的内部填充。因此,对于相似的文本,我们将具有不同大小的节点(形状)。然后,子节点将不相似,整个树将变得笨拙。统一具有相似文本的形状大小的标准方法是什么。这是一个简单的例子,显示了梯形和三角形的显著差异。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes,trees}
\begin{document}

\begin{tikzpicture}
\node[circle,fill=blue] (par) at (0,0) {Parent}
    [level distance=4cm,sibling angle=45,clockwise from=80]
    child {node[regular polygon,regular polygon sides=3,fill=red] (child1) {Child 1}}
    child {node[regular polygon,regular polygon sides=4,fill=yellow] (child2) {Child 2}}
    child {node[trapezium,fill=green] (child3) {Child 3}};
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案1

以下是使图表更加美观的尝试:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes,trees}
\begin{document}

\begin{tikzpicture}
\tikzset{every node/.style={minimum width=2.5cm,minimum height=2.5cm}}
\tikzset{trapezium stretches=true}
\node[circle,fill=blue] (par) at (0,0) {Parent}
    [level distance=6cm,sibling angle=45,clockwise from=80]
    child {node[regular polygon,regular polygon sides=3,fill=red] (child1) {Child 1}}
    child {node[regular polygon,regular polygon sides=4,fill=yellow] (child2) {Child 2}}
    child {node[trapezium,fill=green] (child3) {Child 3}};
\end{tikzpicture}

\end{document}

如您所见,修改了三处:

  1. 通过添加,minimum width=2.5cm,minimum height=2.5cm你可以确保节点不会缩小到给定的大小以下
  2. 我增加了level distance让事情看起来更好
  3. 最后,但并非最不重要的一点,我添加了行\tikzset{trapezium stretches=true}。这解决了纵横比问题。如果没有这个,梯形的宽度会不成比例地增加,以适应minimum height

你喜欢它?

编辑\tikzset{every node/.style={inner sep=1pt]}:好的,我现在明白了。您可以通过添加或任何您想要的尺寸来减少填充。

编辑2:我们再来一次。:)主要的挑战在于节点有各种形状,并且每个节点的行为都不同,正如您在评论中所说的那样。我仍然认为您应该将设置minimum height为某个值,以确保将设置为某个负值时梯形和圆不会缩小太多inner sep。然后,您可以通过强制底角来纠正梯形的形状:

\begin{tikzpicture}
\tikzset{every node/.style={inner sep=-3pt,minimum height=1.5cm}}
\tikzset{trapezium stretches=true,trapezium angle=3}
\node[circle,fill=blue] (par) at (0,0) {Parent}
    [level distance=4cm,sibling angle=45,clockwise from=80]
    child {node[regular polygon,regular polygon sides=3,fill=red] (child1) {Child 1}}
    child {node[regular polygon,regular polygon sides=4,fill=yellow] (child2) {Child 2}}
    child {node[trapezium,fill=green] (child3) {Child 3}};
\end{tikzpicture}

在此处输入图片描述

相关内容