包含 tikz 的 sbox 给出“缺少 \endgroup 插入”

包含 tikz 的 sbox 给出“缺少 \endgroup 插入”

这是一个最小的工作示例。完整的问题实际上包含几个adhorn装饰,但为了简洁起见,这里只包含几个图。tikzpicture本身编译

\documentclass[tikz]{standalone}
\usepackage{adforn}
 
\begin{document}

\newsavebox{\tileone}

    \begin{tikzpicture}[x=1cm,y=1cm]
    \clip (0,0) rectangle (2,2);
    \begin{scope}[dashed,blue]
        \draw plot (\x,\x-1);
        \draw plot (\x,\x+1);
        \draw plot (\x,-\x+1);
        \draw plot (\x,-\x+3);
    \end{scope}
    \end{tikzpicture}

\end{document}

但是当我将其包装在中时\sbox,编译失败并出现“ missing \endgroup insert”错误。

\documentclass[tikz]{standalone}
\usepackage{adforn}
 
\begin{document}

\newsavebox{\tileone}
\sbox{\tileone}{
    \begin{tikzpicture}[x=1cm,y=1cm]
    \clip (0,0) rectangle (2,2);
    \begin{scope}[dashed,blue]
        \draw plot (\x,\x-1);
        \draw plot (\x,\x+1);
        \draw plot (\x,-\x+1);
        \draw plot (\x,-\x+3);
    \end{scope}
    \end{tikzpicture}
}

\usebox{\tileone}

\end{document}

仅添加了三行:

  • \sbox{\tileone}{
  • }
  • \usebox{\tileone}

这里没有missing \endgroup显而易见的东西。有人可以提供解释吗?或者修复/解决方法?

我研究了其他这些问题,但都没有相关的答案:

答案1

错误是

! Improper \prevdepth.

\endgroup如果您滚动过去,您只会看到虚假的缺失错误。

不正确的 prevdepth 错误意味着您在水平 sbox 中使用了垂直模式材料。这是由于\newpage显然standalone附加到tikzpicture。由于您不能在 sbox 中拥有新页面,因此只需在本地禁用该命令即可。

%\documentclass{article}\usepackage{tikz}
\documentclass[tikz]{standalone}

 
\begin{document}

\newsavebox{\tileone}
\sbox{\tileone}{\let\newpage\relax
    \begin{tikzpicture}[x=1cm,y=1cm]
    \clip (0,0) rectangle (2,2);
    \begin{scope}[dashed,blue]
        \draw plot (\x,\x-1);
        \draw plot (\x,\x+1);
        \draw plot (\x,-\x+1);
        \draw plot (\x,-\x+3);
    \end{scope}
    \end{tikzpicture}%
}

\usebox{\tileone}

\end{document}

相关内容