
ピタゴラスの定理を示すファイルを作成しようとしています。
この例では、斜辺の長さは 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};
\pgfmathparse
TikZ は座標指定で完全に拡張可能なコンテンツを想定しているため (実際はそうではない)、動作しません。
TikZ はすでにすべてを PGFmath にスローするので、直接使用できますが、パーサーはスマートではなく、次のものまですべてを取得するため、パーサーからsqrt(7)
保護する必要があります(括弧が不均衡な場合でも)。)
)
だから、必要なのは
\node (C) at (0, {sqrt(7)}) {C};
しかし、この単純なケースでは、次のように書くこともできます。
\node (C) at (0, sqrt 7) {C};
2 つ目の TikZ 画像を追加しました。これは、おそらくあなたが望んでいるものに近いものだと思います。
PGFmathは寛容なので、
at (0, sqrt(7)
しかし、これはコードゴルフではありません。
コード
\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}