有没有办法可以限制 \usepackage 的范围?

有没有办法可以限制 \usepackage 的范围?

当我尝试使用breqn问题答案建议的包时

如何将长方程拆分成几行

它破坏了一大堆不相关的方程式(未使用其功能的方程式),包括\mf我之前自己定义的控制序列的定义。

有没有办法可以限制声明的范围\usepackage,以使其(积极和消极)影响仅限于文档的特定部分?

我尝试将其放入环境中,但出现以下错误:

! LaTeX Error: Can be used only in preamble.

答案1

对于一些小程序包来说,这也许是可能的,但一般答案是否定的。特别是,breqn及其配套程序包flexisym对数学公式的正常设置进行了非常广泛的更改,这些更改在某些情况下是全局的;因此,即使可以将它们加载到组中,更改也会在外层执行。许多其他程序包也是如此。

不容忽视的是,许多在包中使用的命令之后被禁用\begin{document},这使得在文档开始后加载包的任务变得相当困难。

答案2

\usepackage如果您不使用,而是使用\input,则可以限制包的范围。这将需要重新定义一些命令并修补其他命令,但从技术上讲应该是可行的。例如

\documentclass{article}
\begin{document}
  \begingroup
    \makeatletter
      \renewcommand{\usepackage}[1]{\input{#1}}
      \renewcommand{\NeedsTeXFormat}[1]{}
      \renewcommand{\ProvidesPackage}[1]{}
      \usepackage{fixltx2e.sty}
    \makeatother
  \endgroup
\end{document}

相关内容