我在使用 tkz-euclide 时遇到了奇怪的行为。
\tkzMarkAngle[size=2](P,R,S)
下面代码中的命令似乎弄乱了边界框。
\documentclass{minimal}
\usepackage{tkz-euclide}
\usetkzobj{all}
\begin{document}
\begin{center}
\begin{tikzpicture}[scale=.3]
\tkzDefPoint(0,0){S}
\tkzDefPoint(42:20){P}
\tkzDefPoint(0:21.1){R}
\tkzDrawSegments[thick](S,P P,R R,S)
\tkzLabelPoints[left](S)
\tkzLabelPoints[above](P)
\tkzLabelPoints[right](R)
\tkzMarkAngle[size=2](P,R,S)
\tkzLabelAngle[pos = 3.5](P,R,S){$65^{\circ}$}
\tkzMarkAngle[size=2](R,S,P)
\tkzLabelAngle[pos = 3.5](R,S,P){$42^{\circ}$}
\tkzLabelSegment[above left](S,P){$20$ m}
\end{tikzpicture}
\end{center}
\end{document}
上述代码可以生成正确的图片,但没有居中,而以下代码(注释掉一行)可以生成居中的图片。
\documentclass{minimal}
\usepackage{tkz-euclide}
\usetkzobj{all}
\begin{document}
\begin{center}
\begin{tikzpicture}[scale=.3]
\tkzDefPoint(0,0){S}
\tkzDefPoint(42:20){P}
\tkzDefPoint(0:21.1){R}
\tkzDrawSegments[thick](S,P P,R R,S)
\tkzLabelPoints[left](S)
\tkzLabelPoints[above](P)
\tkzLabelPoints[right](R)
%\tkzMarkAngle[size=2](P,R,S)
\tkzLabelAngle[pos = 3.5](P,R,S){$65^{\circ}$}
\tkzMarkAngle[size=2](R,S,P)
\tkzLabelAngle[pos = 3.5](R,S,P){$42^{\circ}$}
\tkzLabelSegment[above left](S,P){$20$ m}
\end{tikzpicture}
\end{center}
\end{document}
有人知道为什么会发生这种情况以及我怎样才能使图片居中吗?
答案1
空的但仍在使用,但label
设置在错误的位置。
\node[shift=<somewhere>] at (<somewhere else>) …
不起作用,但是
\node at ([shift=<somewhere>] <somewhere else>) …
或者
\path[shift=<somewhere>] node at (<somewhere else>) …
做。
在...的帮助下etoolbox
使用它的\patchcmd
宏可以轻松解决这个问题。
我擅自将权利纳入了命令\tkzLabelAngle
之中\tkzMarkAngle
。
我也包括了可能放错标签的\tkzMarkAngle
中间部分。S,P,R
代码
\documentclass{article}
\usepackage{tikz}
\usepackage{tkz-euclide}
\usetkzobj{all}
\usepackage{etoolbox}
\makeatletter
\patchcmd\tkz@MarkAngle{\node[lbstyle,shift={(\tkz@ax,\tkz@ay)}] at (\labelangle:\tkz@dist ){\tkz@mklabel};}
{\node[lbstyle] at ([shift={(\tkz@ax,\tkz@ay)}]\labelangle:\tkz@dist ){\tkz@mklabel};}% or \path[shift=…] node[lbstyle] at …;
{}{}
\makeatother
\begin{document}
\begin{center}
\begin{tikzpicture}[scale=.3]
\tkzDefPoint(0,0){S}
\tkzDefPoint(42:20){P}
\tkzDefPoint(0:21.1){R}
\tkzDrawSegments[thick](S,P P,R R,S)
\tkzLabelPoints[left](S)
\tkzLabelPoints[above](P)
\tkzLabelPoints[right](R)
\tkzMarkAngle[label=$65^{\circ}$, dist=3.5, size=2](P,R,S)
\tkzMarkAngle[label=$42^{\circ}$, dist=3.5, size=2](R,S,P)
\tkzMarkAngle[size=2](S,P,R)
\tkzLabelSegment[above left](S,P){$20$ m}
\end{tikzpicture}
\end{center}
\end{document}