横向きでのTikZ画像の配置

横向きでのTikZ画像の配置

私は大きなゲームツリーを書いた(オートマタパッケージ)を横向きで表示する必要があります。私はすでに両方を試してみましたテキスト位置そして幾何学(newgeometry コマンド) パッケージを作成しましたが、良い結果は得られませんでした。ゲーム ツリーの右側が正しく表示されるように、画像を左に移動する必要があります。何か提案はありますか? また、ポートレート モードでフィットさせる方法があれば、さらに良いでしょう。コードは次のとおりです。

\documentclass[12pt]{exam}
\usepackage{tikz}
\usepackage{pgf}
\usepackage{geometry}
\usepackage{textpos} 
\usepackage{pdflscape}
\usetikzlibrary{external,automata,trees,positioning,shadows,arrows,shapes.geometric}
\begin{document}

\begin{landscape}
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=2.8cm,
                semithick]
\tikzstyle{every state}=[fill,draw=none,green,text=white,circular drop shadow]
\tikzstyle{accepting}=[circle split, draw,text=black,inner sep=0.08cm]
\tikzstyle{initial}=[red,text=white]
\node[state,initial]  (N0) {Nature};
\node[state]   (N1) [below left of=N0,xshift=-5cm]  {Nature};
\node[state]   (F1) [below left of=N1]  {R\&G};
\node[state]   (K1) [below right of=N1] {R\&G};
\node[state]   (FS1) [below left of=F1]  {H};
\node[accepting]    (FN1) [above left of=F1] {\phantom{1}};
\node[state]        (KS1) [below right of=K1]  {H};
\node[accepting]    (KN1) [above right of=K1] {\phantom{1}};
\node[accepting]    (FSC1) [below left of=FS1]  {\phantom{1}};
\node[accepting]    (FSN1) [above left of=FS1] {\phantom{1}};
\node[accepting]    (KSC1) [below right of=KS1]  {\phantom{1}};
\node[accepting]    (KSN1) [above right of=KS1] {\phantom{1}};

\path(N1) edge node[ above left, pos=.20]{feed Hamlet}  node[ below right, pos=.30]{0} (F1) 
edge node[above right, pos=.20]{kill Hamlet} node[below left, pos=.30]{1} (K1);
\path(F1) edge node[above left,pos=.5]{escort} (FS1) edge node[ left]{don't}(FN1);
\path(K1) edge node[above right,pos=.5]{escort} (KS1) edge node[ right]{don't}(KN1);
\path(FS1) edge node[above left]{change} (FSC1) edge node[ left]{don't}(FSN1);
\path(KS1) edge node[above right]{change} (KSC1) edge node[ right]{don't}(KSN1);
\path(K1) edge[thick,dotted,-](F1);

 \node[state]   (N)[below right of=N0,xshift=5cm]  {Nature};
 \node[state]    (F) [below left of=N]  {R\&G};
 \node[state]    (K) [below right of=N] {R\&G};
 \node[state]    (FS) [below left of=F]  {H};
 \node[accepting]    (FN) [above left of=F] {\phantom{1}};
 \node[state]    (KS) [below right of=K]  {H};
 \node[accepting]     (KN) [above right of=K] {\phantom{1}};
  \node[accepting]    (FSC) [below left of=FS]  {\phantom{1}};
 \node[accepting]    (FSN) [above left of=FS] {\phantom{1}};
 \node[accepting]    (KSC) [below right of=KS]  {\phantom{1}};
 \node[accepting]     (KSN) [above right of=KS] {\phantom{1}};

 \path(N) edge node[ above left, pos=.20]{feed Hamlet}  node[ below right, pos=.30]{0} (F) 
edge node[above right, pos=.20]{kill Hamlet} node[below left, pos=.30]{1} (K);
 \path(F) edge node[above left,pos=.5]{escort} (FS) edge node[ left]{don't}(FN);
 \path(K) edge node[above right,pos=.5]{escort} (KS) edge node[ right]{don't}(KN);
 \path(FS) edge node[above left]{change} (FSC) edge node[ left]{don't}(FSN);
 \path(KS) edge node[above right]{change} (KSC) edge node[ right]{don't}(KSN);
 \path(K) edge[thick,dotted,-](F);

\end{tikzpicture}
\end{landscape}
\end{document}

答え1

このマクロを使用すると、テキストのサイズが変更されるため、解決策はありません\resizebox。私はあなたのようにランドスケープ環境を使用しようとします。問題は、このツリーを大きなドキュメントで使用する必要があるのか​​、それとも単独で使用する必要があるのか​​を知ることです。

1)parindent=0pt 水平方向のスペースを増やす。

2)\eject\nullボックスを垂直モードで新しいページに配置してみてください。これで\vfillボックスの周囲を使用できるようになります。

3)\hspace*{-4cm}クラス試験で使用されるレイアウトが正確にはわからないため、左余白なしでボックスを中央に配置するための適切な寸法を手動で検索します。

4) ここでは 2.8cm ではなく 2.5cm に少し縮小しましたが、node distanceおそらくさらに縮小することは可能ですが、その場合は一部のテキストの場所を変更する必要があります。

\documentclass[12pt]{exam}
\usepackage{tikz}
\usepackage{geometry}
\usepackage{pdflscape}
\usepackage{graphicx} 
\usetikzlibrary{external,automata,trees,positioning,shadows,arrows,shapes.geometric}

\newlength\Textht
\setlength\Textht{\textheight}

\begin{document}

\begin{landscape}
\parindent=0pt
\eject\null
\vfill
\hspace*{-4cm}
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=2.5cm,
                semithick]
\tikzstyle{every state}=[fill,draw=none,green,text=white,circular drop shadow]
\tikzstyle{accepting}=[circle split, draw,text=black,inner sep=0.08cm]
\tikzstyle{initial}=[red,text=white]
\node[state,initial]  (N0) {Nature};
\node[state]        (N1)   [below left  of=N0,xshift=-5cm]  {Nature};
\node[state]        (F1)   [below left  of=N1]  {R\&G};
\node[state]        (K1)   [below right of=N1]  {R\&G};
\node[state]        (FS1)  [below left  of=F1]  {H};
\node[accepting]    (FN1)  [above left  of=F1]  {\phantom{1}};
\node[state]        (KS1)  [below right of=K1]  {H};
\node[accepting]    (KN1)  [above right of=K1]  {\phantom{1}};
\node[accepting]    (FSC1) [below left  of=FS1] {\phantom{1}};
\node[accepting]    (FSN1) [above left  of=FS1] {\phantom{1}};
\node[accepting]    (KSC1) [below right of=KS1] {\phantom{1}};
\node[accepting]    (KSN1) [above right of=KS1] {\phantom{1}};

\path(N1) edge node[ above left, pos=.20]{feed Hamlet}  node[ below right, pos=.30]{0} (F1) 
edge node[above right, pos=.20]{kill Hamlet} node[below left, pos=.30]{1} (K1);
\path(F1) edge node[above left,pos=.5]{escort} (FS1) edge node[ left]{don't}(FN1);
\path(K1) edge node[above right,pos=.5]{escort} (KS1) edge node[ right]{don't}(KN1);
\path(FS1) edge node[above left]{change} (FSC1) edge node[ left]{don't}(FSN1);
\path(KS1) edge node[above right]{change} (KSC1) edge node[ right]{don't}(KSN1);
\path(K1) edge[thick,dotted,-](F1);

 \node[state]        (N)   [below right of=N0,xshift=5cm]  {Nature};
 \node[state]        (F)   [below left  of=N]  {R\&G};
 \node[state]        (K)   [below right of=N] {R\&G};
 \node[state]        (FS)  [below left  of=F]  {H};
 \node[accepting]    (FN)  [above left  of=F] {\phantom{1}};
 \node[state]        (KS)  [below right of=K]  {H};
 \node[accepting]    (KN)  [above right of=K] {\phantom{1}};
 \node[accepting]    (FSC) [below left  of=FS]  {\phantom{1}};
 \node[accepting]    (FSN) [above left  of=FS] {\phantom{1}};
 \node[accepting]    (KSC) [below right of=KS]  {\phantom{1}};
 \node[accepting]    (KSN) [above right of=KS] {\phantom{1}};

 \path(N) edge node[ above left, pos=.20]{feed Hamlet}  node[ below right, pos=.30]{0} (F) 
edge node[above right, pos=.20]{kill Hamlet} node[below left, pos=.30]{1} (K);
 \path(F) edge node[above left,pos=.5]{escort} (FS) edge node[ left]{don't}(FN);
 \path(K) edge node[above right,pos=.5]{escort} (KS) edge node[ right]{don't}(KN);
 \path(FS) edge node[above left]{change} (FSC) edge node[ left]{don't}(FSN);
 \path(KS) edge node[above right]{change} (KSC) edge node[ right]{don't}(KSN);
 \path(K) edge[thick,dotted,-](F);
\end{tikzpicture}%
\hfill
\vfill
\end{landscape}
\end{document}

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

答え2

\resizeboxパッケージから使用できますgraphicx。横向きモードでは幅と高さが入れ替わるため、\textheightサイズ変更の新しい幅として元の幅を使用する必要があります。

\documentclass[12pt]{exam}
\usepackage{tikz}
\usepackage{geometry}
\usepackage{graphicx} 
\usetikzlibrary{external,automata,trees,positioning,shadows,arrows,shapes.geometric}

\newlength\Textht
\setlength\Textht{\textheight}

\begin{document}

\begin{landscape}
\null\vfill

\noindent\resizebox{\Textht}{!}{%
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=2.8cm,
                semithick]
\tikzstyle{every state}=[fill,draw=none,green,text=white,circular drop shadow]
\tikzstyle{accepting}=[circle split, draw,text=black,inner sep=0.08cm]
\tikzstyle{initial}=[red,text=white]
\node[state,initial]  (N0) {Nature};
\node[state]   (N1) [below left of=N0,xshift=-5cm]  {Nature};
\node[state]   (F1) [below left of=N1]  {R\&G};
\node[state]   (K1) [below right of=N1] {R\&G};
\node[state]   (FS1) [below left of=F1]  {H};
\node[accepting]    (FN1) [above left of=F1] {\phantom{1}};
\node[state]        (KS1) [below right of=K1]  {H};
\node[accepting]    (KN1) [above right of=K1] {\phantom{1}};
\node[accepting]    (FSC1) [below left of=FS1]  {\phantom{1}};
\node[accepting]    (FSN1) [above left of=FS1] {\phantom{1}};
\node[accepting]    (KSC1) [below right of=KS1]  {\phantom{1}};
\node[accepting]    (KSN1) [above right of=KS1] {\phantom{1}};

\path(N1) edge node[ above left, pos=.20]{feed Hamlet}  node[ below right, pos=.30]{0} (F1) 
edge node[above right, pos=.20]{kill Hamlet} node[below left, pos=.30]{1} (K1);
\path(F1) edge node[above left,pos=.5]{escort} (FS1) edge node[ left]{don't}(FN1);
\path(K1) edge node[above right,pos=.5]{escort} (KS1) edge node[ right]{don't}(KN1);
\path(FS1) edge node[above left]{change} (FSC1) edge node[ left]{don't}(FSN1);
\path(KS1) edge node[above right]{change} (KSC1) edge node[ right]{don't}(KSN1);
\path(K1) edge[thick,dotted,-](F1);

 \node[state]   (N)[below right of=N0,xshift=5cm]  {Nature};
 \node[state]    (F) [below left of=N]  {R\&G};
 \node[state]    (K) [below right of=N] {R\&G};
 \node[state]    (FS) [below left of=F]  {H};
 \node[accepting]    (FN) [above left of=F] {\phantom{1}};
 \node[state]    (KS) [below right of=K]  {H};
 \node[accepting]     (KN) [above right of=K] {\phantom{1}};
  \node[accepting]    (FSC) [below left of=FS]  {\phantom{1}};
 \node[accepting]    (FSN) [above left of=FS] {\phantom{1}};
 \node[accepting]    (KSC) [below right of=KS]  {\phantom{1}};
 \node[accepting]     (KSN) [above right of=KS] {\phantom{1}};

 \path(N) edge node[ above left, pos=.20]{feed Hamlet}  node[ below right, pos=.30]{0} (F) 
edge node[above right, pos=.20]{kill Hamlet} node[below left, pos=.30]{1} (K);
 \path(F) edge node[above left,pos=.5]{escort} (FS) edge node[ left]{don't}(FN);
 \path(K) edge node[above right,pos=.5]{escort} (KS) edge node[ right]{don't}(KN);
 \path(FS) edge node[above left]{change} (FSC) edge node[ left]{don't}(FSN);
 \path(KS) edge node[above right]{change} (KSC) edge node[ right]{don't}(KSN);
 \path(K) edge[thick,dotted,-](F);

\end{tikzpicture}%
}
\vfill
\end{landscape}

\end{document}

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

\vfillまた、 を垂直方向に中央揃えするコマンドもいくつか使用しましたtikzpictureが、これらはオプションです。 をロードしているのでtikz、 を明示的にロードする必要がないことにも注意してくださいpgf

同じコマンドを使用して、縦向きモードでツリーのサイズを変更できます。

\documentclass[12pt]{exam}
\usepackage{tikz}
\usepackage{geometry}
\usepackage{graphicx} 
\usepackage{pdflscape}
\usetikzlibrary{external,automata,trees,positioning,shadows,arrows,shapes.geometric}

\begin{document}

\noindent\resizebox{\textwidth}{!}{%
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=2.8cm,
                semithick]
\tikzstyle{every state}=[fill,draw=none,green,text=white,circular drop shadow]
\tikzstyle{accepting}=[circle split, draw,text=black,inner sep=0.08cm]
\tikzstyle{initial}=[red,text=white]
\node[state,initial]  (N0) {Nature};
\node[state]   (N1) [below left of=N0,xshift=-5cm]  {Nature};
\node[state]   (F1) [below left of=N1]  {R\&G};
\node[state]   (K1) [below right of=N1] {R\&G};
\node[state]   (FS1) [below left of=F1]  {H};
\node[accepting]    (FN1) [above left of=F1] {\phantom{1}};
\node[state]        (KS1) [below right of=K1]  {H};
\node[accepting]    (KN1) [above right of=K1] {\phantom{1}};
\node[accepting]    (FSC1) [below left of=FS1]  {\phantom{1}};
\node[accepting]    (FSN1) [above left of=FS1] {\phantom{1}};
\node[accepting]    (KSC1) [below right of=KS1]  {\phantom{1}};
\node[accepting]    (KSN1) [above right of=KS1] {\phantom{1}};

\path(N1) edge node[ above left, pos=.20]{feed Hamlet}  node[ below right, pos=.30]{0} (F1) 
edge node[above right, pos=.20]{kill Hamlet} node[below left, pos=.30]{1} (K1);
\path(F1) edge node[above left,pos=.5]{escort} (FS1) edge node[ left]{don't}(FN1);
\path(K1) edge node[above right,pos=.5]{escort} (KS1) edge node[ right]{don't}(KN1);
\path(FS1) edge node[above left]{change} (FSC1) edge node[ left]{don't}(FSN1);
\path(KS1) edge node[above right]{change} (KSC1) edge node[ right]{don't}(KSN1);
\path(K1) edge[thick,dotted,-](F1);

 \node[state]   (N)[below right of=N0,xshift=5cm]  {Nature};
 \node[state]    (F) [below left of=N]  {R\&G};
 \node[state]    (K) [below right of=N] {R\&G};
 \node[state]    (FS) [below left of=F]  {H};
 \node[accepting]    (FN) [above left of=F] {\phantom{1}};
 \node[state]    (KS) [below right of=K]  {H};
 \node[accepting]     (KN) [above right of=K] {\phantom{1}};
  \node[accepting]    (FSC) [below left of=FS]  {\phantom{1}};
 \node[accepting]    (FSN) [above left of=FS] {\phantom{1}};
 \node[accepting]    (KSC) [below right of=KS]  {\phantom{1}};
 \node[accepting]     (KSN) [above right of=KS] {\phantom{1}};

 \path(N) edge node[ above left, pos=.20]{feed Hamlet}  node[ below right, pos=.30]{0} (F) 
edge node[above right, pos=.20]{kill Hamlet} node[below left, pos=.30]{1} (K);
 \path(F) edge node[above left,pos=.5]{escort} (FS) edge node[ left]{don't}(FN);
 \path(K) edge node[above right,pos=.5]{escort} (KS) edge node[ right]{don't}(KN);
 \path(FS) edge node[above left]{change} (FSC) edge node[ left]{don't}(FSN);
 \path(KS) edge node[above right]{change} (KSC) edge node[ right]{don't}(KSN);
 \path(K) edge[thick,dotted,-](F);

\end{tikzpicture}%
}

\end{document}

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

関連情報