当有 \documentclass[tikz, border= mm]{standalone} 时,\usepackage{tikz} 是否可以被移除而不改变结果?

当有 \documentclass[tikz, border= mm]{standalone} 时,\usepackage{tikz} 是否可以被移除而不改变结果?

\usepackage{tikz}我发现,当之前有 时,如果删除,那么即使删除 ,\documentclass[tikz, border=2mm]{standalone}得到的图像也是一样的。所以当我们不考虑灰色区域时,具有与 相同的功能。但是当我搜索代码时,我经常看到人们在有 时不删除。当有 时, 不是可以在不改变结果的情况下删除吗?\usepackage{tikz}\documentclass[tikz, border=2mm]{standalon}\documentclass{article} \usepackage{tikz}\usepackage{tikz}\documentclass[tikz, border=... mm]{standalone}\usepackage{tikz}\documentclass[tikz, border=... mm]{standalone}

在此处输入图片描述

\documentclass[tikz,border=2mm]{standalone} 
\usepackage{tikz} 

\begin{document}  
\begin{tikzpicture}[axisline/.style={very thick,-stealth}]  

\draw[axisline] (0,0,0)--(1,0,0) node[right]{$x$}; 
\draw[axisline] (0,0,0)--(0,1,0) node[above]{$y$};
\draw[axisline] (0,0,0)--(0,0,1) node[below left]{$z$};

\end{tikzpicture}   
\end{document}

答案1

是的,如果您为documentclass\usepackage{tikz}提供了选项,则可以删除。tikzstandalone

来自standalone.cls,第 237 至 242 行(适用于 2015/07/15 v1.2)

\sa@clsoption{tikz}[true]{%
    \sa@boolean{tikz}{#1}%
    \ifsa@tikz
        \setkeys{standalone.cls}{multi=tikzpicture,varwidth=false}%
    \fi
}

它基本上是说,如果你给出tikz一个 documentclass 选项,sa@tikz布尔值将设置为true,并且键值对multi=tikzpicture,varwidth=false将被赋予 documentclass。

来自同一文件的第 549 至 551 行:

\ifsa@tikz
    \RequirePackage{tikz}
\fi

因此,如果您tikzstandalonedocumentclass 提供一个选项,它将自动加载tikz包,因为\RequirePackage这是在类文件中加载包的方式。


结论:使用

\documentclass[tikz]{standalone}

与使用效果相同

\documentclass{standalone}
\usepackage{tikz}

适用于单一tikzpicture环境。

笔记:正如@wrtlprnft 在评论中提到的那样,\documentclass[tikz]{standalone}还设置了multi=tikzpicturevarwidth=false。这些额外的选项使得每个tikzpicture环境在生成的输出文件中都有自己的页面(请参阅standalone了解有关 的更多详细信息varwidth)。

所以如果你想确保输出完全相同,

\documentclass[tikz]{standalone}

相当于

\documentclass[multi=tikzpicture,varwidth=false]{standalone}
\usepackage{tikz}

相关内容