我发现,当我尝试在类或包中间(即用 声明)使用geometry
包的比例设置键(例如)时,我需要通过在选项前发出命令来暂时关闭语法,然后通过发出返回语法;否则,我会收到错误消息。 hmarginratio = 1:1
expl3
\ProvidesExpl(Class|Package)
expl3
\ExplSyntaxOff
geometry
expl3
\ExplSyntaxOn
File 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