假设我有以下三角形,这是一个非常标准的图形:
\documentclass[border=3pt]{standalone}
\usepackage[ngerman]{babel}
\usepackage{tikz}
\usetikzlibrary{angles,quotes,babel}
\begin{document}
\begin{tikzpicture}%
\draw[thick,xshift=6cm] (0,0) coordinate(A) node[below left] {$\mathrm{A^{\prime}}$}
-- (0:5cm) coordinate(B) node[pos=0.5, below] {$\mathrm{c^{\prime}}$} node[below right] {$\mathrm{B^{\prime}}$}
-- (40:5cm) coordinate(C) node[pos=0.5, right] {$\mathrm{a^{\prime}}$} node[above] {$\mathrm{C^{\prime}}$}
-- cycle node[pos=0.5,above left] {$\mathrm{b^{\prime}}$}
pic["$\beta^\prime$",draw,thin,angle radius=0.5cm,angle eccentricity=1.3] {angle=C--B--A}
pic["$\gamma^\prime$",draw,thin,angle radius=0.5cm,angle eccentricity=1.45] {angle=A--C--B}
pic["$\alpha^\prime$",draw,thin,angle radius=0.5cm,angle eccentricity=1.5] {angle=B--A--C}
;
\end{tikzpicture}
\end{document}
我手动放置了节点,但问题是,如果我旋转图形,则必须手动调整它们。如果我[rotate=180]
在后面添加,情况会变得多么糟糕,下面就是一个例子\begin{tikzpicture}
。
我阅读了手册中有关节点的整个部分,但没有找到答案:
对于边标签,有没有办法告诉
TikZ
它总是将节点放置在中间(pos=0.5
,但更多是“真正的 0.5”),特别是告诉它将其放置在距离线中间 x pt(或 mm)的方向上,垂直于线段?对于顶点标签,有没有办法
TikZ
将节点从顶点放置 x pt(或 mm)在该顶点的角度平分线上?
如果有这样的方法,可能还需要手动“交换”位置(当图形上下颠倒时),但这种几何图形总是看起来很漂亮。
答案1
作为@SebGlav 答案(+1)的补充,大部分都是题外话:
- 用来标记边的引号
- 边缘标签位于边缘上(使用倾斜选项)
- 定义角度标签的通用样式
- 图片中的所有数学变量均由
\everymath=\expandafter{\the\everymath\mathrm}
- 代替
^#{prime}
使用'
\documentclass[tikz, border=3pt]{standalone}
\usepackage[ngerman]{babel}
\usetikzlibrary{angles,
calc,
quotes,
babel}
\tikzset{
Angle/.style = {draw, font=\footnotesize,
angle radius=5mm,
angle eccentricity=1.45},
every edge quotes/.style ={auto=right, rounded corners=5pt, inner sep=2pt},
}
\begin{document}
\begin{tikzpicture}
\everymath=\expandafter{\the\everymath\mathrm}
%
\draw[thick] (0,0) coordinate (A) to["$c'$"] coordinate (c)
(5,1) coordinate (B) to["$a'$"] coordinate (a)
(2,3) coordinate (C) to["$a'$"] coordinate (b)
cycle;
\path pic[Angle, "$\beta'$"] {angle=C--B--A}
pic[Angle, "$\gamma'$"] {angle=A--C--B}
pic[Angle, "$\alpha^\prime$"] {angle=B--A--C};
\path (A) -- ($(A)!3mm!180:(a)$) node {A}
(B) -- ($(B)!3mm!180:(b)$) node {B}
(C) -- ($(C)!3mm!180:(c)$) node {C};
\end{tikzpicture}
\begin{tikzpicture}[rotate=45]
\everymath=\expandafter{\the\everymath\mathrm}
%
\draw[thick] (0,0) coordinate (A) to["$c'$"] coordinate (c)
(5,1) coordinate (B) to["$a'$"] coordinate (a)
(2,3) coordinate (C) to["$a'$"] coordinate (b)
cycle;
\path pic[Angle, "$\beta^\prime$"] {angle=C--B--A}
pic[Angle, "$\gamma^\prime$"] {angle=A--C--B}
pic[Angle, "$\alpha^\prime$"] {angle=B--A--C};
\path (A) -- ($(A)!3mm!180:(a)$) node {A}
(B) -- ($(B)!3mm!180:(b)$) node {B}
(C) -- ($(C)!3mm!180:(c)$) node {C};
\end{tikzpicture}
\end{document}
第一个例子:
第二个示例:第一个示例旋转了 45 度
答案2
这是一种实现此目的的方法,使用calc
边标签和angles,quotes
顶点标签(类似于绘制内角时使用的标签)。
无论旋转角度如何,其都应保持正确位置。
\documentclass[tikz,border=3.14mm]{standalone}
\usetikzlibrary{calc,angles,quotes}
\begin{document}
\begin{tikzpicture}[rotate=0]
\coordinate (A) at (0,0);
\coordinate (B) at (5,2);
\coordinate (C) at (3,5);
\draw (A) -- (B) coordinate[midway] (C') -- (C) coordinate[midway] (A') -- (A) coordinate[midway] (B') -- cycle
pic["$A$",angle radius=15pt] {angle=C--A--B}
pic["$B$",angle radius=15pt] {angle=A--B--C}
pic["$C$",angle radius=15pt] {angle=B--C--A};
\node (lbl_a) at ($(A')!10pt!-90:(C)$) {a};
\node (lbl_b) at ($(B')!10pt!-90:(A)$) {b};
\node (lbl_c) at ($(C')!10pt!-90:(B)$) {c};
\end{tikzpicture}
\end{document}
旋转 = 0
旋转 = -30
旋转 = -60