如何在 Tikz 网络中获取椭圆形节点?

如何在 Tikz 网络中获取椭圆形节点?

我正在使用优秀的tikz 网络Jürgen Hackl 编写的包。我试图将一些节点的形状改为椭圆形,但我不知道该怎么做。从手册中,tikz-network:

使用选项形状可以修改顶点的形状。从而可以使用 TikZ 中实现的形状,包括:圆形、矩形、菱形、梯形、半圆形、等腰三角形……

但是当我编译此代码时:

\documentclass{article}
\usepackage{tikz-network}
\begin{document}

\begin{tikzpicture}
    \Vertex[color=white, x=-1, y=1, label=A]{A}
    \Vertex[color=white, x=1, y=1, label=B, shape=rectangle]{B}
    \Vertex[color=white, x=0, y=0, label=2, shape=ellipse]{2}
    \Edge[lw=1, Direct](A)(2)
    \Edge[lw=1, Direct](B)(2)
\end{tikzpicture}

\end{document}

我得到的就是这个

平均能量损失

而我希望节点 2 的形状是椭圆形,而不是圆形。

答案1

实际上,您的形状是椭圆形。它恰好具有相同的高度和宽度,因为这些是默认设置。您可以使用 选项提供额外的 TikZstyle选项\Vertex

\documentclass{article}
\usepackage{tikz-network}
\begin{document}

\begin{tikzpicture}
    \Vertex[color=white, x=-1, y=1, label=A]{A}
    \Vertex[color=white, x=1, y=1, label=B, shape=rectangle]{B}
    \Vertex[color=white, x=0, y=0, label=2, shape=ellipse, style={minimum width=2cm}]{2}
    \Edge[lw=1, Direct](A)(2)
    \Edge[lw=1, Direct](B)(2)
\end{tikzpicture}

\end{document}

MWE 输出

答案2

首先,我要明确说明您和 Joule V 的观察结果:如果文本长度超过包裹所预期的长度,它就会超出范围。

\documentclass{article}
\usepackage{tikz-network}
\begin{document}

\begin{tikzpicture}
    \Vertex[color=white, x=-1, y=1, label=A]{A}
    \Vertex[color=white, x=1, y=1, label=B, shape=rectangle]{B}
    \Vertex[color=white, x=0, y=0, label=2222222, shape=ellipse]{2}
    \Edge[lw=1, Direct](A)(2)
    \Edge[lw=1, Direct](B)(2)
\end{tikzpicture}

\end{document}

在此处输入图片描述

不用说,这看起来有点不太理想。发生这种情况的内部原因是文本不是node contents(正如人们天真地怀疑/希望的那样),而是标签所指示的label。这个问题可以按如下方式解决:

\documentclass{article}
\usepackage{tikz-network}
\makeatletter
\tikzset{network x offset/.initial=1ex,network y offset/.initial=1ex,
adjust size/.style={minimum width=width("\vertex@Label")+2*\pgfkeysvalueof{/tikz/network x offset},
minimum height=height("\vertex@Label")+2*\pgfkeysvalueof{/tikz/network y offset}}}
\makeatother
\begin{document}

\begin{tikzpicture}
    \Vertex[color=white, x=-1, y=1, label=A]{A}
    \Vertex[color=white, x=1, y=1, label=B, shape=rectangle]{B}
    \tikzset{every label/.append style={}}
    \Vertex[color=white, x=0, y=0, label=2222222, shape=ellipse,
    style={adjust size}]{2}
    \Edge[lw=1, Direct](A)(2)
    \Edge[lw=1, Direct](B)(2)
\end{tikzpicture}
\end{document}

在此处输入图片描述

因此,您需要做的就是添加style={adjust size}。作为副作用,这将真正成为一个椭圆,如果JouleV 建议,一旦您插入更宽(或更高)的文本。 键network x offsetnetwork y offset可以被认为是普通 pgf 键inner xsep和的类似物inner ysep

相关内容