tkz-euclide コマンドは tikzfigure の位置を変更します - 停止する必要があります

tkz-euclide コマンドは tikzfigure の位置を変更します - 停止する必要があります

ChatGPT や Google で問題の解決策を探しても、その問題に少しでも言及しているものがまったく見つからないということはめったにありません。私の検索能力が下手なだけかもしれません。

次のコードには、異なるタイプの三角形を表示する 4 つのミニページがあります。二等辺三角形と正三角形 (不等辺三角形ではない) で tkx-euclide コマンドを使用しています。両方の図が中央に配置され、垂直方向にシフトしています。中央に配置したり、垂直方向にシフトしたりしたくありません。そのため、問題の解決策が必要です。\tkzLabelAngle コマンドが問題の原因だと思いますが、配置の問題なしにそのコマンドを使用する方法が必要です。

ありがとう

\begin{minipage}[t]{0.475\linewidth}
    \textsf{\textbf{Scalene Triangle}}
    \newline\newline
        \begin{tikzpicture}
            \draw (0,0) -- (1,2) -- (3,1.75) -- (0,0);
        \end{tikzpicture}
\end{minipage}
\begin{minipage}[t]{0.475\linewidth}
    \textsf{\textbf{Isosceles Triangle}}
    \newline\newline
        \begin{tikzpicture}
            \coordinate (A) at (0,0);
            \coordinate (B) at (4,0);
            \coordinate (C) at (2,1.5);
            \draw (0,0) -- (4,0) -- (2,1.5) -- (0,0);
            \tkzMarkSegment[color=black,pos=.5,mark=|](A,C)
            \tkzMarkSegment[color=black,pos=.5,mark=|](B,C)
            \tkzLabelAngle[pos=-0.33](C,A,B){$\circ$}
            \tkzLabelAngle[pos=0.33](C,B,A){$\circ$}
        \end{tikzpicture}
\end{minipage}
\newline\newline
\begin{minipage}[t]{0.475\linewidth}
    \textsf{\textbf{Equilateral Triangle}}
    \newline\newline
        \begin{tikzpicture}
            \coordinate (A) at (0,0);
            \coordinate (B) at (3,0);
            \coordinate (C) at (1.5,{1.5*sqrt(3)});
            
            \draw (A) -- (B) -- (C) -- cycle;
            \tkzLabelAngle[pos=-0.33](C,A,B){$\circ$}
            \tkzLabelAngle[pos=0.33](C,B,A){$\circ$}
            \tkzLabelAngle[pos=-0.33](B,C,A){$\circ$}
        \end{tikzpicture}
\end{minipage}
\begin{minipage}[t]{0.475\linewidth}
    \textsf{\textbf{Right Triangle}}
    \newline\newline
        \begin{tikzpicture}
            
        \end{tikzpicture}
\end{minipage}

答え1

すべてを異なる単一の tikz 画像に描画しscope、異なるshift値で配置する方がよいでしょう。負のキー値により、境界ボックスが大きくなる可能性があると思いますpos。可能であれば、正の値を使用することをお勧めします。

\documentclass{standalone}
\usepackage{tkz-euclide}
\begin{document}
\begin{tikzpicture}
\begin{scope}
\draw (0,0) -- (1,2) -- (3,1.75) -- cycle;
\node at (1.5,2) [above=0.5cm] {\textsf{\textbf{Scalene Triangle}}};
\end{scope}
\begin{scope}[xshift=6cm]
\coordinate (A) at (0,0);
\coordinate (B) at (4,0);
\coordinate (C) at (2,1.5);
\draw (0,0) -- (4,0) -- (2,1.5) -- cycle;
\tkzMarkSegment[color=black,pos=.5,mark=|](A,C)
\tkzMarkSegment[color=black,pos=.5,mark=|](B,C)
\tkzLabelAngle[pos=-0.33](C,A,B){$\circ$}
\tkzLabelAngle[pos=0.33](C,B,A){$\circ$}
\node at (C)  [above=1cm] {\textsf{\textbf{Isosceles Triangle}}};
\end{scope}
\begin{scope}[yshift=-4cm]
\coordinate (A) at (0,0);
\coordinate (B) at (3,0);
\coordinate (C) at (1.5,{1.5*sqrt(3)});
\draw (A) -- (B) -- (C) -- cycle;
\tkzLabelAngle[pos=0.33](B,A,C){$\circ$}
\tkzLabelAngle[pos=0.33](C,B,A){$\circ$}
\tkzLabelAngle[pos=0.33](A,C,B){$\circ$}
\node at (C) [above=0.5cm] {\textsf{\textbf{Equilateral Triangle}}};
\end{scope}
\begin{scope}[shift={(6.5cm,-4cm)}]
\coordinate (A) at (0,0);
\coordinate (B) at (3,0);
\coordinate (C) at (3,{1.5*sqrt(3)});
\draw (A) -- (B) -- (C) -- cycle;
\node at (1.5,{1.5*sqrt(3)}) [above=0.5cm] {\textsf{\textbf{Right Triangle}}};
\end{scope}
\end{tikzpicture}
\end{document}

ここに画像の説明を入力してください

##############################################################################

以下は、負の値が境界ボックスを拡大する例ですpos。同じ図ですが、負のpos値により、左下と上角の境界ボックスが大きくなります。

\documentclass{report}
\usepackage{tkz-euclide}
\begin{document}
\begin{tikzpicture}
\coordinate (A) at (0,0);
\coordinate (B) at (3,0);
\coordinate (C) at (1.5,{1.5*sqrt(3)});
\draw (A) -- (B) -- (C) -- cycle;
\tkzLabelAngle[pos=0.33](B,A,C){$\circ$}
\tkzLabelAngle[pos=0.33](C,B,A){$\circ$}
\tkzLabelAngle[pos=0.33](A,C,B){$\circ$}
\draw (current bounding box.south west) rectangle (current bounding box.north east);
\end{tikzpicture}

\begin{tikzpicture}
\coordinate (A) at (0,0);
\coordinate (B) at (3,0);
\coordinate (C) at (1.5,{1.5*sqrt(3)});
\draw (A) -- (B) -- (C) -- cycle;
\tkzLabelAngle[pos=-0.33](C,A,B){$\circ$}
\tkzLabelAngle[pos=0.33](C,B,A){$\circ$}
\tkzLabelAngle[pos=-0.33](B,C,A){$\circ$}
\draw (current bounding box.south west) rectangle (current bounding box.north east);
\end{tikzpicture}
\end{document}

ここに画像の説明を入力してください

minipage正のpos値で最初の行に使用します\noindent。出力は期待どおりでしたか?report例としてドキュメント クラスを使用し、ページのフレームを示します。

\documentclass{report}
\usepackage{showframe}
\usepackage{tkz-euclide}
\begin{document}
\noindent\begin{minipage}[t]{0.475\linewidth}
    \textsf{\textbf{Scalene Triangle}}
    \newline\newline
        \begin{tikzpicture}
            \draw (0,0) -- (1,2) -- (3,1.75) -- (0,0);
        \end{tikzpicture}
\end{minipage}
\begin{minipage}[t]{0.475\linewidth}
    \textsf{\textbf{Isosceles Triangle}}
    \newline\newline
        \begin{tikzpicture}
            \coordinate (A) at (0,0);
            \coordinate (B) at (4,0);
            \coordinate (C) at (2,1.5);
            \draw (0,0) -- (4,0) -- (2,1.5) -- (0,0);
            \tkzMarkSegment[color=black,pos=.5,mark=|](A,C)
            \tkzMarkSegment[color=black,pos=.5,mark=|](B,C)
            \tkzLabelAngle[pos=0.33](B,A,C){$\circ$}
            \tkzLabelAngle[pos=0.33](C,B,A){$\circ$}
        \end{tikzpicture}
\end{minipage}
\newline\newline
\begin{minipage}[t]{0.475\linewidth}
    \textsf{\textbf{Equilateral Triangle}}
    \newline\newline
        \begin{tikzpicture}
            \coordinate (A) at (0,0);
            \coordinate (B) at (3,0);
            \coordinate (C) at (1.5,{1.5*sqrt(3)});
            
            \draw (A) -- (B) -- (C) -- cycle;
            \tkzLabelAngle[pos=0.33](B,A,C){$\circ$}
            \tkzLabelAngle[pos=0.33](C,B,A){$\circ$}
            \tkzLabelAngle[pos=0.33](A,C,B){$\circ$}
        \end{tikzpicture}
\end{minipage}
\begin{minipage}[t]{0.475\linewidth}
\textsf{\textbf{Right Triangle}}
\newline\newline
\begin{tikzpicture}
            
\end{tikzpicture}
\end{minipage}
\end{document}

ここに画像の説明を入力してください

答え2

  1. 最初の解決策。tkz-euclide を特に使用していません。TikZ と混在していますが、これは良くありません。

トムが言うように、負の値は使用しないでくださいpos。境界ボックスが大きくなるからです。

クリップを使用すると、bboxを制御できます(2を参照)

    \begin{tikzpicture}
        \tkzDefPoints{0/0/A,3/0/B}
        \tkzDefTriangle[equilateral](A,B)\tkzGetPoint{C}
        \tkzDrawPolygon(A,B,C)
        \tkzLabelAngle[pos=0.33](B,A,C){$\circ$}
        \tkzLabelAngle[pos=0.33](C,B,A){$\circ$}
        \tkzLabelAngle[pos=0.33](A,C,B){$\circ$}
    \end{tikzpicture}
  1. bboxを制御するには\tkzClipPolygon(A,B,C)

    \begin{tikzpicture}
         \coordinate (A) at (0,0);
         \coordinate (B) at (3,0);
         \coordinate (C) at (1.5,{1.5*sqrt(3)});
         \draw (A) -- (B) -- (C) -- cycle;
         \tkzClipPolygon(A,B,C)
         \tkzLabelAngle[pos=-0.33](C,A,B){$\circ$}
         \tkzLabelAngle[pos=0.33](C,B,A){$\circ$}
         \tkzLabelAngle[pos=-0.33](B,C,A){$\circ$}
     \end{tikzpicture}
    

関連情報