
피타고라스 정리를 설명하는 파일을 만들려고 합니다.
이 예에서 빗변의 길이는 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)
하지만 이것은 코드 골프가 아닙니다.
암호
\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}