我想定义一种在我的图片中使用的线条样式。
但仍然希望保留灵活性,以便在实际图片中根据需要调整这些,如下面的第三张图片(注释掉)。但似乎无法让它工作。我认为这与 s 中有\def
一个逗号分隔的列表有关,但第二张图片又没有问题。有什么想法吗?
\documentclass{article}
\usepackage{pgfplots}
\def\LineStyleWithSqBrackets{[green, thick]}
\def\LineStyleWithoutSqBrackets{green, thick}
\begin{document}
\begin{tikzpicture}[scale=0.3]
\draw [green, thick] (0,0) circle (7);
\end{tikzpicture}
\begin{tikzpicture}[scale=0.3]
\draw \LineStyleWithSqBrackets (0,0) circle (7);
\end{tikzpicture}
%\begin{tikzpicture}[scale=0.3]
% \draw [\LineStyleWithoutSqBrackets] (0,0) circle (7);
%\end{tikzpicture}
\end{document}
答案1
您应该利用以下可能性来定义“真实”样式\tikzstyle{<name>}=[<keys>]
:
\documentclass{article}
\usepackage{tikz}
\tikzstyle{linestyle}=[green,thick]
\begin{document}
\begin{tikzpicture}[scale=0.3]
\draw [linestyle] (0,0) circle (7);
\end{tikzpicture}
\end{document}
答案2
杰克的回答绝对是正确的。你的方法有问题,因为包含选项的宏在(对你来说)错误的时间被扩展。当宏中有方括号时,TeX 会扩展宏一次以查看它是什么,看到方括号,并意识到这是 draw 命令的选项。所以它按预期工作。但在第二个版本中,当你明确地放入方括号时,TeX 不必扩展宏来找到它们。然后它传递宏未扩张计算选项的机制。这将选项划分为前扩大它们,因此宏被视为单身的选项“绿色、厚实”,而不是两个选项。从这一点开始,混乱随之而来!
TikZ 自己的附加选项和定义样式的方法是根据处理的工作原理而设计的,因此 Jake 的解决方案是和系统,而不是试图绕过它。