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 到底是什么?两者有什么区别,它们有不同的名称是什么原因?
- 如果我没有安装同名的包,我的 LaTeX 编译器如何解释“\usepackage{tikz}”?
- 什么是 TikZ 库以及像“\usetikzlibrary{arrows}”这样的行究竟是做什么的?它们与包基本相同吗?
- 如果我使用的是 MiKTeX,我的机器上存储的 TikZ 库在哪里 (Windows 10)?我已经能够在“C:\Users\{USERNAME}\AppData\Local\Programs\MiKTeX 2.9\”的子文件夹中找到大多数其他软件包及其文档。
- 关于如何 link 将 TikZ/PGF 手册 pdf 转换为 MiKTeX 以便我可以轻松访问 VSCode 中的文档的说明会很好,但这并不是本文的重点post.
澄清一下,我不是在寻找有关如何使用 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 tikz
或 texdoc pgf
打开用户指南(同一个文件,只是多种方式打开它)
我使用 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 到底是什么?两者有什么区别,它们有不同的名称是什么原因?
- 如果我没有安装同名的包,我的 LaTeX 编译器如何解释“\usepackage{tikz}”?
- 什么是 TikZ 库以及像“\usetikzlibrary{arrows}”这样的行究竟是做什么的?它们与包基本相同吗?
- 如果我使用的是 MiKTeX,我的机器上存储的 TikZ 库在哪里 (Windows 10)?我已经能够在“C:\Users\{USERNAME}\AppData\Local\Programs\MiKTeX 2.9\”的子文件夹中找到大多数其他软件包及其文档。
- 关于如何 link 将 TikZ/PGF 手册 pdf 转换为 MiKTeX 以便我可以轻松访问 VSCode 中的文档的说明会很好,但这并不是本文的重点post.
澄清一下,我不是在寻找有关如何使用 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 tikz
或 texdoc pgf
打开用户指南(同一个文件,只是多种方式打开它)