
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\null
Versuchen Sie, die Box im vertikalen Modus auf einer neuen Seite zu platzieren. Jetzt ist es möglich, sie \vfill
um 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 distance
hier 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}
Antwort2
Du kannst \resizebox
aus dem graphicx
Paket verwenden; da im Querformat Breite und Höhe vertauscht werden, musst du \textheight
bei 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}
Ich habe auch einige \vfill
Befehle verwendet, um vertikal zu zentrieren , aber diese sind optional. Beachten Sie auch, dass es nicht notwendig ist, explizit zu laden, tikzpicture
da Sie laden .tikz
pgf
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}