我正在学习 TikZ,对两种明显完全不同的处理方式感到困惑,尽管它们看起来完全兼容且可以混合:
\begin{tikzpicture}
\draw[color=black] (20,20) -- (100,20);
% vs
\tkzDrawSegments((20,20),(100,20))
\end{tikzpicture}
我非常确定第二种方法是错误的(请纠正以解决这个问题)。第一种方法似乎更强大(您拥有节点和所有内容),但第二种方法有一些像tkzMarkAngle
第一种方法那样很难做到的事情。
有什么区别以及我该如何tkzMarkAngle
使用路径来做“简单的事情”?
答案1
我不知道是否可以准确地考虑哪个包更强大(TikZ 还是 tkz 包):事实是它们有不同的语法,但我认为在某些情况下 TikZ 提供了更简单的编程解决方案,而其他情况下 tkz 更直接。
例如,宏\tkzMarkAngle
,就是后一种情况。你可以在 shell 中找到宏的代码:
gedit $(kpsewhich tkz-obj-angles.tex)
以下文档尝试使用两个软件包和类似的编程结构来复制相同的图像:
\documentclass[a4paper,11pt]{article}
%\usepackage{tikz}
\usepackage{tkz-euclide} loads tikz
\usepackage{tkzexample}
% to display picture and code
\usetkzobj{all}
\begin{document}
tkz-based solution:
\begin{center}
\begin{tkzexample}[latex=4.5cm]
\begin{tikzpicture}
\tkzDefPoint(0,0){O}
\tkzDefPoint(2,2){A}
\tkzDefPoint(-2,3){B}
\tkzDrawSegment[thick](O,A)
\tkzDrawSegment[thick](O,B)
% equivalent: \tkzDrawVectors(O,A O,B)
\tkzMarkAngle[fill= yellow,%
opacity=.5](A,O,B)
\end{tikzpicture}
\end{tkzexample}
\end{center}
Ti\textit{k}Z-based solution:
\begin{center}
\begin{tkzexample}[latex=4.5cm]
\begin{tikzpicture}
\coordinate (O) at (0,0);
\coordinate (A) at (2,2);
\coordinate (B) at (-2,3);
\draw[thick] (B)--(O)
node[coordinate,pos=0.7](x-b){};
\draw[thick] (A)--(O)
node[coordinate,pos=0.625](x-a){};
\draw[fill=yellow,opacity=.5]
(O)--(x-b) arc (125:38:0.95cm) -- (O);
\end{tikzpicture}
\end{tkzexample}
\end{center}
\end{document}
其规定:
如您所见,第二张图片不如第一张图片精确,因为 的定义中\tkzMarkAngle
有精确的计算。并不是说您不能使用纯 TikZ 进行微积分,而是您需要使代码复杂化。
答案2
tkz
是基于 的软件包集合tikz
。这些软件包与 兼容,tikz
但语法不同。我专门为那些不一定想掌握 如此全面的程序的数学老师创建了这些软件包Tikz
。
\begin{tikzpicture}
\draw[color=black] (20,20) -- (100,20);
% vs
\tkzDrawSegments((20,20),(100,20))
\end{tikzpicture}
您的例子并不好,因为如果语法正确tkz
,我认为最好避免使用坐标,使用点 \tkzDrawSegments(A,B) 就可以了
一个好的代码tkz
由几个部分组成:
- 点的定义
- 变换、计算得到线段、线和圆
- 绘制对象
- 绘制标记
- 写标签
tkz
非常具体,无法取代优秀的tikz
答案3
另一种无需计算的方法可能是:
\documentclass[a4paper,11pt]{article}
\usepackage{tkz-euclide}
\usepackage{tkzexample}
\usetikzlibrary{angles}
% to display picture and code
\usetkzobj{all}
\begin{document}
Ti\textit{k}Z-based solution:
\begin{center}
\begin{tkzexample}[latex=4.5cm]
\begin{tikzpicture}
\coordinate (O) at (0,0);
\coordinate (A) at (2,2);
\coordinate (B) at (-2,3);
\draw pic[%
draw,
fill=yellow,
opacity=.5,
angle radius=1cm
] {angle=A--O--B} ;
\draw[thick] (B)--(O)--(A) ;
\end{tikzpicture}
\end{tkzexample}
\end{center}
\end{document}