usepackage{tikz-cd} 与 usetikzlibrary{cd} 对比

usepackage{tikz-cd} 与 usetikzlibrary{cd} 对比

使用包 tikz-cd 和使用 cd tikz 库与直接加载 tikz 之间有什么区别?

我无法在任何一个包的文档中找到答案。

答案1

没有(实际)差异。代码(不包括版权注释行)tikz-cd.sty是:

\ProvidesPackage{tikz-cd}[2014/10/30 v0.9e Commutative diagrams with tikz]
\RequirePackage{tikz}[2013/12/13] % pgf version 3.0.0 required
\usetikzlibrary{cd}

\endinput

所以它只加载 TiZ 然后这样做\usetikzlibrary{cd}

答案2

这只是一个迂腐的评论:存在差异。

这是一个确实恶劣的例子。

此代码有效1

\documentclass{article}
\usepackage{tikz-cd}
\pgfmathdeclarefunction*{axis_height}{0}{\edef\pgfmathresult{1}}
\begin{document}
Hello
\end{document}

此代码不起作用:

\documentclass{article}
\usepackage{tikz}
\pgfmathdeclarefunction*{axis_height}{0}{\edef\pgfmathresult{1}}
\usetikzlibrary{cd}
\begin{document}
Hello
\end{document}

但是,这又有效

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{cd}
\pgfmathdeclarefunction*{axis_height}{0}{\edef\pgfmathresult{1}}
\begin{document}
Hello
\end{document}

确实,这不是一个非常有用的代码,我刚刚设计了第二个代码来崩溃。但是,它确实表明,在其他库中加载tikz然后加载cd库(原则上可以做一些类似的事情\pgfmathdeclarefunction*{axis_height}{0}{\edef\pgfmathresult{1}})或稍后加载之间存在技术差异tikz-cd,这会强制以一定的顺序加载库。

当然,cd即使该库不是 pgf 的一部分,它也是一个标准库,其他库的作者很可能会查看代码cd以确保不会对其造成损害,尽管其他人可能想要用名称定义函数,这并非不可想象axis_height。然而,如果一个人非常严格,那么他必须说,至少在原则上,加载包tikz-cd还是cd加载库是会有所不同的。正如我所说,这只是一个扩展的评论,但它确实表明,人们不能绝对确定没有区别。

1 “有效”表示编译代码片段时不会出现错误。你肯定应该不是axis_height如果您确实想使用该cd库,请覆盖该函数。

答案3

此外,在 ConTeXt 中 tikz-cd 模块不可用,您需要执行以下操作:

\usemodule[tikz]
\usetikzlibrary[cd]

相关内容