Latex3: xparse لا يعمل في ConTeXt MkIV

تم إنشاؤها على ١٨ يونيو ٢٠٢٠  ·  7تعليقات  ·  مصدر: latex3/latex3

يحدث ما يلي عندما يحاول المرء استخدام xparse في ConTeXt Mark IV (LuaTeX)

\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".
errorfile.pdf

bug generic-mode xparse

ال 7 كومينتر

يتوقع الرمز أن يكون لدى @ حرف رمز قطة. إذن ، يعمل ما يلي ، لكنني لا أعرف مقدار xparse الذي يعمل بالفعل في السياق - فكرة تعريفات الأوامر وبناء الجملة مختلفة تمامًا هنا.

~~~~
\ الإدخال expl3- عام
\ رمز القط \@=11 \input xparse-generic \catcode \ @ = 12
\ نص البداية
NewDocumentCommand \ hello {om}
{
\ IfNoValueTF {# 1}
{فقط 2}
{# 1 و # 2}
}
\ مرحبًا {foo} \ مرحبًا [شريط] {foo}
\ stoptext

~~~~

xparse-generic عنصرًا نائبًا إلى حد كبير للتغييرات القادمة: لم يتم اختباره باستخدام TeX أو ConTeXt العادي ، لذا فأنا لست مندهشًا من فشل ذلك هنا. من المحتمل أن نحصل على المزيد من الاستقرار بمجرد وصولنا إلى الخريف.

يسعدني جدًا أن هذا يعمل على الإطلاق: بالنسبة إلى ConTeXt ، أعتقد أننا قد نضطر إلى إضافة إعداد بيئة \start... / \stop... .

لقد قرأت عن التوافق مع ConTeXt ، لذلك أقوم باختباره في حالة وجود نوع من التعليمات البرمجية المتوافقة ، حيث أن MkIV لها تعاملها الاصطلاحي الخاص مع الوسائط الاختيارية ( \dosingleempty ، \dodoubleempty ، إلخ). أنا سعيد أيضًا.

حتى وقت قريب ، كان xparse حزمة LaTeX2e بحتة. سنقوم بدمج معظمها في expl3-generic في الخريف ، وعند هذه النقطة ستكون جزءًا من عرض النظام الأساسي المحايد ، لكن لا توجد خطط لجعل المصطلح أكثر "حيادية". بالطبع ، لا يزال ConTeXt يستخدم وسيطات من النوع o - و m نوع الوسيطات الرئيسية.

JairoAdelRio منذ بعض الوقت كتبت نوعًا من طبقة التوافق للسماح بـ xparse في كل من Plain و ConTeXt لحزمة scontents (https://github.com/pablgonz/scontents). ربما يمكنك أن تأخذ بعض الأفكار (لست متأكدًا من مدى جودتها ؛-) من النموذج هناك.

في ذلك الوقت ، كان xparse بالكامل في xparse.sty ، الكثير من طبقة التوافق تحدد \ProvidesPackage وهكذا. في الوقت الحاضر ، سيكون الأمر أسهل كثيرًا مع xparse-generic ، ولكن من المحتمل أن يتغير هذا في الإصدارات المستقبلية ، لذلك سأنتظر قليلاً إن أمكن

أعتقد أن نقطة @ u-fischer صحيحة ، بالإضافة إلى أن عملية الدمج القادمة إلى- expl3 يجب أن تعالج المزيد من الأشياء: أنا أغلق.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات