为什么我在 tikz 中添加标签时我的图形会损坏?

为什么我在 tikz 中添加标签时我的图形会损坏?

我正在尝试绘制一个简单的三角形,并标记每条边的长度,并且我正在尝试使用 tikz。

\documentclass[12pt,letterpaper]{article}

\usepackage{tikz}

\begin{document}
    \begin{tikzpicture}
    \draw[black,thick] (0, 0) -- node[below]{\(1\)} ++ (1, 0);
    \draw[black,thick] (0, 0) -- node[left]{\(1\)} ++ (0, 1);
    \draw[black,thick] (1, 0) -- (0, 1);
\end{tikzpicture}
\end{document}

这有效,并生成一个带有预期标签的三角形:

三角形的屏幕截图,其中除斜边外所有边均已标记

\draw但是,当我尝试通过将第三个语句更改为 来向斜边添加标签时\draw[black,thick] (1, 0) -- node[above right]{\(\sqrt{2}\)} ++ (0, 1);,我得到了以下信息:

破碎三角形截图

标签确实位于其上方和右侧,但我的三角形……不再是三角形。我该如何修复它,使其看起来更像这样(该图是为了表示我希望如何放置标签/线条 -\( ... \)当然,我会使用适合标签的图形)

在此处输入图片描述

我该如何修正我的 LaTeX 以正确显示三边都有标签的三角形?

答案1

使用quote库和绝对坐标:

\documentclass[12pt,margin=3mm]{standalone}
%\documentclass[12pt,letterpaper]{article}

\usepackage{tikz}
\usetikzlibrary{quotes}

\begin{document}
    \begin{tikzpicture}[
every edge quotes/.style = {auto=right, font=\footnotesize, inner sep=2pt}
                        ]
\draw[thick] (0,0) to["\(1\)"]          (2,0)
                   to["\(\sqrt{2}\)"]   (0,2)
                   to["\(1\)"]          cycle;
\end{tikzpicture}
\end{document}

并带有相对坐标:

\documentclass[12pt,margin=3mm]{standalone}
%\documentclass[12pt,letterpaper]{article}

\usepackage{tikz}
\usetikzlibrary{quotes}

\begin{document}
    \begin{tikzpicture}[
every edge quotes/.style = {auto=right, font=\footnotesize, inner sep=2pt}
                        ]
\draw[thick] (0,0) to["\(1\)"]          ++ ( 2,0)
                   to["\(\sqrt{2}\)"]   ++ (-2,2)
                   to["\(1\)"]          cycle;
\end{tikzpicture}
\end{document}

两种情况下的结果都相同:

在此处输入图片描述

答案2

此代码提供了两个选项,即正确的三角形和节点标记。上面的一个使用了您的标记样式,下面的一个是 Qrrbrbirlbel 提到的(包括他在评论中提到的缺失节点)。

\documentclass[12pt,letterpaper]{article}

\usepackage{tikz}

\begin{document}
    
    \begin{tikzpicture}
        \draw[black,thick] (0,0) -- node[below] {\(1\)}  (1,0) -- node[above right]{\(\sqrt{2}\)}  (0,1) -- node[left]{\(1\)}  cycle;
    \end{tikzpicture}

\begin{tikzpicture}
    \draw[black, thick, auto=right] (0, 1) -- node{1} (0, 0) -- node{1}(1,0) -- node{$\sqrt 2$} cycle;
\end{tikzpicture}

\end{document}

在您的代码中,当您使用代码时,您实际上创建了一个矩形

\draw[black,thick] (0,0) -- node[below]{\(1\)} ++ (1,0);

您将左角放在位置 (0,0),并将矩形扩展 1 个单位宽和 0 个单位高。这就是++节点后面的添加的含义。因此您无需绘制线定义一个三角形,但是厚度为 0。

使用cycle代码末尾的命令告诉 tikz 您正在绘制一个封闭的图形,最终也可以填充颜色。

答案3

tkz-euclide

    \documentclass{article}
    \usepackage{tkz-euclide}
    \begin{document}
    \begin{tikzpicture}
        \tkzDefPoints{0/0/A,1/0/B,0/1/C}
        \tkzDrawPolygon[thick](A,B,C)
        \tkzLabelSegment(A,B){$1$}
        \tkzLabelSegment[auto=right](B,C){$\sqrt{2}$}
        \tkzLabelSegment[left](C,A){$1$}
    \end{tikzpicture}
    \end{document}

相关内容