我试图通过放置一个节点在箭头上添加一个叉号。但是我遇到了两种奇怪的行为:
- 应该被划掉的节点有一个箭头
- 箭头受交叉形状中设置的线宽影响
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes}
\usetikzlibrary{scopes}
\begin{document}
\begin{tikzpicture}
{ [every to/.style=bend left]
\draw[-latex] (1,-1.5) to node[draw, red, sloped, cross out, line width=.5ex, minimum width=1.5ex, minimum height=1ex, anchor=center]{} (0, -.25);
\draw[-latex] (3,-1.5) to (2, -.25);
}
\end{tikzpicture}
\end{document}
注意黑色路径的宽箭头尖和交叉形状中的箭头。图片不太新,但有必要提一下,我需要bend left
解释为什么我不能接受彼得的当前解决方案。
我怎样才能解决这个问题(我不太熟悉路径范围)。
答案1
这cross out
该cross out
形状定义了一条仅绘制两条线的前景路径:
\foregroundpath{
% store lower right in xa/ya and upper right in xb/yb
\southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y
\northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y
\pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@ya}}
\pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@yb}}
\pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@yb}}
\pgfpathlineto{\pgfqpoint{\pgf@xb}{\pgf@ya}}
}
它缺少任何附加设置,因此它继承了上面的任何样式。
我们需要\pgfsetarrows{-}
和\pgfsetdash{}{0pt}
。
你可以通过etoolbox
以下方式轻松修复这个问题(无需完全重新定义)
\usepackage{etoolbox}
\cspreto{pgf@sh@fg@cross out}{\pgfsetarrows{-}\pgfsetdash{}{0pt}}
仅适用于 TikZ(不是 PGF),但更简单的方法是使用
\tikzset{every cross out node/.append style={-,solid}}
用于重新调整箭头的大小。
看起来节点的线宽设置(而不是通常的线宽设置)以某种方式用于计算箭头尖的大小。我没有简单的解决办法。
你可以做
\draw[-latex,thin] …
其中thin
是默认设置 ( .4pt
) 或者在样式中使用它every path
:
every path/.append style={thin}
代码
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes}
\usetikzlibrary{scopes}
\tikzset{every cross out node/.append style={-, solid}}
%\usepackage{etoolbox}
%\cspreto{pgf@sh@fg@cross out}{%
% \pgfsetarrows{-}%
% \pgfsetdash{}{0pt}%
%}
\begin{document}
\begin{tikzpicture}
{ [bend left, dashed, every path/.append style={thin}]
\draw[-latex] (1,-1.5) to node[draw=red, sloped, cross out, line width=.5ex, minimum width=1.5ex, minimum height=1ex, anchor=center]{} (0, -.25) ;
\draw[-latex] (3,-1.5) to (2, -.25);
}
\end{tikzpicture}
\end{document}
输出
答案2
一个简单的解决方案是将节点放在末尾并使用选项midway
来定位节点,并选择-
确保不添加额外的箭头:
笔记:
- 我将使用形式切换
to
为使用,--
因为我不明白为什么to
在这种情况下需要,但通过该选项似乎也存在节点放置问题midway
。
代码:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes}
\begin{document}
\begin{tikzpicture}
\draw[-latex] (1,-1.5) -- (0, -.25)
node[draw, midway, -, red, sloped, cross out, line width=.5ex, minimum width=1.5ex, minimum height=1ex, anchor=center]{};
\draw[-latex] (3,-1.5) -- (2, -.25);
\end{tikzpicture}
\end{document}