Làm việc với các Tính năng Markdown

Chủ đề này thảo luận về cách triển khai các tính năng Markdown bằng cách sử dụng Aspose.Words. Markdown là một cách đơn giản để định dạng văn bản thuần túy có thể dễ dàng chuyển đổi thành HTML. Aspose.Words hỗ trợ các tính năng Markdown sau:

  • Tiêu đề
  • Báo giá
  • Quy tắc ngang
  • Nhấn mạnh táo bạo
  • Nhấn mạnh nghiêng

Việc triển khai tính năng Markdown chủ yếu tuân theo đặc tả CommonMark trong Aspose.Words API và tất cả các tính năng được biểu diễn dưới dạng các kiểu tương ứng hoặc định dạng trực tiếp. Có nghĩa là

  • In đậm và In Nghiêng được biểu diễn dưới dạng Font.BoldFont.Italic.
  • Tiêu đề là các đoạn có tiêu Đề 1 - tiêu đề 6 kiểu.
  • Trích dẫn là các đoạn có “Trích dẫn"trong tên kiểu.
  • HorizontalRule là một đoạn có hình HorizontalRule.

Markdown Tài liệu Với Các Điểm Nhấn

Phần này cho bạn thấy cách tạo tài liệu markdown với các điểm nhấn như được đưa ra dưới đây:

Markdown treats asterisks (*) and underscores (_) as indicators of emphasis.
You can write **bold** or *italic* text. 
You can also write ***BoldItalic***text.

Đoạn mã sau có thể được sử dụng để tạo tài liệu markdown đã cho ở trên.

For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
builder->Writeln(u"Markdown treats asterisks (*) and underscores (_) as indicators of emphasis.");
builder->Write(u"You can write ");
builder->get_Font()->set_Bold(true);
builder->Write(u"bold");
builder->get_Font()->set_Bold(false);
builder->Write(u" or ");
builder->get_Font()->set_Italic(true);
builder->Write(u"italic");
builder->get_Font()->set_Italic(false);
builder->Writeln(u" text. ");
builder->Write(u"You can also write ");
builder->get_Font()->set_Bold(true);
builder->get_Font()->set_Italic(true);
builder->Write(u"BoldItalic");
builder->get_Font()->set_Bold(false);
builder->get_Font()->set_Italic(false);
builder->Write(u"text.");
System::String outputPath = outputDataDir + u"WorkingWithMarkdownFeatures.MarkdownDocumentWithEmphases.md";
builder->get_Document()->Save(outputPath);

Markdown Tài liệu Với Tiêu đề

Phần này cho bạn thấy cách tạo tài liệu markdown với các tiêu đề như được đưa ra dưới đây:

The following produces headings:
# Heading1
## Heading2
### Heading3
#### Heading4
##### Heading5
###### Heading6
# **Bold Heading1**

Đoạn mã sau có thể được sử dụng để tạo tài liệu markdown đã cho ở trên.

For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// By default Heading styles in Word may have bold and italic formatting.
// If we do not want text to be emphasized, set these properties explicitly to false.
builder->get_Font()->set_Bold(false);
builder->get_Font()->set_Italic(false);
builder->Writeln(u"The following produces headings:");
builder->get_ParagraphFormat()->set_Style(doc->get_Styles()->idx_get(u"Heading 1"));
builder->Writeln(u"Heading1");
builder->get_ParagraphFormat()->set_Style(doc->get_Styles()->idx_get(u"Heading 2"));
builder->Writeln(u"Heading2");
builder->get_ParagraphFormat()->set_Style(doc->get_Styles()->idx_get(u"Heading 3"));
builder->Writeln(u"Heading3");
builder->get_ParagraphFormat()->set_Style(doc->get_Styles()->idx_get(u"Heading 4"));
builder->Writeln(u"Heading4");
builder->get_ParagraphFormat()->set_Style(doc->get_Styles()->idx_get(u"Heading 5"));
builder->Writeln(u"Heading5");
builder->get_ParagraphFormat()->set_Style(doc->get_Styles()->idx_get(u"Heading 6"));
builder->Writeln(u"Heading6");
// Note, emphases are also allowed inside Headings:
builder->get_Font()->set_Bold(true);
builder->get_ParagraphFormat()->set_Style(doc->get_Styles()->idx_get(u"Heading 1"));
builder->Writeln(u"Bold Heading1");
System::String outputPath = outputDataDir + u"WorkingWithMarkdownFeatures.MarkdownDocumentWithHeadings.md";
doc->Save(outputPath);

Markdown Tài liệu Với Dấu Ngoặc Kép Khối

Phần này cho bạn thấy làm thế nào để sản xuất một tài liệu markdown với dấu ngoặc kép khối như được đưa ra dưới đây:

We support blockquotes in Markdown:
>*Lorem*
>*ipsum*
>The quotes can be of any level and can be nested:
>>>Quote level 3
>>>
>>>>Nested quote level 4
>
>*Back to first level*
>### Headings are allowed inside Quotes
>

Đoạn mã sau có thể được sử dụng để tạo tài liệu markdown đã cho ở trên.

For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
builder->Writeln(u"We support blockquotes in Markdown:");
builder->get_ParagraphFormat()->set_Style(doc->get_Styles()->idx_get(u"Quote"));
builder->Writeln(u"Lorem");
builder->Writeln(u"ipsum");
builder->get_ParagraphFormat()->set_Style(doc->get_Styles()->idx_get(u"Normal"));
builder->Writeln(u"The quotes can be of any level and can be nested:");
System::SharedPtr<Style> quoteLevel3 = doc->get_Styles()->Add(Aspose::Words::StyleType::Paragraph, u"Quote2");
builder->get_ParagraphFormat()->set_Style(quoteLevel3);
builder->Writeln(u"Quote level 3");
System::SharedPtr<Style> quoteLevel4 = doc->get_Styles()->Add(Aspose::Words::StyleType::Paragraph, u"Quote3");
builder->get_ParagraphFormat()->set_Style(quoteLevel4);
builder->Writeln(u"Nested quote level 4");
builder->get_ParagraphFormat()->set_Style(doc->get_Styles()->idx_get(u"Quote"));
builder->Writeln();
builder->Writeln(u"Back to first level");
System::SharedPtr<Style> quoteLevel1WithHeading = doc->get_Styles()->Add(Aspose::Words::StyleType::Paragraph, u"Quote Heading 3");
builder->get_ParagraphFormat()->set_Style(quoteLevel1WithHeading);
builder->Write(u"Headings are allowed inside Quotes");
System::String outputPath = outputDataDir + u"WorkingWithMarkdownFeatures.MarkdownDocumentWithBlockQuotes.md";
doc->Save(outputPath);

Markdown Tài liệu Với Quy Tắc Ngang

Phần Này cho bạn thấy cách tạo tài liệu markdown Với Quy Tắc Ngang như được đưa ra dưới đây:

We support Horizontal rules (Thematic breaks) in Markdown:
-----

Đoạn mã sau có thể được sử dụng để tạo tài liệu markdown đã cho ở trên.

For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(System::MakeObject<Document>());
builder->Writeln(u"We support Horizontal rules (Thematic breaks) in Markdown:");
builder->InsertHorizontalRule();
System::String outputPath = outputDataDir + u"WorkingWithMarkdownFeatures.MarkdownDocumentWithHorizontalRule.md";
builder->get_Document()->Save(outputPath);

Đọc tài liệu Markdown

Đoạn mã sau đây hướng dẫn bạn cách đọc tài liệu markdown.

For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-C
// This is Markdown document that was produced in example of UC3.
System::SharedPtr<Document> doc = System::MakeObject<Document>(inputDataDir + u"QuotesExample.md");
// Let's remove Heading formatting from a Quote in the very last paragraph.
System::SharedPtr<Paragraph> paragraph = doc->get_FirstSection()->get_Body()->get_LastParagraph();
paragraph->get_ParagraphFormat()->set_Style(doc->get_Styles()->idx_get(u"Quote"));
System::String outputPath = outputDataDir + u"WorkingWithMarkdownFeatures.ReadMarkdownDocument.md";
doc->Save(outputPath);

Chỉ Định Markdown Lưu Tùy Chọn

Aspose.Words API cung cấp lớp MarkdownSaveOptions để chỉ định các tùy chọn bổ sung trong khi lưu tài liệu vào định dạng Markdown.

Ví dụ mã sau đây đã chứng minh cách chỉ định các tùy chọn lưu Markdown khác nhau.

auto builder = System::MakeObject<DocumentBuilder>();
builder->Writeln(u"Some text!");
// specify MarkDownSaveOptions
auto saveOptions = SaveOptions::CreateSaveOptions(SaveFormat::Markdown);
builder->get_Document()->Save(outputDataDir + u"TestDocument.md", saveOptions);

Cách Căn Chỉnh Nội Dung Bên Trong Bảng trong khi Xuất thành Markdown

Aspose.Words API cung cấp liệt kê TableContentAlignment xác định hướng căn chỉnh để căn chỉnh nội dung trong bảng trong khi xuất vào tài liệu Markdown. Ví dụ mã sau đây trình bày cách căn chỉnh nội dung bên trong bảng.

auto builder = System::MakeObject<DocumentBuilder>();
// Create a new table with two cells.
builder->InsertCell();
builder->get_ParagraphFormat()->set_Alignment(ParagraphAlignment::Right);
builder->Write(u"Cell1");
builder->InsertCell();
builder->get_ParagraphFormat()->set_Alignment(ParagraphAlignment::Center);
builder->Write(u"Cell2");
auto saveOptions = System::MakeObject<MarkdownSaveOptions>();
// Makes all paragraphs inside table to be aligned to Left.
saveOptions->set_TableContentAlignment(TableContentAlignment::Left);
builder->get_Document()->Save(outputDataDir + u"left.md", saveOptions);
// Makes all paragraphs inside table to be aligned to Right.
saveOptions->set_TableContentAlignment(TableContentAlignment::Right);
builder->get_Document()->Save(outputDataDir + u"right.md", saveOptions);
// Makes all paragraphs inside table to be aligned to Center.
saveOptions->set_TableContentAlignment(TableContentAlignment::Center);
builder->get_Document()->Save(outputDataDir + u"center.md", saveOptions);
// Makes all paragraphs inside table to be aligned automatically.
// The alignment in this case will be taken from the first paragraph in corresponding table column.
saveOptions->set_TableContentAlignment(TableContentAlignment::Auto);
builder->get_Document()->Save(outputDataDir + u"auto.md", saveOptions);