如何反转 TikZ 中的交叉点段(不是 pgfplots)

如何反转 TikZ 中的交叉点段(不是 pgfplots)

从某种程度上来说,这只是一个提醒,未解之谜但可以说有一些新的见解或倾向。(我不认为实际问题是旧问题的重复。)该fillbetween库具有提供对交叉段的访问的功能。我知道Heiko Oberdiek 的声明这可能并不总是准确的,但我发现在很多情况下它实际上足够准确。在我看来,真正的问题是reverse在普通的 Ti 中不起作用Z,而在 pgfplots 中它只是工作正常考虑这个 MWE:

\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots} % loads tikz
\pgfplotsset{compat=1.15}
\usetikzlibrary{intersections,fillbetween} 
\begin{document}
\begin{tikzpicture}
    \path[name path = line1, draw] (-1,0) to[out=90,in=90] (1,1) to[out=-90,in=0]  (0,-1);
    \path[name path = line2, draw] (-1,1) -- (1,-1);
    \draw[very thick, intersection segments={of=line1 and line2,sequence=L2}];
\end{tikzpicture}

\begin{tikzpicture}
    \path[name path = line1, draw] (-1,0) to[out=90,in=90] (1,1) to[out=-90,in=0]  (0,-1);
    \path[name path = line2, draw] (-1,1) -- (1,-1);
    \draw[very thick, intersection segments={of=line1 and line2,sequence=L1 R2}];
\end{tikzpicture}

% The following does not work.
% 
% \begin{tikzpicture}
%     \path[name path = line1, draw] (-1,0) to[out=90,in=90] (1,1) to[out=-90,in=0]  (0,-1);
%     \path[name path = line2, draw] (-1,1) -- (1,-1);
%     \draw[very thick, intersection segments={of=line1 and
%   line2,sequence=L2[reverse] R2}];
% \end{tikzpicture}

\end{document}

enter image description here

如果我取消注释最后一部分,就会触发错误。事实上,任何试图执行的reverse操作都会导致错误。

问题:有没有(简单的)方法可以解决这个问题?

评论:一旦reverse工作,未解之谜也应该得到解决。

答案1

您使用的语法似乎有误。请参阅pgfplots手册,其中有以下示例

\fill [
        intersection segments={
            of=f and border,
            sequence={R2[reverse] -- L2}},
        pattern=north west lines,
]
    -- (rel axis cs:1,1) -- cycle;

在的解释中reverse(目前为第 5 章第 444 页),注意参数sequence包含在括号中{...}

下面的文档与您上一个不起作用的代码相对应,在进行此更改后可以正常工作:

Sample output

\documentclass{article}

\usepackage{pgfplots}
\usetikzlibrary{intersections,fillbetween}
\pgfplotsset{compat=1.15}

\begin{document}

\begin{tikzpicture}
  \path[name path = line1, draw] (-1,0) to[out=90,in=90] (1,1)
    to[out=-90,in=0]  (0,-1);
  \path[name path = line2, draw] (-1,1) -- (1,-1);
  \draw[very thick, intersection segments={of=line1 and line2,
    sequence={L2[reverse] R2}}];
\end{tikzpicture}

\end{document}

相关内容