我正在尝试在名为 的曲线路径内绘制一个箭头uu
,该路径与名为 的垂直线相交vert
,并在这两条路径的交叉处放置两个节点。这是我的最小示例:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{intersections,decorations.markings}
\tikzset{->-/.style={decoration={
markings,
mark=at position #1 with {\arrow{>}}},
postaction={decorate}}
}
\begin{document}
\begin{tikzpicture}
\path[draw, name path=vert] (0,-1)--(0,1);
\path[draw, ->-=0.8, name path=uu] (-1,-0.7) to[out=0,in=-90] (0.3,0)
to[out=90,in=0] (-1,0.7);
\draw [name intersections={of=vert and uu}] (intersection-1) node {o};
\draw [name intersections={of=vert and uu}] (intersection-2) node {o};
\end{tikzpicture}
\end{document}
编译它会产生以下错误消息:
! Package tikz Error: I do not know the path named `uu'. Perhaps you misspelt it.
->-=0.8
路径中的选项以uu
某种方式破坏了名称uu
。我该如何解决这个问题?
答案1
我不会冒险给出一个大概的解释,但是使用来自循环空间的代码,您可以分别执行以下步骤:
定义并命名您的
uu
路径;绘制它,可能应用装饰作为
postaction
。
这解决了这里的问题。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{intersections,decorations.markings}
% Code from Loop Space: <https://tex.stackexchange.com/a/26386/73317>
\makeatletter
\tikzset{
use path for main/.code={%
\tikz@addmode{%
\expandafter\pgfsyssoftpath@setcurrentpath\csname tikz@intersect@path@name@#1\endcsname
}%
},
use path for actions/.code={%
\expandafter\def\expandafter\tikz@preactions\expandafter{\tikz@preactions\expandafter\let\expandafter\tikz@actions@path\csname tikz@intersect@path@name@#1\endcsname}%
},
use path/.style={%
use path for main=#1,
use path for actions=#1,
}
}
\makeatother
\tikzset{->-/.style={decoration={
markings,
mark=at position #1 with {\arrow{>}}},
postaction={decorate}}
}
\begin{document}
\begin{tikzpicture}
\path[draw, name path=vert] (0,-1)--(0,1);
% First define and name the path
\path[name path=uu]
(-1,-0.7) to[out=0,in=-90] (0.3,0) to[out=90,in=0] (-1,0.7);
% Then draw it using the 'use path' style from Loop Space
\draw[use path=uu, ->-=0.8];
\draw [name intersections={of=vert and uu}] (intersection-1) node {o};
\draw [name intersections={of=vert and uu}] (intersection-2) node {o};
\end{tikzpicture}
\end{document}
答案2
在类似的情况下,我刚刚发现替换postaction
确实preaction
可以解决这个“消失的路径”问题。
但是,我不是 Tikz 专家,所以我不知道是否推荐这种解决方案。
而且我没有和你相同的乳胶分布,所以我无法检查这是否真的解决了你的问题。