在 Tikz 中计算坐标的更好方法?

在 Tikz 中计算坐标的更好方法?

我非常喜欢 pgf 和 tikz,它们可以制作出漂亮的图形。但我不喜欢花大量时间绘制复杂的图片,因为我必须提供所有点、线等的坐标。有没有包装器可以让这更简单?例如在某些情况下,例如当你必须在箭头上方或周围放置文本时,有办法给出相对位置而不是精确坐标。有没有类似的方法可以用相对坐标绘制其他形状?有没有外部程序可以将带有线条和形状的图形转换为坐标?

答案1


用于生成本答案中的图表的完整 LaTeX 文档可作为要旨在 GitHub 上。


解决“将文本放在箭头上方”问题的一种方法是使用内联节点和相对定位:

\begin{tikzpicture}
  \draw[->] (0,0) -- (5,0) node[above]{Hello, world!};
\end{tikzpicture}

在 TikZ 中使用相对定位的示例


您还可以使用命名节点和坐标与相对定位相结合。A\coordinate就像\node没有文本区域的 (它们可能仍然有形状)。命名节点和坐标允许您重复使用有关其位置的信息,而无需重新输入位置。使用相对定位构造(由 TikZpositioning库提供),例如left = 1ex of A,允许您相对于其他节点/坐标定位节点/坐标,而无需在脑海中计算数学和几何。

\begin{tikzpicture}[
  Name/.style = {font={\bfseries}}
]

  \coordinate (A) at (0,0);
  %            ^---- A name for the node/coordinate
  \coordinate (B) at (5,1);
  \coordinate (C) at (3,4);

  \draw (A) -- (B) -- (C)  -- cycle;

  \node (A-label) [left=1ex of A, Name] {A};
  \node (B-label) [right=1ex of B, Name] {B};
  \node (C-label) [above=1ex of C, Name] {C};

  \node [above left = 2 em of C] {This is a relatively positioned node!}
    edge[out=270,in=180,thick,->] (C-label);

\end{tikzpicture}

命名坐标和相对定位的演示。

请参阅教程 2“Hagen 的 Petri 网”TikZ 手册对命名节点和相对定位进行出色的分步演练。

我更喜欢使用相对定位来构造图形,而不是使用 GUI 程序,因为我可以通过调整几个“基础坐标”的位置来改变图形的外观。在这种情况下,我可以通过移动坐标 A、B 和 C 的位置来绘制一个完全不同的三角形,对于大多数调整,图形的其余部分都会恰到好处。学习设置这样的图形需要练习,但一旦你掌握了它,与 GUI 程序相比,它可以在微调图像时节省大量时间。


最后,关于你关于 GUI 程序的问题,我建议Inkscape- 它是一款非常强大的开源矢量图形编辑器,与 Adob​​e Illustrator 类似。甚至还有插件可用从 Inkscape 图形生成 TikZ 代码。

答案2

jpgfdraw 是一款用于手绘并导出为 pgf 的工具。或许可以参阅这个 jpgfdraw 示例,导出到 pgf/tex 并与 一起使用\input

替代文本

也许您可以将徒手绘图与其他 TikZ 绘图结合起来。

答案3

我认为你需要更具体一点,说明你想做什么。在 TikZ 中,有很多方法可以创建相对坐标。以下是一些示例:

\documentclass{article}
\usepackage{tikz}

\begin{document}

 \begin{tikzpicture}
   \fill (1,1) circle (2pt) node[above] (O) {Start};
   \draw (O) -- (2,2);   % absolute
   \draw (O) --++ (3,2); % relative
   \node[left=2cm] at (O) {Left}; % relative
 \end{tikzpicture}

\end{document}

查看http://www.texample.net/tikz/有很多关于如何使用 TikZ 绘图的优秀示例。

答案4

Inkscape 有一个插件,inkscape2tikz,它允许您从 Inkscape 导出 TikZ 代码。此网站的其他问题中已经多次提到过它。

相关内容