AddOMathStructs.cs
//
// This code is part of Document Solutions for Word demos.
// Copyright (c) MESCIUS inc. All rights reserved.
//
using System;
using System.IO;
using System.Drawing;
using System.Collections.Generic;
using System.Linq;
using GrapeCity.Documents.Word;
namespace DsWordWeb.Demos
{
// This example shows how to add the various Office Math structures
// to the document content using the DsWord OMath API.
// Note that at this time export of OMath content to PDF/images is not supported.
public class AddOMathStructs
{
public GcWordDocument CreateDocx()
{
var doc = new GcWordDocument();
doc.Body.AddParagraph("OMath content created in DsWord", doc.Styles[BuiltInStyleId.Title]);
// Style for paragraphs containing OMath elements:
var styleOmath = doc.Styles.Add("omath", doc.Styles[BuiltInStyleId.Title]);
styleOmath.ParagraphFormat.Indentation.LeftIndent = 36;
// Style for narrative text in OMath paragraphs:
var styleText = doc.Styles.Add("text", StyleType.Character);
styleText.Font.Size = 14;
// Captions style:
var styleCap1 = doc.Styles.Add("styleCap1", doc.Styles[BuiltInStyleId.Heading1]);
styleCap1.ParagraphFormat.Spacing.SpaceBeforeAuto = false;
styleCap1.ParagraphFormat.Spacing.SpaceBefore = 18;
var capA = "\nExample 1: ";
var capB = "\nExample 2: ";
OMath addA(string caption)
{
doc.Body.AddParagraph(caption, styleCap1);
var p = doc.Body.AddParagraph(styleOmath);
p.AddRun(capA, styleText);
return p.AddOMath();
}
OMath addB()
{
var p = doc.Body.AddParagraph(styleOmath);
p.AddRun(capB, styleText);
return p.AddOMath();
}
// OMathAccent
var om = addA("OMathAccent");
om.AddAccent("a", "\u20d7");
om = addB();
var accent = om.AddAccent("", "\u0308");
accent.Base.AddFraction("2", "5", null);
// OMathBar
om = addA("OMathBar");
om.AddBar("2x+1=3");
om = addB();
var bar = om.AddBar();
bar.Base.AddFunction("cos", "2x");
bar.Position = OMathVerticalJustification.Top;
// OMathBorderBox
om = addA("OMathBorderBox");
om.AddBorderBox("xyz");
om = addB();
var bbox = om.AddBorderBox("2+2*");
bbox.Base.AddFraction("3", "3", null);
bbox.Base.AddRun(" = 5");
bbox.HideLeft = true;
bbox.HideTop = true;
bbox.HideRight = true;
bbox.HideBottom = true;
bbox.StrikeBottomLeftToTopRight = true;
bbox.StrikeTopLeftToBottomRight = true;
// OMathBox
om = addA("OMathBox");
om.AddRun("a");
var box = om.AddBox("==");
om.AddRun("b");
box.IsOperatorEmulator = true;
om = addB();
var nary = om.AddNary("x", "0", "1", "∭");
box = nary.Base.AddBox("dx");
box.IsDifferential = true;
// OMathDelimiter
om = addA("OMathDelimiter");
om.AddDelimiter(new string[] {"a", "b", "c"});
om = addB();
var delimiter = om.AddDelimiter(new string[] { "5", "7" }, "[", "]", "\\");
delimiter.Items.Add().AddRadical("n", "7");
var styleNorm = doc.Styles.Add("Norm", StyleType.Character);
styleNorm.Font.Italic = false;
styleNorm.Font.Color.RGB = Color.Red;
styleNorm.Font.Size = 20;
// OMathEquationArray
om = addA("OMathEquationArray");
om.AddEquationArray(new string[] { "a", "b", "c" });
om = addB();
var ea = om.AddEquationArray();
ea.Items.Add().AddDelimiter(new string[] { "x", "y", "z" });
ea.Items.Add().AddFraction("π", "2", OMathFractionType.Skewed);
// OMathFraction
om = addA("OMathFraction");
om.AddFraction("π", "4", null);
om = addB();
var fr = om.AddFraction();
var func = fr.Numerator.AddFunction("sin", "");
func.Argument.AddFraction("π", "3", null);
fr.Denominator.AddRadical("e", "3");
// OMathFunction
om = addA("OMathFunction");
om.AddFunction("ln", "2e");
om = addB();
var f = om.AddFunction("cos", "");
f.Argument.AddFraction("π", "2", null);
// OMathGroupCharacter
om = addA("OMathGroupCharacter");
om.AddGroupCharacter("mgh", "^");
om = addB();
var lu = om.AddLimitUpper("", "x");
var gc = lu.Base.AddGroupCharacter("xyz", "\u23DE");
gc.Position = OMathVerticalJustification.Top;
gc.VerticalJustification = OMathVerticalJustification.Bottom;
// OMathLimitLower
om = addA("OMathLimitLower");
om.AddLimitLower("abc", "z");
om = addB();
var ll = om.AddLimitLower();
ll.Base.AddBorderBox("2x+3");
ll.Limit.AddFraction("2", "5", null);
// OMathLimitUpper
om = addA("OMathLimitUpper");
om.AddLimitUpper("abc", "y");
om = addB();
lu = om.AddLimitUpper();
lu.Base.AddRadical("e", "3");
lu.Limit.AddFunction("cos", "2x");
// OMathMatrix
om = addA("OMathMatrix");
om.AddMatrix(new int?[2, 2] { { 1, 2 }, { 3, 4 } });
om = addB();
delimiter = om.AddDelimiter();
var item = delimiter.Items.Add();
var matrix = item.AddMatrix(3, 1);
matrix.Rows[0].Cells[0].AddRun("U");
matrix.Rows[0].Cells[0].AddDelimiter(new string[] { "t" });
matrix.Rows[1].Cells[0].AddRun("V");
matrix.Rows[1].Cells[0].AddDelimiter(new string[] { "t" });
matrix.Rows[2].Cells[0].AddRun("W");
matrix.Rows[2].Cells[0].AddDelimiter(new string[] { "t" });
// OMathNary
om = addA("OMathNary");
om.AddNary("xⅆx", "0", "∞", "∭");
om = addB();
nary = om.AddNary("", "", "", "∏");
nary.Subscript.AddFraction("π", "3", null);
nary.Superscript.AddFraction("2π", "3", null);
nary.Base.AddFunction("cos", "x");
// OMathPhantom
om = addA("OMathPhantom");
var del = om.AddDelimiter(null, "<", ">", "");
var ph = del.Items.Add().AddPhantom("argument", false);
ph.Show = false;
om = addB();
var radical = om.AddRadical();
radical.HideDegree = true;
radical.HideDegree = true;
ph = radical.Radicand.AddPhantom();
ph.Show = true;
ph.Argument.AddFraction("x", "y", null);
ph.Smash = true;
// OMathPreSubSuperscript
om = addA("OMathPreSubSuperscript");
om.AddPreSubSuperscript("Y", "1", "n");
om = addB();
var pss = om.AddPreSubSuperscript("", "-x", "2x");
pss.Base.AddRadical("n", "").HideDegree = true;
// OMathRadical
om = addA("OMathRadical");
om.AddRadical("x", "3");
om = addB();
radical = om.AddRadical();
radical.Degree.AddFraction("2", "3", OMathFractionType.Skewed);
radical.Radicand.AddFunction("cos", "2x");
// OMathSubscript
om = addA("OMathSubscript");
om.AddSubscript("x", "linear");
om = addB();
func = om.AddFunction("", "2x+1");
func.Name.AddSubscript("log", "3");
// OMathSubSuperscript
om = addA("OMathSubSuperscript");
om.AddSubSuperscript("Y", "1", "n");
om = addB();
var subs = om.AddSubSuperscript("", "-x", "2x");
subs.Base.AddRadical("n", "").HideDegree = true;
// OMathSuperscript
om = addA("OMathSuperscript");
om.AddSuperscript("x", "2");
om = addB();
func = om.AddFunction();
func.Name.AddSuperscript("cos", "2");
var frac = func.Argument.AddFraction();
frac.Numerator.AddRun("7x");
frac.Denominator.AddRun("2π");
// Done:
return doc;
}
}
}