有没有办法加载文档环境中指定的附加包?

有没有办法加载文档环境中指定的附加包?

这看起来很奇怪,但我确实需要这个。是否有内置宏来加载文档环境中指定的附加包?

% main.tex
\documentclass{article}
\begin{document}
\input{subfile}
\end{document}
% subfile.tex
\LoadPackage{pstricks}
\LoadPackage{multido}
\pspicture(1,1)
\psframe(1,1)
\endpspicture

我接受了 mbork 的回答,因为它确实允许我们在之后加载一些包\begin{document}。我已经测试了以下内容,并成功编译了 PDF 输出。

% main.tex
\documentclass{article}
\usepackage{pkgindoc}
\begin{document}
\input{subfile}
\end{document}
% subfile.tex
\usepackage{xcolor}
I can find a tool to convert PDF to EPS in my neither bathroom nor kitchen.

不幸的是,使用 pstricks、geometry、hyperref(以及其他工具)不起作用。:-(

答案1

现在显然没有多少人知道下面的技巧。

创建一个pkgindoc.ins包含以下内容的文件:

\input docstrip
\generate{\file{pkgindoc.sty}{\from{ltclass.dtx}{afterpreamble}}}
\endbatchfile

在某些临时目录/文件夹中。将文件复制ltclass.dtx到同一目录并运行latex pkgindoc.ins。您将获得一个文件pkgindoc.sty;将其复制到需要的任何位置。当您\usepackage{pkgindoc}在中声明的命令(ltclass.dtx\@onlypreamble\usepackage将可用 \begin{document}

注意:这似乎不会有帮助,如果一些包裹包含其他声明为的命令\@onlypreamble,例如由其他一些包声明的命令;但是我仅从实验中知道这一点,我还没有研究过pkgindoc.sty(还没有;))。

答案2

选项subpreamblesstandalone 包裹将收集所包含子文件的前导码,并在下次编译器运行时将它们读入主前导码中。但是,为此,您需要document子文件中的完整前导码和环境。

答案3

软件包只能在文档的前言部分加载。但是,对于 PSTricks 来说,这是一种特殊情况,您可以这样做:

% subfile.tex
\input{pstricks}
\input{multido}
\pspicture(1,1)
\psframe(1,1)
\endpspicture

相关内容