Latex3: xparse 在 ConTeXt MkIV 中不起作用

创建于 2020-06-18  ·  7评论  ·  资料来源: latex3/latex3

当尝试在 ConTeXt Mark IV (LuaTeX) 中使用 xparse 时会发生以下情况

\input expl3-generic
\input xparse-generic
\starttext 
\NewDocumentCommand\hello{om}
{
    \IfNoValueTF{#1}
    {Only #2}
    {#1 and #2}
}
\hello{foo} \hello[bar]{foo}
\stoptext 

而不是“Only foo bar and foo”,它出现“@ traceoff@traceon Only foo @ traceoff@traceon bar and foo”。
错误文件.pdf

bug generic-mode xparse

所有7条评论

代码期望 @ 具有 catcode 字母。 所以下面的工作,但我不知道有多少 xparse 在上下文中实际工作 - 命令定义和语法的想法在这里完全不同。

~~~~
\input expl3-generic
\catcode \@=11 \input xparse-generic \catcode \@=12
\开始文本
NewDocumentCommand\hello{om}
{
\IfNoValueTF{#1}
{仅#2}
{#1 和 #2}
}
\hello{foo} \hello[bar]{foo}
\停止文本

~~~~

xparse-generic是即将到来的变化的占位符:它没有用普通的 TeX 或 ConTeXt 进行过测试,所以我并不惊讶它在这里失败。 一旦我们到了秋天,我们可能会更加稳定。

我很高兴这一切都有效:对于 ConTeXt,我想我们可能需要添加\start... / \stop...环境设置。

我已经阅读了与 ConTeXt 的兼容性,所以我正在测试它以防有某种交叉兼容的代码,因为 MkIV 有它自己的可选参数的惯用处理( \dosingleempty\dodoubleempty , 等等)。 我也很高兴。

直到最近, xparse纯粹是一个 LaTeX2e 包。 我们将在秋季将其大部分合并到expl3-generic中,届时它将成为平台中立产品的一部分,但没有计划使 idom 更加“中立”。 当然,ConTeXt 在 main 中仍然使用o - 和m - 类型的参数。

@JairoAdelRio前段时间我编写了某种兼容层,允许xparse在普通和 ConTeXt 中用于scontents包(https://github.com/pablgonz/scontents)。 也许您可以在那里采取一些想法(不确定它们有多好;-)。

当时xparse完全在xparse.sty ,所以大部分兼容层都在定义\ProvidesPackage等等。 现在使用xparse-generic会容易得多,但这可能会在未来的版本中改变,所以如果可能的话我会等一下

我认为@u-fischer 的观点是正确的,加上即将到来的合并到- expl3应该解决更多问题:我要结束了。

此页面是否有帮助?
0 / 5 - 0 等级