Trabajar con la Tabla de Contenido
A menudo, trabajará con documentos que contengan una tabla de contenido (TOC). Usando Aspose.Words puede insertar su propia tabla de contenido o reconstruir completamente la tabla de contenido existente en el documento usando solo unas pocas líneas de código.
Este artículo describe cómo trabajar con el campo tabla de contenido y demuestra:
- Cómo insertar un TOC nuevo.
- Actualice TOCs nuevo o existente en el documento.
- Especifique modificadores para controlar el formato y la estructura general del TOC.
- Cómo modificar los estilos y la apariencia de la tabla de contenido.
- Cómo eliminar un campo
TOC
completo junto con todas las entradas del documento.
Insertar Tabla de Contenido mediante Programación
Puede insertar un campo TOC
(tabla de contenido) en el documento en la posición actual llamando al método InsertTableOfContents.
Una tabla de contenido en un documento de Word se puede crear de varias maneras y formatearse usando una variedad de opciones. Los interruptores de campo que pasa al método controlan la forma en que se crea y se muestra la tabla en su documento.
Los modificadores predeterminados que se utilizan en un TOC
insertado en Microsoft Word son "\o “1-3 \h \z \u”. Las descripciones de estos conmutadores, así como una lista de conmutadores compatibles, se pueden encontrar más adelante en el artículo. Puede usar esa guía para obtener los interruptores correctos o, si ya tiene un documento que contiene el TOC
similar que desea, puede mostrar los códigos de campo (ALT+F9) y copiar los interruptores directamente desde el campo.
El siguiente ejemplo de código muestra cómo insertar un campo de tabla de contenido en un documento:
El siguiente ejemplo de código demuestra cómo insertar una tabla de contenido (TOC) en un documento utilizando estilos de encabezado como entradas:
El código demuestra que la nueva tabla de contenido se inserta en un documento en blanco. La clase DocumentBuilder se usa luego para insertar un formato de contenido de muestra con los estilos de encabezado apropiados que se usan para marcar el contenido que se incluirá en TOC. Las siguientes líneas luego completan TOC
actualizando los campos y el diseño de página del documento.
TOC
, pero sin contenido visible. Esto se debe a que el campo TOC
se insertó pero aún no se completa hasta que se actualice en el documento. Más información sobre esto se analiza en la siguiente sección.
Actualizar Tabla de Contenido
Aspose.Words le permite actualizar completamente un TOC
con solo unas pocas líneas de código. Esto se puede hacer para rellenar un TOC
recién insertado o para actualizar un TOC
existente después de que se hayan realizado cambios en el documento.
Se deben utilizar los dos métodos siguientes para actualizar los campos TOC
en el documento:
Tenga en cuenta que es necesario llamar a estos dos métodos de actualización en ese orden. Si se invierte, se completará la tabla de contenido, pero no se mostrarán los números de página. Se puede actualizar cualquier número de TOCs diferentes. Estos métodos actualizarán automáticamente todos los TOCs encontrados en el documento.
El siguiente ejemplo de código muestra cómo reconstruir completamente los campos TOC
en el documento invocando actualizaciones de campo:
La primera llamada a Document.updateFields() generará TOC
, se completarán todas las entradas de texto y TOC
aparecerá casi completo. Lo único que falta son los números de página que por ahora se muestran con “?”.
La segunda llamada a Document.updatePageLayout() creará el diseño del documento en la memoria. Esto debe hacerse para recopilar los números de página de las entradas. Los números de página correctos calculados a partir de esta llamada se insertan luego en TOC.
Utilice Interruptores para Controlar el Comportamiento de la Tabla de Contenido
Al igual que con cualquier otro campo, el campo TOC
puede aceptar modificadores definidos dentro del código de campo que controla cómo se crea la tabla de contenido. Ciertos interruptores se usan para controlar qué entradas se incluyen y a qué nivel, mientras que otros se usan para controlar la apariencia del TOC. Los interruptores se pueden combinar entre sí para permitir que se produzca una tabla de contenido compleja.
De forma predeterminada, estos modificadores anteriores se incluyen al insertar un TOC
predeterminado en el documento. Un TOC
sin modificadores incluirá contenido de los estilos de encabezado incorporados (como si el modificador \O estuviera configurado).
Los modificadores TOC
disponibles que son compatibles con Aspose.Words se enumeran a continuación y sus usos se describen en detalle. Se pueden dividir en secciones separadas según su tipo. Los interruptores de la primera sección definen qué contenido incluir en TOC
y los interruptores de la segunda sección controlan la apariencia de TOC.
Si un conmutador no aparece en la lista aquí, entonces actualmente no es compatible. Todos los conmutadores serán compatibles en futuras versiones. Estamos agregando más soporte a cada lanzamiento.
Interruptores de Marcado de Entrada
Interruptor | Descripción |
---|---|
Heading Styles * (\O Interruptor)* |
Este modificador define que
|
Outline Levels * (Interruptor\U)* |
Cada párrafo puede definir un nivel de esquema en Opciones de párrafo.
Tenga en cuenta que los estilos de encabezado integrados, como Heading 1, tienen un nivel de esquema obligatorio establecido en configuración de estilo.
|
Custom Styles * (\T interruptor)* |
Este modificador permitirá utilizar estilos personalizados al recopilar entradas que se utilizarán en TOC. Esto se usa a menudo junto con el modificador \O para incluir estilos personalizados junto con estilos de encabezado integrados en TOC.
usará contenido con estilo CustomHeading1 como contenido de nivel 1 en |
Utilice TC Campos * (Interruptores \F y \ L)* |
En versiones anteriores de Microsoft Word, la única forma de crear un Estos campos se pueden insertar en un documento en cualquier posición como cualquier otro campo y están representados por la enumeración
solo incluirá TC campos como
El campo
– \ F-Explicado anteriormente. – \ L-Define en qué nivel del - |
Interruptores Relacionados con la Apariencia
Interruptor | Descripción |
---|---|
Omit Page Numbers * (\N Interruptor)* |
Este modificador se usa para ocultar los números de página de ciertos niveles de TOC. Por ejemplo, puede definir
y los números de página en las entradas de los niveles 3 y cuatro estarán ocultos junto con los puntos de referencia (si los hay). Para especificar solo un nivel, aún se debe usar un rango, por ejemplo, “1-1” excluirá los números de página solo para el primer nivel. |
Insertar Como Hipervínculos * (Interruptor\H)* |
Este modificador especifica que las entradas |
Set Separator Character * (Interruptor \ P)* |
Este modificador permite cambiar fácilmente el contenido que separa el título de la entrada y la numeración de las páginas en TOC. El separador a utilizar debe especificarse después de este interruptor y encerrarse en marcas de voz. |
Preserve Tab Entries * (Interruptor\W)* |
El uso de este modificador especificará que cualquier entrada que tenga un carácter de tabulación, por ejemplo, un encabezado que tenga una tabulación al final de la línea, se mantendrá como un carácter de tabulación adecuado al completar TOC. Esto significa que la función del carácter de tabulación estará presente en |
Preserve New Line Entries * (\X Interruptor)* |
De manera similar al modificador anterior, este modificador especifica que los encabezados que abarcan varias líneas (utilizando caracteres de nueva línea, no párrafos separados) se conservarán tal como están en el TOC generado. Por ejemplo, un encabezado que se distribuirá en varias líneas puede usar el carácter de nueva línea (Ctrl + Enter o |
Insertar TC campos
Puede insertar un nuevo campo TC en la posición actual del DocumentBuilder
llamando al método DocumentBuilder.InsertField
y especificando el nombre del campo como “TC " junto con los modificadores necesarios.
El siguiente ejemplo de código muestra cómo insertar un campo TC
en el documento usando DocumentBuilder.
A menudo, se designa una línea específica de texto para el TOC
y se marca con un campo TC
. La forma más sencilla de hacer esto en MS Word es resaltar el texto y presionar ALT+SHIFT+O. Esto crea automáticamente un campo TC
con el texto seleccionado. La misma técnica se puede lograr a través del código. El siguiente código encontrará texto que coincida con la entrada e insertará un campo TC
en la misma posición que el texto. El código se basa en la misma técnica utilizada en el artículo. El siguiente ejemplo de código muestra cómo buscar e insertar un campo TC
en el texto de un documento.
Modificar una Tabla de Contenido
Cambiar el Formato de los Estilos
El formato de las entradas en TOC
no utiliza los estilos originales de las entradas marcadas, sino que cada nivel se formatea utilizando un estilo TOC
equivalente. Por ejemplo, el primer nivel en TOC
está formateado con el estilo TOC1, el segundo nivel formateado con el estilo TOC2 y así sucesivamente. Esto significa que para cambiar el aspecto de los TOC
estos estilos deben modificarse. En Aspose.Words, estos estilos están representados por StyleIdentifier.TOC1
independiente de la configuración regional hasta StyleIdentifier.TOC9
y se pueden recuperar de la colección Document.Styles
utilizando estos identificadores.
Una vez que se haya recuperado el estilo apropiado del documento, se puede modificar el formato de este estilo. Cualquier cambio en estos estilos se reflejará automáticamente en el TOCs del documento.
El siguiente ejemplo de código cambia una propiedad de formato utilizada en el estilo TOC
de primer nivel.
También es útil tener en cuenta que cualquier formato directo de un párrafo (definido en el párrafo mismo y no en el estilo) marcado para incluirse en TOC
se copiará en la entrada en TOC. Por ejemplo, si se usa el estilo Heading 1 para marcar el contenido del TOC
y este estilo tiene formato en negrita, mientras que el párrafo también tiene formato en cursiva aplicado directamente. La entrada TOC
resultante no estará en negrita, ya que es parte del formato de estilo, sin embargo, estará en cursiva, ya que está formateada directamente en el párrafo.
También puede controlar el formato de los separadores utilizados entre cada entrada y el número de página. De forma predeterminada, se trata de una línea de puntos que se extiende por la numeración de la página utilizando un carácter de tabulación y un tabulador derecho alineado cerca del margen derecho.
Usando la clase Style
recuperada para el nivel TOC
particular que desea modificar, también puede modificar cómo aparecen en el documento.
Para cambiar cómo aparece esto, primero se debe llamar a Style.ParagraphFormat
para recuperar el formato de párrafo del estilo. Desde aquí, se pueden recuperar las tabulaciones llamando a ParagraphFormat.TabStops
y modificando la tabulación correspondiente. Usando esta misma técnica, la pestaña en sí misma se puede mover o eliminar por completo.
El siguiente ejemplo de código muestra cómo modificar la posición del tabulador derecho en TOC
párrafos relacionados.
Eliminar una Tabla de contenido del documento
Se puede eliminar una tabla de contenido del documento eliminando todos los nodos que se encuentran entre los nodos FieldStart
y FieldEnd del campo TOC
.
El código a continuación demuestra esto. La eliminación del campo TOC
es más simple que un campo normal, ya que no hacemos un seguimiento de los campos anidados. En su lugar, verificamos que el nodo FieldEnd
sea de tipo FieldType.FieldTOC
, lo que significa que hemos encontrado el final del TOC actual. Esta técnica se puede utilizar en este caso sin preocuparse por los campos anidados, ya que podemos suponer que cualquier documento formado correctamente no tendrá un campo TOC
completamente anidado dentro de otro campo TOC
.
En primer lugar, se recopilan y almacenan los FieldStart
nodos de cada TOC
. Luego se enumera el TOC
especificado para que se visiten y almacenen todos los nodos dentro del campo. Luego, los nodos se eliminan del documento. El siguiente ejemplo de código muestra cómo eliminar un TOC
especificado de un documento.
Extraer Tabla de Contenido
Si desea extraer una tabla de contenido de cualquier documento de Word, se puede utilizar el siguiente ejemplo de código.