下面是我的例子。我想为我的所有 tikz 图片使用全局样式来设置线宽。它工作得很好,直到我使用clip
。我猜不可能将一些样式选项传递给clip
。下面的代码给出了错误消息
Package tikz Error: Extra options not allowed for clipping path command. \clip (2,0) circle (2cm);
这是 MWE。
\documentclass{article}
\usepackage{tikz}
\tikzset{every path/.style={line width=2pt}}
\begin{document}
\begin{tikzpicture}
\clip (2,0) circle (2cm);
\draw (0,0) circle (3cm);
\end{tikzpicture}
\end{document}
有什么帮助吗?
答案1
以下是三种解决方案。
1)如果你确实需要every path/.style
,选择这个很好的答案从马修·林冈(但周围的 TeX 组\clip
阻止了边界框):
\documentclass{article}
\usepackage{tikz}
\tikzset{every path/.style={draw=blue,line width=2pt}}
\begin{document}
\begin{tikzpicture}
{
\tikzset{every path/.style={}}
\clip (2,0) circle (2cm);
}
\draw (0,0) circle (3cm);
\end{tikzpicture}
\end{document}
2) 大多数情况下,你可以避免使用every path/.style
。在这里,你可以使用every picture/.style
代替every path/.style
:
\documentclass{article}
\usepackage{tikz}
\tikzset{every picture/.style={line width=2pt}}
\begin{document}
\begin{tikzpicture}
\clip (2,0) circle (2cm);
\draw (0,0) circle (3cm);
\end{tikzpicture}
\end{document}
3)第三种解决方案重新定义了clip
选项:
\documentclass{article}
\usepackage{tikz}
\makeatletter
\tikzset{clip/.code={%
\let\tikz@mode=\pgfutil@empty%
\let\tikz@preactions=\pgfutil@empty%
\let\tikz@postactions=\pgfutil@empty%
\let\tikz@options=\pgfutil@empty%
\tikz@addmode{\tikz@mode@cliptrue}%
},
}
\makeatother
\tikzset{every path/.style={line width=2pt}}
\begin{document}
\begin{tikzpicture}
\clip (2,0) circle (2cm);
\draw (0,0) circle (3cm);
\end{tikzpicture}
\end{document}
答案2
path
这是一种粗暴的方法。你可以定义一个my path
并使用它,而不是改变样式。
\documentclass{article}
\usepackage{tikz}
\tikzset{my path/.style={line width=2pt}}
\begin{document}
\begin{tikzpicture}
\clip (2,0) circle (2cm);
\draw [my path] (0,0) circle (3cm);
\end{tikzpicture}
\end{document}
tikzset
或者在之后定义clip
(如果需要,可以将其放在里面scope
):
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\clip (2,0) circle (2cm);
\begin{scope}
\tikzset{every path/.style={line width=2pt}}
\draw (0,0) circle (3cm);
\end{scope}
\end{tikzpicture}
\end{document}