tikz - 惯用填充

tikz - 惯用填充

对于这个 TikZ 图形,这些shorten语句阻止最顶部箭头的尾部与input节点发生碰撞,同样阻止最底部节点的头部与output节点发生碰撞。

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\begin{document}

\begin{tikzpicture}[>=stealth]
  \node [draw] (compiler) {Compiler};
  \node [coordinate, above of=compiler] (input) {};
  \node [coordinate, below of=compiler] (output) {};
  \draw [->, shorten <=0.5em] (input) node {source program} -- (compiler);
  \draw [->, shorten >=0.5em] (compiler) -- (output) node {target program};
\end{tikzpicture}
\end{document}

上述代码的输出是,

输出

是否有一种更合适的方法,不需要手动设置间距,而是可以自动解决此问题?

我一直没能找到任何与此图类似的示例。我发现的大多数图表都有水平方向的箭头,文本悬停在箭头上方。

答案1

我不明白为什么你要在同一个地方添加两个节点。在定义input和节点时,在其中添加文本,然后删除该选项。然后从包含文本的节点形状的边缘绘制箭头。outputcoordinate

还请注意,该of=语法已被弃用,取而代之的是加载positioning库并说=of,请参阅PGF/TikZ 中“right of=”和“right=of”之间的区别

在此处输入图片描述

\documentclass[border=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric,positioning}
\begin{document}

\begin{tikzpicture}[>=stealth]
  \node [draw] (compiler) {Compiler};
  \node [above=of compiler] (input) {source program};
  \node [below=of compiler] (output) {target program};
  \draw [->] (input) -- (compiler);
  \draw [->] (compiler) -- (output);
\end{tikzpicture}
\end{document}

相关内容