# Is it possible to force a package to be called last in the entirety of the LaTeX, when called in the class file?

I have designed a class that needs the package. This package is unique in the way that it needs to be called last so it doesn't get overwritten. I usually define my packages in the class file using the "\RequirePackage". Is there a way to force a package to be called last where it is called in the .cls file with the possibility of other packages being called using the \usepackage in the .tex file?

• You can use \AtBeginDocument{\RequirePackage{xepersian}}. – Phelype Oleinik Apr 10 '19 at 11:44
• @PhelypeOleinik I see. Thanks. – Al_Fh Apr 10 '19 at 11:45
• @campa \AfterEndPreamble is too late to load a package. You'll get a LaTeX Error: Can be used only in preamble.. The \AtBeginDocument is the latest a package can be loaded because right after that the preamble ends (i.e. preamble-only commands become error messages). – Phelype Oleinik Apr 10 '19 at 11:51
• @PhelypeOleinik assuming that none of the packages you load later use the same trick to delay some package loading ... – Ulrike Fischer Apr 10 '19 at 11:55
• @UlrikeFischer Ah, yes, there's that. If I recall correctly, there's an infamous Brazilian class file which does something like that and loading hyperref on top of it is a nightmare :-) – Phelype Oleinik Apr 10 '19 at 11:58

You can delay the package loading using \AtBeginDocument:

\AtBeginDocument{\RequirePackage{xepersian}}


this will put the package loading after the .aux file is read but before the “proper end” of the preamble, where all the preamble-only commands are redefined to throw an error; from this point on any \usepackage (or \RequirePackage) will not work.

If the package, for some reason, needs to be loaded before the \begin{document} even starts, then you can load the etoolbox package and use:

\BeforeBeginEnvironment{document}{\RequirePackage{xepersian}}


this will execute the \RequirePackage before executing anything from the \begin{document}. The effect is the same as if you had put the \RequirePackage line right before \begin{document} in your .tex file.

• What do you mean by the "proper end" of the preamble? Can you clarify? – Al_Fh Apr 10 '19 at 12:12
• @Al_Fh I just invented that name :P I clarified the answer. – Phelype Oleinik Apr 10 '19 at 12:17
• Of course, you can always load xpersian in the preamble (before hyperref). It will not be loaded twice. – John Kormylo Apr 10 '19 at 16:49