ترجمه Markdown به مستند سازی مدل شی (DOM)

برای خواندن، دستکاری و تغییر برنامه ریزی محتوا و قالب بندی یک سند، باید آن را به مدل شیء سند Aspose.Words (DOM) ترجمه کنید.

برخلاف اسناد ورد، Markdown با DOM که در Aspose.Words مدل شیء سند (DOM) مقاله. با این حال، Aspose.Words مکانیسم خود را برای ترجمه Markdown اسناد به DOM و بازگشت فراهم می کند، به طوری که ما می توانیم با موفقیت با عناصر آنها مانند قالب بندی متن، جداول، سرصفحه ها و دیگران کار کنیم.

این مقاله توضیح می دهد که چگونه ویژگی های مختلف markdown را می توان به Aspose.Words DOM و به Markdown ترجمه کرد.

پیچیدگی ترجمه Markdown – DOM – Markdown

مشکل اصلی این مکانیزم نه تنها ترجمه Markdown به DOM، بلکه انجام تبدیل معکوس است – برای ذخیره سند به فرمت Markdown با حداقل از دست دادن. عناصری مانند نقل قول های چند سطحی وجود دارد که تبدیل معکوس برای آنها بی اهمیت نیست.

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

اصول ترجمه متداول

ما از فرمت Font برای بلوک های خطی استفاده می کنیم. وقتی که هیچ مکاتبه مستقیم برای یک ویژگی Markdown در Aspose.Words DOM وجود ندارد، ما از یک سبک کاراکتر با نامی استفاده می کنیم که از برخی کلمات خاص شروع می شود.

برای بلوک های کانتینر، ما از میراث سبک برای نشان دادن ویژگی های آشیانه ای Markdown استفاده می کنیم. در این مورد، حتی زمانی که هیچ ویژگی آشیانه ای وجود ندارد، ما همچنین از سبک های پاراگراف با نامی استفاده می کنیم که از برخی کلمات خاص شروع می شود.

لیست های با گلوله و مرتب شده بلوک های کانتینری در Markdown نیز هستند. لانه سازی آنها در DOM به همان شیوه ای که برای تمام بلوک های کانتینر دیگر با استفاده از میراث سبک نشان داده شده است. با این حال، علاوه بر این، لیست های DOM دارای قالب بندی شماره مربوطه در سبک لیست یا قالب بندی پاراگراف هستند.

بلوک های خطی

ما هنگام ترجمه ویژگی های Bold، Italic یا Strikethrough inline markdown از قالب بندی Font استفاده می کنیم.

ویژگی Markdown Aspose.Words
Bold
**bold text**
get_Font()->set_Bold(true)
Italic
*italic text*
get_Font()->set_Italic(true)
Strikethrough
~Strikethrough text~
get_Font()->set_StrikeThrough(true)

ما از یک سبک کاراکتر با نامی استفاده می کنیم که از کلمه InlineCode شروع می شود، و به دنبال آن یک نقطه اختیاری (.) و تعدادی از backticks (`) برای ویژگی InlineCode است. اگر تعدادی از backticks از دست رفته باشد، پس از آن یک backtick به طور پیش فرض استفاده خواهد شد.

ویژگی Markdown Aspose.Words
InlineCode
**inline code**
get_Font()->set_StyleName(u"InlineCode[.][N]")
Autolink
<scheme://domain.com>
<email@domain.com>
کلاس FieldHyperlink
Link
[link text](url)
[link text](<url>"title")
[link text](url 'title')
[link text](url (title))
کلاس FieldHyperlink
Image
![](url)
![alt text](<url>"title")
![alt text](url ‘title’)
![alt text](url (title))
کلاس Shape

بلوک های کانتینری

یک سند یک دنباله از بلوک های کانتینر مانند عناوین، پاراگراف ها، لیست ها، نقل قول ها و دیگران است. بلوک های کانتینر را می توان به کلاس های 2 تقسیم کرد: بلوک های برگ و ظروف پیچیده. بلوک های برگ فقط می توانند حاوی محتوای خطی باشند. ظروف پیچیده به نوبه خود می توانند حاوی بلوک های ظرف دیگری از جمله بلوک های برگ باشند.

بلوک های برگ

جدول زیر نمونه هایی از استفاده از بلوک های برگ Markdown در Aspose.Wordsرا نشان می دهد:

ویژگی Markdown Aspose.Words
HorizontalRule
-----
این یک پاراگراف ساده با شکل HorizontalRule مربوطه است:
DocumentBuilder::InsertHorizontalRule()
ATX Heading
# H1, ## H2, ### H3…
get_ParagraphFormat()->set_StyleName(u"Heading N")، جایی که (1<= N <= 9).
این به یک سبک داخلی ترجمه شده است و باید دقیقا از الگوی مشخص شده باشد (هیچ پسوند یا پیشوند مجاز نیست).
در غیر این صورت، فقط یک پاراگراف معمولی با سبک مربوطه خواهد بود.
Setext Heading
=== (if Heading level 1),
--- (if Heading level 2)
get_ParagraphFormat->set_StyleName(u"SetextHeading[some suffix]")، بر اساس "Heading N" سبک.
اگر (N > = 2)، پس "Heading 2" استفاده خواهد شد، در غیر این صورت "Heading 1".
هر پسوند مجاز است، اما وارد کننده Aspose.Words به ترتیب از اعداد “1” و “2” استفاده می کند.
Indented Code get_ParagraphFormat->set_StyleName(u"IndentedCode[some suffix]")
Fenced Code
``` c#
if ()
then
else
```
get_ParagraphFormat()->set_StyleName(u"FencedCode[.][info string]")
[.] و [info string] اختیاری هستند.

ظروف پیچیده

جدول زیر نمونه هایی از استفاده از Markdown ظروف پیچیده در Aspose.Wordsرا نشان می دهد:

ویژگی Markdown Aspose.Words
Quote
> quote,
>> nested quote
get_ParagraphFormat()->set_StyleName(u"Quote[some suffix]")
پسوند در نام سبک اختیاری است، اما وارد کننده Aspose.Words از اعداد مرتب شده استفاده می کند1, 2, 3, …. در مورد نقل قول های آشیانه ای.
لانه سازی از طریق سبک های ارثی تعریف می شود.
BulletedList
- Item 1
- Item 2
- Item 2a
- Item 2b
لیست های با گلوله با استفاده از شماره گذاری پاراگراف نمایش داده می شوند:
get_ListFormat()->ApplyBulletDefault()
می تواند 3 انواع لیست های با گلوله وجود داشته باشد. آنها فقط در قالب شماره گذاری در سطح اول متفاوت هستند. این ها عبارتند از: ‘-’، ‘+’ یا ‘*’ به ترتیب.
OrderedList
1. Item 1
2. Item 2
1) Item 2a
2) Item 2b
لیست های مرتب شده با استفاده از شماره گذاری پاراگراف نمایش داده می شوند:
get_ListFormat()->ApplyNumberDefault()
می تواند نشانگرهای فرمت عدد 2 وجود داشته باشد: ‘.’ و ‘)’. نشانگر پیش فرض ‘.’ است.

جداول

Aspose.Words همچنین اجازه می دهد تا جداول را به DOM ترجمه کنیم، همانطور که در زیر نشان داده شده است:

ویژگی Markdown Aspose.Words
Table
a|b
-|-
c|d
Table، Row و Cell کلاس ها.

بایگانی برچسب برای: