Sophanatprime / cus

CusTeX
8 stars 4 forks source link

关于 `\CUSDependency` 和 `\CUSLibraryDelayedUntil` 的问题 #25

Closed xkwxdyy closed 1 month ago

xkwxdyy commented 1 month ago

其实这个问题一直都有,果真遇到了问题,场景是我问您的这个 https://github.com/xkwxdyy/whuthesis/commit/190619ff606c2e3875b68e6881e776004ec9c445#commitcomment-140694869

关于\CUSDependency

为了方便说明,下面假设我在 master 库里设置了 \CUSDependency{library={cover}}

  1. cover 库 和 master 库是什么关系?就是这个依赖的原理是什么呢?手册里就写了依赖库。我一开始的理解是 cover 库会在 master 之前加载。但是上面问您的这个问题又好像不是这样的,因为如果是的话不管 cover 有没有 delay 加载,都能保证 master 在 cover 后面加载,这样始终不会出问题。不过这样看来,delay 的优先级更高一些
  2. 其实 dependency 的 package 我也不太明白,因为我曾经 dependency 了 ctex 发现报错了,我一开始是想着我里面的设置里有 \ziju 命令,所以要保证这个库一定能运行的话就在 dependency 里加一个 ctex,报错之后只能去掉了。
  3. 我不太清楚要不要写这个 dependency,比如我有一个 master 库,和 math.master 库,后者是前者的基础上进行一些设置,应该要把 前者写进后者的 dependency 里吧?
  4. dependency 里的 library 的顺序有影响吗?

关于 \CUSLibraryDelayedUntil

  1. 手册里提到这个只能在宏包或者文档类载入后加载库,那么能否在某个库后面加载库呢? 就比如我上面的这个问题里面,cover 其实一种模块类型的库,里面进行了一些 cs 和键值的 define,然后我在 master 里进行 set,从而达到一种模块搭建的效果。所以 master 理论上来说需要在 cover 后面加载,也就是需要不管 cover delay 不 delay,delay 在谁后面,都保证 master 能在 cover 后面加载的话,这样就不会出现我问的那个问题了应该。
  2. 我有点还是不太清楚什么时候该用这个 delay
xkwxdyy commented 1 month ago

比如 master 里面 dependency 加载了 cover,而 master.math 的 dependency 加载了 master,那是不是不需要在加载 cover 了呢

Sophanatprime commented 1 month ago
  1. \CUSDependency{library={cover}} 就是通知 cus 此刻需要加载 cover。目前库的依赖关系很简单,就是通知 cus 要加载这个库,而不管实际有没有加载。\CUSDependency{library={cover}} 就是通知 cus 此刻需要加载 cover。这是有问题的。应该设置为如果没有成功加载就自动 delay。
  2. 可能是在 \LoadClass 之前加载了这个库,ctex 好像不能在 \LoadClass 使用(没测试)。
  3. 如果加载这个库时,执行或展开了依赖库的命令,则需要在使用之前加载,对于 package,也是一样的。
  4. 同上,加载库时用到了它的功能就要加载它。
  5. 同 1。
  6. 同 3、4。

1 的问题这两天就会修复。

Sophanatprime commented 1 month ago

不过循环依赖是不允许的,只能把代码放在钩子中来避免。

xkwxdyy commented 1 month ago
  1. \CUSDependency{library={cover}} 就是通知 cus 此刻需要加载 cover。目前库的依赖关系很简单,就是通知 cus 要加载这个库,而不管实际有没有加载。\CUSDependency{library={cover}} 就是通知 cus 此刻需要加载 cover。这是有问题的。应该设置为如果没有成功加载就自动 delay。

通知?(远超我能力范畴了)那什么情况下会加载失败呢?

xkwxdyy commented 1 month ago

我上面忘记好像没有明确提,能否加一个命令来确保库在某个库之后载入呢?类似于 \CUSLibraryDelayedUntil 一样,需求就是上面提的那样,即使 cover 需要 until 到 tikz 后面,也可以保证 master 在 cover 后面载入

Sophanatprime commented 1 month ago

通知?

就是告诉 cus 现在需要加载某库。

能否加一个命令来确保库在某个库之后载入呢?

现在的版本 https://github.com/Sophanatprime/cus/commit/769539921a5ba0dfae48384275b75d9aa5898f27 确保依赖的库总是在要依赖它的库之前加载,不论有没有 delay。不过还是有点问题,先不要更新。

xkwxdyy commented 1 month ago

现在的版本 7695399 确保依赖的库总是在要依赖它的库之前加载,不论有没有 delay。不过还是有点问题,先不要更新。

好的!期待完善这个新功能

Sophanatprime commented 1 month ago

https://github.com/Sophanatprime/cus/commit/3bb230a79a4f0de7603a2a9cf3e84b54584463cc 应该修复了问题 1,whu 昨天的问题 https://github.com/xkwxdyy/whuthesis/commit/190619ff606c2e3875b68e6881e776004ec9c445#commitcomment-140694869 应该也一并修复了,我测试没问题。但要注意 \CUSLibraryDelayedUntil 的参数不能带空格。

xkwxdyy commented 1 month ago

好的,我测试一下

xkwxdyy commented 1 month ago

测试了一下,我的那个whu 的问题解决了,但是 #27 的问题仍然存在