
Eu escrevi uma grande árvore de jogo (usandoautômatospacote) e precisa exibi-lo no modo paisagem. já tentei usar os doisposição de textoegeometria(comando newgeometry) mas sem nenhum resultado positivo. Preciso mudar a imagem para a esquerda para que a parte direita da árvore do jogo seja exibida corretamente. Alguma sugestão? Além disso, se houver uma maneira de encaixá-lo no modo retrato, seria ainda melhor. Aqui está o 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}
Responder1
Uma solução sem \resizebox
porque com esta macro o texto é redimensionado. Tento usar um ambiente paisagístico como você. O problema é saber se você precisa utilizar essa árvore em um documento grande ou sozinha.
1) parindent=0pt
para espaço horizontal extra.
2) \eject\null
tente colocar a caixa em uma nova página no modo vertical; agora é possível usar \vfill
em volta da caixa.
3) \hspace*{-4cm}
não sei exatamente qual é o layout utilizado pela turma de exame, então procuro à mão uma boa dimensão para centralizar a caixa sem a margem esquerda.
4) Reduzi um pouco node distance
aqui 2,5cm em vez de 2,8cm talvez seja possível reduzir novamente mas neste caso você precisa mudar o lugar de alguns 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}
Responder2
Você pode usar \resizebox
do graphicx
pacote; como no modo paisagem a largura e a altura são trocadas, você precisa usar o original \textheight
como a nova largura para o redimensionamento:
\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}
Também usei alguns \vfill
comandos para centralizar verticalmente o arquivo tikzpicture
, mas são opcionais. Observe também que, como você está carregando tikz
, não há necessidade de carregar explicitamente pgf
.
O mesmo comando pode ser usado para redimensionar sua árvore no modo retrato:
\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}