Tikz 样式与 clip 命令冲突

Tikz 样式与 clip 命令冲突

下面是我的例子。我想为我的所有 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}

相关内容