在常见的 TeX 类型引擎中,任何可以想象的有效输入是否可以有多个\begin{document}
和\end{document}
标签?例如,在另一个包含文件中,在 if then 等中?
或者 TeX 只允许该标记字符串在每个输入中存在一次?我的猜测是,多个输入都可以,因为它可能与任何其他环境一样。
答案1
这取决于你所说的“可以”是什么意思。
以下文档有五种document
环境,运行时没有错误,生成
但任何处理“LaTeX 文档”的工具认为这超出范围并非完全不合理。然而,任何此类限制都需要由该工具指定,它不是 Latex 本身的限制。
\documentclass{article}
\begin{document}
{
\renewenvironment{document}{\begin{itemize}}{\end{itemize}}
\begin{document}
{\renewenvironment{document}{\item}{}
\begin{document}
aaa
\end{document}
\begin{document}
aaa
\end{document}
}
\end{document}
\renewenvironment{document}{\bfseries}{}
\begin{document}
aaa
\end{document}
}
\end{document}
答案2
LaTeX 具有
1610 \def\document{\endgroup
1611 \ifx\@unusedoptionlist\@empty\else
1612 \@latex@warning@no@line{Unused global option(s):^^J%
1613 \@spaces[\@unusedoptionlist]}%
...
1659 \ignorespaces}
1660 \@onlypreamble\document
这意味着在环境\begin{document}
中发现document
将会引发错误。
当然,之后什么也找不到,\end{document}
因为
4105 \def\enddocument{%
4106 \let\AtEndDocument\@firstofone
4107 \@enddocumenthook
4108 \@checkend{document}%
...
4135 \endgroup
4136 \deadcycles\z@\@@end}
\@@end
游戏就此结束。