TikZ: 画像を中央に配置する

TikZ: 画像を中央に配置する

私のコードでは、線 SR (グラフ抜粋の中心) がページの中央にくるように図面を揃えることができません。上のテキストや、図面の下のキャプションとページ番号と比較すると、図面が左にずれていることがわかります。

\documentclass[12pt, a4paper, oneside]{article}
\usepackage{indentfirst}
\usepackage[margin = 2.5cm]{geometry}
\usepackage{tkz-euclide}
\usepackage{amsmath}
\usepackage{amssymb}
\usetkzobj{all}

\begin{document}

...some text here...

\begin{align*}
    \sec{\varphi}=\frac{|OS|}{|OR|}=\frac{|OS|}{1}=|OS|
& & \cot{\varphi}=\frac{|OU|}{|OT|}=\frac{|OU|}{1}=|OU|
\end{align*}

{\centering

\begin{tikzpicture}[scale=4]

    \def\costhirty{0.8660256}
    \def\secthirty{1.1547}
    \def\sinfifteen{-0.258819}
    \def\cosfifteen{0.9659258}

    \draw[color=gray,dotted,step=1cm] (-0.25,-0.25) grid (2.25,1.25);   

    \draw (\cosfifteen,\sinfifteen) arc (-15:105:1cm);

    \draw[color=gray,dotted] (0,0) -- (30:2.5cm);
    \draw[color=gray,dotted] (30:1cm) -- +(-90:0.75cm);
    \draw[color=gray,dotted] (30:1cm) -- +(90:0.75cm);

    \coordinate (O) at (0, 0);
    \coordinate (P) at (\costhirty, 0);
    \coordinate (Q) at (30:1cm);
    \coordinate (R) at (1, 0);
    \coordinate (S) at (30:\secthirty);
    \coordinate (T) at (0, 1);
    \coordinate (U) at (30:2);

    \draw[thick] (O)--(90:1.25);
    \draw[thick] (O)--(0:2.25);

    \draw[thick] (Q)--(P);
    \draw[thick] (O)--(U)--(T);
    \draw[thick] (R)--(S);

    \tkzLabelPoints[below left](O)
    \tkzLabelPoints[below left](P)
    \tkzLabelPoints[left = 5pt of Q](Q)
    \tkzLabelPoints[below right](R)
    \tkzLabelPoints[below right](S)
    \tkzLabelPoints[above left](T)
    \tkzLabelPoints[above](U)

    \tkzMarkAngle[fill = gray, size=0.3cm, opacity = .3](P,O,Q)
    \tkzLabelAngle[pos = 0.2](P,O,Q){$\varphi$}

    \tkzMarkAngle[fill = gray, size=0.3cm, opacity = .3](T,U,O)
    \tkzLabelAngle[pos = -0.2](O,U,T){$\varphi$}

\end{tikzpicture}

\textit{\scriptsize{Figure 2}}

}

\end{document}

上記のコードを実行すると、次のプレビューが表示されます。(二重の赤い線は後で追加されています。)

描画

二重の赤い線を通過する残りのコンテンツと揃うように、SR 線を中央に配置するにはどうすればよいですか?

答え1

正確な理由はわかりませんが、tkz-euclide角度マーキング マクロでは、グラフィックの境界ボックスの外側にある内部制御ポイントを使用する必要があります。

解決策は、それらをpgfinterruptboundingbox環境内に閉じ込めることです。

\documentclass[12pt, a4paper, oneside]{article}
\usepackage{indentfirst}
\usepackage[margin = 2.5cm]{geometry}
\usepackage{tkz-euclide}
\usepackage{amsmath}
\usepackage{amssymb}
\usetkzobj{all}

\begin{document}

...some text here...

\begin{align*}
    \sec{\varphi}=\frac{|OS|}{|OR|}=\frac{|OS|}{1}=|OS|
& & \cot{\varphi}=\frac{|OU|}{|OT|}=\frac{|OU|}{1}=|OU|
\end{align*}

{\centering

\begin{tikzpicture}[scale=4]

    \def\costhirty{0.8660256}
    \def\secthirty{1.1547}
    \def\sinfifteen{-0.258819}
    \def\cosfifteen{0.9659258}

    \draw[color=gray,dotted,step=1cm] (-0.25,-0.25) grid (2.25,1.25);   

    \draw (\cosfifteen,\sinfifteen) arc (-15:105:1cm);

    \draw[color=gray,dotted] (0,0) -- (30:2.5cm);
    \draw[color=gray,dotted] (30:1cm) -- +(-90:0.75cm);
    \draw[color=gray,dotted] (30:1cm) -- +(90:0.75cm);

    \coordinate (O) at (0, 0);
    \coordinate (P) at (\costhirty, 0);
    \coordinate (Q) at (30:1cm);
    \coordinate (R) at (1, 0);
    \coordinate (S) at (30:\secthirty);
    \coordinate (T) at (0, 1);
    \coordinate (U) at (30:2);

    \draw[thick] (O)--(90:1.25);
    \draw[thick] (O)--(0:2.25);

    \draw[thick] (Q)--(P);
    \draw[thick] (O)--(U)--(T);
    \draw[thick] (R)--(S);

    \tkzLabelPoints[below left](O)
    \tkzLabelPoints[below left](P)
    \tkzLabelPoints[left = 5pt of Q](Q)
    \tkzLabelPoints[below right](R)
    \tkzLabelPoints[below right](S)
    \tkzLabelPoints[above left](T)
    \tkzLabelPoints[above](U)
    \begin{pgfinterruptboundingbox}
        \tkzMarkAngle[fill = gray, size=0.3cm, opacity = .3](P,O,Q)
        \tkzLabelAngle[pos = 0.2](P,O,Q){$\varphi$}
        \tkzMarkAngle[fill = gray, size=0.3cm, opacity = .3](T,U,O)
        \tkzLabelAngle[pos = -0.2](O,U,T){$\varphi$}
    \end{pgfinterruptboundingbox}
\end{tikzpicture}

\textit{\scriptsize{Figure 2}}

}

\end{document}

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


例を少し縮小すると、テスト用の「インストルメンテーション」によって問題がより明確に示されます。

\documentclass{article}
\usepackage{tkz-euclide}
\usepackage{amsmath}
\usetkzobj{all}

\begin{document}

...some text here... \hrulefill

\begin{align*}
    \sec{\varphi}=\frac{|OS|}{|OR|}=\frac{|OS|}{1}=|OS|
& & \cot{\varphi}=\frac{|OU|}{|OT|}=\frac{|OU|}{1}=|OU|
\end{align*}

{\centering

\begin{tikzpicture}[scale=4]
    \coordinate (O) at (0, 0);
    \coordinate (P) at ({cos(30)}, 0);
    \coordinate (Q) at (30:1cm);
    \coordinate (R) at (1, 0);
    \coordinate (S) at (30:{sec(30)});
    \coordinate (T) at (0, 1);
    \coordinate (U) at (30:2);

    \draw[thick] (Q)--(P);
    \draw[thick] (O)--(U)--(T);
    \draw[thick] (R)--(S);

    \node[red] at (current bounding box.south) {$\vert$};
    \begin{pgfinterruptboundingbox}
        \tkzMarkAngle[fill = gray, size=0.3cm, opacity = .3](P,O,Q)
        \tkzLabelAngle[pos = 0.2](P,O,Q){$\varphi$}
        \tkzMarkAngle[fill = gray, size=0.3cm, opacity = .3](T,U,O)
        \tkzLabelAngle[pos = -0.2](O,U,T){$\varphi$}
    \end{pgfinterruptboundingbox}
    \node[blue] at (current bounding box.south) {$\vert$};
\end{tikzpicture}

$\vert$

}

\end{document}

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

環境ではpgfinterruptboundingbox、3 つの\vertがすべて揃っていることに注目してください。この環境をコメント アウトすると、角度マーク マクロによって境界ボックスに導入された不整合が表示されます。

関連情報