我正在尝试使用独立包为每个练习编写一个家庭作业模板,因为这些练习可能很长,而且我希望它们能够快速编译(因为我和同事使用 overleaf),否则我必须始终编译整个文件,这可能需要一些时间。我编写了一个模板,它可以工作,但有时,当我将其复制到新项目中时,会出现错误。我设法发现,它们发生的原因是[subpreambles=true]
在主 tex 文档中,如果我保留它,错误就会消失,一切都会正常工作,但如果有一天我需要包含一些旧文件,我可能会遇到问题,因此我需要使用子前言。奇怪的是,这个错误只是有时发生。如果我删除该项目并使用完全相同的代码启动一个新项目,它有时可以完全正常工作(如果它工作一次,那么它就会一直工作)。有人知道是什么原因导致了这个问题,或者这可能是 overleaf 的问题吗?
以下是我的所有代码和错误。如果有 main.tex,则代码如下:
\documentclass[a4paper,11pt]{article}
\usepackage[subpreambles=true]{standalone}
\usepackage{import}
\usepackage{fullpage}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{ifthen}
\usepackage{amsmath}
\usepackage{amssymb}
\newcounter{aufgabe}
\renewcommand{\theaufgabe}{\arabic{aufgabe}}
\newcommand{\diff}[2]{\frac{d#1}{d#2}}
\newenvironment{aufgabe}[1]
{\smallskip\refstepcounter{aufgabe}\textbf{Lösung zu Aufgabe~\theaufgabe:}\newline\vspace{#1}}
{\par \hspace*{\fill}$\square$\medskip}
\begin{document}
\allowdisplaybreaks
\setlength{\parindent}{0pt}
\setlength{\baselineskip}{1\baselineskip}
1.12.2020 \hfill Namen einfügen\smallskip
\setcounter{aufgabe}{24}
\begin{center}
{\large\underline{Beliebiges Fach - Übungsblatt 7}}
\end{center}\medskip
\begin{aufgabe}{-0.5cm}
\import{aufgaben/}{aufgabe25}
\end{aufgabe}
\clearpage
\begin{aufgabe}{-0.5cm}
\import{aufgaben/}{aufgabe26}
\end{aufgabe}
\clearpage
\begin{aufgabe}{-0.5cm}
\import{aufgaben/}{aufgabe27}
\end{aufgabe}
\clearpage
\begin{aufgabe}{-0.5cm}
\import{aufgaben/}{aufgabe28}
\end{aufgabe}
\end{document}
然后我还有一个名为的文件夹aufgaben
,其中包含文件aufgabe25.tex
,...,aufgabe28.tex
。它们都有相同的代码,即
\documentclass[class=article, crop=false]{standalone}
\usepackage[subpreambles=true]{standalone}
\usepackage{import}
\usepackage{fullpage}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{latexsym}
\usepackage{amssymb}
\usepackage{enumerate}
\usepackage{ifthen}
\usepackage{amsmath}
\usepackage[hidelinks]{hyperref}
\usepackage{listings}
\usepackage[dvipsnames]{xcolor}
\usepackage[framemethod=tikz]{mdframed}
\usepackage{bbm}
\usepackage[most]{tcolorbox}
\usepackage{needspace}
\usepackage{silence}% Filter out unwanted warnings and error messages
% Remove all warnings issued by LaTeX that starts with
\WarningFilter[todo]{latex}
{Reference } % 'Reference ' and
\WarningFilter[todo]{latex}
{There were undefined references} % 'There were undefined references'
\ActivateWarningFilters[todo]% Activate the 'todo' warnings filter
\begin{document}
\newcommand{\R}{\ensuremath{\mathbb{R}}}
\newcommand{\cunderline}[2]{\textcolor{#1}{\underline{\textcolor{black}{#2}}}}
\newcommand{\bunderbrace}[2]{\ensuremath{\begin{array}[t]{@{}c@{}} \underbrace{#1}\\ #2\end{array}}}
\newcommand{\uproman}[1]{\uppercase\expandafter{\romannumeral#1}}
\newcommand*{\mybox}[1]{\framebox{\strut #1}}
\allowdisplaybreaks
\setlength{\parindent}{0pt}
\setlength{\baselineskip}{1\baselineskip}
Start here...
\end{document}
看起来可能有点乱,但我需要所有包。请注意,我使用 silent 包来引用其他练习中的数学知识,因为我不想在编译练习文件时处理所有警告。
我无法发布日志文件,因为它包含太多字符,而且看起来像是该论坛的垃圾邮件,但所有错误都来自独立包。
答案1
由于所有 aufgabeXX.tex 都有相同的前言,我建议使用包subfiles
而不是standalone
。
使用subfiles
,您只需在主文件中声明一次前言。然后,所有“子文件”都会从主文件中提取前言。而且,您仍然可以根据需要编译单个文件或主完整文件。
看一下这一页以比较subfiles
和standalone
包,以及如何实现的进一步说明。检查有关如何定义包路径的注释(该页面给出了示例\graphicspath
),因为您有子文件夹并想从中导入。