我在使用 PGF/TikZ 时遇到了一些不良行为,这些行为与使用不同颜色(例如灰色)剪切和绘制路径有关。因此,我尝试在 之间进行交换\clip[draw=gray]
,\draw[clip,gray]
或者\path[draw=gray, clip]
可能使用间接样式,但没有成功,Emacs 的输出会抛出 TeX 错误消息:
Extra options not allowed for clipping path command...
唯一的方法是使用范围:
\begin{scope}[draw=gray] ... \end{scope}
不幸的是,这种技术要求所有作用域对象的线条都切换为黑色。那么有没有一种巧妙的方法可以在不经过作用域环境的情况下实现这一点呢?
答案1
tikz 中的命令clip
并非用于实际绘制路径,而是用于划定区域。这就是绘图选项无法使用的原因。错误消息
Extra options not allowed for clipping path command...
你所得到的正是这个意思。
但是,如果您仍想沿着剪切路径绘图,则可以通过使用preaction
或postaction
。
当路径命令包含选项时,preaction
它会采用相同的路径并在创建主路径之前执行操作。例如,如果您使用命令
\path[clip,preaction = {draw=red,ultra thick}] (0,0) circle[radius=1];
将使用圆圈来剪辑以下任何命令,但在此之前,它将用红色和超粗的线条绘制圆圈。
答案2
从用户的角度来看,同时剪切和绘制路径的困难在于这两个操作不具有交换性,并且没有明显的顺序可应用。与绘制和填充相比:这两个操作同样不具有交换性,但很明显应该先填充,然后绘制。
因此,程序不允许绘制和剪辑,至少在绘制和剪辑命令足够明确以使其能够检测到的情况下不允许。相反,您必须使用 Frederic 的解决方案,您必须明确声明是先绘制后剪辑还是反过来(通过交换 andclip
或draw
使用postaction
而不是preaction
)。
顺便说一句,沿着与剪辑相同的路径进行绘制是解决在一条线的一侧进行绘制问题的巧妙方法。我在这里的某个地方用过这个方法……
下面有一些代码可以帮助说明上述内容:
\documentclass{article}
%\url{http://tex.stackexchange.com/q/42714/86}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[line width=3mm]
\begin{scope}
\path[clip, preaction={draw}] (0,0) circle[radius=2cm];
\end{scope}
\begin{scope}
\path[clip, postaction={draw}] (5,0) circle[radius=2cm];
\end{scope}
\end{tikzpicture}
\end{document}