如何在 LaTeX 中绘制直角三角形?

如何在 LaTeX 中绘制直角三角形?

假设我想制作下图。在此处输入图片描述

但是,我想看看我是否可以在 LaTex 中制作这个图形,以便它看起来更干净、更漂亮。制作这样的数学图形需要使用哪些命令?我在哪里可以学到更多?

在此处输入图片描述

答案1

在此处输入图片描述

\documentclass[10pt,a4paper]{article}
\usepackage[left=2.00cm, right=1.00cm]{geometry}
\usepackage{tikz}
\begin{document}
    \begin{tikzpicture}
        \coordinate (a) at (0,0);
        \coordinate (b) at (4,0);
        \coordinate (c) at (4,2);
        \draw (a) -- (b)node[midway, below]{a} -- (c)node[midway,right]{b} -- (a)node[midway,left, above]{c}; % Triangle.

        \draw (a) node[anchor=east,align=center] {A};
        \draw (b) node[anchor=west,align=center] {B};
        \draw (c) node[anchor=south]{C};
    \end{tikzpicture}
\end{document}

编辑-- 当然,语法更容易理解tikz-euclide

\documentclass[10pt,a4paper]{article}
\usepackage[left=2.00cm, right=1.00cm]{geometry}
%\usepackage{tikz}
\usepackage{xcolor} % before tikz or tkz-euclide if necessary

\usepackage{tkz-euclide} % no need to load TikZ
\begin{document}


\begin{tikzpicture}[scale=1.0]
    %define points A,B,C
    \tkzDefPoint(0,0){C}
    \tkzDefPoint(8,0){B}
    \tkzDefPoint(8,4){A}
    %label point A,B,C
    \tkzLabelPoints(B,C)
    \tkzLabelPoints[above](A)
    %draw triangleABC
    \tkzDrawPolygon[thick,fill=yellow!15](A,B,C)
    %marking right angles    
    \tkzMarkRightAngle(A,B,C)    
    %marking the angles
    \tkzFillAngle[fill=blue!20, opacity=0.5](B,C,A)
    \tkzLabelAngle[pos=1.25](B,C,A){$\alpha$}
    \tkzMarkAngle(B,C,A)
    %label the sides
    \tkzLabelLine[pos=0.5,above, ](C,A){$a$}
    \tkzLabelLine[pos=0.5,below, ](C,B){$b$}
    \tkzDrawSegment[style=red, dim={$c$,15pt,midway,font=\normalsize, rotate=90}](A,B)
    %draw the points
    \tkzDrawPoints(A,B,C)
    
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案2

我不同意评论和回复中提出的许多论点。主要问题是

制作这样的数学图形需要使用哪些命令?在哪里可以了解更多信息?

TikZ 的建议不合理,但我还是喜欢 TikZ。你可以用 TikZ 做任何事情,甚至可能做太多了,但它不是专门为制作几何图形而设计的。

使用外部工具制作图形也不是一个好的解决方案。首先,由于风格差异,字体很难保持一致;其次,如果必须修改图形,则不太实用。

还有其他解决方案:如果您使用过 Pstricks,那么可以使用 pst-eucl;如果没有,您可以使用 tkz-euclide,它基于 TikZ,但只进行欧几里得几何;如果您使用 lualatex,那么可以使用 tkz-elements。tkz-elements 不仅允许您创建几何图形,而且还提供一系列计算选项。后一种解决方案的优势在于图形代码在您的主代码中,使用合适的包您可以轻松修改它。

让我们看几个例子:

1)以 tkz-euclide 为例,你想要我们所说的:学校直角三角形

\documentclass{standalone} 
\usepackage{tkz-euclide}

\begin{document} 
    
\begin{tikzpicture}
  \tkzDefPoints{0/0/A,4/0/B}
  \tkzDefTriangle[school](A,B)
  \tkzGetPoint{C}
  \tkzMarkRightAngles(C,B,A)
  \tkzLabelAngle[pos=0.8](B,A,C){$30^\circ$}
  \tkzLabelAngle[pos=0.8](C,B,A){$90^\circ$}
  \tkzLabelAngle[pos=0.8](A,C,B){$60^\circ$}
  \tkzDrawPolygon(A,B,C)
  \tkzLabelPoints(A,B)
  \tkzLabelPoints[above](C)
\end{tikzpicture}
\end{document}

在此处输入图片描述

\documentclass{standalone} 
\usepackage{tkz-euclide}

\begin{document} 
    
\begin{tikzpicture}
\tkzDefPoint(0,0){A}
\tkzDefPoint(5,0){B}
\tkzDefTriangle[two angles = 20 and 90](A,B)
\tkzGetPoint{C}
\tkzDrawSegment(A,B)
\tkzDrawPoints(A,B)
\tkzLabelPoints(A,B)
\tkzDrawSegments(A,C B,C)
\tkzDrawPoints(C)
\tkzLabelPoints[above](C)
\tkzLabelAngle[pos=1.4](B,A,C){$20^\circ$}
\tkzMarkRightAngle[fill=blue!10](C,B,A)
\tkzLabelSegment[sloped,above](A,C){$b$}
\end{tikzpicture}
\end{document}

在此处输入图片描述

% !TEX TS-program = lualatex

\documentclass{article} 
\usepackage{tkz-euclide}
\usepackage{tkz-elements}

\begin{document} 
    
\begin{tkzelements}
z.A = point : new (  0 , 0  )
z.B = point : new (  4 , 0  )
z.C = point : new ( 4 , 3 )
L.AC = line : new ( z.A , z.C )
z.H = L.AC : projection (z.B)
T.ABC = triangle : new (z.A,z.B,z.C)
z.O = T.ABC.circumcenter
z.I = T.ABC.incenter
z.I_B = L.AC : projection (z.I)
\end{tkzelements}
    
\begin{tikzpicture}
\tkzGetNodes
\tkzDrawPolygon(A,B,C)
\tkzDrawSegments(B,H O,A)
\tkzDrawCircles(O,A I,I_B)
\tkzDrawPoints(A,B,C,H,O,I)
\tkzLabelPoints(A,B,C,H,O,I)
\end{tikzpicture}

The length of AC is \tkzUseLua{length(z.A,z.C)}

The length of BH is \tkzUseLua{length(z.B,z.H)}
\end{document}

该解决方案的优点:

  1. 计算非常精确。它们是在描图之前进行的
  2. 你可以使用 tkz-euclide 或 Tikz 进行跟踪
  3. 代码很容易修改
  4. 在 LaTex 中,您可以访问您的图形,并且可以在代码中使用与您的图形相关的长度和角度。
  5. 最后,您可以访问数十个预定义的数学函数。(参见文档)

在此处输入图片描述

答案3

\draw为了完善@jsbibra的回答,我添加了角度标记。所有内容也在单个命令中定义。

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{angles, quotes}

\begin{document}
    \begin{tikzpicture}
        \draw
            (0, 0) coordinate (A) node[left] {$A$} % a node A at (0,0) with a label
            -- (4,0) coordinate (C) node[right] {$C$} % a node C at (4,0) with a label
            node[midway, below]{$b$} % a label betwenn A and C
            -- (4,2) coordinate (B) node[above right] {$B$} % a node B at (4,2) with a label
            node[midway, right]{$a$} % a label between C and B
            -- cycle % close the path
            node[midway, above, sloped]{$c$}% a label between B and A
            pic ["$\alpha$", draw, angle eccentricity=-.5, green] {right angle=A--C--B} % right angle marker
            ; % end of TikZ command
    \end{tikzpicture}
\end{document}

在此处输入图片描述

答案4

没有人回答过这个问题的第二部分,“我在哪里可以学到更多?”对于这个问题,应该去的地方是 TikZ 手册(texdoc tikz在命令提示符下输入以打开文档)。

内容很多。手册超过 1000 页(!),但真正开始的关键部分是完成不到 100 页的教程。其余部分包括一个广泛的参考部分,当您获得经验并有特定需求时,您会深入了解它。

如果您更喜欢以可视化的方式处理图表,那么本问题的答案中描述了许多图形前端:对于 PGF/TikZ 来说,所见即所得 (WYSIWYG)?

相关内容