使用 tkz-euclide 时是否可以为元素设置全局样式?(我有一个包含许多 TikZ 图形的文档,我希望能够为不同的线、点等组设置不同的样式,可以通过更改文件顶部的参数来控制。)
可以在 TikZ 中使用 来执行此操作\tikzset
,但我还无法弄清楚在使用 tkz-euclide 时如何执行此操作。
这是一个最小的例子,我希望它能够帮助解释我正在做的事情:
\documentclass[a4paper]{article}
\usepackage[upright]{fourier}
\usepackage[usenames,dvipsnames,svgnames]{xcolor}
\usepackage{tkz-euclide,fullpage}
\usetkzobj{all}
\tikzset{%
mystyleone/.style={%
color=blue!50!white,
fill=gray!20!red!50!white
}
mystyletwo/.style={%
color=blue!70!black,
fill=blue!70!black
}
}
\begin{document}
\begin{tikzpicture}
\tkzInit[xmin=-4,xmax=4,ymin=-4,ymax=4]
\tkzClip
% Set out the initial points
\tkzDefPoint(0,0){O}
\tkzDefPoint(0,1){A}
\tkzDrawPoints[mystyleone](O)
\tkzDrawPoints[mystyletwo](A)
% labels
\tkzLabelPoints(O,A)
\end{tikzpicture}
\end{document}
如本例所示,我希望能够定义一些样式变量,然后在 、 、 等中使用单一名称作为选项\tkzDrawCircle
调用\tkzDrawSegments
它们\tkzLabelPoints
。
答案1
我不确定这是否完全符合您的要求,但我现在将其作为答案发布,因为我必须更正代码的其他部分才能使其正常工作,因此以这种方式展示最容易。如果这不是可接受的解决方案,我将删除答案。
使它按预期工作的快速方法是简单地将键的完整路径(对于您的情况,/tikz/mystyleone
)放入选项设置中。这是必需的,因为tkz-euclide
.cd
s(c
hanges irectory)为每个命令、等d
设置不同的本地化键路径。我们需要输入用户定义样式的完整路径,以“退出”此缩小的键搜索路径。\tkzDrawCircle
\tkzDrawPoints
以下是修正样式定义后的完整代码,以便可以找到两者:
\documentclass[a4paper]{article}
\usepackage[upright]{fourier}
\usepackage[usenames,dvipsnames,svgnames]{xcolor}
\usepackage{tkz-euclide,fullpage}
%\usetkzobj{all} % useless with the new version
\tikzset{
mystyleone/.style={
color=blue!50!white,
fill=gray!20!red!50!white,
},
mystyletwo/.style={
color=blue!70!black,
fill=blue!70!black,
},
}
\begin{document}
\begin{tikzpicture}
\tkzInit[xmin=-4,xmax=4,ymin=-4,ymax=4]
\tkzClip
% Set out the initial points
\tkzDefPoint(0,0){O}
\tkzDefPoint(0,1){A}
\tkzDrawPoints[/tikz/mystyleone](O)
\tkzDrawPoints[/tikz/mystyletwo](A)
% labels
\tkzLabelPoints(O,A)
\end{tikzpicture}
\end{document}
结果如下:
答案2
好的方法介于 Darko 的评论和 Paul 的回答之间。
原则上,在经典图形中只使用一种点样式。必须用 来定义,\tkzSetUpPoint
然后您才有可能定义自己的样式,但如下所示:
\tikzset{/tikz/mystyletwo/.style={color=blue!20!black,fill=blue!20}}
\documentclass[border=5mm]{standalone}
\usepackage{tkz-euclide}
%\usetkzobj{all} % useless with the new version
\tkzSetUpPoint[color=blue!50!white, fill=gray!20!red!50!white]
\tikzset{/tikz/mystyletwo/.style={ color=blue!20!black, fill=blue!20}}
\begin{document}
\begin{tikzpicture}
% Set out the initial points
\tkzDefPoint(0,0){O}
\tkzDefPoint(0,1){A}
% drawing
\tkzDrawPoints(O)
\tkzDrawPoints[mystyletwo,size=4](A)
% labels
\tkzLabelPoints(O,A)
\end{tikzpicture}
\end{document}