FieldToc

FieldToc class

Implementa el campo TOC.

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

public class FieldToc : Field

Constructores

NombreDescripción
FieldToc()Constructor predeterminado

Propiedades

NombreDescripción
BookmarkName { get; set; }Obtiene o establece el nombre del marcador que marca la parte del documento utilizada para crear la tabla.
CaptionlessTableOfFiguresLabel { get; set; }Obtiene o establece el nombre del identificador de secuencia utilizado al crear una tabla de figuras que no incluye la etiqueta y el número del título .
CustomStyles { get; set; }Obtiene o establece una lista de estilos distintos de los estilos de encabezado integrados para incluirlos en la tabla de contenido.
DisplayResult { get; }Obtiene el texto que representa el resultado del campo mostrado.
End { get; }Obtiene el nodo que representa el final del campo.
EntryIdentifier { get; set; }Obtiene o establece una cadena que debe coincidir con los identificadores de tipo de los campos TC que se incluyen.
EntryLevelRange { get; set; }Obtiene o establece un rango de niveles de las entradas de la tabla de contenido que se incluirán.
EntrySeparator { get; set; }Obtiene o establece una secuencia de caracteres que separan una entrada y su número de página.
Format { get; }Obtiene unFieldFormat objeto que proporciona acceso escrito al formato del campo.
HeadingLevelRange { get; set; }Obtiene o establece un rango de niveles de encabezado para incluir.
HideInWebLayout { get; set; }Obtiene o establece si se deben ocultar el líder de pestaña y los números de página en la vista de diseño web.
InsertHyperlinks { get; set; }Obtiene o establece si las entradas de la tabla de contenido deben ser hipervínculos.
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.
PageNumberOmittingLevelRange { get; set; }Obtiene o establece un rango de niveles de las entradas de la tabla de contenido de las cuales se omiten los números de página.
PrefixedSequenceIdentifier { get; set; }Obtiene o establece el identificador de una secuencia para la cual se debe agregar un prefijo al número de página de la entrada.
PreserveLineBreaks { get; set; }Obtiene o establece si se deben conservar los caracteres de nueva línea dentro de las entradas de la tabla.
PreserveTabs { get; set; }Obtiene o establece si se deben conservar las entradas de tabulación dentro de las entradas de la tabla.
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 .
SequenceSeparator { get; set; }Obtiene o establece la secuencia de caracteres que se utiliza para separar los números de secuencia y los números de página.
Start { get; }Obtiene el nodo que representa el inicio del campo.
TableOfFiguresLabel { get; set; }Obtiene o establece el nombre del identificador de secuencia utilizado al crear una tabla de figuras.
virtual Type { get; }Obtiene el tipo de campo de Microsoft Word.
UseParagraphOutlineLevel { get; set; }Obtiene o establece si se debe utilizar el nivel de esquema de párrafo aplicado.

Métodos

NombreDescripción
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.
UpdatePageNumbers()Actualiza los números de página de los elementos de esta tabla de contenido.

Observaciones

Crea una tabla de contenido (que también puede ser una tabla de figuras) usando las entradas especificadas por los campos TC, sus niveles de encabezado y estilos especificados, e inserta esa tabla en este lugar del documento.

Ejemplos

Muestra cómo insertar una tabla de contenido y completarla con entradas basadas en estilos de título.

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

    builder.StartBookmark("MyBookmark");

    // Inserte un campo TOC, que compilará todos los títulos en una tabla de contenido.
    // Para cada encabezado, este campo creará una línea con el texto en ese estilo de encabezado a la izquierda,
    // y la página en la que aparece el encabezado a la derecha.
    FieldToc field = (FieldToc)builder.InsertField(FieldType.FieldTOC, true);

    // Usa la propiedad BookmarkName para enumerar solo los encabezados
    // que aparecen dentro de los límites de un marcador con el nombre "MiMarcador".
    field.BookmarkName = "MyBookmark";

    // El texto con un estilo de título incorporado, como "Título 1", aplicado contará como un título.
    // Podemos nombrar estilos adicionales que el TOC seleccionará como encabezados en esta propiedad y sus niveles de TOC.
    field.CustomStyles = "Quote; 6; Intense Quote; 7";

    // De forma predeterminada, los niveles de estilos/TOC están separados en la propiedad CustomStyles por una coma.
    // pero podemos establecer un delimitador personalizado en esta propiedad.
    doc.FieldOptions.CustomTocStyleSeparator = ";";

    // Configure el campo para excluir cualquier título que tenga niveles de TOC fuera de este rango.
    field.HeadingLevelRange = "1-3";

    // El TOC no mostrará los números de página de los encabezados cuyos niveles de TOC estén dentro de este rango.
    field.PageNumberOmittingLevelRange = "2-5";

     // Establece una cadena personalizada que separará cada título de su número de página.
    field.EntrySeparator = "-";
    field.InsertHyperlinks = true;
    field.HideInWebLayout = false;
    field.PreserveLineBreaks = true;
    field.PreserveTabs = true;
    field.UseParagraphOutlineLevel = false;

    InsertNewPageWithHeading(builder, "First entry", "Heading 1");
    builder.Writeln("Paragraph text.");
    InsertNewPageWithHeading(builder, "Second entry", "Heading 1");
    InsertNewPageWithHeading(builder, "Third entry", "Quote");
    InsertNewPageWithHeading(builder, "Fourth entry", "Intense Quote");

    // Se omitirán los números de página de estos dos encabezados porque están dentro del rango "2-5".
    InsertNewPageWithHeading(builder, "Fifth entry", "Heading 2");
    InsertNewPageWithHeading(builder, "Sixth entry", "Heading 3");

    // Esta entrada no aparece porque el "Título 4" está fuera del rango "1-3" que establecimos anteriormente.
    InsertNewPageWithHeading(builder, "Seventh entry", "Heading 4");

    builder.EndBookmark("MyBookmark");
    builder.Writeln("Paragraph text.");

    // Esta entrada no aparece porque está fuera del marcador especificado por el TOC.
    InsertNewPageWithHeading(builder, "Eighth entry", "Heading 1");

    Assert.AreEqual(" TOC  \\b MyBookmark \\t \"Quote; 6; Intense Quote; 7\" \\o 1-3 \\n 2-5 \\p - \\h \\x \\w", field.GetFieldCode());

    field.UpdatePageNumbers();
    doc.UpdateFields();
    doc.Save(ArtifactsDir + "Field.TOC.docx");
}

/// <summary>
/// Comienza una nueva página e inserta un párrafo de un estilo específico.
/// </summary>
public void InsertNewPageWithHeading(DocumentBuilder builder, string captionText, string styleName)
{
    builder.InsertBreak(BreakType.PageBreak);
    string originalStyle = builder.ParagraphFormat.StyleName;
    builder.ParagraphFormat.Style = builder.Document.Styles[styleName];
    builder.Writeln(captionText);
    builder.ParagraphFormat.Style = builder.Document.Styles[originalStyle];
}

Muestra cómo completar un campo TOC con entradas utilizando campos SEQ.

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Un campo TOC puede crear una entrada en su tabla de contenido para cada campo SEQ que se encuentra en el documento.
// Cada entrada contiene el párrafo que incluye el campo SEQ y el número de página en la que aparece el campo.
FieldToc fieldToc = (FieldToc)builder.InsertField(FieldType.FieldTOC, true);

// Los campos SEQ muestran un recuento que se incrementa en cada campo SEQ.
// Estos campos también mantienen recuentos separados para cada secuencia con nombre única
// identificado por la propiedad "SequenceIdentifier" del campo SEQ.
// Utilice la propiedad "TableOfFiguresLabel" para nombrar una secuencia principal para el TOC.
// Ahora, este TOC solo creará entradas a partir de campos SEQ con su "SequenceIdentifier" establecido en "MySequence".
fieldToc.TableOfFiguresLabel = "MySequence";

// Podemos nombrar otra secuencia de campos SEQ en la propiedad "PrefixedSequenceIdentifier".
 // Los campos SEQ de esta secuencia de prefijo no crearán entradas TOC.
// Cada entrada TOC creada a partir de un campo SEQ de secuencia principal ahora también mostrará el recuento que
// la secuencia de prefijo está actualmente activada en el campo SEQ de secuencia primaria que realizó la entrada.
fieldToc.PrefixedSequenceIdentifier = "PrefixSequence";

// Cada entrada TOC mostrará el recuento de secuencia de prefijo inmediatamente a la izquierda
// del número de página en la que aparece el campo SEQ de secuencia principal.
// Podemos especificar un separador personalizado que aparecerá entre estos dos números.
fieldToc.SequenceSeparator = ">";

Assert.AreEqual(" TOC  \\c MySequence \\s PrefixSequence \\d >", fieldToc.GetFieldCode());

builder.InsertBreak(BreakType.PageBreak);

// Hay dos formas de utilizar los campos SEQ para completar este TOC.
// 1 - Insertar un campo SEQ que pertenece a la secuencia de prefijos del TOC:
// Este campo incrementará el recuento de secuencia SEQ para "PrefixSequence" en 1.
// Dado que este campo no pertenece a la secuencia principal identificada
// por la propiedad "TableOfFiguresLabel" del TOC, no aparecerá como una entrada.
FieldSeq fieldSeq = (FieldSeq)builder.InsertField(FieldType.FieldSequence, true);
fieldSeq.SequenceIdentifier = "PrefixSequence";
builder.InsertParagraph();

Assert.AreEqual(" SEQ  PrefixSequence", fieldSeq.GetFieldCode());

// 2 - Insertar un campo SEQ que pertenece a la secuencia principal del TOC:
// Este campo SEQ creará una entrada en el TOC.
// La entrada TOC contendrá el párrafo en el que se encuentra el campo SEQ y el número de la página en la que aparece.
// Esta entrada también mostrará el recuento en el que se encuentra actualmente la secuencia de prefijo,
// separado del número de página por el valor en la propiedad SeqenceSeparator del TOC.
// El recuento de "PrefixSequence" está en 1, este campo SEQ de secuencia principal está en la página 2,
// y el separador es ">", por lo que la entrada mostrará "1>2".
builder.Write("First TOC entry, MySequence #");
fieldSeq = (FieldSeq)builder.InsertField(FieldType.FieldSequence, true);
fieldSeq.SequenceIdentifier = "MySequence";

Assert.AreEqual(" SEQ  MySequence", fieldSeq.GetFieldCode());

// Inserte una página, avance la secuencia del prefijo en 2 e inserte un campo SEQ para crear una entrada TOC posteriormente.
// La secuencia de prefijo ahora está en 2 y el campo SEQ de secuencia principal está en la página 3,
// para que la entrada TOC muestre "2>3" en el recuento de páginas.
builder.InsertBreak(BreakType.PageBreak);
fieldSeq = (FieldSeq)builder.InsertField(FieldType.FieldSequence, true);
fieldSeq.SequenceIdentifier = "PrefixSequence";
builder.InsertParagraph();
fieldSeq = (FieldSeq)builder.InsertField(FieldType.FieldSequence, true);
builder.Write("Second TOC entry, MySequence #");
fieldSeq.SequenceIdentifier = "MySequence";

doc.UpdateFields();
doc.Save(ArtifactsDir + "Field.TOC.SEQ.docx");

Ver también