无法将 resizebox 与 tikzpicture 一起使用

无法将 resizebox 与 tikzpicture 一起使用
\documentclass[border=2mm,tikz]{standalone}
\usepackage{pgfplots}
\usepackage{tikz}

\begin{document}

    \begin{figure}[!htp]
%       \resizebox{0.4\textwidth}{!}{
        \begin{tikzpicture}
            \draw (0,0) circle (2cm);
            \node at (0,0) {Me};
        \end{tikzpicture}
%       }
     
    \label{fig:figure1}
    \end{figure}

\end{document}

该代码有效,但如果我删除注释(以便使其resizebox变为活动状态),我会收到很多错误:

Improper \prevdepth. }
Missing \endgroup inserted. }
Missing \endgroup inserted. }
Missing } inserted. }
\begin{figure} on input line 8 ended by \end{tikzpicture}. }
Too many }'s. }
Package graphics Error: Division by 0. }
Extra \endgroup. }
\begin{document} ended by \end{figure}. \end{figure}
Extra \endgroup. \end{figure}
running in backwards compatibility mode (unsuitable tick labels; missing features). Consider writing \pgfplotsset{compat=1.16} into your preamble.
Overfull \hbox (15.0pt too wide) in paragraph
Label(s) may have changed. Rerun to get cross-references right.

即使使用\pgfplotsset{compat=1.16}也会出现错误。

这可能是什么问题?

答案1

根据standalone软件包文档 (v1.3b – 2022/10/10),

  • 课程选项tikz

    此选项声明内容包含一个或多个tikzpicture 环境。这将设置multi=tikzpicture,varwidth=false并加载tikz包。

  • 课程选项multi

    一组包含单个页面的环境必须作为选项值给出或使用 声明\standaloneenv{<envname>, ...}。 不应在此类环境之外使用任何排版材料。

因此,在 OP 的例子中,是外部\resizebox打破了条件。

删除类选项tikz并(手动)加载tikz即可。此外,figure这里不需要浮动环境。

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

\begin{document}

\resizebox{0.4\textwidth}{!}{%
  \begin{tikzpicture}
    \draw (0,0) circle (2cm);
    \node at (0,0) {Me};
  \end{tikzpicture}%
}

\end{document}

注意添加的两个字符%,用于删除从换行符转换而来的空格字符。

相关内容