编辑

编辑

如以下 MCE 所示,standalone使用其subpreambles选项加载的包在使用 时会给出预期结果\input,但当\file_input:n输入文件具有非空前导时,使用 时则不会。在这种情况下,不会插入 的内容subfile2.tex,并发出以下警告:

独立软件包警告:文件“test.tex”的子前言已更改。内容将被忽略。请在输入行 7 重新运行 LaTeX!

但副序言显然没有改变。你知道发生了什么吗?

编辑

新的 MCE 是为了澄清我的问题。

\begin{filecontents}[overwrite]{subfile1.tex}
\documentclass{article}
\begin{document}
Content's~of~\texttt{subfile1.tex}.\par
\end{document}
\end{filecontents}

\begin{filecontents}[overwrite]{subfile2.tex}
\documentclass{article}
\newcommand{\foo}{}
\begin{document}
Content's~of~\texttt{subfile2.tex}.\par
\end{document}
\end{filecontents}

\begin{filecontents*}[overwrite]{myclass.cls}
\ProvidesExplClass
  {myclass}
  {2023-01-03}
  {0.1}
  {
    My Nice Class
  }
\NeedsTeXFormat{LaTeX2e}
\LoadClass { article }
%
\RequirePackage[subpreambles]{standalone}
%
\NewDocumentCommand{\myinput}{ m }
{
  \input{#1}
}
\NewDocumentCommand{\myfileinput}{ m }
{
  \file_input:n{#1}
}
\end{filecontents*}

\documentclass{myclass}
\begin{document}
\myinput{subfile1}
\myinput{subfile2}
\myfileinput{subfile1}
\myfileinput{subfile2}
\end{document}

原始 MCE:

\begin{filecontents}[overwrite]{subfile1.tex}
\documentclass{article}
\begin{document}
Content's~of~\texttt{subfile1.tex}.\par
\end{document}
\end{filecontents}

\begin{filecontents}[overwrite]{subfile2.tex}
\documentclass{article}
\newcommand{\foo}{}
\begin{document}
Content's~of~\texttt{subfile2.tex}.\par
\end{document}
\end{filecontents}

\documentclass{article}
\usepackage[subpreambles]{standalone}
\begin{document}
\input{subfile1}
\input{subfile2}
\ExplSyntaxOn
\file_input:n{subfile1}
\file_input:n{subfile2}
\ExplSyntaxOff
\end{document}

相关内容