我是第一次使用 tikz-network,但我发现这很有趣。当我
\usepackage{tikz}
\usepackage{tikz-network}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
\usetikzlibrary {arrows.meta}
\Vertex[label=a,fontscale=1.3,size=1.5]{a}
\Vertex[label=b,fontscale=1.3,size=1.5,x=0,y=-4]{b}
\Vertex[label=$u_1$,fontscale=1.3,x=-3,y=-6]{U1}
\Vertex[label=$u_n$,fontscale=1.3,x=3,y=-6]{UN}
%
\Edge[style={dashed},bend=-25,label={$u_2,\ldots, u_{n-1}$},fontscale=1.3](U1)(UN)
%
\Edge[style={latex-latex},label={$E_{u,g}^h$, $E_{g,u}^h$},fontscale=1.3](a)(b)
\Edge[Direct,label={$E_{u_1,g}^h$, $E_{g,u_1}^h$},fontscale=1.3](U1)(b)
\Edge[Direct,label={$E_{u_n,g}^h$, $E_{g,u_n}^h$},fontscale=1.3](UN)(b)
\end{tikzpicture}
\end{document}
边缘的标签位于白色框中,该框太宽并覆盖了相应的边缘。我还尝试了InnerSep
手册中注明的一些参数( )(带有\SetEdgesStyle
, \SetTextStyle
),但我无法实现我想要的效果。啊,顺便说一句,所有内容都在 Overleaf 中。有什么建议吗?
答案1
您可以通过编辑默认值来更改边缘上标签的外观EdgeLabelStyle
,其定义为(在这里您可以看到白色框实际上是一个圆圈):
\tikzset{EdgeLabelStyle/.style={circle,
fill = \cmdNW@DES@TextFillColor,
fill opacity = \cmdNW@DES@TextFillOpacity,
inner sep = \cmdNW@DES@InnerSep,
outer sep = \cmdNW@DES@OuterSep,
rotate = \cmdNW@DES@TextRotation,
text opacity = \cmdNW@DES@TextOpacity,
font = \cmdNW@DES@TextFont}}
}%
因此,您可以执行以下操作:
\documentclass[border=1mm]{standalone}
\usepackage{tikz-network}
\usetikzlibrary{arrows.meta}
\tikzset{EdgeLabelStyle/.append style={
rectangle,
inner sep=3pt % or change via \EdgeInnerSep
}}
\begin{document}
\begin{tikzpicture}
\Vertex[label=a,fontscale=1.3,size=1.5]{a}
\Vertex[label=b,fontscale=1.3,size=1.5,x=0,y=-4]{b}
\Vertex[label=$u_1$,fontscale=1.3,x=-3,y=-6]{U1}
\Vertex[label=$u_n$,fontscale=1.3,x=3,y=-6]{UN}
%
\Edge[style={dashed},bend=-25,label={$u_2,\ldots, u_{n-1}$},fontscale=1.3](U1)(UN)
%
\Edge[style={latex-latex},label={$E_{u,g}^h$, $E_{g,u}^h$},fontscale=1.3](a)(b)
\Edge[Direct,label={$E_{u_1,g}^h$, $E_{g,u_1}^h$},fontscale=1.3](U1)(b)
\Edge[Direct,label={$E_{u_n,g}^h$, $E_{g,u_n}^h$},fontscale=1.3](UN)(b)
\end{tikzpicture}
\end{document}