Overleaf 中的独立问题

Overleaf 中的独立问题

我正在尝试使用独立包为每个练习编写一个家庭作业模板,因为这些练习可能很长,而且我希望它们能够快速编译(因为我和同事使用 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,您只需在主文件中声明一次前言。然后,所有“子文件”都会从主文件中提取前言。而且,您仍然可以根据需要编译单个文件或主完整文件。

看一下这一页以比较subfilesstandalone包,以及如何实现的进一步说明。检查有关如何定义包路径的注释(该页面给出了示例\graphicspath),因为您有子文件夹并想从中导入。

相关内容