带有文字的三角形

带有文字的三角形

我在 tikz 中有一个自动机,想在合适大小的三角形内放置一些文本。我该如何高效地做到这一点?


我尝试过使用正多边形,但无法将其缩小到正确大小:minimum height并且minimum size没有效果。那么是否有任何参数可以控制大小?

   \begin{tikzpicture}[auto,>=latex]
     \node[state,inner sep=0pt,minimum size=.3cm] at (0,0) (init) {};
     \node[state,inner sep=0pt,minimum size=.3cm] at (-5,-1.3) (idelta)
     {};
    \node[draw,minimum height=.5cm,regular
    polygon,regular polygon sides=3] at (-5,-1.3) {foo};

     \path[->] 
     (init)+(0,.5cm) edge (init)
     (init) edge node[] {bar} (idelta);
   \end{tikzpicture}

答案1

我认为通过字距调整这个已经足够小了(这使得盒子在水平方向上相当小):-)

\documentclass[tikz]{standalone}
\usetikzlibrary{shapes.geometric,automata}
\begin{document}
   \begin{tikzpicture}[auto,>=latex]
   \node[draw,minimum size=0cm,inner sep=0,regular polygon,regular polygon sides=3] at (-5,-1.3) {\kern-0.15emfoo\kern-0.15em};
   \node[draw,minimum size=0cm,inner sep=0,regular polygon,regular polygon sides=3] at (-5,-1.3) {\kern-0.5emfoo\kern-0.5em};
   \end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

我不懂 tikz,但我确信这些公式之一可以粘贴到 tikz 图片中。

\documentclass{article}
\usepackage{stackengine}
\usepackage{scalerel}
\newlength\triwidth
\newcommand\tridelt[1]{%
  \setlength\triwidth{\widthof{#1\ }}%
  \stackengine{-.4\triwidth}{#1\ }%
    {\scaleto{\Delta}{1.73\triwidth}}{O}{c}{F}{F}{L}%
}
\newcommand\trinorm[1]{%
  \setlength\triwidth{\widthof{\ #1\ }}%
  \stackengine{-.2\triwidth}{\ #1\ }
    {\scaleto{\triangle}{1.73\triwidth}}{O}{c}{F}{F}{L}%
}
\parskip 1ex
\begin{document}
\tridelt{x}
\tridelt{xyz}
\tridelt{xyzpdq}

\trinorm{x}
\trinorm{xyz}
\trinorm{xyzpdq}
\end{document}

在此处输入图片描述

答案3

使用 Qrrbrbirlbel 评论和回答如何明确设置 TikZ 标签锚点?,我得到了以下解决方案:

\newcommand{\triangleText}[4]{%x,y,height,text
        \node[inner sep=0,draw,minimum height=#3,regular
        polygon,regular polygon
        sides=3,label={[anchor=south,inner ysep=.03em]below:\footnotesize #4},anchor=north]
        at (#1,#2) {};
}

\makeatletter
\tikzset{anchor/.append code=\let\tikz@auto@anchor\relax}
\makeatother

在序言中。

三角形示例,例如树木

相关内容