Nummerierungsfelder (AUTONUM, PAGE, SEQ und Mehr)
Nummerierungsfelder (AUTONUM, PAGE, SEQ und Weitere)
Dieser Leitfaden zeigt, wie man mit den automatischen Nummerierungsfeldern von Word in Aspose.Words FOSS für .NET, und wie sie sich von listenbasierter Nummerierung unterscheiden. Arbeiten mit Listen covers List, ListFormat, und ListLevel – das Objektmodell hinter den nummerierten und Aufzählungslisten-Absätzen von Word. Word hat außerdem eine separate Familie von Nummerierung fields die eine Nummer an der Feldposition im Text berechnen, anstatt über die Absatzlistenformatierung: juristische und Gliederungs-Auto-Nummerierung, Seiten- und Abschnittszähler, listenverbundene Nummerierung und benannte Sequenzen. Sie modelliert jede als ein Field Unterklasse in der Aspose.Words.Fields Namespace, plus dem NumberStyle Enum, das von Listenebenen, Fußnoten und Endnoten sowie Seitenzahlen gemeinsam genutzt wird, um zu bestimmen, wie eine Zahl dargestellt wird.
Auto-Nummerierungsfelder: AUTONUM, AUTONUMLGL, AUTONUMOUT
FieldAutoNum implementiert das AUTONUM Feld (einfache sequenzielle Nummerierung) und stellt bereit SeparatorCharacter. FieldAutoNumLgl implements AUTONUMLGL (legal/outline-style numbering), fügt hinzu RemoveTrailingPeriod neben seinem eigenen SeparatorCharacter. FieldAutoNumOut implements AUTONUMOUT (outline numbering) und hat keine eigenen Eigenschaften über die Basis hinaus Field Mitglieder, die in Arbeiten mit Feldern.
Listenverbundene Nummerierung mit FieldListNum
FieldListNum implementiert das LISTNUM Feld: ListName benennt die zu verwendende abstrakte Nummerierungsdefinition, und HasListName gibt an, ob der Feldcode tatsächlich einen Namen liefert. ListLevel überschreibt die Standard-Listenebene, auf der das Feld nummeriert, und StartingNumber legt den Wert fest, von dem die Feldnummerierung beginnt.
Seiten- und Abschnittszähler: FieldPage, FieldSection, FieldSectionPages
FieldPage implementiert das PAGE Feld und FieldSectionPages implements SECTIONPAGES. Beide hängen vom berechneten Seitenlayout ab, um ein Ergebnis zu erzeugen; wie beim NUMPAGES Feld beschrieben in Arbeiten mit Feldern, layoutabhängige Feldwerte werden in dieser Ausgabe nicht berechnet, da sie keine Seitenlayout-/Rendering-Engine enthält, sodass diese Felder zu einem Platzhalter ausgewertet werden 0. FieldSection implements SECTION, gibt die aktuelle Abschnittsnummer des Dokuments zurück – sie hängt nicht von der Seitennummerierung ab und ist von dieser Einschränkung nicht betroffen.
Benannte Sequenzen mit FieldSeq
FieldSeq implementiert das SEQ-Feld für benannte, unabhängig nummerierte Sequenzen (wie Abbildungen oder Tabellen): SequenceIdentifier benennt die Sequenz, und BookmarkName weist das Feld optional auf ein Element an anderer Stelle im Dokument hin, anstatt auf den eigenen Ort des Feldes. InsertNextNumber fügt die nächste Nummer in der Sequenz ein, ohne einen Wert für die aktuelle Position anzuzeigen, und ResetNumber / ResetHeadingLevel setzen den Zähler der Sequenz auf eine bestimmte Zahl zurück oder starten ihn bei einer bestimmten Überschriftenebene neu.
FieldRevNum
FieldRevNum implementiert das REVNUM-Feld und hat keine eigenen Eigenschaften außer den Basis-Field-Mitgliedern.
Zahlen formatieren mit NumberStyle
NumberStyle ist das Enum, das über Listenniveaus, Fuß-/Endnoten-Nummerierung und Seitenzahlen hinweg verwendet wird, um auszuwählen, wie eine Zahl dargestellt wird. Gängige Stile umfassen Arabic, UppercaseRoman / LowercaseRoman, UppercaseLetter / LowercaseLetter, Ordinal und OrdinalText, zusammen mit einer großen Menge lokalspezifischer Stile (Kanji, Hangul, Hanja, ThaiLetter, HindiLetter1 und vielen anderen) sowie Bullet, LeadingZero, None und Custom für ein vom Aufrufer bereitgestelltes Format.
Tipps und bewährte Vorgehensweisen
- Verwenden Sie
FieldListNum, wenn eine Zahl eine vorhandene Listendefinition per Name referenzieren muss; benutzen SieFieldAutoNum/FieldAutoNumLgl/FieldAutoNumOutfür Nummerierungen, die nicht an ein bestimmtesListgebunden sind. - Denken Sie daran, dass
FieldPageundFieldSectionPageslayoutabhängig sind, genauso wieNUMPAGES– verlassen Sie sich nicht darauf, dass ihrResultin dieser Ausgabe eine tatsächlich berechnete Seitenzahl widerspiegelt. - Verwenden Sie
FieldSeq.BookmarkName, wenn ein SEQ-Feld eine an anderer Stelle im Dokument definierte Zahl referenzieren muss, anstatt seinen eigenen Zähler an der Feldposition zu erhöhen. - Setzen Sie
FieldSeq.ResetHeadingLevel, wenn eine nummerierte Sequenz (wie Abbildungsnummern) bei jedem neuen Kapitel- oder Abschnittsüberschrift neu beginnen soll.
Häufige Probleme
| Problem | Ursache | Lösung |
|---|---|---|
FieldPage oder FieldSectionPages zeigt immer 0 | Diese Felder hängen vom berechneten Seitenlayout ab, das nicht Teil dieser Ausgabe ist | Erwartetes Verhalten – verwenden Sie die kommerzielle Aspose.Words für .NET wenn eine berechnete Seitenzahl erforderlich ist |
FieldListNum verwendet nicht die erwartete Listformatierung | ListName stimmt nicht mit einer im Dokument vorhandenen abstrakten Nummerierungsdefinition überein | Bestätigen Sie den genauen Listennamen, oder prüfen Sie HasListName, um zu sehen, ob der Feldcode überhaupt einen liefert |
FieldSeq-Nummern starten nicht dort, wo sie erwartet werden | ResetNumber oder ResetHeadingLevel wurde nicht im Feld gesetzt, das die Sequenz neu starten sollte | Setzen Sie die entsprechende Reset-Eigenschaft auf diese FieldSeq-Instanz |
FAQ
Was ist der Unterschied zwischen Listennummerierung und diesen Nummerierungsfeldern?
Listennummerierung (List, ListFormat, ListLevel, abgedeckt in Arbeiten mit Listen) formatiert ganze Absätze als Listenelemente. Die Felder auf dieser Seite berechnen eine Nummer an einer bestimmten Stelle im Text – für Sequenzen, Seiten-/Abschnittszähler oder rechtlich-artige Auto-Nummerierung – unabhängig von der Absatzlistenformatierung.
Warum wertet ein PAGE-Feld immer zu 0 aus?
FieldPage hängt vom berechneten Seitenlayout ab, und diese Ausgabe enthält keine Seitenlayout-/Render-Engine – aus demselben Grund wertet NUMPAGES zu einem Platzhalterwert aus.
Wie erstelle ich eine benannte, unabhängig nummerierte Sequenz wie “Abbildung 1”, “Abbildung 2”?
Verwenden Sie FieldSeq mit einem konsistenten SequenceIdentifier (z.B. "Figure") über jede Feldinstanz hinweg; jede Anzeige gibt die nächste Nummer in dieser Sequenz aus.
Wie kann ich steuern, in welchem Zahlen- oder Buchstabenstil eine Nummer dargestellt wird?
Verwenden Sie das NumberStyle-Enum – Werte wie Arabic, UppercaseRoman, LowercaseLetter und OrdinalText wählen den Renderstil aus, zusammen mit Bullet, None und Custom für nicht-numerische oder vom Aufrufer bereitgestellte Formate.
API Reference Zusammenfassung
| Klasse / Enum | Beschreibung |
|---|---|
FieldAutoNum | AUTONUM field; SeparatorCharacter |
FieldAutoNumLgl | AUTONUMLGL field; RemoveTrailingPeriod, SeparatorCharacter |
FieldAutoNumOut | AUTONUMOUT Feld |
FieldListNum | LISTNUM Feld; ListName, HasListName, ListLevel, StartingNumber |
FieldPage | PAGE Feld (layoutabhängig; ergibt 0 in dieser Ausgabe) |
FieldSection | SECTION Feld |
FieldSectionPages | SECTIONPAGES Feld (layoutabhängig; ergibt 0 in dieser Ausgabe) |
FieldSeq | SEQ Feld; SequenceIdentifier, BookmarkName, InsertNextNumber, ResetNumber, ResetHeadingLevel |
FieldRevNum | REVNUM Feld |
NumberStyle | Enum der Zahlenformatierungsstile, die für Listenniveaus, Fußnoten/Endnoten und Seitenzahlen verwendet werden |