在文本中绘制图表的最简单方法

在文本中绘制图表的最简单方法

如果要写一大段文字,并想在其中添加如下图所示的图表,那么使用 LaTeX 最简单、最容易的方法是什么?我说的“简单”和“容易”是指 - 如果可能的话 - 不使用任何附加软件包,或者 - 再次:如果可能的话 - 至少不使用大型且功能强大(但也会减慢速度)的软件包,如 TikZ 和 PGF(或类似 smartdiagram 等的衍生产品)。

不过,如果能同时使用两条线以及虚线或其他类型的线就更好了,比如:——————

当然,我也对如何使用 Tikz 感兴趣,但如果可以避免所有这些神奇的工具,那么我更喜欢非 tikz 解决方案。或者,如果你告诉我使用 tikz 不会减慢编译过程,那么我很乐意使用 tikz。

图1 图2

答案1

虽然TikZ可能确实如你所说“神奇”,但我认为它很容易理解并满足你的愿望。像你这样的图表不会增加编译时间,所以我认为这TikZ是你最好的选择,如果你想自定义线条样式,这TikZ很容易。所以这是你拥有的第一个图表的代码:

\documentclass{standalone}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}
\node (a) at (0,0) {A};
\node (b) at (2,.7) {B};
\node (c) at (2,-.7) {C};
\node (d) at (4,1.1) {D};
\node (e) at (4,.3) {E};
\node (f) at (4,-.7) {F};
\node (g) at (6,-.3) {G};
\node (h) at (6,-1.1) {H};
\foreach \x\y in {a/b,a/c,b/d,b/e,c/f,f/g,f/h}{
  \draw[line width=1pt] (\x)--(\y);
}
\end{tikzpicture}

\end{document}

命令非常直观,\node将节点放置在您指定的位置,并\draw在两点之间画一条线。所有位置均以笛卡尔坐标表示。我使用循环\foreach在节点(以小写字母命名)之间绘制线条。命令选项放在方括号中,[...]\draw[line width=1pt],表示要绘制的线宽为 1pt。若要使线条变为虚线,请使用\draw[dashed],或 以获得更多变化,\draw[densely dashed]\draw[loosely dashed]。此外,若要仅使部分线条变为虚线(而不是通过循环使所有线条都变为相同),只需从行中的花括号列表中\foreach取出(例如),然后使用 创建新线条。这是上述代码的结果:a/b\foreach\draw[dashed] (a)--(b);

在此处输入图片描述

第二张图有同样的想法,所以我就不重复了。唯一改变的是,你有一个箭头,其中一条线是弯曲的。所有这些都可以在 中轻松处理TikZ。所以这里是带有曲线的部分的代码:

\documentclass{standalone}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}
\node (gamma) at (0,0) {$\gamma$};
\node (z) at (-1.5,-4) {Z};
\node (w) at (-.5,-2) {W};
\node (j) at (.5,-2) {J};
\draw[->,>=latex] (gamma)--(w);
\draw[->,>=latex] (gamma)--(j);
\draw[->,>=latex] (gamma) to [bend right=10] (z);
\end{tikzpicture}

\end{document}

请注意,现在\draw命令有选项->,表示在线的末端绘制箭头,和>=latex,表示箭头的样式为latex(箭头的样式有很多种)。命令的选项以逗号 分隔,。此外,弯曲的线在指令中间有一个选项(还请注意(a)--(b)可以替换为(a) to (b),但添加弯曲等选项时需要后者), 可以将其更改为bend left,角度(在本例中为10)也可以更改以使其更加弯曲。结果如下:

在此处输入图片描述

我认为所有这些都很简单,不是吗?编译这些图片不会减慢整个过程,现在您有一个强大的工具可供使用。

相关内容