Latex3: الرسائل \ msg_term لا تخبر من أين أتوا

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

كما هو موضح في MCE التالية ، لا تخبر الرسائل \msg_term أين أتت (على عكس رسائل \msg_warning ):

\begin{filecontents*}[overwrite]{mypackage.sty}
\ProvidesExplPackage
  {mypackage}
  {2021-05-11}
  {0.1}
  {
    My Nice package
  }
\NeedsTeXFormat{LaTeX2e}
%
\msg_new:nnn {mypackage} {Foo} {FOOBAR}
\msg_warning:nn {mypackage} {Foo}
\msg_term:nn {mypackage} {Foo}
\end{filecontents*}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass{article}
\usepackage{mypackage}
\begin{document}
\end{document}

يكتب:

تحذير حزمة mypackage: FOOBAR

فوبار

بينما ، بالنسبة للأخير ، يمكن للمرء أن يتوقع:

معلومات حزمة mypackage: FOOBAR

decision-needed

التعليق الأكثر فائدة

أنا نوعا ما ثاني ذلك ولكن لا أعتقد أننا نريد حقًا محورًا ثانيًا. يجب دائمًا الإبلاغ عن أخطاء + تحذيرات imho في Terminal + log ، فقط للحصول على معلومات يبدو أن هناك بالفعل معلومات عن فئتين (السجل فقط) ومعلومات المصطلح.

لاحظ أن وجود محاور منفصلة سيساعد كثيرًا على أي حال ، لأننا عادةً لا نريد أن تصبح جميع المعلومات فجأة معلومات مصطلحات (والتي يمكنك على أي حال من خلال تعيين المعلومات إلى معلومات المصطلح) ولكن عادةً ما يكون هناك بعض المعلومات فقط للذهاب دائمًا أيضًا إلى Terminal لذلك سأفكر في إضافة فئة أخرى terminfo وبعضها المقابل \msg_terminfo:nn حتى تتمكن من توضيح نواياك للسلوك الافتراضي في الكود دون الحاجة إلى تعيين ذلك المخفي إلى حد ما في إعداد msg .

ال 12 كومينتر

لست على دراية تامة بـ l3msg ، لكنني أعتقد أن هذا حسب التصميم. إذا كنت تريد رسالة "معلومات" ، فيمكن الحصول عليها باستخدام \msg_info:nn (ولكن بعد ذلك تنتقل إلى السجل).

\msg_info:nn (ولكن بعد ذلك ينتقل إلى السجل).

هذه هي النقطة: AFAICT ، من الشائع أن ترى في الجهاز بعض رسائل المعلومات التي يمكن التعرف عليها تمامًا.

كان قرار التصميم هنا هو أن معظم الرسائل عبارة عن خطأ / تحذير / معلومات ، ويجب أن تذهب إلى كل من الجهاز والسجل. وظيفتا "المستوى الأدنى" ، \msg_term:nn و \msg_log:nn ، متخصصتان إلى حد كبير ومن المفترض أن تكون "غير مزعجة".

معظم الرسائل عبارة عن خطأ / تحذير / معلومات ، ويجب أن تذهب إلى كل من الجهاز والسجل.

ولكن على وجه التحديد ، تنتقل رسائل المعلومات إلى السجل فقط:

\ msg_ info: nnnnnn {⟨module⟩} {⟨message⟩} {⟨arg one⟩} {⟨arg two⟩} {⟨arg three⟩} {⟨arg four⟩}

يصدر "الوحدة" معلومات "الرسالة" ، ويمرر "الجزء الأول" إلى "الهدف الرابع" لإنشاء النص
المهام. يضاف نص المعلومات إلى ملف السجل.

dbitouze آه ، آسف ، نعم: المعلومات موجودة فقط في السجل كما تقول. كان الهدف من الرسائل "الأولية" أنه من المرجح أن تكون ذات مستوى منخفض جدًا حيث لا يلزم وجود "تشويش" إضافي. لكي نكون صادقين ، لم نرهم يستخدمون كثيرًا "في البرية" - أعتقد أن ما أتساءل عنه بعد فوات الأوان هو حالات الاستخدام. (بالنسبة للأشياء ذات المستوى المنخفض حقًا ، سأستخدم \iow_log:n / \iow_term:n أي حال.)

josephwright أنا أميل إلى الموافقة على أن "info" يجب أن يكون مثل "تحذير" مع اختلاف أنه لا يظهر على الجهاز ولكن ليس أنه يسجل الأشياء بشكل مختلف. على سبيل المثال ، عادةً ما يتم تنسيق التحذيرات باستخدام فواصل أسطر صريحة استنادًا إلى فكرة وجود بادئة "(وحدة)" في الأسطر التالية وعندما أقوم بتغيير مجموعة من تحذير إلى معلومات ، أعتقد أن كل ما يجب تغييره هو المكان الذي يظهر فيه وليس كيف .

FrankMittelbach هذا هو الحال: كان السؤال هو أنني أفكر في \msg_log:nn ، والذي يقوم بعمل تنسيق أقل (لا). يمكن القول أنه يمكننا إسقاط \msg_log:nn و \msg_term:nn ، لأنهما في الحقيقة يقعان إلى حد ما بين نظام الرسائل وببساطة إلقاء الأسطر في السجل.

يتم خلط سؤالين منفصلين قليلاً هنا.

  • الرسائل المنسقة: لدينا حاليًا خطأ / تحذير / معلومات ، مع آخرها
    تظهر فقط في السجل. يطلب dbitouze ظهور رسالة معلومات على ملف
    محطة كذلك. ربما يمكنه توضيح حالة ملموسة حيث توجد مثل هذه الرسالة
    ألا تكون مجرد رسالة تحذير؟

  • الرسائل غير المنسقة: \ msg_ السجل: nn و \ msg_ term: nn. ليس لدي رأي في
    سواء للاحتفاظ بها.

حسنًا ، من الواضح أنني حصلت على النهاية الخاطئة للعصا وقرأت الطلب بشكل غير صحيح. في هذه الحالة ، أود أن أقول إنه لا ينبغي أن يكون هناك أي تغيير في سلوك 2e العادي (ونظام المراسلة مخصص لـ 2e حتى لو كنا هنا في expl3 repo)

يطلب dbitouze ظهور رسالة معلومات على الجهاز أيضًا. ربما يمكنه توضيح حالة ملموسة حيث لا ينبغي أن تكون هذه الرسالة مجرد رسالة تحذير؟

في بعض الأحيان تريد إبلاغ المستخدم بشيء ما ولكن لا تخيفه بتحذير.

أتفق مع هذا - من الناحية المفاهيمية ، أعتقد أن هناك محورين لهذه الرسائل: مكان ظهورها ومدى خطورتها.

لنفترض أن لدي بعض المخرجات التشخيصية (مفيدة بشكل هامشي ولكنها ليست عديمة الفائدة) من معالجة بعض الأشياء ، وأرسلها إلى ملف السجل افتراضيًا. قد يكون عرضه على وحدة التحكم أمرًا رائعًا في بعض الأحيان (خيار مستخدم "مطوّل") ولكن سيكون من الخطأ استدعاء هذه التحذيرات.

أنا نوعا ما ثاني ذلك ولكن لا أعتقد أننا نريد حقًا محورًا ثانيًا. يجب دائمًا الإبلاغ عن أخطاء + تحذيرات imho في Terminal + log ، فقط للحصول على معلومات يبدو أن هناك بالفعل معلومات عن فئتين (السجل فقط) ومعلومات المصطلح.

لاحظ أن وجود محاور منفصلة سيساعد كثيرًا على أي حال ، لأننا عادةً لا نريد أن تصبح جميع المعلومات فجأة معلومات مصطلحات (والتي يمكنك على أي حال من خلال تعيين المعلومات إلى معلومات المصطلح) ولكن عادةً ما يكون هناك بعض المعلومات فقط للذهاب دائمًا أيضًا إلى Terminal لذلك سأفكر في إضافة فئة أخرى terminfo وبعضها المقابل \msg_terminfo:nn حتى تتمكن من توضيح نواياك للسلوك الافتراضي في الكود دون الحاجة إلى تعيين ذلك المخفي إلى حد ما في إعداد msg .

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

القضايا ذات الصلة

josephwright picture josephwright  ·  31تعليقات

dbitouze picture dbitouze  ·  4تعليقات

dbitouze picture dbitouze  ·  3تعليقات

josephwright picture josephwright  ·  12تعليقات

JairoAdelRio picture JairoAdelRio  ·  7تعليقات