答案1
下次,请向我们展示您尝试过的方法,因为这样更容易提供帮助。我不知道您遇到了什么问题,所以很难提供帮助,而且我不知道您的一般设置是什么,这可能会让我的解决方案对您毫无用处。
我使用循环是因为我不喜欢输入重复的内容。如果你不介意的话,你可以避免使用它们。注释行标记了节点,这使得更容易看到图形是如何构造的。
\documentclass[tikz,border=10pt,multi]{standalone}
\begin{document}
\begin{tikzpicture}
\draw (0,0) coordinate (a) -| ++(32mm,37mm) coordinate [midway] (b) coordinate (c) -| ++(-18mm,-23mm) coordinate [midway] (d) coordinate (e) -| coordinate [midway] (f) cycle ;
% \foreach \i in {a,b,c,d,e,f} \node at (\i) {\i};
\foreach \i/\j/\k/\m/\n/\p in {a/b/32/0/-5/below,b/c/37/5/0/right,c/d/18/0/5/above,a/f/14/-5/0/left,f/e/14/0/5/above} \draw [<->] ([xshift=\m pt, yshift=\n pt]\i) -- ([xshift=\m pt, yshift=\n pt]\j) node [midway, \p] {\k~cm};
\end{tikzpicture}
\end{document}
答案2
虽然 cfr 的答案很好,很简短但有点复杂,但理解起来还是有点复杂,关于你对答案的评论,我写了一个可能一开始就更容易理解的答案。
\documentclass[tikz, border=2pt]{standalone}
\usepackage{siunitx}
\begin{document}
\begin{tikzpicture}
% set up coordinates for an easy use
\coordinate (a) at (0,0);
\coordinate (b) at (3.2,0);
\coordinate (c) at (3.2,3.7);
\coordinate (d) at ({3.2-1.8},3.7);
\coordinate (e) at (1.4,1.4);
\coordinate (f) at (0,1.4);
\draw (a) -- (b) -- (c) -- (d) -- (e) -- (f) -- cycle;
\draw[<->] ([yshift=-0.3cm]a) -- ([yshift=-0.3cm]b) node[midway, below]{\SI{32}{\centi\metre}};
\draw[<->] ([xshift=+0.3cm]b) -- ([xshift=+0.3cm]c) node[midway, right]{\SI{37}{\centi\metre}};
\draw[<->] ([yshift=+0.3cm]c) -- ([yshift=+0.3cm]d) node[midway, above]{\SI{18}{\centi\metre}};
\draw[<->] ([yshift=+0.3cm]e) -- ([yshift=+0.3cm]f) node[midway, above]{\SI{14}{\centi\metre}};
\draw[<->] ([xshift=-0.3cm]f) -- ([xshift=-0.3cm]a) node[midway, left]{\SI{14}{\centi\metre}};
\end{tikzpicture}
\end{document}
基本思想是使用坐标,这样如果您更改某些值,则不必在所有使用的地方都进行更改。下一步是绘制方案。
要放置标签,请查看其他答案,例如 Peter Grill 在您的答案评论中提到的答案。您通常不会计算中点,可以使用锚点中途。这样它就会正好位于中间。从这个起点开始,你将锚点移动到左边,以下或者您需要什么。
我不想使用太多坐标,因此我使用已定义的坐标作为箭头位置的偏移量,例如在这个答案中。
对于文本,siunitx 包用于在值和单位之间添加正确的空格。