Tikz:遇到圆形节点时的线帽

Tikz:遇到圆形节点时的线帽

我有大量涉及圆形节点(其中一些填充白色)的 tikz 图形,它们通过边缘连接(其中一些很粗)。

我遇到的问题是,无论我使用哪种线帽,边缘要么不能正确地与节点相交(例如line cap=butt),要么会渗入白色填充,如以下 MWE 所示:

\documentclass[tikz]{standalone}
\tikzset{
    every picture/.style={line width=0.45pt, line cap=round},
    vtx/.style={circle, draw, fill, inner sep=0pt, minimum width=4.88125pt},
    whitevtx/.style={circle, draw, fill=white, inner sep=0pt, minimum width=4.88125pt},
}
\tikzstyle{very thick}=[line width=1.65pt]

\begin{document}
    \begin{tikzpicture}
        \node[vtx] (A1) at (0,0) {};
        \node[whitevtx] (B1) at (2,0) {};
        \draw[very thick] (A1) -- (B1);
    \end{tikzpicture}
\end{document}

这样就画出了下面的简单图形: 通过边连接的两个节点

放大后如下:

边缘交汇节点的缩放

有人有优雅的解决此问题的解决方案?我考虑了以下可能性:

  1. 将边缘放在背景 pgflayer 上。这样做的问题是线帽默认为,butt因此需要重新指定(但也许我做错了什么,这里有一个解决方案)。

  2. 首先将所有节点绘制为坐标,绘制线条,然后在坐标上绘制顶点。呃。

我有大量这样的图像,因此解决方案确实需要优雅而简单,最好通过应用一些新的全局样式来解决。

最后,还有一些其他的限制:更改指定的线宽是违反规则的,并且我理想情况下还会保留line cap=round边的通用说明符(尽管如果可以区分,则对于节点之间的边来说没有必要),因为此处设置的样式也将应用于其他类型的图形。

编辑:在我的特殊情况下,我认为没有必要,一个可以解决的解决方案真的粗线(例如line width=4pt)会得到额外的加分!

答案1

像这样:

在此处输入图片描述

编辑: 你的 Ti 的背景Z 设置是未知的(对我们来说),很难判断。无论如何,从我的经验来看,我认为所有线条都应具有相同的线条杯(line cap=butt)没有充分的理由。特别是因为在许多情况下,这种设置显然可能会导致问题。我宁愿在真正需要的地方本地使用这些设置,并为更短的代码最终为此定义新的 stile,例如

lb/.style = {line cap=round}

您的问题可以简单解决,通过增加连接线的厚度(正如@Sigur在他的评论中所指出的),添加圆圈样式outer sep=0pt

\documentclass[border=3.141592]{standalone}
\usepackage{tikz}
\tikzset{
    vtx/.style={circle, draw, fill=#1, 
                inner sep=0pt, outer sep=0pt, % <---
                minimum width=5pt},
    vtx/.default = black,

        }
    

\begin{document}
    \begin{tikzpicture}
        \node[vtx]          (A1) at (0,0) {};
        \node[vtx=white]    (B1) at (2,0) {};
        \draw[very thick]   (A1) -- (B1);
    \end{tikzpicture}
\end{document}

但是,对于更粗的连接线,您需要将图像重新设计成如下所示的样子:

\documentclass[border=3.141592]{standalone}
\usepackage{tikz}
\tikzset{
    vtx/.style={circle, draw, fill=#1,
                inner sep=0pt, outer sep=0pt, % <---
                minimum width=5pt},
    vtx/.default = black,
     lb/.style = {line cap=round}
        }

\begin{document}
    \begin{tikzpicture}
        \coordinate (A1) at (0,0);
        \coordinate (B1) at (2,0);
        \draw[line width=4pt]   (A1) -- (B1);
        \node[vtx]       at (A1) {};
        \node[vtx=white] at (B1) {};
        \draw[very thick,lb]  (0,0.5) -- (2,0.5);
    \end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容