علامات الترقيم الذكية بدون رموز IP

هل من الممكن تعديل إعدادات التكوين الحالية الخاصة بـ Markdown typographer (المعروفة أيضًا بـ “ترقيم ذكي”) لتمكين علامات الترقيم في Unicode، مثل علامات الاقتباس والشرطات، مع تعطيل (c) و ™ ورموز متخصصة أخرى من هذا النوع؟

أنا محامٍ. أقدم المشورة بشأن العلامات التجارية وحقوق النشر باستمرار، بما في ذلك في منتديات Discourse. لم أنصح أي شخص بتعديل منشور لإضافة رمز حقوق النشر أو العلامة التجارية، ويميل غير المحامين إلى المبالغة في تقدير مدى فائدة هذه الرموز أو ضرورتها بشكل كبير. من ناحية أخرى، قمت بتحرير منشورات أكثر مما يمكنني عده لمحاولة خداع مُعرِّف Markdown بحيث لا يقوم بعرض رمز ©.

يظهر هذا الأمر بشكل خاص في القوائم المرقمة. على سبيل المثال:

(أ) تفاحة
(ب) موزة
(ج) حقوق نشر؟
(د) تاريخ

هذا أسلوب الترقيم شائع جدًا في القوانين والعقود والسياسات وغيرها من الكتابات الرسمية المتأثرة بالأسلوب القانوني. وهو أيضًا أسلوب تلخيص شائع جدًا. كان جزءًا من أسلوب التلخيص “القياسي” الذي تم تدريسه لي كطالب في المدرسة الابتدائية في الولايات المتحدة.

أرى أن الإعدادات الحالية توفر بعض المرونة فيما يتعلق بـ الترقيم، لكنني لا أرى، بقدر ما أستطيع استنتاجه، أي طريقة لتمكين الترقيم الذكي دون تمكين الرموز الذكية.

9 إعجابات

لا أشعر بشعور قوي تجاه هذه النقطة، فأنا أعتقد أن «الحاجة» لكتابة رمز حقوق النشر نادرة جدًا لدرجة أنه يمكن سحب هذا الاختصار… فالتوازن بين فائدة نادرة جدًا مقابل تنسيق القائمة (a) (b) (c) الشائع نسبيًا (ولكنه غير جذاب) يجعلني مرتاحًا تمامًا لإزالة هذا الاختصار المحدد بالكامل @sam.

6 إعجابات

أود أيضًا دعم إزالة رمز (c) ببساطة.

ليس من الصعب البحث عن “رمز حقوق النشر” ونسخه ولصقه. يمكن للمتخصصين كتابة ©.

من وجهة نظر سهولة الاستخدام، سأقترح وجود قائمة بجميع التوسعات. أشك بقوة في أنها أكثر إرباكًا منها فائدة.

5 إعجابات

حسناً، في هذه الحالة، تبدو الفائدة (صغيرة جداً) تفوق المخاطرة (بشكل كبير)!

5 إعجابات

هذا لا يبدو قابلاً للتكوين إلى هذا الحد، سنحتاج إلى تعديل markdown.it لدعم هذه المرونة أو ببساطة كتابة معالج تجميل خاص بنا مستندًا إلى markdown.it.

الحل التافه الوحيد هو ببساطة تعطيل الميزة بالكامل.

5 إعجابات

ها، غريب أنه لا يمكن تكوينه على الإطلاق. هذا أمر مؤسف. إذن

(c) (tm) (r) (p) → (c) ™ (r) (p)

3 إعجابات

الميزة الإيجابية هي أن المحرك قابل للتكوين إلى حد كبير؛ يمكننا تعطيل القواعد في markdown.it، ونسخ الكود، وتنفيذ استبدالاتنا الخاصة تمامًا كما فعل @Roman → .

سيستغرق الأمر بضعة أيام من العمل الهندسي لتنظيف ذلك، كما سيكون من المحزن تسليم نفس الكود مرتين، لكن هذا أمر لا مفر منه إلى حد ما إذا كنا سنقوم بعمل نسخة منه.

3 إعجابات

اعتبارًا من الإصدار 7b8969ce5cb2edc54f2c1aa39a85a3a08076337d على الفرع master في markdown-it، فإن ملف المصدر ذي الصلة هو lib/rules_core/replacements.js، وملف الاختبار ذي الصلة هو test/fixtures/markdown-it/typographer.txt.

جميع عمليات الاستبدال مُعرَّفة بشكل ثابت. وتشمل (c) → (c)، (tm) → ™، (r) → (r)، و (p) → (p)، والتي تُصنَّف ضمن “الاختصارات المحددة النطاق”.

للعلم، لا أحصل على (p) لـ §. ومن المرجح جدًا أن يكون ذلك ℗، وهو رمز التسجيل الصوتي، بدلاً من ذلك.

سأقوم بإجراء بعض التجارب على هذا الأمر لأرى ما إذا كان بإمكاني اقتراح إصلاح يجعل ميزة “typographer” أكثر قابلية للتكوين.

7 إعجابات

هذا يثير جنوني أيضًا. أواجهه أسبوعيًا على الأقل.

9 إعجابات

أولاً، علاقات عامة ثانوية، إصلاح تفسير (p) و (P): Fix typographer interpretation of `(p)` by kemitchell · Pull Request #761 · markdown-it/markdown-it · GitHub

7 إعجابات

طلب سحب لتعطيل مجموعات الاستبدال: Configurable typographer by kemitchell · Pull Request #762 · markdown-it/markdown-it · GitHub

3 إعجابات

المشرف متجاوب للغاية. يغلق طلباتي المدمجة (PRs) في غضون دقائق :stuck_out_tongue_winking_eye:

ما أقرأه هو أنه يكره بشدة إدخال أي تغييرات كاسرة، حتى في الإصدارات الرئيسية الجديدة، حتى لأشياء مثل عرض (P) كـ §. كما أنه يرفض تمامًا السماح بخيارات على غرار typographer: {A: true, B: false}، حتى عندما يظل typographer: true فعالاً، وذلك بسبب التعقيد المُدرَك.

أقرأ بين السطور، وهو روسي يكتب بالإنجليزية. لكني أشعر أنه يرى أن markdown-it مشروع مكتمل لا يحتاج إلى تطوير.

مع كل الامتنان، قد يكون من الجيد عمل نسخة مشتقة (fork) من التطبيق، وإعادة كتابته كـ ES Modules، وإزالة جميع الوظائف الشبيهة بالإضافات المدمجة حاليًا، بما في ذلك ربط الروابط (linkification) والاستبدالات، مثل استبدالات علامات الترقيم الخاصة بـ typographer.

3 إعجابات

صانع الصيانة غير مهتم بالنقاط المتعلقة بتكرار الكود في الحزم بدون أرقام. كما أنه غير مهتم حتى بالتغييرات غير المكسرة في واجهة برمجة التطبيقات (API) التي لا تكون “مطلوبة من 100% من المستخدمين” أو تعيق تنفيذ الإضافات. هذا يؤدي إلى موقف محير بعض الشيء، حيث أنهم يصدرون حركتين فرعيين يعتمدان بشكل كبير على الإضافات، واحدة للربط (linkification) والأخرى للتنقيط الذكي (smart punctuation)، والتي كان يجب أن تكون في حزم npm صغيرة مستقلة تحت هذه الفلسفة. وهذا يحدث.

وللتوضيح، كانت هناك إصدارات كبيرة لمكتبة markdown-it في الماضي القريب. ولا سيما تحسين الأداء الذي قدمه أليكس كوتشارين في نوفمبر من العام الماضي.

لإصلاح (c)، والتعامل مع (p)، وفعل أي شيء آخر نرغب في فعله مع الأسهم وما شابه، فإن أفضل رهان هو طرح رقعة تزيل حركتي الربط والتنقيط الذكي من النواة وتحميلهما بدلاً من ذلك كإضافات في Discourse. استخدم إجراء GitHub أو مهمة مجدولة (cron job) للمراقبة على النسخة الرئيسية من markdown-it ومحاولة إعادة التأسيس تلقائيًا. إذا ظل الصانع محافظًا جدًا على التغييرات، فإن الرقعة يجب أن تُطبَّق بنقاء لفترة طويلة. ما لم يقم بقفزة كبيرة مثل إعادة الكتابة كـ ES Modules بدلاً من CommonJS.

6 إعجابات

ناقشنا هذا داخليًا وقررنا أن نقوم بعمل hard-fork لمكتبة typographer.

سنقوم أساسًا بتعطيل typographer في markdown.it وتنفيذ نسخة مخصصة في discourse. إن markdown.it قابل للتوسع بشكل كبير، لذا فإن هذا الإجراء هو في الغالب “نسخ ولصق”.

بمجرد الانتهاء من عملية النسخ واللصق، يمكننا إضافة الاختبارات وتخصيص بعض القواعد وتعديلها.

9 إعجابات

مرحبًا، آسف لإثارة هذا النقاش. بما أنني أبحث عن طريقة لتعطيل ... -> …، أردتُ معرفة ما إذا كان هذا الميزة قد تطورت بطريقة ما، وما إذا كان بإمكاني توقع تمكين أو تعطيل قواعد فردية في المستقبل.

شكرًا لك!

إعجابَين (2)

إنه إعداد للموقع، ما عليك سوى تعطيل المصمم

إعجابَين (2)

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

إعجابَين (2)

يجب عليك تعطيل HTML ثم إعادة بنائه في مشاركاتك المطلوبة

5 إعجابات

هذا مكتمل الآن تمامًا :confetti_ball:

إعجابَين (2)