TikZ 箭头尖端发生位移

TikZ 箭头尖端发生位移

我的问题有两个:

1) 我想要一个带有一些间隔的时间轴图。这是我的代码:

\draw[->|] (8,5)--(10,5);
\node[] (sh4) at (9.5,5.5){$s^{\text{h}}_{4}$};
\draw[|<-] (10,5)--(13,5);
\node[] (stt4) at (11,5.5){$STT_{4}$};

结果如下:

在此处输入图片描述

问题在于箭头尖端的垂直线太粗。它们应该完全处于同一位置,这样垂直线会更细。

2) 我怎样才能使箭头尖像-]?以下不起作用。似乎必须避开]

\draw[-]] (8,5)--(10,5);

答案1

此答案的先前版本使用了现已弃用的arrows库。较新的(但此时已过时)arrows.meta库可以非常轻松地解决您的第一个问题。旧答案可以在历史记录中找到。我们将使用Bar和 来代替|Bracket但是],我们将再次将|和定义]为简写(通过.tip处理程序)。

箭头通常以某种方式定义,以便它们触碰它们指向的点。您希望|箭头部分延伸到该点。您可以使用shorten >=-.5\pgflinewidth或更舒适地稍微改变箭头尖端的定义。在下面的代码中,这由'简写后面的表示。

由于]在很多地方这会成为选项的麻烦制造者,所以我们可以简单地定义一个(另一个)速记。

代码

\documentclass[tikz,border=1pt]{standalone}
\usetikzlibrary{arrows.meta}
\tikzset{
  |-|/.tip   = Bar[],
  |'-|'/.tip ={Bar[sep=0pt -.5 1]},
  [-]/.tip   = Bracket[],
  ['-]'/.tip ={Bracket[sep=0pt -.5 1]},
  (-)/.tip   = Parenthesis[],
  ('-)'/.tip ={Parenthesis[sep=0pt -.5 1]},
  % aliases
  brack/.tip  = ],
  brack'/.tip = ]',
}
\begin{document}
\begin{tikzpicture}[
  >=To,
  p/.pic={\draw[pic actions](left:.3)--(0,0);\draw[pic actions](right:.3)--(0,0);}
]
\matrix[
  row sep=1mm,
  row 1/.style={nodes={anchor=base,font=\scriptsize}},
  column 2/.style={shorten >=+-.5\pgflinewidth}
]{
  \node{normal}; & \node{shortening}; & \node{new tip}; \\
  \pic[->|]   {p}; & \pic[->|]   {p}; & \pic[->.|']  {p}; \\
  \pic[-{]}]  {p}; & \pic[-{]}]  {p}; & \pic[-{]'}]  {p}; \\
  \pic[-brack]{p}; & \pic[-brack]{p}; & \pic[-brack']{p}; \\
  \pic[-)]    {p}; & \pic[-)]    {p}; & \pic[-)']    {p}; \\
};
\end{tikzpicture}
\end{document}

输出

在此处输入图片描述

相关内容