几何比率设置键与 expl3 语法之间的冲突

几何比率设置键与 expl3 语法之间的冲突

我发现,当我尝试在类或包中间(即用 声明)使用geometry包的比例设置键(例如)时,我需要通过在选项前发出命令来暂时关闭语法,然后通过发出返回语法;否则,我会收到错误消息。 hmarginratio = 1:1expl3\ProvidesExpl(Class|Package)expl3\ExplSyntaxOffgeometryexpl3\ExplSyntaxOnFile ended while scanning use of \Gm@sep@ratio

:我猜这可能与键值中的标记有关,但我不确定。此外,我不知道这是否只是我的安装中的一个错误,还是一个可以被其他人复制的功能。

这是myclass.cls

\RequirePackage{l3keys2e,xparse}
\ProvidesExplClass
    {myclass}
    {2013/08/25}
    {1.0}
    {myclass}

\LoadClass{memoir}

\RequirePackage{calc}

% Fine if the ExplSyntax lines below are uncommented. Error otherwise.
%\ExplSyntaxOff

\RequirePackage[
    left = \paperwidth * 3/16,
    hmarginratio = 1:1]{geometry}

%\ExplSyntaxOn

这是test.tex

\documentclass{myclass}

\begin{document}
Some text.
\end{document}

答案1

正如您所怀疑的,问题在于expl3语法构成了:一个“字母”。在我们为所有这些事物提供适当的界面之前,您必须发挥一点想象力。例如,您可以简单地

\ExplSyntaxOff
\RequirePackage[
    left = \paperwidth * 3/16,
    hmarginratio = 1:1]{geometry}
\ExplSyntaxOn

您可以使用\lowercase“技巧”,但我不认为值得推荐。

答案2

冒号:在函数名中被使用。似乎可以通过另一个宏来expl3解决这个问题。:

尝试下面的操作(因为你expl首先要了解语法)

\ExplSyntaxOff
\def\myhratio{1:1}
\ExplSyntaxOn
\RequirePackage[left=\dimexpr\paperwidth*3/16\relax,
                hmarginratio=\myhratio]{geometry}     

顺便说一句,您可能正在使用calc包,但如果没有,那么您需要包装\paperwidth*3/16内部\dimexpr....\relax

相关内容