あるNode(Tikz)の表示位置をページの中央に設置したい.

あるNode(Tikz)の表示位置をページの中央に設置したい.

- 溝口 洸熙 の投稿
返信数: 3

目標

 Tikzで図を描画します.その際,あるNode Aをページの中央に設置することが目標であります.Node Aの両端にはそれを基準としていくらか離れいるNode B,Cを設置しています.

現状

 以下のコードを記述している.lualatexでコンパイル.

\begin{figure}
\centering
\begin{tikzpicture}
  \node at (0,0)(A){Node A};
  \node[right=1cm of A](B){このNode はBですよ};
  \node[left=1cm of A](C){Node C};
\end{tikzpicture}
\end{figure}

 その際に,Node Bの文字列はNode Cの文字列よりも長い故,figure環境での\centeringの宣言によって両端 Node B, Node C 間距離の中心がちょうど中央に来る表示になっています.  この時,Node Aを丁度ページ横幅の中央(0.5\textwidth)の位置に設置することが目標です.

試行錯誤

  • \centeringをなくす.
    • もちろんだが,図全体が左にズレる.

添付画像

 添付画像について,call sort が上記質問の Node A に当たる部分です.

======

 様々な文献で調べましたが,納得できる結果は得られませんでした.どなたか対策をご存知の方は教えていただきたいです.

以上.

添付 880F8784-2E77-43E1-BEAE-F91A8DEC8A32.jpeg
タグ:
溝口 洸熙 への返信

Re: あるNode(Tikz)の表示位置をページの中央に設置したい.

- 和田 勇 の投稿
添付ファイルを参考していただけると幸いです。

いくつか方法があるかと思いますが、
Node A の両側に、同じ幅で B C を配置したらいかがですか?
念の為、左寄せ、右寄せも行っておきます。

第一段階として固定幅指定だと、ざっくり以下のような感じ。

-  \node[right=1cm of A](B){このNode はBですよ};
-  \node[left=1cm of A](C){Node C};
+  \node[right=1cm of A, align=left, text width=6cm](B){このNode はBですよ};
+  \node[left=1cm of A, align=right, text width=6cm](C){Node C};

指定幅が不足したり広すぎたりするので、自動で幅を決めるには
\savebox,\sbox を使った方法などがあります。

      \newsavebox{\mybox} % 計測用の箱を用意(幅は \the\wd\mybox で参照)
      \sbox{\mybox}{このNode はBですよ}

      \begin{figure}
      \centering
      \begin{tikzpicture}
        \node at (0,0)(A){Node A};
        \node[right=1cm of A, align=left, text width=\the\wd\mybox](B){\usebox{\mybox}};
        \node[left=1cm of A, align=right, text width=\the\wd\mybox](C){Node C};
      \end{tikzpicture}
      \end{figure}

他の方法としては、\node[text width=\textwidth](X){} を作成し A と X の中心点を一致させる方法もあるかと思います。
溝口 洸熙 への返信

Re: あるNode(Tikz)の表示位置をページの中央に設置したい.

- 宇治 武士 の投稿

ほぼ和田さんと同じなのですが,私ならめんどくさがりなので, 次の文を\begin{tikzpicture} ~\end{tikzpicture}の中に記入するぐらいですかね。 A(0,0)なのでそこを中心にほぼ\textwidth幅の,見えない四角形を描く感じです。

0.5\textwidthにしない理由は線の太さ分,はみ出してWarningが出ないようにですね。 (小心者なので)

\path (-0.49\textwidth, -0.5cm) rectangle (0.49\textwidth, 0.5cm);

図がはみ出すとうまくいかないのですが,添付いただいた画像なら特に問題ないかと思います。

溝口 洸熙 への返信

Re: あるNode(Tikz)の表示位置をページの中央に設置したい.

- 溝口 洸熙 の投稿
和田様.
宇治様.

ご回答ありがとうございました.希望の出力を実現できました.
お忙しい中,お世話になりました.