TikZ 和 PGF LaTeX 包的混淆 - 它们是什么,MiKTeX 如何存储它们,以及 LaTeX 编译器如何解释它们

Confusion on TikZ and PGF LaTeX packages - what they are, how they are stored by MiKTeX, and how they are interpreted by LaTeX compilers

我使用 VSCode 使用 LaTeX-Workshop VSCode 扩展、MiKTeX 和 pdflatex 编写 LaTeX。 LaTeX-Workshop 扩展具有能够悬停包和查看其文档的便利功能,但我注意到此功能不适用于 tikz 包。 Screenshot with more detail.

我开始研究为什么会这样,因为 ctan 页面 linked 有 this long and very detailed manual for TikZ and PGF. It turns out that MiKTeX does not even list a package called TikZ,这令人困惑,因为我的 .tex 文件在包含 \usepackage 行时似乎可以正常编译{tikz},而尝试使用任何其他 'nonexistent' 包将导致编译错误。

我浏览了六个网页试图更详细地了解 PGF 和 TikZ 是什么,但它非常令人困惑。 ctan PGF page 说“PGF 是一个用于创建图形的宏包......它带有一个名为 TikZ 的用户友好语法层”,但我对这意味着什么有点困惑。为什么包和语法会有不同的名称?

我的问题可以概括为:

澄清一下,我不是在寻找有关如何使用 PGF/TikZ 的教程(还有许多其他好的资源),也不是在寻找像“PGF/TikZ 是一个用于创建图形的 LaTeX 包”,没有提供更多细节,我已经知道了很多。

Pre-remark:

在 latex 世界中,“包”一词有两种略有不同的用法,一种是您从 latex 文档中了解到的传统 \usepackage{....},另一种是 ctan/miktex/texlive 包。大多数时候,一个 ctan/miktex/texlive 包只包含同名的 latex 包,但有时它可以有不同的名称 and/or 一次包含多个 latex 包。


  • What exactly is PGF and TikZ? What's the difference between the two and is there a reason why they have different names?

pgf 提供低级命令,如笔画等,tikz 在此基础上构建并使用低级 pgf 命令绘制更复杂的东西,如几何形状或 rubber ducks (shameless plug)

低级和高级代码之间的这种划分非常有用,因为它允许用户根据需要加载。以 beamer class 为例。它使用各种低级 pgf 命令在幻灯片上绘制装饰,因此它加载(部分)pgf 包。它不需要 tikz 包中所有花哨的东西,所以它不加载它,这样可以节省大量时间,因为加载所有 tikz 是相对缓慢的。

  • How does my LaTeX compiler interpret "\usepackage{tikz}" if I don't have a package by that name installed?

您已经安装了它,它包含在 ctan/miktex/texlive pgf 包中。 \usepackage{tikz} 基本上转化为 \input{tikz.sty}。 return 中的这个文件将加载 latex pgf 包(以及许多其他东西)

  • What are TikZ libraries and what do lines like "\usetikzlibrary{arrows}" do exactly? Are they basically the same as packages?

是的,它们基本上是 tikz 的软件包,您可以使用它们进一步扩展 tikz 的功能。

  • If I'm using MiKTeX, where are the TikZ Libraries stored on my machine (Windows 10)? I have been able to find most other packages and their documentation within subfolders of "C:\Users\{USERNAME}\AppData\Local\Programs\MiKTeX 2.9\".

您可以自己在 .log 文件中查找。在其中搜索 tikz.sty,此行和以下行将告诉您所有文件的位置。

  • Instructions on how to link the TikZ/PGF manual pdf to MiKTeX so I can easily access the documentation in VSCode would be nice, but that is not really the focus of this post.

如果您在 vscode (ctrl+shift+`) 中打开一个新终端,您可以通过键入 texdoc tikztexdoc pgf 打开用户指南(同一个文件,只是多种方式打开它)