使用 newcommand 的 Tikzpicture 选项

使用 newcommand 的 Tikzpicture 选项

我想通过 newcommand 定义选项,以便可以将它们用于 tikzpicture 环境。我尝试了以下方法:

\documentclass{standalone}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\newcommand{\test}{[every path/.style={->,red,thick}]}
\begin{document}
\begin{tikzpicture}\test
\draw (0,0)--(1,1);
\end{tikzpicture}
\end{document}

但那条线仍然是黑色的。我的方法哪里错了?我以为,newcommand 在写入时只是扩展了它的内容。我猜想方括号可能是问题所在...

答案1

欢迎使用 TeX.SE!虽然从技术上讲是正确的,但@ferahfeza 的评论可能不是我在这里使用的。秉承 的精神pgfkeys,我将定义一个/tikz/test风格。这通常更容易在 Ti 中重用Z 图片。请注意,这两种方法都允许利用 TeX 的分组规则,如下面的“我”的方法所示:

\documentclass{article}
\usepackage{tikz}

\tikzset{
  test/.style={
    every path/.style={->, red, thick},
  }
}

\begin{document}

\begin{tikzpicture}[test] % '/tikz/test' style manually set for this picture
  \draw (0,0)--(1,1);
\end{tikzpicture}

\bigskip
{%
  \tikzset{test}% Applies to the current TeX group, until (possibly) overridden
  %
  \begin{tikzpicture}
    \draw (1,1)--(0,0);
  \end{tikzpicture}%
  \qquad
  \begin{tikzpicture}
    \draw (0,1)--(1,0);
  \end{tikzpicture}%
}% TeX group terminated; the '/tikz/test' style is not in effect anymore.

\bigskip
\begin{tikzpicture}
  \draw (0,0)--(1,1) (1,0)--(0,1);
\end{tikzpicture}

\end{document}

截屏

答案2

本着不使用 \pgfkeys 的精神,可以使用

\documentclass{standalone}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\newcommand{\test}{[every path/.style={->,red,thick}]}
\newcommand{\tikzstart}{\begin{tikzpicture}}
\begin{document}
\expandafter\tikzstart\test
\draw (0,0)--(1,1);
\end{tikzpicture}
\end{document}

相关内容