可以有多个文档环境吗?

可以有多个文档环境吗?

在常见的 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游戏就此结束。

相关内容