Champs de numérotation (AUTONUM, PAGE, SEQ, et plus)
Champs de numérotation (AUTONUM, PAGE, SEQ et plus)
Ce guide montre comment travailler avec les champs de numérotation automatique de Word dans Aspose.Words FOSS pour .NET, et comment ils diffèrent de la numérotation basée sur les listes. Travailler avec les listes covers List, ListFormat, et ListLevel – le modèle d’objet derrière les paragraphes de listes numérotées et à puces de Word. Word possède également une famille distincte de numérotation fields qui calcule un numéro à l’emplacement du champ dans le texte, plutôt que via le formatage de listes de paragraphes : numérotation automatique juridique et de plan, compteurs de pages et de sections, numérotation liée aux listes, et séquences nommées. Elle modélise chacune comme un Field sous-classe dans le Aspose.Words.Fields espace de noms, plus le NumberStyle enum partagé par les niveaux de listes, les notes de bas de page et les notes de fin, ainsi que les numéros de page pour choisir comment un nombre est rendu.
Champs de numérotation automatique: AUTONUM, AUTONUMLGL, AUTONUMOUT
FieldAutoNum implémente le AUTONUM champ (simple sequential numbering) et expose SeparatorCharacter. FieldAutoNumLgl implements AUTONUMLGL (legal/outline-style numbering), ajoutant RemoveTrailingPeriod aux côtés de son propre SeparatorCharacter. FieldAutoNumOut implements AUTONUMOUT (outline numbering) et n’a aucune propriété propre au-delà de la base Field membres décrits dans Travailler avec les champs.
Numérotation liée à une liste avec FieldListNum
FieldListNum implémente le champ LISTNUM: ListName indique la définition de numérotation abstraite à utiliser, et HasListName indique si le code du champ fournit réellement un nom. ListLevel remplace le niveau de liste par défaut auquel le champ numérote, et StartingNumber définit la valeur à partir de laquelle la numérotation du champ commence.
Compteurs de page et de section: FieldPage, FieldSection, FieldSectionPages
FieldPage implémente le PAGE champ et FieldSectionPages implements SECTIONPAGES. Les deux dépendent d’une mise en forme de page calculée pour produire un résultat ; comme avec le NUMPAGES champ décrit dans Travailler avec les champs, les valeurs de champ dépendant de la mise en forme ne sont pas calculées dans cette édition parce qu’elle n’inclut pas de moteur de mise en forme/ rendu, ainsi ces champs évaluent à un espace réservé 0. FieldSection implements SECTION, renvoyant le numéro de section actuel du document — il ne dépend pas de la pagination et n’est pas affecté par cette limitation.
Séquences nommées avec FieldSeq
FieldSeq implémente le champ SEQ pour les séquences nommées, numérotées indépendamment (comme les figures ou les tableaux): SequenceIdentifier nomme la séquence, et BookmarkName pointe éventuellement le champ vers un élément ailleurs dans le document au lieu de l’emplacement du champ lui-même. InsertNextNumber insère le numéro suivant de la séquence sans afficher de valeur pour la position actuelle, et ResetNumber / ResetHeadingLevel réinitialisent le compteur de la séquence à un nombre précis, ou le redémarrent à un niveau de titre donné.
FieldRevNum
FieldRevNum implémente le champ REVNUM, et n’a aucune propriété propre au-delà des membres de base Field.
Mise en forme des nombres avec NumberStyle
NumberStyle est l’énumération utilisée pour les niveaux de listes, la numérotation des notes de bas de page/notes de fin et les numéros de page afin de choisir la façon dont un nombre est rendu. Les styles courants incluent Arabic, UppercaseRoman/LowercaseRoman, UppercaseLetter/LowercaseLetter, Ordinal et OrdinalText, ainsi qu’un vaste ensemble de styles spécifiques à chaque locale (Kanji, Hangul, Hanja, ThaiLetter, HindiLetter1 et bien d’autres) plus Bullet, LeadingZero, None et Custom pour un format fourni par l’appelant.
Conseils et bonnes pratiques
- Utilisez
FieldListNumlorsqu’un nombre doit référencer une définition de liste existante par son nom; utilisezFieldAutoNum/FieldAutoNumLgl/FieldAutoNumOutpour une numérotation qui n’est pas liée à unListparticulier. - Gardez à l’esprit que
FieldPageetFieldSectionPagesdépendent de la mise en page, tout commeNUMPAGES— ne comptez pas sur le fait que leurResultreflète un nombre de pages réellement calculé dans cette édition. - Utilisez
FieldSeq.BookmarkNamelorsqu’un champ SEQ doit référencer un nombre défini ailleurs dans le document plutôt que d’incrémenter son propre compteur à l’emplacement du champ. - Définissez
FieldSeq.ResetHeadingLevellorsqu’une séquence numérotée (comme les numéros de figure) doit redémarrer à chaque nouveau chapitre ou titre de section.
Problèmes courants
| Problème | Cause | Correction |
|---|---|---|
FieldPage ou FieldSectionPages affiche toujours 0 | Ces champs dépendent d’une mise en page calculée, qui ne fait pas partie de cette édition | Comportement attendu — utilisez la version commerciale Aspose.Words pour .NET si un nombre de pages calculé est requis |
FieldListNum n’utilise pas le format de liste attendu | ListName ne correspond pas à une définition de numérotation abstraite présente dans le document | Confirmez le nom exact de la liste, ou vérifiez HasListName pour voir si le code du champ en fournit un. |
Les numéros de FieldSeq ne redémarrent pas là où prévu | ResetNumber ou ResetHeadingLevel n’a pas été défini sur le champ qui doit redémarrer la séquence | Définissez la propriété de réinitialisation appropriée sur cette instance de FieldSeq |
FAQ
Quelle est la différence entre la numérotation de listes et ces champs de numérotation?
Numérotation de liste (List, ListFormat, ListLevel, couvert dans Travailler avec les listes) formate des paragraphes entiers en tant qu’éléments de liste. Les champs de cette page calculent un numéro à un point précis du texte – pour les séquences, les compteurs de page/section, ou la numérotation automatique de style juridique – indépendant du format de liste des paragraphes.
Pourquoi un champ PAGE renvoie-t-il toujours 0?
FieldPage dépend d’une disposition de page calculée, et cette édition ne comprend pas de moteur de rendu de la disposition de page – c’est la même raison pour laquelle NUMPAGES renvoie une valeur factice.
Comment créer une séquence nommée, numérotée indépendamment, comme «Figure1», «Figure2»?
Utilisez FieldSeq avec un SequenceIdentifier cohérent (tel que "Figure") pour chaque instance de champ; chaque instance affiche le numéro suivant de cette séquence.
Comment contrôler le style de chiffre ou de lettre utilisé pour rendre un nombre?
Utilisez l’énumération NumberStyle – des valeurs comme Arabic, UppercaseRoman, LowercaseLetter et OrdinalText sélectionnent le style de rendu, ainsi que Bullet, None et Custom pour des formats non numériques ou fournis par l’appelant.
API Reference Résumé
| Classe / Énumération | Description |
|---|---|
FieldAutoNum | AUTONUM champ ; SeparatorCharacter |
FieldAutoNumLgl | AUTONUMLGL champ ; RemoveTrailingPeriod, SeparatorCharacter |
FieldAutoNumOut | AUTONUMOUT champ |
FieldListNum | LISTNUM champ ; ListName, HasListName, ListLevel, StartingNumber |
FieldPage | PAGE champ (dépendant de la mise en forme ; évalue à 0 dans cette édition) |
FieldSection | SECTION champ |
FieldSectionPages | SECTIONPAGES champ (dépendant de la mise en forme ; évalue à 0 dans cette édition) |
FieldSeq | SEQ champ ; SequenceIdentifier, BookmarkName, InsertNextNumber, ResetNumber, ResetHeadingLevel |
FieldRevNum | REVNUM champ |
NumberStyle | Énumération des styles de rendu des nombres utilisés pour les niveaux de listes, les notes de bas de page/notes de fin et les numéros de page |