protected override void Write(OpenXMLRenderer renderer, CodeBlock obj) { renderer.PushParagraphFormat(FormatStyle.CodeBlock); var paragraph = renderer.PushNewParagraph(); if (obj.Inline != null) { // there was a post-processor which has already processed the lines in this code block renderer.WriteChildren(obj.Inline); } else // there was no post-processor - we have to do the writing of the code lines { // original code: renderer.WriteLeafRawLines(obj); // Expand this call directly here in order to be able to include tags var lines = obj.Lines; if (lines.Lines != null) { var slices = lines.Lines; for (var i = 0; i < lines.Count; i++) { var run = renderer.Push(new Run(new DocumentFormat.OpenXml.Wordprocessing.Text() { Text = slices[i].Slice.ToString(), Space = SpaceProcessingModeValues.Preserve })); renderer.PopTo(run); if (i < lines.Count - 1) { run = renderer.Push(new Run(new Break())); renderer.PopTo(run); } } } } renderer.PopTo(paragraph); renderer.PopParagraphFormat(); }
protected override void Write(OpenXMLRenderer renderer, EmphasisInline obj) { int nPushed = 0; switch (obj.DelimiterChar) { case '*': case '_': if (obj.IsDouble) { renderer.PushInlineFormat(OpenXMLRenderer.InlineFormat.Bold); ++nPushed; } else { renderer.PushInlineFormat(OpenXMLRenderer.InlineFormat.Italic); ++nPushed; } break; case '~': if (obj.IsDouble) { renderer.PushInlineFormat(OpenXMLRenderer.InlineFormat.Strikethrough); ++nPushed; } else { renderer.PushInlineFormat(OpenXMLRenderer.InlineFormat.Subscript); ++nPushed; } break; case '^': renderer.PushInlineFormat(OpenXMLRenderer.InlineFormat.Superscript); ++nPushed; break; case '+': // Inserted style { renderer.PushInlineFormat(OpenXMLRenderer.InlineFormat.Underline); ++nPushed; } break; case '=': // Marked style break; } renderer.WriteChildren(obj); for (int i = 0; i < nPushed; ++i) { renderer.PopInlineFormat(); } }
protected override void Write(OpenXMLRenderer renderer, DelimiterInline obj) { var run = renderer.PushNewRun(); run.AppendChild(new DocumentFormat.OpenXml.Wordprocessing.Text() { Space = SpaceProcessingModeValues.Preserve, Text = obj.ToLiteral() }); renderer.WriteChildren(obj); renderer.PopTo(run); }
/// <summary> /// Adds the list items. /// </summary> /// <param name="renderer">The renderer.</param> /// <param name="listBlock">The list block for which the items should be added.</param> /// <param name="level">The current level of this list (1= main list, 2 = first sub list, etc.)</param> /// <param name="numberId">The unique identifier identifying this list. Note: it is the same identifier independent on the level.</param> public void AddListItems(OpenXMLRenderer renderer, ListBlock listBlock, int level, int numberId) { foreach (var item in listBlock) { // Create items for paragraph properties renderer.PushParagraphFormat(FormatStyle.ListParagraph); renderer.NumberingProperties = new NumberingProperties(new NumberingLevelReference() { Val = level - 1 }, new NumberingId() { Val = numberId }); var listItem = (ListItemBlock)item; renderer.WriteChildren(listItem); renderer.NumberingProperties = null; renderer.PopParagraphFormat(); } }
protected override void Write(OpenXMLRenderer renderer, QuoteBlock obj) { renderer.PushParagraphFormat(FormatStyle.QuoteBlock); renderer.WriteChildren(obj); renderer.PopParagraphFormat(); }
/// <inheritdoc/> protected override void Write(OpenXMLRenderer renderer, LinkInline link) { var url = link.GetDynamicUrl != null?link.GetDynamicUrl() ?? link.Url : link.Url; if (link.IsImage) { RenderImage(renderer, link, url); renderer.AddBookmarkIfNeccessary(link); } else // link is not an image { if (Uri.IsWellFormedUriString(url, UriKind.RelativeOrAbsolute)) { ++_linkIndex; //var nextId = renderer._wordDocument.MainDocumentPart.Parts.Count() + 1; var rId = "lkId" + _linkIndex.ToString(System.Globalization.CultureInfo.InvariantCulture); renderer._wordDocument.MainDocumentPart.AddHyperlinkRelationship(new System.Uri(url, System.UriKind.Absolute), true, rId); var hyperlink = new Hyperlink() { Id = rId }; renderer.Push(hyperlink); renderer.WriteChildren(link); foreach (var run in hyperlink.ChildElements.OfType <Run>()) { renderer.ApplyStyleToRun(StyleDictionary.IdToName[FormatStyle.Link], run); } renderer.PopTo(hyperlink); } else if (!string.IsNullOrEmpty(url) && url.StartsWith("#")) // not a well formed Uri String - then it is probably a fragment reference { if (null != renderer.FigureLinkList) { var idx = renderer.FigureLinkList.FindIndex(x => object.ReferenceEquals(x.Link, link)); if (idx >= 0) { renderer.CurrentFigureLinkListIndex = idx; } } var hyperlink = new Hyperlink() { Anchor = url.Substring(1) }; renderer.Push(hyperlink); renderer.WriteChildren(link); if (!renderer.CurrentFigureLinkListIndex.HasValue || !renderer.DoNotFormatFigureLinksAsHyperlinks) { foreach (var run in hyperlink.ChildElements.OfType <Run>()) { renderer.ApplyStyleToRun(StyleDictionary.IdToName[FormatStyle.Link], run); } } renderer.PopTo(hyperlink); renderer.CurrentFigureLinkListIndex = null; } } }
protected override void Write(OpenXMLRenderer renderer, Markdig.Extensions.Figures.Figure obj) { renderer.WriteChildren(obj); }