يحدث ما يلي عندما يحاول المرء استخدام 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
يتوقع الرمز أن يكون لدى @ حرف رمز قطة. إذن ، يعمل ما يلي ، لكنني لا أعرف مقدار 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
يجب أن تعالج المزيد من الأشياء: أنا أغلق.