Číslování polí (AUTONUM, PAGE, SEQ a další)
Číslovací pole (AUTONUM, PAGE, SEQ a další)
Tento průvodce ukazuje, jak pracovat s automatickými číslovacími poli ve Wordu Aspose.Words FOSS pro .NET, a jak se liší od číslování založeného na seznamech. Práce se seznamy covers List, ListFormat, a ListLevel – objektový model stojící za očíslovanými a odrážkovými odstavci seznamů ve Wordu. Word má také samostatnou rodinu číslování fields které vypočítávají číslo na místě pole v textu, spíše než prostřednictvím formátování odstavcových seznamů: právní a osnovové automatické číslování, počítadla stránek a sekcí, číslování propojené se seznamem a pojmenované sekvence. Modeluje každé jako Field podtřídu v the Aspose.Words.Fields namespace, plus NumberStyle enum sdílený úrovněmi seznamů, poznámkami pod čarou a koncovými poznámkami a čísly stránek pro výběr, jak má být číslo vykresleno.
Pole automatického číslování: AUTONUM, AUTONUMLGL, AUTONUMOUT
FieldAutoNum implementuje AUTONUM pole (jednoduché sekvenční číslování) a vystavuje SeparatorCharacter. FieldAutoNumLgl implements AUTONUMLGL (legal/outline-style numbering), přidává RemoveTrailingPeriod vedle svého vlastního SeparatorCharacter. FieldAutoNumOut implements AUTONUMOUT (outline numbering) a nemá žádné vlastní vlastnosti nad rámec základního Field členy popsanými v Práce s poli.
Číslování propojené se seznamem pomocí FieldListNum
FieldListNum implementuje pole LISTNUM: ListName pojmenovává abstraktní definici číslování, která se má použít, a HasListName uvádí, zda kód pole skutečně poskytuje název. ListLevel přepisuje výchozí úroveň seznamu, na které pole čísluje, a StartingNumber nastavuje hodnotu, od které číslování pole začíná.
Počítadla stránek a sekcí: FieldPage, FieldSection, FieldSectionPages
FieldPage implementuje PAGE pole a FieldSectionPages implements SECTIONPAGES. Oba závisí na vypočteném rozložení stránky, aby vytvořily výsledek; jako u NUMPAGES pole popsané v Práce s poli, hodnoty polí závislé na rozvržení nejsou v této edici vypočítány, protože neobsahuje engine pro rozvržení/rendering stránek, takže tato pole vyhodnocují jako placeholder 0. FieldSection implements SECTION, vrací aktuální číslo sekce dokumentu – nezávisí na stránkování a není tímto omezením ovlivněno.
Pojmenované sekvence s FieldSeq
FieldSeq implementuje pole SEQ pro pojmenované, nezávisle číslované sekvence (např. obrázky nebo tabulky): SequenceIdentifier pojmenuje sekvenci a BookmarkName volitelně nasměruje pole na položku jinde v dokumentu místo na vlastní umístění pole. InsertNextNumber vloží další číslo v sekvenci, aniž by zobrazilo hodnotu pro aktuální pozici, a ResetNumber / ResetHeadingLevel resetují čítač sekvence na konkrétní číslo nebo ji restartují na konkrétní úroveň nadpisu.
FieldRevNum
FieldRevNum implementuje pole REVNUM a nemá žádné vlastní vlastnosti mimo základní členy Field.
Formátování čísel s NumberStyle
NumberStyle je výčtový typ (enum) používaný napříč úrovněmi seznamů, číslováním poznámek pod čarou/koncových poznámek a čísly stránek k výběru způsobu vykreslení čísla. Běžné styly zahrnují Arabic, UppercaseRoman / LowercaseRoman, UppercaseLetter / LowercaseLetter, Ordinal a OrdinalText, spolu s velkou sadou lokálně specifických stylů (Kanji, Hangul, Hanja, ThaiLetter, HindiLetter1 a mnoho dalších) plus Bullet, LeadingZero, None a Custom pro formát dodaný volajícím.
Tipy a osvědčené postupy
- Použijte
FieldListNum, když číslo musí odkazovat na existující definici seznamu podle názvu; použijteFieldAutoNum/FieldAutoNumLgl/FieldAutoNumOutpro číslování, které není svázáno s konkrétnímList. - Pamatujte, že
FieldPageaFieldSectionPagesjsou závislé na rozvržení, stejně jakoNUMPAGES– nespoléhejte se na to, že jejichResultbude odrážet skutečný vypočtený počet stránek v této edici. - Použijte
FieldSeq.BookmarkName, když pole SEQ potřebuje odkazovat na číslo definované jinde v dokumentu místo toho, aby zvyšovalo svůj vlastní čítač na místě pole. - Nastavte
FieldSeq.ResetHeadingLevel, když má číslovaná sekvence (např. čísla obrázků) začít znovu u každé nové kapitoly nebo nadpisu sekce.
Běžné problémy
| Problém | Příčina | Oprava |
|---|---|---|
FieldPage nebo FieldSectionPages vždy zobrazí 0 | Tyto pole závisí na vypočteném rozložení stránky, které není součástí této edice | Očekávané chování – použijte komerční Aspose.Words pro .NET pokud je vyžadován vypočtený počet stránek |
FieldListNum nepoužívá očekávané formátování seznamu | ListName neodpovídá abstraktní definici číslování, která je v dokumentu přítomna | Potvrďte přesný název seznamu, nebo zkontrolujte HasListName, abyste zjistili, zda kód pole vůbec poskytuje nějaký |
Čísla FieldSeq se nerestartují tam, kde se očekává | ResetNumber nebo ResetHeadingLevel nebylo nastaveno na poli, které by mělo sekvenci restartovat | Nastavte příslušnou vlastnost resetu na této FieldSeq instanci |
FAQ
Jaký je rozdíl mezi číslováním seznamu a těmito číslovacími poli?
Číslování seznamu (List, ListFormat, ListLevel, pokryto v Práce se seznamy) formátuje celé odstavce jako položky seznamu. Pole na této stránce vypočítávají číslo na konkrétním místě v textu – pro sekvence, číslování stránek/sekcí nebo právní styl automatického číslování – nezávisle na formátování odstavců v seznamu.
Proč pole PAGE vždy vyhodnocuje na 0?
FieldPage závisí na vypočteném rozložení stránky a tato edice neobsahuje engine pro rozvržení/renderování stránek – stejný důvod, proč NUMPAGES vyhodnocuje na placeholder hodnotu.
Jak vytvořit pojmenovanou, nezávisle číslovanou sekvenci jako „Figure 1“, „Figure 2“?
Použijte FieldSeq s konzistentním SequenceIdentifier (například "Figure") u každé instance pole; každá z nich zobrazí další číslo v této sekvenci.
Jak mohu ovládat, ve kterém číselném nebo písmenovém stylu je číslo vykresleno?
Použijte výčet NumberStyle – hodnoty jako Arabic, UppercaseRoman, LowercaseLetter a OrdinalText vybírají styl vykreslování, spolu s Bullet, None a Custom pro nenumerické nebo uživatelem dodané formáty.
API Reference Shrnutí
| Třída / Enum | Popis: |
|---|---|
FieldAutoNum | AUTONUM pole; SeparatorCharacter |
FieldAutoNumLgl | AUTONUMLGL pole; RemoveTrailingPeriod, SeparatorCharacter |
FieldAutoNumOut | AUTONUMOUT pole |
FieldListNum | LISTNUM pole; ListName, HasListName, ListLevel, StartingNumber |
FieldPage | PAGE pole (závislé na rozložení; vyhodnocuje se na 0 v tomto vydání) |
FieldSection | SECTION pole |
FieldSectionPages | SECTIONPAGES pole (závislé na rozvržení; v této edici se vyhodnocuje na 0) |
FieldSeq | SEQ pole; SequenceIdentifier, BookmarkName, InsertNextNumber, ResetNumber, ResetHeadingLevel |
FieldRevNum | REVNUM pole |
NumberStyle | Výčet stylů číslování používaných úrovněmi seznamů, poznámkami pod čarou/pod koncem a čísly stránek |