
這是我到目前為止所做的:
\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@{-}
,但我無法弄清楚偏移語法。我想您可以使用“引入額外列”技巧將框架角放在矩陣條目處,但現在您要向矩陣添加兩行和六列,這開始顯得太多。