Trabajando con Campos de Índice y Tablas

Trabajando con Campos de Índice y Tablas

Trabajando con campos de Índice y Tablas

Esta guía muestra cómo trabajar con la familia de campos “Index and Tables” de Word — los campos detrás de una tabla de contenido, un índice, una tabla de figuras y una tabla de autoridades. Cada uno de estos es una subclase Field en el espacio de nombres Aspose.Words.Fields: FieldToc (tabla de contenido o figuras), FieldIndex (índice), FieldXE (entrada de índice), FieldToa (tabla de autoridades), FieldTA (entrada de tabla de autoridades, o cita), FieldTC (entrada de tabla de contenido), y FieldRD (documento referenciado, para crear un índice o tabla de contenido combinada a través de varios archivos).


La clase base de campo

Cada clase de campo en esta familia hereda de Field, que expone Start, Separator y End (los nodos FieldStart, FieldSeparator y FieldEnd que delimitan el campo en el flujo de ejecución), Type (un valor FieldType — FieldTOC, FieldIndex, FieldTOA, FieldTOCEntry, FieldIndexEntry, FieldTOAEntry o FieldRefDoc para esta familia), Result/DisplayResult (el texto actualmente calculado del campo), IsLocked y IsDirty, y los métodos GetFieldCode(), Update(), Unlink() y Remove(). Update() recalcula el resultado del campo; para una tabla de contenido, eso significa reconstruir la lista de entradas a partir de los encabezados del documento o marcadores FieldTC.

Insertando una tabla de contenido

DocumentBuilder.InsertTableOfContents(switches) inserta un FieldToc en la posición actual del constructor, usando una cadena de conmutadores de campo de Word (por ejemplo "\o \"1-3\" \h \z \u") para controlar qué niveles de encabezado se incluyen y cómo se formatea el resultado — los mismos conmutadores que Word escribe al insertar una tabla de contenido a través de la interfaz. Una vez insertado, FieldToc.UpdatePageNumbers() recalcula la porción de número de página de las entradas existentes. FieldToc también expone propiedades que controlan directamente la estructura de la tabla de contenido: HeadingLevelRange y EntryLevelRange (qué niveles de esquema se incluyen), EntryIdentifier (el identificador de campo TC que la tabla de contenido debe recopilar, para crear múltiples tablas de contenido a partir de diferentes marcadores FieldTC), InsertHyperlinks, PreserveTabs/PreserveLineBreaks, EntrySeparator/SequenceSeparator, BookmarkName, y — para una tabla de figuras en lugar de una tabla de contenido — TableOfFiguresLabel y CaptionlessTableOfFiguresLabel.

Marcando entradas personalizadas de tabla de contenido

No todas las entradas del índice (TOC) provienen de un estilo de encabezado. FieldTC marca una ubicación específica como una entrada de tabla de contenido independiente del estilo de párrafo: FieldTC.Text es el texto de la entrada, EntryLevel es el nivel de esquema en el que debe aparecer, TypeIdentifier lo vincula a un FieldToc.EntryIdentifier al crear más de un índice, y OmitPageNumber suprime el número de página para esa entrada.

Crear un índice

FieldIndex implementa el campo INDEX, que compila los marcadores de FieldXE (entrada de índice) de un documento en un índice alfabético. FieldXE.Text es el texto de la entrada, EntryType agrupa entradas en subniveles usando sintaxis separada por dos puntos, PageRangeBookmarkName marca un marcador cuyo alcance se convierte en un rango de páginas en el índice en lugar de un solo número de página, y IsBold/IsItalic formatean la referencia de página resultante. En el lado FieldIndex, Heading inserta separadores de encabezado de letra (A, B, C…), LetterRange restringe el índice a un subconjunto del alfabeto, RunSubentriesOnSameLine controla el diseño de subentradas, y PageNumberSeparator/PageRangeSeparator/SequenceSeparator/CrossReferenceSeparator controlan la puntuación entre una entrada y su referencia de página. FieldIndexFormat enumera por separado los estilos visuales integrados de índice de Word (Template, Classic, Fancy, Modern, Bulleted, Formal, Simple).

Tabla de autoridades

FieldToa y FieldTA son el equivalente de autoridades de FieldIndex/FieldXE: FieldTA marca una cita en el texto (LongCitation y ShortCitation texto, EntryCategory para agruparla bajo un encabezado como “Casos” o “Estatutos”, y IsBold/IsItalic para el formato), y FieldToa compila esas citas en una tabla, con EntryCategory seleccionando qué categoría compilar, UseHeading y UsePassim controlando los encabezados de categoría y la convención “passim” para fuentes citadas muchas veces, y PageRangeSeparator/PageNumberListSeparator/SequenceSeparator/EntrySeparator/RemoveEntryFormatting controlando el diseño.

Referenciando contenido de otros documentos

FieldRD implementa el campo RD, que indica a un campo de TOC, índice o tabla de autoridades que incluya entradas de otro archivo al compilar — FieldRD.FileName es el documento referenciado, y IsPathRelative controla si esa ruta se resuelve de forma relativa al documento actual.


Consejos y mejores prácticas

  • Construya la cadena de conmutación del TOC de la misma manera que lo hace Word (\o "1-3" \h \z \u) en lugar de configurar cada propiedad FieldToc individualmente, y luego ajuste solo las propiedades específicas que necesite cambiar después.
  • Ejecute FieldToc.UpdatePageNumbers() (o Field.Update()) después de los cambios de contenido para que un TOC, índice o tabla de autoridades refleje el documento actual en lugar de resultados obsoletos de cuando se insertó.
  • Utilice FieldTC.TypeIdentifier junto con FieldToc.EntryIdentifier cuando un documento necesite más de un TOC (por ejemplo, un TOC principal y una tabla de figuras separada) construido a partir de diferentes conjuntos de entradas.
  • Establezca FieldXE.PageRangeBookmarkName (o la marca de rango equivalente de FieldTA) en lugar de formatear manualmente un rango de páginas en el texto de la entrada, de modo que el índice/tabla permanezca coherente si el contenido se desplaza.
  • Recuerde que los números de página en los resultados de INDEX/TOC/TOA de esta edición se evalúan como valores de marcador de posición en lugar de números de página reales, ya que el diseño de página y la paginación no forman parte de esta edición.

Problemas comunes

ProblemaCausaSolución
Una tabla de contenidos no incluye los encabezados esperadosLa cadena de conmutación del TOC (o HeadingLevelRange) excluye esos niveles de esquemaAjuste los interruptores pasados a InsertTableOfContents o establezca FieldToc.HeadingLevelRange
Una entrada de índice no aparece donde se esperaEl marcador FieldXE correspondiente falta, o su sintaxis de subnivel EntryType no coincide con lo que FieldIndex esperaConfirme que los marcadores FieldXE existan y que sus valores EntryType estén formateados de manera consistente
Los resultados del campo parecen obsoletos después de editar el contenidoEl campo no se actualizó después de la ediciónLlame a Update() en el campo (o UpdateFields() en el Document)
Las entradas de otro documento no se incluyen al compilarNo existe FieldRD que haga referencia a ese documento, o IsPathRelative no coincide con la forma en que la ruta debería resolverseAgregue un FieldRD con la configuración correcta de FileName y IsPathRelative

FAQ

¿Cómo inserto una tabla de contenidos programáticamente?

Llame a DocumentBuilder.InsertTableOfContents(switches) con una cadena de conmutación al estilo de Word, como "\o \"1-3\" \h \z \u", en la posición donde debe aparecer el TOC.

¿Cómo marco un texto como una entrada de índice?

Inserte un campo FieldXE en esa ubicación (por ejemplo mediante DocumentBuilder.InsertField) con su propiedad Text establecida al texto de la entrada; FieldIndex compila todos los marcadores FieldXE del documento en el resultado del índice.

¿Cuál es la diferencia entre FieldTC y las entradas de TOC basadas en encabezados?

El comportamiento predeterminado del TOC de Word recopila entradas de los párrafos que usan estilos de encabezado. FieldTC le permite marcar una ubicación arbitraria como una entrada de TOC independiente del estilo de párrafo, que FieldToc puede incluir mediante la coincidencia de los valores EntryIdentifier/TypeIdentifier.

¿Cómo actualizo un TOC o índice después de que el documento cambie?

Llame a Update() sobre el campo específico (por ejemplo FieldToc.Update(), o FieldToc.UpdatePageNumbers() solo para números de página), o Document.UpdateFields() para actualizar todos los campos del documento.

¿Puedo compilar un TOC o índice a través de varios documentos?

Sí — inserte un campo FieldRD que apunte a cada documento adicional a través de FileName; el campo de compilación (FieldToc, FieldIndex o FieldToa) incluye entradas de los documentos referenciados cuando se actualiza.


API Reference Resumen

Clase/MétodoDescripción
FieldClase base para todos los tipos de campo, incluidos Start/Separator/End, Type, Update()
DocumentBuilder.InsertTableOfContents(switches)Inserte un FieldToc usando conmutadores de TOC al estilo Word
FieldTocImplementa el campo TOC (tabla de contenido o tabla de figuras)
FieldTCMarca una entrada de tabla de contenido personalizada en una ubicación específica
FieldIndexImplementa el campo INDEX, compilando los marcadores FieldXE
FieldXEMarca una ubicación como una entrada de índice
FieldToaImplementa el campo table-of-authorities, compilando los marcadores FieldTA
FieldTAMarca una cita para una tabla de autoridades
FieldRDHace referencia al contenido de otro documento al compilar una TOC, índice o tabla de autoridades
FieldIndexFormatEnumeración de los estilos visuales de índice incorporados en Word

Ver también

 Español