进行重大修改以澄清我的意图(原始问题位于底部)
我有三个文件:
(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),一切都会按预期进行:
如果我编译侧文档(2),则会引发以下错误
算术溢出。[...] 我无法评估这个表达式,因为结果超出了范围。
指向\end{document}
。然而,PDF 也正确生成了:
有办法克服这个问题吗?
如果侧边文档 (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}
。
是否有我错过的选项/方法可以解决这个问题?
这更多的是一种不便而不是问题,因为......
- ... 仅当我编译“独立”文档时才会出现此问题。如果嵌入主文档,则一切正常。
- ...据我所知,无论是否存在错误,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}