فهرست

جست‌وجوی ابزارهاگزارش تغییرات

برای جابه‌جایی برای باز کردنمسئله را توضیح دهید، نه نام ابزار را

عنوان‌های تکراری مارک‌داون را بدون تداخل پیوند دهید

عنوان‌های تکراری نمی‌توانند یک شناسهٔ HTML مشترک داشته باشند. عنوان اول لنگر پایه را نگه می‌دارد و موارد بعدی پسوند شمارشی می‌گیرند: دومی ۲، سومی ۳. این ابزار دقیقاً همان شناسه‌ها را پیش از عنوان‌ها درج می‌کند و همان مقادیر را در پیوندهای تولیدشده به کار می‌برد، بنابراین هر ورودی به بخش متفاوتی می‌رسد.

عنوان‌های ATX و Setext شناسایی می‌شوند. خطوط شبیه به عنوان درون کد حصاردار یا تورفته نادیده گرفته می‌شوند.

سطح ۲ معمولاً عنوان اصلی سند را بیرون از فهرست مطالبِ خودش نگه می‌دارد.

عنوان‌های پیوندشده
۵
لنگرهای تکراری رفع‌شده
۲
عمیق‌ترین سطح واردشده
۳

مارک‌داون با فهرست مطالب

document-with-toc.md · ۵۰۳ B

سند اصلی با یک بلوک تولیدشدهٔ قابل‌جایگزینی و لنگرهای صریح HTML پیش از عنوان‌ها.

هر عنوان پیوندشده

۳۲Installinstall
۵۳Linuxlinux
۷۲Install!install-2
۹۳Windowswindows
۱۱۲Installinstall-3
نکات اصلی
  1. دو عنوان با نام Install به‌جای دو پیوند به یک مقصد، به دو لنگر متمایز تبدیل می‌شوند: اولی نام ساده و دومی همان نام با پسوند ۲.

  2. تشخیص تکراری پس از نرمال‌سازی بزرگی حروف، علائم نگارشی و فاصله‌ها انجام می‌شود، بنابراین Install! و Install همچنان می‌توانند با هم تداخل کنند.

  3. جدول نگاشت عنوان‌ها، لنگر نهایی اختصاص‌یافته به هر خط منبع را پیش از دانلود سند نشان می‌دهد.

چگونگی کار

مراحل انجام کار

  1. پایان خطوط را یکسان‌سازی کنید و فقط بلوک کامل فهرست مطالب و خطوط لنگری را که پیش‌تر همین ابزار تولید کرده حذف کنید.
  2. خطوط را به ترتیب اسکن کنید، حصارهای بک‌تیک و مد (~) را دنبال کنید و کد تورفته با چهار فاصله یا تب را نادیده بگیرید، سپس عنوان‌های ATX و Setext را تشخیص دهید.
  3. هر عنوان واردشده را به یک اسلاگ یونیکد با حروف کوچک ساده کنید، سپس هرگاه نام‌های نرمال‌شده تداخل کنند پسوند شمارشی بیفزایید، یعنی ۲ برای دومی، ۳ برای سومی و همین‌طور تا آخر.
  4. لنگر دقیق HTML را پیش از هر عنوان واردشده درج کنید و یک فهرست تودرتوی نشانه‌گذاری‌شده را پس از عنوان آغازین سطح یک یا در ابتدای سند قرار دهید.

فرض‌ها

  • کم‌عمق‌ترین سطح انتخاب‌شده عمیق‌تر از بیشترین سطح انتخاب‌شده نیست.
  • اسکنر عنوان‌های معمولی ATX و عنوان‌های تک‌خطی Setext مطابق CommonMark را هدف می‌گیرد؛ یک رندرکنندهٔ کامل مارک‌داون با افزونه‌های خاص نیست.
  • رندرکنندهٔ مقصد لنگرهای خام HTML را مجاز می‌داند. پلتفرمی که HTML نوشته‌شده توسط نویسنده را حذف می‌کند، این مقصدهای صریح را هم حذف خواهد کرد.
  • شناسه‌های HTML موجود بدون نشانگر و یک بلوک نشانگر تولیدشدهٔ ناقص، محتوای نویسنده تلقی می‌شوند و هرگز حذف نمی‌شوند.

پرسش‌های رایج

چرا برای رفع عنوان‌های تکراری به رندرکننده تکیه نمی‌کنید؟

قواعد پسوند در رندرکننده‌ها متفاوت است و بخشی از مارک‌داون اصلی نیست. شناسه‌های صریح، پیوند را به بخشی از خود سند هدف می‌گیرند، نه به یک قرارداد مستندنشدهٔ میزبان.

وقتی عنوان فقط علائم نگارشی داشته باشد چه می‌شود؟

پایهٔ آن section می‌شود و اگر بیش از یک عنوانِ صرفاً نگارشی وارد شود، همان پسوندهای عددی به دنبالش می‌آیند.

منابع

  • CommonMark Specification 0.31.2CommonMarkبررسی‌شده در مربوط به عنوان‌های ATX، عنوان‌های Setext، کد تورفته و کد حصاردار
  • The id attributeWHATWGبررسی‌شده در مربوط به مقصدهای صریح پیوند در HTML

روش کامل، مثال محاسبه‌شده و همهٔ فرض‌های این نتیجه در این صفحه آمده است: سازندهٔ فهرست مطالب مارک‌داون.