ارائه “gfm” -likely html in sphinx با myst-parser

Myst-Parser پسوند Sphinx برای تجزیه منابع سند Markdown است.
ما می توانیم سند ساختاری بالا را با استفاده از آن بنویسیم حتی اگر نمی دانیم SYNTAX REMRUCTURAUTEDTEXT.
Myst-Parser از GFM پشتیبانی می کند ، اما …
Myst-Parser گزینه هایی برای رفتار دارد. 1
وجود دارد myst_gfm_only
در گزینه ها این برای اجرای Markdown Parse Github (GFM) است که از برخی نحو گسترده از Commonmark پشتیبانی می کند.
اما ، وقتی این گزینه است True
، تزریق نمی کند
به خط منابع.
نمونه
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
این منبع علامت گذاری دارای هر جمله از خوراک خط است.
هنگامی که Sphinx آن را به HTML توسط Sphinx-Build تبدیل می کند.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
اما Github از این منبع ارائه می شود. 2
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
چرا این اتفاق افتاد؟
GFM بین مشخصات و رفتار مطابقت ندارد.
مشخصات GFM در https://github.github.com/gfm/ قرار داده شده است.
“6.12 HARD LINE BREAKS وجود دارد
“و” 6.13 خط نرم خط “در مورد مشخصات شکستن خط.
مشخصات شکستن خط نرم:
یک خط خط معمولی (نه در یک کدهای یا برچسب HTML) که قبل از دو یا چند فضای یا یک پشتی به عنوان یک نرم شدن جدا نمی شود. .
ما انتظار داریم که در هنگام شکستن خط نرم ، هیچ چیزی ایجاد نمی کند.
اما در واقع ، github.com ارائه می دهد
برچسب از فید خط.
Myst-Parser گزینه هایی برای استراحت خط ندارد.
دشوار است که برای اجرای GitHub تنظیم شود؟
نه ، شما می توانید آن را با تعریف کلاس هک برطرف کنید.
نحوه هک کردن برای تحقق شکستن خط “واقعی” GFM.
رمز
لطفا کد آن را در آن بنویسید conf.py
از سند شما
def setup(app):
# If you already defined setup, write these code into before `return`.
from myst_parser.mdit_to_docutils.base import DocutilsRenderer
DocutilsRenderer.render_softbreak = DocutilsRenderer.render_hardbreak
شرح
هنگامی که Sphinx با Myst-Parser از Markdown به HTML تبدیل می شود ، شیء میانی به نام “Doctree” تولید می کند.
- Myst-Parser Markdown و ایجاد Doctree.
- فرآیند نویسنده Sphinx HTML را از Doctree تولید می کند.
برای ایجاد دکترین از Markdown ، Myst-Parser DoctreerEnderer را تعریف می کند.
این کلاس روش هایی دارد که هر گره AST از Markdown کار می کند.
DocutilsRenderer.render_softbreak
روش قرار دادن کد LineFeed هنگام مراجعه به فرآیند “خط نرم خط” است.DocutilsRenderer.render_hardbreak
روش قرار دادن HTML هنگام بازدید از “خط سخت خط” است.
در پایتون ، ما می توانیم روش های کلاس ها را با تغییر مجدد نادیده بگیریم.
کد حل و فصل برای غلبه بر render_softbreak
از طرف render_hardbreak
بشر
بنابراین ، هنگامی که پارسر همه خطوط خط را پیدا کرد ، به عنوان “خط سخت خط” اجرا می شود.
-
https://myst-parser.readthedocs.io/en/latest/configuration.html
-
در واقع ،
برچسب در یک خط قرار می دهد ، دم خط را اضافه می کند. ↩