
xymatrix パッケージを使用して以下の図を再現しようとしています。
これまで私がやったことは以下の通りです:
\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}
xymatrix パッケージを使用して、ステップ 2 と 3 の間、およびステップ 6 と 7 の間の矢印を再現し、矢印が回転して他のステップを通過しないようにするにはどうすればよいですか?
また、元の図のように、フレーム内の各列を「グループ化」するにはどうすればよいでしょうか?
答え1
xymatrix ソリューションだけが欲しいとおっしゃっているのは知っていますが、私は tikz の支持者なので、これを作った後で初めてそのことに気付きました。
\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}
答え2
バックティックを使って私が得た最高のものは
\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}
適切なマトリックス エントリからオフセットされたヘッドレス矢印 ( ) を追加してフレームを取得しようとしました\ar@{-}
が、オフセット構文がわかりませんでした。フレームのコーナーをマトリックス エントリに配置するために「追加の列を導入する」トリックを使用できると思いますが、マトリックスに 2 行と 6 列を追加することになり、過剰に思えてきます。