TikZ 反转箭头错误放置

TikZ 反转箭头错误放置

当我将反向箭头作为装饰放置时,我可以用两种不同的方式来实现。这两种方式将它们放置在不同的位置,没有一种是正确的。在下面的代码中,我使用了这两种方式,以便让您看到不同的位置,但没有一种位置是非反向箭头的对称版本。您可以在垂直轴上看到它。

我希望图片对称。我可以通过把路径分成两部分来实现。这段代码能不能稍微修改一下,让它对称?(手动更改 .25 不是一个好主意,因为路径的长度不同)

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\begin{document}

\begin{tikzpicture}[decoration={markings,
  mark=at position .25 with {\arrowreversed{latex}},
  mark=at position .25 with {\arrow{latex reversed}},
  mark=at position .75 with {\arrow{latex}}}]
\clip (-3.2,-2.2) rectangle (3.2,2.2);
\draw[help lines] (-3.2,-2.2) grid (3.2,2.2);
\draw[thick,postaction={decorate}] (0,-2) -- (0,2);
\foreach \c in {-2,-1.5,-1,-.2,1}{
  \pgfmathparse{.33*exp(\c/-6)}
  \draw[x=\pgfmathresult cm,postaction={decorate},smooth,samples at={-9,-7,...,9}] plot
  (\x,{\x*(ln(abs(\x)*\pgfmathresult)*2 + \c)*\pgfmathresult});}
\end{tikzpicture}

\end{document}

这是图片


(由 Andrew Stacey 添加):这是该问题的一个最小工作示例

\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\begin{document}

\begin{tikzpicture}
\draw[thick,postaction={decorate},decoration={markings, mark=at position .25 with {\arrowreversed{latex}}}] (0,0) -- (2,0);
\draw[thick,postaction={decorate},decoration={markings, mark=at position .25 with {\arrow{latex reversed}}}] (0,-.2) -- (2,-.2);
\draw[thick,postaction={decorate},decoration={markings, mark=at position .75 with {\arrow{latex}}}] (2,-.4) -- (0,-.4);


\end{tikzpicture}

\end{document}

结果:

反向箭头

问题是得到一种语法,将前两个箭头中的一个与第三个箭头对齐(请注意每种情况下线条的绘制方向:第三个箭头与另外两个箭头的方向相反)。

答案1

您可以声明一个新箭头,它是原始箭头和“空箭头”的组合。这会使 PGF 丢弃导致原始箭头偏移的\pgfarrowsrightextend\pgfarrowsleftextend长度。如果您在线的末尾使用这些新箭头,它们看起来不会很好,因为箭头需要延伸一点才能完全覆盖它们下面的线(这就是左右延伸的目的)。

\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\begin{document}

\begin{tikzpicture}

\pgfarrowsdeclarecombine{newlatex}{newlatex}{latex}{latex}{}{}

\draw[gray,thick,postaction={decorate},decoration={markings, mark=at position .75 with {\arrow{latex}}}] (2,0)  -- (0,0); % Original arrow
\draw[thick,postaction={decorate},decoration={markings, mark=at position 0.25 with {\arrowreversed{newlatex}}}] (0,-.4)--  (2,-.4);
\draw[thick,postaction={decorate},decoration={markings, mark=at position 0.75 with {\arrow{newlatex}}}] (2,-.6)-- (0,-.6);

\end{tikzpicture}

\end{document}

带箭头标记的线

相关内容