我习惯在 .sty 文件中定义 CTAN 包的标准集合,并在所有文档中使用\usepackage{MyUseCTANPackages}
文档前言中的语句调用该文件。有时,我不想使 MyUseCTANPackages.sty 无效,而是想覆盖在那里定义的包,在本例中geometry
是定义不同边距的包,但这会导致! LaTeX Error: Option clash for package geometry
。有没有办法覆盖 MyUseCTANPackages.sty 中包定义中的内容geometry
,以及对其他包也同样如此?
MyUseCTANPackages.sty 包含大量其他包,
...
\usepackage[a4paper, vmargin=2.0cm, outer=1.5cm, inner=1.5cm,marginparwidth=2.0cm, marginparsep=0.5cm]{geometry}
...
\documentclass{article}
% RN. 20 May 2023
% BRIEF DESCRIPTION:
% overriding package definitions in package geometry.
%=======================
\usepackage{MyUseCTANPackages}
% attempting to override the definition contained in MyUseCTANPackages.sty:
%\usepackage[a4paper, vmargin=2.0cm, outer=0.5cm, inner=1.5cm]{geometry}
\begin{document}
sdf asgadf gadf g DGRFe rg ERG edg RSG drg G edgRGedtg G gE TG etrgERGetr gERGer g ERGe rgERG erg ERG erg RG g G rg ERG rg RG reg RG
\end{document}
答案1
您可以通过这种方式在 MyUseCTANPackages 中加载几何图形
\ifdefined\MyGeometryOptions
\expandafter\usepackage\MyGeometryOptions{geometry}
\else
\usepackage[a4paper, vmargin=2.0cm, outer=1.5cm, inner=1.5cm,marginparwidth=2.0cm, marginparsep=0.5cm]{geometry}
\fi
然后做
\def\MyGeometryOptions{[a4paper, vmargin=2.0cm, outer=0.5cm, inner=1.5cm]}
\usepackage{MyUseCTANPackages}
如果需要的话。
这里的理由是,相对于其他包的加载顺序很重要(可能影响不大,但用hyperref
例如代替geometry
它通常会很重要)。