FieldEQ
Contents
[
Hide
]FieldEQ class
Implements the EQ field.
To learn more, visit the Working with Fields documentation article.
public class FieldEQ : Field
Constructors
Name | Description |
---|---|
FieldEQ() | The default constructor. |
Properties
Name | Description |
---|---|
DisplayResult { get; } | Gets the text that represents the displayed field result. |
End { get; } | Gets the node that represents the field end. |
Format { get; } | Gets a FieldFormat object that provides typed access to field’s formatting. |
IsDirty { get; set; } | Gets or sets whether the current result of the field is no longer correct (stale) due to other modifications made to the document. |
IsLocked { get; set; } | Gets or sets whether the field is locked (should not recalculate its result). |
LocaleId { get; set; } | Gets or sets the LCID of the field. |
Result { get; set; } | Gets or sets text that is between the field separator and field end. |
Separator { get; } | Gets the node that represents the field separator. Can be null . |
Start { get; } | Gets the node that represents the start of the field. |
virtual Type { get; } | Gets the Microsoft Word field type. |
Methods
Name | Description |
---|---|
AsOfficeMath() | Returns Office Math object corresponded to the EQ field. |
GetFieldCode() | Returns text between field start and field separator (or field end if there is no separator). Both field code and field result of child fields are included. |
GetFieldCode(bool) | Returns text between field start and field separator (or field end if there is no separator). |
Remove() | Removes the field from the document. Returns a node right after the field. If the field’s end is the last child of its parent node, returns its parent paragraph. If the field is already removed, returns null . |
Unlink() | Performs the field unlink. |
Update() | Performs the field update. Throws if the field is being updated already. |
Update(bool) | Performs a field update. Throws if the field is being updated already. |
Examples
Shows how to replace the EQ field with Office Math.
Document doc = new Document(MyDir + "Field sample - EQ.docx");
FieldEQ fieldEQ = doc.Range.Fields.OfType<FieldEQ>().First();
OfficeMath officeMath = fieldEQ.AsOfficeMath();
fieldEQ.Start.ParentNode.InsertBefore(officeMath, fieldEQ.Start);
fieldEQ.Remove();
doc.Save(ArtifactsDir + "Field.EQAsOfficeMath.docx");
Shows how to use the EQ field to display a variety of mathematical equations.
public void FieldEQ()
{
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// An EQ field displays a mathematical equation consisting of one or many elements.
// Each element takes the following form: [switch][options][arguments].
// There may be one switch, and several possible options.
// The arguments are a set of coma-separated values enclosed by round braces.
// Here we use a document builder to insert an EQ field, with an "\f" switch, which corresponds to "Fraction".
// We will pass values 1 and 4 as arguments, and we will not use any options.
// This field will display a fraction with 1 as the numerator and 4 as the denominator.
FieldEQ field = InsertFieldEQ(builder, @"\f(1,4)");
Assert.AreEqual(@" EQ \f(1,4)", field.GetFieldCode());
// One EQ field may contain multiple elements placed sequentially.
// We can also nest elements inside one another by placing the inner elements
// inside the argument brackets of outer elements.
// We can find the full list of switches, along with their uses here:
// https://blogs.msdn.microsoft.com/murrays/2018/01/23/microsoft-word-eq-field/
// Below are applications of nine different EQ field switches that we can use to create different kinds of objects.
// 1 - Array switch "\a", aligned left, 2 columns, 3 points of horizontal and vertical spacing:
InsertFieldEQ(builder, @"\a \al \co2 \vs3 \hs3(4x,- 4y,-4x,+ y)");
// 2 - Bracket switch "\b", bracket character "[", to enclose the contents in a set of square braces:
// Note that we are nesting an array inside the brackets, which will altogether look like a matrix in the output.
InsertFieldEQ(builder, @"\b \bc\[ (\a \al \co3 \vs3 \hs3(1,0,0,0,1,0,0,0,1))");
// 3 - Displacement switch "\d", displacing text "B" 30 spaces to the right of "A", displaying the gap as an underline:
InsertFieldEQ(builder, @"A \d \fo30 \li() B");
// 4 - Formula consisting of multiple fractions:
InsertFieldEQ(builder, @"\f(d,dx)(u + v) = \f(du,dx) + \f(dv,dx)");
// 5 - Integral switch "\i", with a summation symbol:
InsertFieldEQ(builder, @"\i \su(n=1,5,n)");
// 6 - List switch "\l":
InsertFieldEQ(builder, @"\l(1,1,2,3,n,8,13)");
// 7 - Radical switch "\r", displaying a cubed root of x:
InsertFieldEQ(builder, @"\r (3,x)");
// 8 - Subscript/superscript switch "/s", first as a superscript and then as a subscript:
InsertFieldEQ(builder, @"\s \up8(Superscript) Text \s \do8(Subscript)");
// 9 - Box switch "\x", with lines at the top, bottom, left and right of the input:
InsertFieldEQ(builder, @"\x \to \bo \le \ri(5)");
// Some more complex combinations.
InsertFieldEQ(builder, @"\a \ac \vs1 \co1(lim,n→∞) \b (\f(n,n2 + 12) + \f(n,n2 + 22) + ... + \f(n,n2 + n2))");
InsertFieldEQ(builder, @"\i (,, \b(\f(x,x2 + 3x + 2))) \s \up10(2)");
InsertFieldEQ(builder, @"\i \in( tan x, \s \up2(sec x), \b(\r(3) )\s \up4(t) \s \up7(2) dt)");
doc.Save(ArtifactsDir + "Field.EQ.docx");
}
/// <summary>
/// Use a document builder to insert an EQ field, set its arguments and start a new paragraph.
/// </summary>
private static FieldEQ InsertFieldEQ(DocumentBuilder builder, string args)
{
FieldEQ field = (FieldEQ)builder.InsertField(FieldType.FieldEquation, true);
builder.MoveTo(field.Separator);
builder.Write(args);
builder.MoveTo(field.Start.ParentNode);
builder.InsertParagraph();
return field;
}
See Also
- class Field
- namespace Aspose.Words.Fields
- assembly Aspose.Words