我的书的其中一节画出了点积。下面的代码多年来一直运行良好。我现在使用的是 Ubuntu 20.04,安装了最新的 texlive 和 pgf 包,下面的相同命令现在失败了……相关包之一是否已使用新语法更新?任何帮助表示感谢
现在失败了,但总是运行良好(最小工作示例,摘录):
\documentclass[a4paper,11pt]{article}
\usepackage{tkz-euclide}
\usetkzobj{all}% should be removed
\begin{document}
\section{Section 1}
\begin{figure*}[ht!]
\begin{center}
\begin{tikzpicture}[scale=1.2]
\node[circle,fill=black,draw,black,scale=0.2] (a) at (2,2) {};
\node[circle,fill=black,draw,black,scale=0.2] (O) at (0,0) {};
\node[circle,fill=black,draw,black,scale=0.2] (b) at (3,-1) {};
\draw[postaction={decorate,decoration={markings,mark=at position 0.3 with {\arrow[black,line width=2pt]{>}}}}](O)--(a)node[midway,above]{\textbf{a}};
\draw[postaction={decorate,decoration={markings,mark=at position 0.3 with {\arrow[black,line width=2pt]{>}}}}](O)--(b)node[midway,below]{\textbf{b}};
\draw pic [draw=red,fill=red!20,angle radius=4mm,"$\theta$",angle eccentricity=1.5] {angle = b--O--a};
\tkzDrawAltitude[dashed,color=magenta](O,b)(a)
\tkzGetPoint{P}
\tkzLabelPoint[below](P){$P$}
\tkzMarkRightAngle(a,P,O)
\end{tikzpicture}
\end{center}
\end{figure*}
\end{document}
答案1
这里有一个只有 的解决方案tkz-euclide
。我使用了版本 4,其中tkzDrawAltitude
不再存在。现在您需要使用tkzdefSpeTriangle[orthic](a,O,b){...}
来获取海拔高度。然后继续\tkzDrawLines
\documentclass{standalone}
\usepackage{tkz-euclide}
\begin{document}
\begin{tikzpicture}[scale=1.2]
\tkzDefPoints{2/2/a,3/-1/b,0/0/O}
\begin{scope}[decoration={markings,mark=at position 0.2 with {\arrow[black,line width=1pt]{>}}}]
\tkzDrawSegments[postaction={decorate}](O,a O,b)
\end{scope}
% v4
\tkzDefSpcTriangle[orthic](a,O,b){P,HO,Hb}
\tkzDrawLine[dashed,color=magenta](a,P)
% v 3.06 \tkzDrawAltitude[dashed,color=magenta](O,a,b)
\tkzLabelPoint[below](P){$P$}
\tkzMarkRightAngle(a,P,O)
\tkzDrawPoints(a,b,O)
\tkzFillAngle[fill=red!20,opacity=.5,size=.5](b,O,a)
\tkzLabelAngle[pos=0.4](b,O,a){$\theta$}
\end{tikzpicture}
\end{document}
答案2
不知何故, fromtkz-euclide
的语法发生了变化(可能自 2020 年 1 月 25 日发布 v3.01c 以来)\tkzDrawAltitude
(参见源代码行)
\tkzDrawAltitude[<options>](A,B)(C)
至(查看 texlive SVN repo 上的源代码行,`` 已添加和tikz-euclide
GitHub repo)
\tkzDrawAltitude[<options>](A,C,B)
一些注释
- 旧语法是实施于
tkz-obj-polygons.tex
在 texlive 的 SVN 仓库中持续存在从修订版 22830(2011 年 6 月 6 日)到 53530,并在修订版 53531(2020 年 1 月 24 日)中被删除。 - 新的语法是实施于
tkz-obj-eu-draw-lines.tex
,已在修订版 53531 中添加到 texlive 中。
因此,在 OP 的例子中,改变
\tkzDrawAltitude[dashed,color=magenta](O,b)(a)
% to
\tkzDrawAltitude[dashed,color=magenta](O,a,b)
解决了这个问题。
而且,
- 在最新的(v3.06c)文档中
tkz-euclide
,唯一记录的绘制海拔的方法是\tkzDrawLine[altitude,<options>](A,C,B)
- 应予
\usetkzobj{all}
删除。