TikZ-Bildpositionierung im Querformat

TikZ-Bildpositionierung im Querformat

Ich habe einen großen Spielbaum geschrieben (mitAutomatenPaket) und muss es im Querformat anzeigen. Ich habe bereits versucht, beide zu verwendentextposUndGeometrie(Befehl newgeometry) Pakete, aber ohne positive Ergebnisse. Ich muss das Bild nach links verschieben, damit der rechte Teil des Spielbaums richtig angezeigt wird. Irgendwelche Vorschläge? Und wenn es eine Möglichkeit gibt, es im Hochformat anzuzeigen, wäre das noch besser. Hier ist der Code:

\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}

Antwort1

Eine Lösung ohne \resizebox, denn mit diesem Makro wird die Textgröße geändert. Ich versuche, wie Sie eine Landschaftsumgebung zu verwenden. Das Problem besteht darin, zu wissen, ob Sie diesen Baum in einem großen Dokument oder allein verwenden müssen.

1) parindent=0pt für zusätzlichen horizontalen Raum.

2) \eject\nullVersuchen Sie, die Box im vertikalen Modus auf einer neuen Seite zu platzieren. Jetzt ist es möglich, sie \vfillum die Box herum zu verwenden.

3) \hspace*{-4cm}Ich weiß nicht genau, welches Layout für die Klassenprüfung verwendet wird, daher suche ich manuell nach einer guten Größe, um das Feld ohne linken Rand zu zentrieren.

4) Ich habe node distancehier ein wenig verkleinert, 2,5 cm statt 2,8 cm. Vielleicht ist eine erneute Verkleinerung möglich, aber in diesem Fall müssen Sie die Stelle einiger Texte ändern.

\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}

Bildbeschreibung hier eingeben

Antwort2

Du kannst \resizeboxaus dem graphicxPaket verwenden; da im Querformat Breite und Höhe vertauscht werden, musst du \textheightbei der Größenänderung das Original als neue Breite verwenden:

\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}

Bildbeschreibung hier eingeben

Ich habe auch einige \vfillBefehle verwendet, um vertikal zu zentrieren , aber diese sind optional. Beachten Sie auch, dass es nicht notwendig ist, explizit zu laden, tikzpictureda Sie laden .tikzpgf

Mit demselben Befehl können Sie die Größe Ihres Baums im Hochformat ändern:

\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}

Bildbeschreibung hier eingeben

verwandte Informationen