
Escribí un árbol de juego grande (usandoautómataspaquete) y necesita mostrarlo en modo horizontal. Ya intenté usar ambos.mensajes de textoygeometría(comando newgeometry) pero sin ningún resultado positivo. Necesito mover la imagen hacia la izquierda para que la parte derecha del árbol del juego se muestre correctamente. ¿Alguna sugerencia? Además, si hubiera una manera de colocarlo en modo vertical, sería aún mejor. Aquí está el código:
\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}
Respuesta1
Una solución sin \resizebox
porque con esta macro se cambia el tamaño del texto. Intento utilizar un entorno paisajístico como tú. El problema es saber si necesitas utilizar este árbol en un documento grande o solo.
1) parindent=0pt
al espacio horizontal adicional.
2) \eject\null
intente colocar el cuadro en una página nueva en modo vertical; Ahora es posible usarlo \vfill
alrededor de la caja.
3) \hspace*{-4cm}
No sé exactamente cuál es el diseño utilizado por el examen de clase, así que busco a mano una buena dimensión para centrar el cuadro sin el margen izquierdo.
4) Reduje un poco node distance
aquí 2,5 cm en lugar de 2,8 cm. Quizás sea posible reducirlo nuevamente, pero en este caso es necesario cambiar el lugar de algunos textos.
\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}
Respuesta2
Puedes usar \resizebox
del graphicx
paquete; Dado que en el modo horizontal el ancho y el alto se intercambian, debes usar el original \textheight
como el nuevo ancho para cambiar el tamaño:
\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}
También utilicé algunos \vfill
comandos para centrar verticalmente tikzpicture
, pero son opcionales. Tenga en cuenta también que, dado que está cargando tikz
, no es necesario cargarlo explícitamente pgf
.
Se puede utilizar el mismo comando para cambiar el tamaño de su árbol en modo vertical:
\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}