![TikZ 箭头尖端发生位移](https://linux22.com/image/267270/TikZ%20%E7%AE%AD%E5%A4%B4%E5%B0%96%E7%AB%AF%E5%8F%91%E7%94%9F%E4%BD%8D%E7%A7%BB.png)
我的问题有两个:
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}