FieldEQ

FieldEQ class

Implementa el campo EQ.

Para obtener más información, visite elTrabajar con campos artículo de documentación.

public class FieldEQ : Field

Constructores

NombreDescripción
FieldEQ()Constructor predeterminado

Propiedades

NombreDescripción
DisplayResult { get; }Obtiene el texto que representa el resultado del campo mostrado.
End { get; }Obtiene el nodo que representa el final del campo.
Format { get; }Obtiene unFieldFormat objeto que proporciona acceso escrito al formato del campo.
IsDirty { get; set; }Obtiene o establece si el resultado actual del campo ya no es correcto (obsoleto) debido a otras modificaciones realizadas en el documento.
IsLocked { get; set; }Obtiene o establece si el campo está bloqueado (no debe volver a calcular su resultado).
LocaleId { get; set; }Obtiene o establece el LCID del campo.
Result { get; set; }Obtiene o establece el texto que se encuentra entre el separador de campo y el final del campo.
Separator { get; }Obtiene el nodo que representa el separador de campos. Puede sernulo .
Start { get; }Obtiene el nodo que representa el inicio del campo.
virtual Type { get; }Obtiene el tipo de campo de Microsoft Word.

Métodos

NombreDescripción
AsOfficeMath()Devuelve el objeto Office Math correspondiente al campo EQ.
GetFieldCode()Devuelve texto entre el inicio del campo y el separador de campo (o el final del campo si no hay separador). Se incluyen tanto el código de campo como el resultado del campo de los campos secundarios.
GetFieldCode(bool)Devuelve texto entre el inicio del campo y el separador de campo (o el final del campo si no hay separador).
Remove()Elimina el campo del documento. Devuelve un nodo justo después del campo. Si el final del campo es el último hijo de su nodo principal, devuelve su párrafo principal. Si el campo ya está eliminado, devuelvenulo .
Unlink()Realiza la desvinculación del campo.
Update()Realiza la actualización del campo. Se produce si el campo ya se está actualizando.
Update(bool)Realiza una actualización de campo. Se produce si el campo ya se está actualizando.

Ejemplos

Muestra cómo reemplazar el campo EQ con 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");

Muestra cómo utilizar el campo EQ para mostrar una variedad de ecuaciones matemáticas.

public void FieldEQ()
{
    Document doc = new Document();
    DocumentBuilder builder = new DocumentBuilder(doc);

    // Un campo EQ muestra una ecuación matemática que consta de uno o varios elementos.
    // Cada elemento toma la siguiente forma: [cambiar][opciones][argumentos].
    // Puede haber un interruptor y varias opciones posibles.
    // Los argumentos son un conjunto de valores separados por comas encerrados entre llaves.

    // Aquí utilizamos un generador de documentos para insertar un campo EQ, con un modificador "\f", que corresponde a "Fracción".
    // Pasaremos los valores 1 y 4 como argumentos y no usaremos ninguna opción.
    // Este campo mostrará una fracción con 1 como numerador y 4 como denominador.
    FieldEQ field = InsertFieldEQ(builder, @"\f(1,4)");

    Assert.AreEqual(@" EQ \f(1,4)", field.GetFieldCode());

    // Un campo EQ puede contener varios elementos colocados secuencialmente.
    // También podemos anidar elementos uno dentro de otro colocando los elementos internos
    // dentro de los corchetes de argumentos de los elementos externos.
    // Podemos encontrar la lista completa de conmutadores, junto con sus usos aquí:
    // https://blogs.msdn.microsoft.com/murrays/2018/01/23/microsoft-word-eq-field/

     // A continuación se muestran aplicaciones de nueve interruptores de campo de EQ diferentes que podemos usar para crear diferentes tipos de objetos.
    // 1 - Switch de matriz "\a", alineado a la izquierda, 2 columnas, 3 puntos de espaciado horizontal y vertical:
    InsertFieldEQ(builder, @"\a \al \co2 \vs3 \hs3(4x,- 4y,-4x,+ y)");

    // 2 - Cambio de corchete "\b", carácter de corchete "[", para encerrar el contenido entre un conjunto de corchetes:
    // Tenga en cuenta que estamos anidando una matriz dentro de los corchetes, que en conjunto se verá como una matriz en la salida.
    InsertFieldEQ(builder, @"\b \bc\[ (\a \al \co3 \vs3 \hs3(1,0,0,0,1,0,0,0,1))");

    // 3 - Interruptor de desplazamiento "\d", desplazando el texto "B" 30 espacios a la derecha de "A", mostrando el espacio como subrayado:
    InsertFieldEQ(builder, @"A \d \fo30 \li() B");

    // 4 - Fórmula que consta de varias fracciones:
    InsertFieldEQ(builder, @"\f(d,dx)(u + v) = \f(du,dx) + \f(dv,dx)");

    // 5 - Interruptor integral "\i", con un símbolo de suma:
    InsertFieldEQ(builder, @"\i \su(n=1,5,n)");

    // 6 - Cambio de lista "\l":
    InsertFieldEQ(builder, @"\l(1,1,2,3,n,8,13)");

    // 7 - Cambio radical "\r", que muestra una raíz cúbica de x:
    InsertFieldEQ(builder, @"\r (3,x)");

    // 8 - Cambio de subíndice/superíndice "/s", primero como superíndice y luego como subíndice:
    InsertFieldEQ(builder, @"\s \up8(Superscript) Text \s \do8(Subscript)");

    // 9 - Selector de cuadro "\x", con líneas en la parte superior, inferior, izquierda y derecha de la entrada:
    InsertFieldEQ(builder, @"\x \to \bo \le \ri(5)");

    // Algunas combinaciones más complejas.
    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>
/// Utilice un generador de documentos para insertar un campo EQ, establecer sus argumentos y comenzar un nuevo párrafo.
/// </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;
}

Ver también