standalone 与 scrlayer-scrpage 一起使用时编译错误

standalone 与 scrlayer-scrpage 一起使用时编译错误

进行重大修改以澄清我的意图(原始问题位于底部)

我有三个文件:

(1)自定义类:

%myclass.cls
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{myclass}

% myclass is based on scrreprt
\LoadClass{scrreprt}

% load some packages of which only 
% scrlayer-scrpage is important for this MWE
\RequirePackage{scrlayer-scrpage}

% and the others just serve as examples
\RequirePackage{tikz}
\RequirePackage{xcolor}

% define some commands / settings used throughout 
% a document written in this class
\definecolor{mycolour}{RGB}{255, 0, 0}
\renewcommand{\emph}[1]{\textcolor{mycolour}{\textbf{#1}}}

\endinput

(2)附文件:

%sidedoc.tex
\documentclass[class=myclass]{standalone}

\begin{document}
    \begin{tikzpicture}
        \node[draw, fill=mycolour] {dummy};
    \end{tikzpicture}
\end{document}

(3)主要文件:

%maindoc.tex
\documentclass{myclass}

\usepackage{standalone}

\begin{document}
    This is a \emph{useless} emphasis.

    \includestandalone{sidedoc}
\end{document}

我将侧文档 (2) 嵌入到主文档 (3) 中,以获取两者的 PDF。我将myclass(1) 作为选项加载到侧文档 (2) 中,以便访问定义的命令和设置。在我的示例中,这意味着可以访问mycolour。不幸的是,这也会加载scrlayer-scrpage,这是编译错误的根源。

如果我编译主文档(3),一切都会按预期进行:

maindoc

如果我编译侧文档(2),则会引发以下错误

算术溢出。[...] 我无法评估这个表达式,因为结果超出了范围。

指向\end{document}。然而,PDF 也正确生成了:

sidedoc

有办法克服这个问题吗?


如果侧边文档 (2) 仅包含图片tikz,TeXnician 在评论中建议使用该tikz-external库。这样可以绕过standalone软件包,从而避免编译错误。


原始问题

我编写了一个自定义类myclass,它基于scrreprt。在其他包中myclass加载scrlayer-scrpage。我想用包将 TikZ 图形嵌入到我的主文档中standalone。在独立文档中,我将其myclass作为类的一个选项加载standalone。我这样做是为了访问中定义的所有设置和命令myclass

具有相同行为的“独立”文档的 MWE:

% \documentclass[class=myclass]{standalone} -> actual code
\documentclass[class=scrreprt]{standalone}
% within the actual code the next line is included in myclass.cls
\usepackage{scrlayer-scrpage} 
\usepackage{tikz}
\begin{document}
    \begin{tikzpicture}
        \node[draw] {dummy};
    \end{tikzpicture}
\end{document}

编译pdflatex失败

算术溢出。[...] 我无法评估这个表达式,因为结果超出了范围。

并指向\end{document}

是否有我错过的选项/方法可以解决这个问题?


这更多的是一种不便而不是问题,因为......

  1. ... 仅当我编译“独立”文档时才会出现此问题。如果嵌入主文档,则一切正常。
  2. ...据我所知,无论是否存在错误,PDF 都是正确生成的。

答案1

关闭 KOMA 页脚。

\documentclass[class=scrreprt]{standalone}
% within the actual code the next line is included in myclass.cls
\usepackage{scrlayer-scrpage}

\makeatletter
\let\@oddfoot\relax
\makeatother

\usepackage{tikz}
\begin{document}
    \begin{tikzpicture}
        \node[draw] {dummy};
    \end{tikzpicture}
\end{document}

demo

相关内容