tikz euclide \tkzMarkAngle 导致边界框出现错误?

tikz euclide \tkzMarkAngle 导致边界框出现错误?

我在使用 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}

输出

在此处输入图片描述

相关内容