Sophanatprime / cus

CusTeX
8 stars 4 forks source link

`cus` 宏包无法在文档载入前加载 #10

Closed xkwxdyy closed 1 month ago

xkwxdyy commented 1 month ago

MWE:

\RequirePackage{cus}
\documentclass{book}

\begin{document}

test

\end{document}

使用 latex 方式编译后报错

! Missing \endcsname inserted.
<to be read again> 
                   \@classoptionslist 
l.1003 \ProcessOptionsKV[c]{Gm}
                               %
? 

场景和需求

想要自己建立一个库来进行一些设置的打包,上面 MWE 是在 .tex 文件里的,但一般会在 .cls 里处理(即在 \Loadclass\Requirepackage{cus},但应该问题是相同的? 经常会有一个设置涉及到文类的选项传递,比如 book 类的 openany, 如果 cus 宏包放在文档类调用的后面,那么在库里进行一些文档类选项传递也没有用了。

问题

  1. 这个不能在文档类调用前加载 cus 宏包是不可避免的吗?
  2. 如果问题 1 是不可避免的,那如果我想在库里传递选项给文类的话有办法吗?
xkwxdyy commented 1 month ago

比如学位论文模板里,想把一些设置打包在库里,关于打印和电子版的设置中会有 openany 的开关。

Sophanatprime commented 1 month ago

现在的版本(v0.0.4g)可以在 \LoadClass\documentclass 之前加载了。但是有的模块和库不行。 不过模块能够自动移动到 \LoadClass 之后加载。库可以用 \CUSLibraryDelayedUntil*{} 自动移动到 \LoadClass 之后加载。 主要是一些宏包(比如 geometry)不支持在 \LoadClass 之前使用。 具体哪些宏包不支持就需要自己测试了。如果只是某些内容不能在 \LoadClass 之前使用,可以用 \cus_after_class:n,或者 class/after 钩子。