TikZ画像を水平方向に中央揃えする

TikZ画像を水平方向に中央揃えする

使用したい図形がいくつかありますが、最初の図形が 2 番目の図形より大きいため、2 番目の図形は最初の図形の下端を基準に配置されます。私のコード:

\begin{figure}[h]
\centering
\begin{tikzpicture}[scale=0.9]
    \draw[->] (0, 0) -- (6, 0) node[right] {$z$};
    \draw[->] (0, 0) -- (0, 6) node[above] {$x$};
    \coordinate (a) at (5, 1);
    \node[fill=red, circle, scale=0.3, label=above:{$s$}] (s) at (5, 5) {};
    \node[fill=red, circle, scale=0.3, label=below:{$e$}] (e) at (1, 1) {};
    \draw (s) -- (e);
    \node[fill=red, circle, scale=0.3, label=above:{$m^*$}] (m*) at (2.293, 3.707) {};
    \node[fill=red, circle, scale=0.3, label=right:{$m$}] (m) at (3, 3) {};
    \draw (m) -- (m*);
    \draw[dashed] (s) -- (a) node[pos=0.5, label=right:{$\Delta x$}] -- (e) node[pos=0.5, label=below:{$\Delta z$}] {};
\end{tikzpicture}
\hspace{10mm}
\begin{tikzpicture}        
    \coordinate (ayy) at (4.293, 1);
    \coordinate (mstar) at (4.293, 3.707);
    \coordinate (emm) at (7, 1);
    \node[fill=red, circle, scale=0.3, label=above:{$m^*$}] (m*) at (mstar) {};
    \node[fill=red, circle, scale=0.3, label=right:{$m$}] (m) at (emm) {};
    \node[fill=none, inner sep=0, outer sep=0] (a) at (ayy) {};
    \draw (m) -- (m*) node[pos=0.6, label=right:{$d$}] {};
    \draw[dashed] (a) -- (m*) node[pos=0.5, label=left:{$d\cos\alpha$}] {};
    \draw[dashed] (a) -- (m) node[pos=0.5, label=below:{$d\sin\alpha$}] {};
    \pic[draw, "$\alpha$", angle eccentricity=1.2, angle radius=7mm] {angle=ayy--mstar--emm};
\end{tikzpicture}
\caption{Calculating $m^*$ (Case 1)}
\end{figure}

現在持っているもの: 私が持っているもの

私が欲しいもの: 私が欲しいもの:

答え1

ようこそ!方法はいろいろありますが、ここでは 2 つを紹介します。

  1. を使用します\vcenter。おそらく最も簡単な使用方法は、数式モードにすることです。
  2. 1 枚の画像のみを使用して、スコープを操作します。

2 番目の例では、極座標を使用し、パーサーを使用して座標を解析し、パスを結合するなどして、コードを少し簡略化しました。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{angles,quotes}
\begin{document}
\begin{figure}[h]
\centering
$\vcenter{\hbox{\begin{tikzpicture}[scale=0.9]
    \draw[->] (0, 0) -- (6, 0) node[right] {$z$};
    \draw[->] (0, 0) -- (0, 6) node[above] {$x$};
    \coordinate (a) at (5, 1);
    \node[fill=red, circle, scale=0.3, label=above:{$s$}] (s) at (5, 5) {};
    \node[fill=red, circle, scale=0.3, label=below:{$e$}] (e) at (1, 1) {};
    \draw (s) -- (e);
    \node[fill=red, circle, scale=0.3, label=above:{$m^*$}] (m*) at (2.293, 3.707) {};
    \node[fill=red, circle, scale=0.3, label=right:{$m$}] (m) at (3, 3) {};
    \draw (m) -- (m*);
    \draw[dashed] (s) -- (a) node[pos=0.5, label=right:{$\Delta x$}]{}
     -- (e) node[pos=0.5, label=below:{$\Delta z$}] {};
\end{tikzpicture}}}
\hspace{10mm}
\vcenter{\hbox{\begin{tikzpicture}
    \coordinate (ayy) at (4.293, 1);
    \coordinate (mstar) at (4.293, 3.707);
    \coordinate (emm) at (7, 1);
    \node[fill=red, circle, scale=0.3, label=above:{$m^*$}] (m*) at (mstar) {};
    \node[fill=red, circle, scale=0.3, label=right:{$m$}] (m) at (emm) {};
    \node[fill=none, inner sep=0, outer sep=0] (a) at (ayy) {};
    \draw (m) -- (m*) node[pos=0.6, label=right:{$d$}] {};
    \draw[dashed] (a) -- (m*) node[pos=0.5, label=left:{$d\cos\alpha$}] {};
    \draw[dashed] (a) -- (m) node[pos=0.5, label=below:{$d\sin\alpha$}] {};
    \pic[draw, "$\alpha$", angle eccentricity=1.2, angle radius=7mm] {angle=ayy--mstar--emm};
\end{tikzpicture}}}$
\end{figure}

\begin{figure}[h]
\centering
\begin{tikzpicture}[bullet/.style={fill=red, circle, scale=0.3, label=#1}]
  \begin{scope}[scale=0.9]
    \draw[<->] (0, 6) node[above] {$x$} |- (6, 0) node[right] {$z$};
    \coordinate (a) at (5, 1);
    \node[bullet=above:{$s$}] (s) at (5, 5) {};
    \node[bullet=below:{$e$}] (e) at (1, 1) {};
    \draw (s) -- node[fill=red, circle, scale=0.3, label=right:{$m$}] (m){}  (e)
        (m) ++ (135:1) 
        node[fill=red, circle, scale=0.3, label=above:{$m^*$}] (m*) {};
    \draw (m) -- (m*);
    \draw[dashed] (s) |- (e) node[pos=0.75,below] {$\Delta z$}
    node[pos=0.25,right](dx){$\Delta x$};
  \end{scope}
  \begin{scope}
    \path (dx)  ++ (3,{-1-1/sqrt(8)})  coordinate (a)
        ++ (0,{2+1/sqrt(2)}) 
        node[bullet=above:{$m^*$}] (m*) {}
        (a) ++ ({2+1/sqrt(2)},0)
        node[bullet=right:{$m$}] (m){};
    \draw (m) -- (m*);  
    \draw[dashed] (m*)  --  node[left] (dc){$d\cos\alpha$} (a)
        -- node[below]{$d\sin\alpha$} (m);
    \pic[draw, "$\alpha$", angle eccentricity=1.2, angle radius=7mm] 
    {angle=a--m*--m};
  \end{scope}
\end{tikzpicture}
\end{figure}
\end{document}

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

ところで、このサイトの通常の形式は、完全な最小限の動作例 (MWE) を提供することです。これらは、コンパイルに必要なものがすべて含まれたコードであり、通常は で始まり で\documentclass終わります\end{document}。あなたの場合、どのドキュメント クラスを使用しているかがわからないため、推測する必要がありました。また、どのパッケージをロードしているか (スニペットを実行するために必要なもの以外) も推測する必要がありました。別の方法で問題を解決するためのツールを備えた何かをすでにロードしている可能性もあります。

答え2

もう 1 つの可能性は、選択したベースラインで画像を揃えることです。たとえば、画像用のコードを少し変更すると、MWE は次のようになります。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{angles,
                calc, % new
                quotes}

\begin{document}
    \begin{figure}[h]
    \tikzset{dot/.style = {circle, fill=red, minimum size=3pt, inner sep=0pt}}% new
\begin{tikzpicture}[baseline=(X.center)] % <---
% caxes
    \draw[->] (0,0) -- (6, 0) node[right] {$z$};
    \draw[->] (0,0) -- (0, 6) node[above] {$x$};
% triangle
\node (s) [dot, label=$s$]          at (5,5) {};
\node (e) [dot, label=below:{$e$}]  at (1,1) {};
\draw (s) -- node (m) [dot, label=right:$m$] {} (e);
\node (m*) [dot, label=$m^*$] at ($(m)!10mm!90:(s)$) {};
    \node[fill=red, circle, scale=0.3, label=right:{$m$}] (m) at (3, 3) {};
\draw (m) -- (m*);
\draw[dashed] (e) -| (s) node[pos=0.25, label=below:$\Delta z$] {}
                         node (X) [pos=0.75, label=right:$\Delta x$] {}; % <---
\end{tikzpicture}
    \hfill
\begin{tikzpicture}[baseline=(X.center)] % <---
\node (m*) [dot, label=above:$m^*$] {};
\node (m)  [dot, label=right:$m$]   at (3,-3) {};
\draw (m*) -- node[label=right:$d$] {} (m);
\draw[dashed] (m*) |- (m)   node (X) [pos=0.25, label=left:$d\cos\alpha$] {} % <---
                            coordinate[pos=0.5] (a)  % <--- 
                            node[pos=0.75, label=below:$d\sin\alpha$] {};
\pic[draw, "$\alpha$", angle eccentricity=1.2, angle radius=7mm] {angle=a--m*--m};
\end{tikzpicture}
\end{figure}
\caption{Calculating $m^*$ (Case 1)}
\end{document}

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

関連情報