PassOptionsToPackage 顺序/优先级(解决包类)

PassOptionsToPackage 顺序/优先级(解决包类)

我使用 teach 包(该包不在 ctan 上,但可以下载这里)。

我的文件是第一份:

\documentclass[a4paper]{report}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage[T1]{fontenc}

\usepackage{geometry}
\geometry{hmargin=1cm,vmargin=1cm}
\usepackage[]{teach} 

\begin{document}

dsgsgsd

\end{document}

但它以以下错误结束:

LaTeX Error: Option clash for package geometry.

这是由使用带有参数的几何包的教学包触发的:

% THIS CODE IS IN TEACH PACKAGE SOURCE
\RequirePackage[%
            hmargin=2.5cm,
            vmargin=2cm
            %,showframe,showcrop
            ]{geometry}

我使用以下命令找到了解决方案\PassOptionsToPackage

\PassOptionsToPackage{hmargin=1cm,vmargin=1cm}{geometry}
\documentclass[a4paper]{report}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage[T1]{fontenc}

\usepackage[]{teach} 

\begin{document}

dsgsgsd

\end{document}

我不再有错误,但是边距是错误的(它使用教学定义的边距而不是我的)。

我认为这是因为 PassOptionsToPackage 的优先级低于教学包调用的优先级。

我该如何解决我的问题?

答案1

移动

\geometry{hmargin=1cm,vmargin=1cm}

\usepackage[]{teach} 

并删除

\usepackage{geometry}

有效,所以我的问题已解决。

但是如果有人知道关于此问题的一般解决方案(即\PassOptionsToPackage优先考虑),请回答,这可能对我或其他人将来有用。

完整代码:

\documentclass[a4paper]{report}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage[T1]{fontenc}

\usepackage[]{teach} 
\geometry{hmargin=1cm,vmargin=1cm}


\begin{document}

dsgsgsd

\end{document}

相关内容