Trabajar con funciones Markdown

Este tema analiza cómo implementar funciones Markdown usando Aspose.Words. Markdown es una forma sencilla de formatear texto sin formato que se puede convertir fácilmente a HTML. Aspose.Words admite las siguientes funciones Markdown:

  • Encabezados
  • Citas en bloque
  • Reglas horizontales
  • énfasis en negrita
  • énfasis en cursiva

La implementación de funciones Markdown sigue principalmente la especificación CommonMark en Aspose.Words API y todas las funciones se representan como estilos correspondientes o formato directo. Lo que significa que

  • Negrita y cursiva se representan como Font.Bold y Font.Italic.
  • Los títulos son párrafos con estilos de Título 1 - Título 6.
  • Las comillas son párrafos con “Cita” en el nombre del estilo.
  • HorizontalRule es un párrafo con forma HorizontalRule.

Documento Markdown con énfasis

Esta sección le muestra cómo producir un documento markdown con los énfasis que se indican a continuación:

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

El siguiente fragmento de código se puede utilizar para producir el documento markdown indicado anteriormente.

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.Writeln("Markdown treats asterisks (*) and underscores (_) as indicators of emphasis.");
builder.Write("You can write ");
builder.Font.Bold = true;
builder.Write("bold");
builder.Font.Bold = false;
builder.Write(" or ");
builder.Font.Italic = true;
builder.Write("italic");
builder.Font.Italic = false;
builder.Writeln(" text. ");
builder.Write("You can also write ");
builder.Font.Bold = true;
builder.Font.Italic = true;
builder.Write("BoldItalic");
builder.Font.Bold = false;
builder.Font.Italic = false;
builder.Write("text.");
builder.Document.Save("EmphasesExample.md");

Documento Markdown con encabezados

Esta sección le muestra cómo producir un documento markdown con los encabezados que se indican a continuación:

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

El siguiente fragmento de código se puede utilizar para producir el documento markdown indicado anteriormente.

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
DocumentBuilder builder = new 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.Font.Bold = false;
builder.Font.Italic = false;
builder.Writeln("The following produces headings:");
builder.ParagraphFormat.Style = doc.Styles["Heading 1"];
builder.Writeln("Heading1");
builder.ParagraphFormat.Style = doc.Styles["Heading 2"];
builder.Writeln("Heading2");
builder.ParagraphFormat.Style = doc.Styles["Heading 3"];
builder.Writeln("Heading3");
builder.ParagraphFormat.Style = doc.Styles["Heading 4"];
builder.Writeln("Heading4");
builder.ParagraphFormat.Style = doc.Styles["Heading 5"];
builder.Writeln("Heading5");
builder.ParagraphFormat.Style = doc.Styles["Heading 6"];
builder.Writeln("Heading6");
// Note, emphases are also allowed inside Headings:
builder.Font.Bold = true;
builder.ParagraphFormat.Style = doc.Styles["Heading 1"];
builder.Writeln("Bold Heading1");
doc.Save(dataDir + "HeadingsExample.md");

Documento Markdown con cotizaciones en bloque

Esta sección le muestra cómo producir un documento markdown con comillas en bloque como se indica a continuación:

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
>

El siguiente fragmento de código se puede utilizar para producir el documento markdown indicado anteriormente.

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.Writeln("We support blockquotes in Markdown:");
builder.ParagraphFormat.Style = doc.Styles["Quote"];
builder.Writeln("Lorem");
builder.Writeln("ipsum");
builder.ParagraphFormat.Style = doc.Styles["Normal"];
builder.Writeln("The quotes can be of any level and can be nested:");
Style quoteLevel3 = doc.Styles.Add(StyleType.Paragraph, "Quote2");
builder.ParagraphFormat.Style = quoteLevel3;
builder.Writeln("Quote level 3");
Style quoteLevel4 = doc.Styles.Add(StyleType.Paragraph, "Quote3");
builder.ParagraphFormat.Style = quoteLevel4;
builder.Writeln("Nested quote level 4");
builder.ParagraphFormat.Style = doc.Styles["Quote"];
builder.Writeln();
builder.Writeln("Back to first level");
Style quoteLevel1WithHeading = doc.Styles.Add(StyleType.Paragraph, "Quote Heading 3");
builder.ParagraphFormat.Style = quoteLevel1WithHeading;
builder.Write("Headings are allowed inside Quotes");
doc.Save(dataDir + "QuotesExample.md");

Documento Markdown con regla horizontal

Esta sección le muestra cómo producir un documento markdown con regla horizontal como se indica a continuación:

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

El siguiente fragmento de código se puede utilizar para producir el documento markdown indicado anteriormente.

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
// Initialize document.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.Writeln("Insert a horizontal rule shape into the document.");
builder.InsertHorizontalRule();
dataDir = dataDir + "DocumentBuilder.InsertHorizontalRule_out.doc";
doc.Save(dataDir);

Leer un documento Markdown

El siguiente fragmento de código le muestra cómo leer un documento markdown.

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
// This is Markdown document that was produced in example of UC3.
Document doc = new Document(dataDir + "QuotesExample.md");
// Let's remove Heading formatting from a Quote in the very last paragraph.
Paragraph paragraph = doc.FirstSection.Body.LastParagraph;
paragraph.ParagraphFormat.Style = doc.Styles["Quote"];
doc.Save(dataDir + "QuotesModifiedExample.md");

Especificar opciones de guardado de Markdown

Aspose.Words API proporciona una clase MarkdownSaveOptions para especificar opciones adicionales al guardar un documento en formato Markdown.

El siguiente ejemplo de código demostró cómo especificar varias opciones de guardado de Markdown.

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
DocumentBuilder builder = new DocumentBuilder();
builder.Writeln("Some text!");
// specify MarkDownSaveOptions
MarkdownSaveOptions saveOptions = (MarkdownSaveOptions)SaveOptions.CreateSaveOptions(SaveFormat.Markdown);
builder.Document.Save(dataDir + "TestDocument.md", saveOptions);

Cómo alinear contenido dentro de la tabla mientras se exporta a Markdown

Aspose.Words API proporciona una enumeración TableContentAlignment que define las direcciones de alineación para alinear el contenido de las tablas mientras se exporta al documento Markdown. El siguiente ejemplo de código demuestra cómo alinear el contenido dentro de la tabla.

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET
DocumentBuilder builder = new DocumentBuilder();
// Create a new table with two cells.
builder.InsertCell();
builder.ParagraphFormat.Alignment = ParagraphAlignment.Right;
builder.Write("Cell1");
builder.InsertCell();
builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;
builder.Write("Cell2");
MarkdownSaveOptions saveOptions = new MarkdownSaveOptions();
// Makes all paragraphs inside table to be aligned to Left.
saveOptions.TableContentAlignment = TableContentAlignment.Left;
builder.Document.Save(dataDir + "left.md", saveOptions);
// Makes all paragraphs inside table to be aligned to Right.
saveOptions.TableContentAlignment = TableContentAlignment.Right;
builder.Document.Save(dataDir + "right.md", saveOptions);
// Makes all paragraphs inside table to be aligned to Center.
saveOptions.TableContentAlignment = TableContentAlignment.Center;
builder.Document.Save(dataDir + "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.TableContentAlignment = TableContentAlignment.Auto;
builder.Document.Save(dataDir + "auto.md", saveOptions);