有谁能帮我解决这个 tikz 流程图中缺少文本和线条的问题吗?我试过自己解决,但现在陷入困境。
原始图像
我的代码
\documentclass{standalone}
\usepackage[utf8]{inputenc}
\usepackage[brazil]{babel}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{width=10cm,compat=1.9}
% \usepackage[margin=0.5in]{geometry}
\usetikzlibrary{positioning} % permite-
\begin{document}
\begin{tikzpicture}
[node distance = 1cm, auto,font=\footnotesize,
every node/.style={node distance=2.5cm},
comment/.style={rectangle, inner sep= 5pt, text width=4cm, node distance=0.25cm, font=\scriptsize\sffamily},
bloco01/.style={rectangle, draw, fill=black!10, inner sep=5pt, text width=2cm, text badly centered, minimum height=1.2cm, font=\bfseries\footnotesize\sffamily},
bloco02/.style={rectangle, draw, inner sep=5pt, text width=2cm, text badly centered, minimum height=1cm, font=\bfseries\footnotesize\sffamily},
bloco03/.style={rectangle, draw=white, inner sep=5pt, text width=3cm, align=left, minimum height=1cm, font=\bfseries\footnotesize\sffamily}]
% Draw blocks
\node [bloco01] (conhecimento) {Conhecimento da realidade};
\node [bloco01, right=1cm of conhecimento] (determinacao) {Determinação dos objetivos};
\node [bloco01, right=2cm, below of=determinacao] (conteudos) {Seleção e organização dos conteúdos};
\node [bloco01, below of=conteudos] (procedimentos) {Seleção e organização dos procedimentos de ensino};
\node [bloco01, below of=procedimentos] (recursos) {Seleção dos recursos};
\node [bloco01, below of=recursos] (selecao) {Seleção dos procedimentos de avaliação};
\node [bloco01, left=2cm, below of=selecao, double] (estruturacao) {Estruturação do Plano de ensino};
\node [bloco01, left=2cm of estruturacao] (plano) {Plano de ação};
\node [bloco03, above=2pt of plano] (fase) {FASE DE \\ DESENVOLVIMENTO};
\node [bloco02, left=2cm, above of=plano] (avaliacao) {Avaliação};
\node [bloco02, left=2cm, above of=avaliacao] (feedback) {Feedback};
\node [bloco02, right=2cm, above of=feedback] (replanejamento) {Replanejamento};
% Draw the links between blocks
\path[-latex,thick]
(conhecimento) edge (determinacao)
(conteudos) edge (procedimentos)
(procedimentos) edge (recursos)
(recursos) edge (selecao)
(estruturacao) edge (plano);
\draw[-latex,thick] (determinacao) -| (conteudos);
\draw[-latex,thick] (selecao) |- (estruturacao);
\draw[-latex,thick] (plano) -| (avaliacao);
\draw[-,thick] (avaliacao.west) -| (feedback);
\draw[-latex,thick] (feedback.north) |- (replanejamento.west);
\draw[dashed,thick] (determinacao) edge (estruturacao);
\draw[dashed,thick] (replanejamento.east) edge (avaliacao.east);
\end{tikzpicture}
% Original image:
% http://www.catolicavirtual.br/conteudos/pos_graduacao/ead/uea6/imagens/3_image004.jpg
\end{document}
答案1
简单的技巧是将 设为 的右侧的“虚拟坐标” (replanejamento.east)
,然后将 替换为 ,edge
这样-| ++(10mm,0) |-
就可以得到所需的结果。请10mm
根据需要更改 。
添加沿路径放置的节点。有关详细信息,请查看下面的代码。请根据需要更改虚拟文本。
(我只是删除了代码中一些不需要的包,并重新格式化了你的样式,以便它们更容易阅读。请注意,下面的图片是带有注释babel
包的结果,因为我没有安装巴西语言。)
\documentclass[border=2mm]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[brazil]{babel}
\usepackage{tikz}
\usetikzlibrary{positioning} % permite-
\begin{document}
\begin{tikzpicture}[
>=latex,
node distance=1cm,
auto,
font=\footnotesize,
every node/.style={
node distance=2.5cm,
},
comment/.style={
rectangle,
inner sep=5pt,
text width=4cm,
node distance=0.25cm,
font=\scriptsize\sffamily,
},
bloco01/.style={
rectangle,
draw,
fill=black!10,
inner sep=5pt,
text width=2cm,
text badly centered,
minimum height=1.2cm,
font=\bfseries\footnotesize\sffamily,
},
bloco02/.style={
rectangle,
draw,
inner sep=5pt,
text width=2cm,
text badly centered,
minimum height=1cm,
font=\bfseries\footnotesize\sffamily,
},
bloco03/.style={
rectangle,
draw=white,
inner sep=5pt,
text width=3cm,
align=left,
minimum height=1cm,
font=\bfseries\footnotesize\sffamily,
},
]
% Draw blocks
\node [bloco01] (conhecimento) {Conhecimento da realidade};
\node [bloco01, right=1cm of conhecimento] (determinacao) {Determinação dos objetivos};
\node [bloco01, right=2cm, below of=determinacao] (conteudos) {Seleção e organização dos conteúdos};
\node [bloco01, below of=conteudos] (procedimentos) {Seleção e organização dos procedimentos de ensino};
\node [bloco01, below of=procedimentos] (recursos) {Seleção dos recursos};
\node [bloco01, below of=recursos] (selecao) {Seleção dos procedimentos de avaliação};
\node [bloco01, left=2cm, below of=selecao, double] (estruturacao) {Estruturação do Plano de ensino};
\node [bloco01, left=2cm of estruturacao] (plano) {Plano de ação};
% changed alignment. Now the text starts at the left end of the below node
\node [
bloco03,
above=2pt of plano.north west,
anchor=south west,
inner xsep=0pt,
] (fase) {FASE DE \\ DESENVOLVIMENTO};
\node [bloco02, left=2cm, above of=plano] (avaliacao) {Avaliação};
\node [bloco02, left=2cm, above of=avaliacao] (feedback) {Feedback};
\node [bloco02, right=2cm, above of=feedback] (replanejamento) {Replanejamento};
% Draw the links between forces
\path [-latex,thick]
(conhecimento) edge (determinacao)
(conteudos) edge (procedimentos)
(procedimentos) edge (recursos)
(recursos) edge (selecao)
(estruturacao) edge (plano);
\draw [->,thick] (determinacao) -| (conteudos);
\draw [->,thick] (selecao) |- (estruturacao);
\draw [->,thick] (plano) -| (avaliacao);
\draw [-,thick] (avaliacao.west) -| (feedback);
\draw [->,thick] (feedback.north) |- (replanejamento.west);
\draw [dashed,thick] (determinacao) edge
node [align=right,swap] {test 1 \\ test 2}
(estruturacao);
% \draw [dashed,thick] (replanejamento.east) edge (avaliacao.east);
\draw [dashed,thick] (replanejamento.east)
-| ++(10mm,0) |-
node [pos=0.25,align=left] {test 1 \\ test 2}
(avaliacao.east);
\end{tikzpicture}
% Original image:
% http://www.catolicavirtual.br/conteudos/pos_graduacao/ead/uea6/imagens/3_image004.jpg
\end{document}
答案2
尝试绘制更简洁的代码(利用 tikz 库chains
和quotes
):
\documentclass[tikz,
border=2mm]{standalone}
\usepackage[utf8]{inputenc}
%\usepackage[brazil]{babel}
\usetikzlibrary{chains, positioning, quotes}
\makeatletter
\tikzset{suspend join/.code={\def\tikz@after@path{}}}
\makeatother
\begin{document}
\begin{tikzpicture}[
arrow/.style = {thick,-latex},
node distance = 8mm and -1mm,
auto,
font = \footnotesize\bfseries\sffamily,
start chain = going below,
bloco/.style = {rectangle,
draw,
text width=22mm, minimum height=11mm,
inner sep=2mm,
align=flush center,
on chain,
join=by arrow},
]
% Draw blocks
\begin{scope}[every node/.append style={bloco, fill=gray!30}]
\node (conhecimento) {Conhecimento da realidade};
\node (determinacao) [right=1cm of conhecimento]
{Determinação dos objetivos};
%
\node (conteudos) [below right= of determinacao,
suspend join]
{Seleção e organização dos conteúdos};
\node (procedimentos) {Seleção e organização dos procedimentos de ensino};
\node (recursos) {Seleção dos recursos};
\node (selecao) {Seleção dos procedimentos de avaliação};
%
\node (estruturacao) [below left=of selecao,
suspend join]
{Estruturação do Plano de ensino};
\node (plano) [left=2cm of estruturacao]
{Plano de ação};
\end{scope}
\begin{scope}[every node/.append style={%
bloco, fill=white, text width=18mm, suspend join}]
\node [above=0mm of plano, draw=none, align=left]
{FASE DE \\ DESENVOLVIMENTO};
\node (avaliacao) [above left =of plano] {Avaliação};
\node (feedback) [above left =of avaliacao] {Feedback};
\node (replanejamento) [above right=of feedback] {Replaneja\-mento};
\end{scope}
% Draw the links which were not establish by join
\draw [arrow] (determinacao) -| (conteudos);
\draw [arrow] (selecao) |- (estruturacao);
\draw [arrow] (plano) -| (avaliacao);
\draw [arrow,-] (avaliacao.west) -| (feedback);
\draw [arrow] (feedback.north) |- (replanejamento.west);
%
\draw [dashed,thick] (determinacao) edge[align=left,"test 1 \\ test 2"] (estruturacao);
\draw [dashed,thick] (replanejamento.east) -- ++(10mm,0) |-
node [pos=0.25,align=left] {test 1 \\ test 2}
(avaliacao.east);
\end{tikzpicture}
\end{document}
在上面的 MWE 中,节点之间的距离由 控制node distance=8mm and -1mm
。这样,节点之间的所有距离(一个节点除外)都相同。节点根据使用的填充进行分组。对于所有直线连接,都使用包join
中的工具。为此,在文档序言中chains
添加了暂停定义。suspend join