
Estou tentando reproduzir o diagrama abaixo usando o pacote xymatrix:
Isto é o que eu fiz até agora:
\documentclass{article}
\usepackage[all]{xy}
\begin{document}
\xymatrix@C=1cm{
% First row
\txt{FASE I\\Planejamento da Revisão} &
\txt{FASE II\\Realização da Revisão} &
\txt{FASE III\\Documentação da Revisão} &
\\
% Second row
*++[F-,]\txt{1. Especificar questões da\\ pesquisa} \ar[d] &
*++[F-,]\txt{3. Identificar e selecionar\\ pesquisas} \ar[d] &
*++[F-,]\txt{7. Analisar resultados} \ar[d]
\\
% Third row
*++[F-,]\txt{2. Desenvolver protocolo da\\ revisão questões da pesquisa} \ar[ur] &
*++[F-,]\txt{4. Avaliar a qualidade dos\\ estudos} \ar[d] &
*++[F-,]\txt{8. Elaborar relatório}
\\
% Fourth row
& *++[F-,]\txt{5. Extrair dados} \ar[d] &
\\
% Fifth row
& *++[F-,]\txt{6. Sintetizar dados} \ar[uuur] &
\\
}
\end{document}
Como posso reproduzir usando o pacote xymatrix a seta entre o passo 2 e 3 e entre o passo 6 e 7, para que ela gire e não passe pelos outros passos?
Além disso, como posso “agrupar” cada coluna em um quadro, como está no diagrama original?
Responder1
Eu sei que você disse que só quer soluções xymatrix, mas sou um partidário do tikz e só percebi que você disse isso depois que fiz isso.
\documentclass{article}
\usepackage{geometry}
\usepackage{tikz}
\usetikzlibrary{matrix}
\usetikzlibrary{calc}
\usetikzlibrary{fit}
\begin{document}
\begin{tikzpicture}
\matrix (m) [
matrix of nodes,
row sep=0.4cm,
column sep=1cm,
% Set the size of the text boxes to be 4cm x 15pt
every node/.style={text width=4cm, text depth=15pt},
every node/.append code={
% Check whether we're on the top row
\ifnum\pgfmatrixcurrentrow=1\relax
% Top row: align center and don't draw rectangles
\pgfkeysalso{align=center}
\else
% other rows: align left and "draw" the rectangles
\pgfkeysalso{align=left,draw}
\fi
}
]{
% First row
% Need braces in order to use \\ as an explicit linebreak
{FASE I \\ Planejamento da Revisão} &
{FASE II\\ Realização da Revisão} &
{FASE III\\ Documentação da Revisão} \\
% Second row
1. Especificar questões da pesquisa &
3. Identificar e selecionar pesquisas &
7. Analisar resultados\\
% Third row
2. Desenvolver protocolo da revisãoa&
4. Avaliar a qualidade dos estudos&
8. Elaborar relatório\\
% Fourth row
& {5. Extrair dados} &
\\
% Fifth row
% I need to force tikz to create empty nodes for fitting later
% But we don't want it to make empty rectangles, hence |[draw=none]|
|[draw=none]|& {6. Sintetizar dados} & |[draw=none]|
\\};
\draw[->] (m-2-1) -- (m-3-1);
% Make the first zigzag path
\draw[->] (m-3-1.south) -- ++(0,-0.5)
-| ($(m-2-2.west) - (0.5,0)$)
-- (m-2-2.west);
\draw[->] (m-2-2) -- (m-3-2);
\draw[->] (m-3-2) -- (m-4-2);
\draw[->] (m-4-2) -- (m-5-2);
% Make the second zigzag path
\draw[->] (m-5-2.east) -- ++(0.5,0)
|- (m-2-3.west);
\draw[->] (m-2-3) -- (m-3-3);
% Draw the three "fit" rectangles
\node[rectangle,draw,fit=(m-1-1)(m-5-1)]{};
\node[rectangle,draw,fit=(m-1-2)(m-5-2)]{};
\node[rectangle,draw,fit=(m-1-3)(m-5-3)]{};
\end{tikzpicture}
\end{document}
Responder2
O melhor que consegui usando crases é
\documentclass{article}
\usepackage[all]{xy}
\begin{document}
\xymatrix{
% First row
\txt{FASE I\\Planejamento da Revisão}
\ar[d]
& &
\txt{FASE II\\Realização da Revisão} & &
\txt{FASE III\\Documentação da Revisão} & &
\\
% Second row
*++[F-,]\txt{1. Especificar questões da\\ pesquisa} \ar[d] & &
*++[F-,]\txt{3. Identificar e selecionar\\ pesquisas} \ar[d] & &
*++[F-,]\txt{7. Analisar resultados} \ar[d]
\\
% Third row
*++[F-,]\txt{2. Desenvolver protocolo da\\ revisão questões da pesquisa}
\ar`d[dr]`[ur]`[urr][urr] % \ar[ur]
& &
*++[F-,]\txt{4. Avaliar a qualidade dos\\ estudos} \ar[d] & &
*++[F-,]\txt{8. Elaborar relatório}
\\
% Fourth row
& & *++[F-,]\txt{5. Extrair dados} \ar[d] & &
\\
% Fifth row
& & *++[F-,]\txt{6. Sintetizar dados}
\ar`r[ruuu]`[rruuu][rruuu] % \ar[uuur]
& &
}
\end{document}
Tentei obter os quadros adicionando setas sem cabeça ( \ar@{-}
) deslocadas das entradas de matriz apropriadas, mas não consegui descobrir a sintaxe do deslocamento. Suponho que você poderia usar o truque "introduzir colunas extras" para colocar os cantos do quadro nas entradas da matriz, mas agora você está adicionando duas linhas e seis colunas à matriz, o que começa a parecer excessivo.