在 TikZ 中,是否有一种(方便的)方法来绘制两个指向内部的箭头,中间有两条垂直线和空白(参见草图)?

在 TikZ 中,是否有一种(方便的)方法来绘制两个指向内部的箭头,中间有两条垂直线和空白(参见草图)?

tikzpicture环境中,可以很容易地创建一个带有两个垂直条的双向箭头。参见下面的草图。

在此处输入图片描述

\begin{tikzpicture}
        \draw[|<->|] (-2, 0)--(2, 0);
\end{tikzpicture}

我想知道的是,有没有办法创建一些东西,其箭头指向“从外到内”,并且在两个垂直条之间有空白,就像下面的草图一样?

在此处输入图片描述

当长度太小而无法用第一种方式表示时,通常在物理图中这样做。

我是否必须手动放置这些条形图和箭头,或者有更好的方法吗?任何意见或想法都将不胜感激。

答案1

我不会猜测线的缩短或指定sep取决于箭头尖大小的项,除非您自己指定,否则很难找出这些项,对于倒置的尖头,我会将箭头尖放在开始和结束处。

不过,没有人愿意手动放置它们,因此我建议使用s 的UnMeasure和样式。这将需要您使用而不是。UnMeasure'edge nodeto--


Measure注意和之间的区别Measure',其中 Bar 实际放置在目标点上,而不是只是触摸它. 除了使用否定词之外sep,还可以加载ext.arrows库并使用Untipped Bar

代码

\documentclass[tikz]{standalone}
\usetikzlibrary{arrows.meta}
\tikzset{
  pics/arrow/.style={/tikz/sloped, /tikz/allow upside down,
    code=\pgfarrowdraw{#1}}, pics/arrow/.default=>,
  Measure/.tip ={Straight Barb[] . Bar[             ]},
  Measure'/.tip={Straight Barb[] . Bar[sep=+0pt +-.5]},
  Measure/.style ={Measure -Measure },
  Measure'/.style={Measure'-Measure'},
  UnMeasure/.style={
    line to, draw=none, arrows=-, % force -- in to, disable drawing and no tips
    every to/.append style={edge node={pic[at start]          {arrow=Measure}
                                       pic[at end, xscale=-1] {arrow=Measure}}}},
  UnMeasure'/.style={
    line to, draw=none, arrows=-, % force -- in to, disable drawing and no tips
    every to/.append style={edge node={pic[at start]          {arrow=Measure'}
                                       pic[at end, xscale=-1] {arrow=Measure'}}}}}
\begin{document}
\begin{tikzpicture}[ultra thick]
\draw[help lines] (-.5,-.5) grid[ystep=.5] (1.5,1.9);
\draw[  Measure ] ( 0, 0  ) -- (1, 0  );
\draw[  Measure'] ( 0,  .5) -- (1,  .5);
\draw[UnMeasure ] ( 0, 1  ) to (1, 1  );
\draw[UnMeasure'] ( 0, 1.5) to (1, 1.5);
\end{tikzpicture}
\end{document}

输出

第二幅图像是通过使用 实现的Straight Barb[angle'=60]

在此处输入图片描述在此处输入图片描述

答案2

这利用了箭头重置虚线图案。这允许人们使箭头之间的线消失。此外,人们可以arrows.meta轻松地反转库的箭头。

\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
    \draw[{Straight Barb[reversed].Bar[]}-{Bar[].Straight Barb[reversed]},dash pattern=on 0pt off 500pt]
    (-2, 0)--(2, 0);
\end{tikzpicture}    
\end{document}

在此处输入图片描述

显然,您可以改变箭头的外观,将其设为样式,等等。

答案3

arrows.meta

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary {arrows.meta}
\begin{document}
  \tikz{
    \draw[help lines](0,-1)grid(4,2);
    \draw [{Stealth[length=4pt]}-{Stealth[length=4pt]}] (0,1) -- (4,1);
    \draw [draw=none,tips=true,{Stealth[length=4pt,reversed]}-{Stealth[length=4pt,reversed]},shorten <=-4pt,shorten >=-4pt] (0,0) -- (4,0);
  }
\end{document}

编辑:与 Chris H. 的评论一致,但与 Qrrbrbirlbel 的解决方案相比,该解决方案不太成功。特别是shorten >=-3pt

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary {arrows.meta}
\begin{document}
\tikzset{
  mytips/.tip = {Straight Barb[length=2pt]},
  mytipsrev /.tip = {Straight Barb[length=2pt,reversed]},
  myarrow/.style = {{mytips}-{mytips}},
  myarrowreverse/.style = {draw=none,tips=true,{mytipsrev}|-|{mytipsrev},shorten <=-3pt,shorten >=-3pt},
}

\begin{tikzpicture}
    \draw[help lines](0,-1)grid(4,2);
    \draw [myarrow] (0,1) -- (4,1);
    \draw [myarrowreverse] (0,0) -- (4,0);
\end{tikzpicture}
\end{document} 

在此处输入图片描述

答案4

我迄今为止尝试写以下内容:

\begin{tikzpicture}
    \draw[->|] (-2.01, 0)--(-2, 0);
    \draw[->|] (2.01, 0)--(2, 0);
\end{tikzpicture}

另外,评论中建议的 Black Mild

\draw[>|-|<] (-2, 0)--(2, 0);   
\draw[white,shorten <=2.1pt,shorten >=2.1pt] (-2, 0)--(2, 0);

但是,第二个建议需要您手动调整箭头的位置,因为当您从 更改为 时,垂直条会发生位移>|-|<|<->|尽管如此,这仍然是一个有趣的建议,我认为它会有所帮助。

相关内容