使用tikz自定义bar箭头后在交点出现重叠变粗的问题?

发布于 2025-07-13 18:40:08

下面代码中 两个箭头的交界处会变粗,不应该是重叠吗?如何修改。

image.png

\documentclass[tikz,border=5pt]{standalone}
\usepackage{amsmath}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}[scale=1.2, every node/.style={font=\large}]
    % 定义参数(a和b的长度)
    \def\a{5}
    \def\b{1}
    
    % 左侧高度标注
    \draw[{Bar[width=10pt] Straight Barb[]}-{Straight Barb[] Bar[width=10pt]}] (-0.5,0) -- (-0.5,\a) node[midway,left] {\( a \)};
    \draw[{Bar[width=10pt] Straight Barb[]}-{Straight Barb[] Bar[width=10pt]}] (-0.5,\a) -- (-0.5,\a+\b) node[midway,left] {\( b \)};

\end{tikzpicture}

\end{document}

查看更多

关注者
0
被浏览
108
Sagittarius Rover
Sagittarius Rover 18小时前
我要成为Typst糕手/(ㄒoㄒ)/~~

这是一个非常有意义的问题

Learning From this link

\documentclass[tikz,border=5pt]{standalone}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}[
    foo /.tip = {Straight Barb[]Bar[width=10pt,sep=+0pt +-.5]},
    ]
    \draw[foo-foo] (-.5,0) -- (-.5,2) node[midway,left] {$2$};
    \draw[foo-foo] (-.5,2) -- (-.5,2+1) node[midway,left] {$1$};
    \draw[foo-foo] (0,0) -- (0,2) node[midway,left] {$2$};
    \draw[foo-foo] (.5,2) -- (.5,2+1) node[midway,left] {$1$};
    \fill[red] (0,2) circle (0.3pt);
    \fill[red] (.5,2) circle (0.3pt);
\end{tikzpicture}
\end{document}

image.png

但...作为提问的代码还可以更加简短,也应该更加简短。

你关注的只是两个自定义箭头的相连问题,为什么要贴一整个正方形的绘制代码出来?这个图与你问题的核心点有关系吗?

这同样将大大增加别人的阅读负担。

请总是给出可以体现你问题的最短代码。


Edit

在上面的链接中提到,Qrrbrbirlbel已经将符合这一特征的箭头加入TikZ-Extensions包中,查阅手册我们知道:

这种箭头特征被称为「untipped」

image.png

换言之,下面的代码可以更优雅地实现相同的效果:

\documentclass[tikz,border=5pt]{standalone}
\usetikzlibrary{arrows.meta}
\usetikzlibrary{ext.arrows}
\begin{document}
\begin{tikzpicture}[
    foo /.tip = {Straight Barb[]ext_Untipped Bar[width=10pt]},
    ]
    \draw[foo-foo] (-.5,0) -- (-.5,2) node[midway,left] {$2$};
    \draw[foo-foo] (-.5,2) -- (-.5,2+1) node[midway,left] {$1$};
    \draw[foo-foo] (0,0) -- (0,2) node[midway,left] {$2$};
    \draw[foo-foo] (.5,2) -- (.5,2+1) node[midway,left] {$1$};
    \fill[red] (0,2) circle (0.3pt);
    \fill[red] (.5,2) circle (0.3pt);
\end{tikzpicture}
\end{document}

image.png

2 个回答
123
123 18小时前
这家伙很懒,什么也没写!

如果是从两端画两条线,那么箭头会重合
如果是从一端画一条线接着从终点开始画第二天那么就不会重合,会变粗
而且应该是只有bar样式如此

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览