我在 3D 中绘制带箭头的圆圈。为此,我使用装饰,并将圆圈分成两半,以便我可以稍后更改颜色并绘制穿透它们的箭头,同时保持 3D 透视。
无论如何,这是我的 MWE:
\documentclass[varwidth, border=5pt]{standalone}
\usepackage{tikz}
\usepackage{tikz-3dplot}
\usetikzlibrary{3d}
\usetikzlibrary{decorations.markings}
\begin{document}
\begin{tikzpicture}
\tikzset{zxplane/.style={canvas is zx plane at y=#1,very thin}}
\tikzset{yxplane/.style={canvas is yx plane at z=#1,very thin}}
\begin{scope}[canvas is zy plane at x=-1.5]
\begin{scope}[thick,decoration={markings,mark=at position 0.5 with {\arrow{>}}}]
\draw[postaction={decorate}] ([shift=(0:0.5)]-1,1) arc (0:180:0.5);
\draw[postaction={decorate}] ([shift=(0:-0.5)]-1,1) arc (180:360:0.5);
\end{scope}
\end{scope}
\begin{scope}[canvas is zy plane at x=3]
\begin{scope}[thick,decoration={markings,mark=at position 0.5 with {\arrow{>}}}]
\draw[postaction={decorate}] ([shift=(0:0.5)]-1,1) arc (0:180:0.5);
\draw[postaction={decorate}] ([shift=(0:-0.5)]-1,1) arc (180:360:0.5);
\end{scope}
\end{scope}
\end{tikzpicture}
\end{document}
事实上,这段代码无法编译。它给出错误“尺寸太大”。
如果您取出postaction={decorate}
和装饰范围,它就可以正常工作。此外,如果您将 的值更改为{markings,mark=at position 0.5
几个特殊值之一,它确实可以编译。我发现它接受 0.2、0.3、0.7、0.8、0.9 和 1.0,但不能接受介于两者之间的值(我只以 0.1 的步长移动)。
不过我希望箭头位于 0.5 处。有人知道为什么它不能处理这个值范围吗?是什么阻止了它?请注意,两个圆圈之间的唯一区别应该是 x 维度。
干杯。
编辑:其中一条评论提到了我的 tikz 版本。我的 TexLive 版本是 2013,但 tikz 只有版本 2。有人知道如何更新 tikz 吗?