如以下 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}