تنسيق القائمة معطل

مثال: * 1932.

هذه تعمل بشكل مدهش: * 1917-32.

  • 1917-32.

أنا أستخدم أحدث إصدار 3.3.0.beta3-dev بدون أي إضافات.

إعجابَين (2)
    1. اختبار
    1. اختبار السطر الثاني

العلامات المستخدمة

* 1932. اختبار شيء ما
* 1933. مرة أخرى الآن ثم

نعم، يمكنني رؤية المشكلة ولكن هذه لا تبدو علامة Markdown صالحة. لقد اختبرت ما سبق مع محرر Markdown آخر ورأيت مشكلة مماثلة:

يمكنك تجنب ذلك عن طريق حذف النقطة بعد الرقم. على سبيل المثال:

  • 1932 - اختبار
  • 1933 - اختبار السطر الثاني

أو عن طريق استبعاد * في البداية:

  1. اختبار
  2. اختبار السطر الثاني
1932. اختبار
1933. اختبار السطر الثاني
إعجاب واحد (1)

لكن هذا يعمل فقط للسنوات المتتالية

  1. الأول
  2. الثاني
  3. الثالث
2008. الأول
2014. الثاني
2015. الثالث

ربما استخدام HTML بدلاً من Markdown يعمل أيضًا كبديل:

  • 1997. الأول
  • 2000. الثاني
  • 2015. الثالث
<ul>
  <li> 1997. الأول</li>
  <li> 2000. الثاني</li>
  <li> 2015. الثالث</li>
</ul>
إعجاب واحد (1)

هذه أيضًا قيود في ماركداون. تم اختبار Github وعدد قليل من محررات ماركداون الأخرى، وجميعها تفترض القوائم المتسلسلة افتراضيًا.

3 إعجابات

إزالة هذه الهامش باستخدام CSS يعيدها إلى طبيعتها.

li>ul, li>ol, .cooked li>ul, .cooked li>ol, .d-editor-preview li>ul, .d-editor-preview li>ol {
    margin: 0; /* إزالة هذا */
}
إعجاب واحد (1)
12983298. واحد
2. اختبار
  1. واحد
  2. اختبار

نعم، لقد رأيت هذا من قبل، نحن نفعل أشياء رائعة في CSS تكسر هذا بصريًا للحالات الشاذة.

أعتقد أن السبب وراء ذلك هو أنه يمكن إساءة استخدامه، ربما يتذكر @awesomerobot.

إعجابَين (2)

هممم، اختبار آخر:

- 12983298. واحد
- 2. اختبار
    1. واحد
    1. اختبار
* 12983298. واحد
* 2. اختبار
    1. واحد
    1. اختبار

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

إعجاب واحد (1)

هذا بسبب أنه في ماركداون، عندما يتم وضع نقطة . بعد رقم، يُفترض أنه قائمة مرتبة.

لذلك باستخدام تنسيق مثل * 1932.، فإنك تنشئ HTML:

<ul>
  <li>
    <ol start="1932">
      <li><!-- item content --></li>
    </ol>
  </li>
  <li>
    <ol start="1933">
      <li><!-- item content --></li>
    </ol>
  </li>
</ul>

صحيح تقنيًا، ولكنه غريب وغير مقصود.

هذا بسبب أنه عندما تقدم شرطة -، لم يعد رقمًا تسلسليًا، لذلك فهي ليست قائمة مرتبة ويتم تجاهل النقطة ..

لتجنب ذلك، من الأفضل أن تستخدم إما:

* 1932 (قائمة غير مرتبة إذا لم تكن الأرقام متسلسلة)

أو

1932. (قائمة مرتبة إذا كانت الأرقام متسلسلة)

إذا كانت النقطة . ضرورية، ولم تكن قائمة مرتبة، يمكنك الهروب من النقطة . باستخدام \ هكذا:

* 1932\.

هذه مشكلة منفصلة، وتحدث مع CSS المتصفح الافتراضي أيضًا:

علامة العنصر في قائمة HTML هي عنصر زائف يتم وضعه قبل أخذ الهامش/المسافة البادئة في الاعتبار، لذلك تظهر دائمًا خارج “صندوق” المحتوى. حتى عند إزالة الهامش/المسافة البادئة من القائمة، ستتجاوز العلامات.

على سبيل المثال، مع إزالة الهامش/المسافة البادئة من القائمة و overflow: hidden على الحاوية الأصلية، لا ترى علامات القائمة على الإطلاق:

لذا على أي حال، نظرًا لأن المسافة البادئة المطبقة على يسار القائمة هي قيمة ثابتة، ويتم وضع علامات القائمة بطريقة تقع ضمن المسافة البادئة، في مرحلة ما ستتجاوز الأرقام.

يجعل CSS الخاص بنا القوائم أكثر إحكامًا أفقيًا من الافتراضي، ولدينا هامش أيسر ومسافة بادئة… ولكن النتيجة هي نفسها تقريبًا:

هناك بعض CSS… list-style-position: inside التي يمكن أن تتجاوز موضع علامة القائمة، وهذا يضع العلامة داخل مربع المحتوى. ولكن هذا يعني أنك لن تحصل على محاذاة أرقام لطيفة:

list-style-position: outside; (افتراضي):

image

list-style-position: inside; (علامة القائمة تشغل مساحة المحتوى)

image

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

4 إعجابات

شكراً على التقرير. لقد قدمنا حلاً بديلاً نعتقد أنه سيساعد. في الوقت الحالي، لسنا قادرين على إصلاح كل حالة استثنائية وسنغلق هذا التقرير في الوقت الحالي.

إعجابَين (2)