我正在尝试创建一个演示勾股定理的文件。
在这个例子中,斜边长度为 4,底边长度为 3。所以高应该是 7 的平方根。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\node (A) at (0,0) {A};
\node (B) at (3,0) {B};
\node (C) at (0,\pgrmathparse{sqrt(7)}\pgfmathresult) {C};
\draw (A) -- (B) -- (C) -- (A);
\end{tikzpicture}
\end{document}
但是我无法放置高度节点。将第 9 行替换为 并\node (C) at (0,sqrt(7)) {C};
不能解决问题。我的代码有什么问题?
答案1
线路
\node (C) at (0,\pgfmathparse{sqrt(7)}\pgfmathresult) {C};
将不起作用,因为 TikZ 需要坐标规范中完全可扩展的内容(但\pgfmathparse
事实并非如此)。
由于 TikZ 已将所有内容放入 PGFmath 中,因此您可以直接使用sqrt(7)
,但您需要保护它)
不受解析器的影响,因为所述解析器并不智能,并且会抓取所有内容直到下一个)
解析器 - 即使括号不平衡。
所以你需要
\node (C) at (0, {sqrt(7)}) {C};
不过,在这个简单的例子中,你也可以只写
\node (C) at (0, sqrt 7) {C};
我添加了第二张 TikZ 图片,我相信它看起来更像你想要的东西。
因为 PGFmath 很宽容,你甚至可以做
at (0, sqrt(7)
但这不是 Code Golf。
代码
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\node (A) at (0,0) {A};
\node (B) at (3,0) {B};
\node (C) at (0, sqrt 7) {C};
\draw (A) -- (B) -- (C) -- (A);
\end{tikzpicture}
\begin{tikzpicture}
\coordinate[label=left: $A$] (A) at (0, 0);
\coordinate[label=right:$B$] (B) at (3, 0);
\coordinate[label=left: $C$] (C) at (0, sqrt 7);
\draw (A) -- (B) -- (C) -- cycle;
\end{tikzpicture}
\end{document}