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, ParagraphBlock obj) { var paragraph = renderer.PushNewParagraph(); renderer.WriteLeafInline(obj); renderer.PopTo(paragraph); renderer.AddBookmarkIfNeccessary(obj, paragraph); }
protected override void Write(OpenXMLRenderer renderer, HeadingBlock obj) { FormatStyle id; switch (obj.Level) { case 1: id = FormatStyle.Heading1; break; case 2: id = FormatStyle.Heading2; break; case 3: id = FormatStyle.Heading3; break; case 4: id = FormatStyle.Heading4; break; case 5: id = FormatStyle.Heading5; break; case 6: id = FormatStyle.Heading6; break; case 7: id = FormatStyle.Heading7; break; case 8: id = FormatStyle.Heading8; break; case 9: id = FormatStyle.Heading9; break; default: throw new NotImplementedException(); } renderer.PushParagraphFormat(id); var paragraph = renderer.PushNewParagraph(); renderer.WriteLeafInline(obj); renderer.PopTo(paragraph); renderer.PopParagraphFormat(); renderer.AddBookmarkIfNeccessary(obj, paragraph); }
protected override void Write(OpenXMLRenderer renderer, Markdig.Extensions.Figures.FigureCaption obj) { if (null != renderer.FigureCaptionList) { var idx = renderer.FigureCaptionList.FindIndex(x => object.ReferenceEquals(x.FigureCaption, obj)); if (idx >= 0) { renderer.CurrentFigureCaptionListIndex = idx; } } renderer.PushParagraphFormat(FormatStyle.Caption); var paragraph = renderer.PushNewParagraph(); renderer.WriteLeafInline(obj); renderer.PopTo(paragraph); renderer.PopParagraphFormat(); renderer.CurrentFigureCaptionListIndex = null; }
protected override void Write(OpenXMLRenderer renderer, ThematicBreakBlock obj) { var paragraph = renderer.PushNewParagraph(); var paraProperties = paragraph.ChildElements.FirstOrDefault() as ParagraphProperties; if (null == paraProperties) { paraProperties = paragraph.AppendChild(new ParagraphProperties()); } var paraBorders = new ParagraphBorders(); var bottom = new BottomBorder() { Val = BorderValues.Single, Color = "auto", Size = 12, Space = 1 }; paraBorders.Append(bottom); paraProperties.Append(paraBorders); renderer.PopTo(paragraph); }
protected override void Write(OpenXMLRenderer renderer, MathBlock obj) { string text = string.Empty; // obj.Content.Text.Substring(obj.Content.Start, obj.Content.Length); for (int i = 0; i < obj.Lines.Count; ++i) { var l = obj.Lines.Lines[i]; text += l.Slice.Text.Substring(l.Slice.Start, l.Slice.Length); } if (string.IsNullOrEmpty(text)) { return; } TexFormula formula = null; try { formula = _formulaParser.Parse(text); } catch (Exception) { return; } var mathRenderer = new MathRendering.OpenXMLWpfMathRenderer(); var mathObj = (DocumentFormat.OpenXml.OpenXmlCompositeElement)mathRenderer.Render(formula.RootAtom); var wordParagraph = renderer.PushNewParagraph(); // this is a Word paragraph renderer.Push(new Paragraph()); // Attention this is a __Math__ paragraph! renderer.Push(mathObj); renderer.PopTo(wordParagraph); }