Pola numeracji (AUTONUM, PAGE, SEQ i inne)
Pola numeracji (AUTONUM, PAGE, SEQ i inne)
Ten przewodnik pokazuje, jak pracować z polami automatycznego numerowania w Aspose.Words FOSS dla .NET, oraz jak różnią się od numeracji opartej na listach. Praca z listami covers List, ListFormat, oraz ListLevel – model obiektowy stojący za numerowanymi i wypunktowanymi akapitami list w programie Word. Word posiada także oddzielną rodzinę numeracji fields która oblicza numer w miejscu pola w tekście, zamiast poprzez formatowanie listy akapitu: automatyczne numerowanie prawne i konspektowe, liczniki stron i sekcji, numerowanie powiązane z listą oraz nazwane sekwencje. Modeluje każdą z nich jako Field podklasę w Aspose.Words.Fields przestrzeń nazw, plus NumberStyle enumeracja współdzielona przez poziomy list, przypisy i przypisy końcowe oraz numery stron, służąca do wyboru sposobu renderowania liczby.
Pola automatycznej numeracji: AUTONUM, AUTONUMLGL, AUTONUMOUT
FieldAutoNum implementuje AUTONUM pole (proste numerowanie sekwencyjne) i udostępnia SeparatorCharacter. FieldAutoNumLgl implements AUTONUMLGL (numeracja prawna/zgodna ze stylem konspektu), dodając RemoveTrailingPeriod obok własnego SeparatorCharacter. FieldAutoNumOut implements AUTONUMOUT (numeracja konspektowa) i nie posiada własnych właściwości poza podstawowym Field członkami opisanymi w Praca z polami.
Numeracja powiązana z listą przy użyciu FieldListNum
FieldListNum implementuje pole LISTNUM: ListName określa nazwę abstrakcyjnej definicji numeracji do użycia, a HasListName informuje, czy kod pola rzeczywiście podaje nazwę. ListLevel nadpisuje domyślny poziom listy, na którym pole numeruje, a StartingNumber ustawia wartość, od której rozpoczyna się numeracja pola.
Liczniki stron i sekcji: FieldPage, FieldSection, FieldSectionPages
FieldPage implementuje PAGE pole i FieldSectionPages implements SECTIONPAGES. Oba zależą od obliczonego układu strony, aby uzyskać wynik; podobnie jak NUMPAGES pole opisane w Praca z polami, wartości pól zależnych od układu nie są obliczane w tej edycji, ponieważ nie zawiera ona silnika układu/renderingu strony, więc te pola ocenia się jako symbol zastępczy 0. FieldSection implements SECTION, zwracając bieżący numer sekcji dokumentu — nie zależy od paginacji i nie jest przez to ograniczenie dotknięty.
Nazwane sekwencje z FieldSeq
FieldSeq implementuje pole SEQ dla nazwanych, niezależnie numerowanych sekwencji (takich jak rysunki lub tabele): SequenceIdentifier nadaje nazwę sekwencji, a BookmarkName opcjonalnie kieruje pole do elementu w innym miejscu dokumentu zamiast do własnej lokalizacji pola. InsertNextNumber wstawia kolejny numer w sekwencji bez wyświetlania wartości dla bieżącej pozycji, a ResetNumber / ResetHeadingLevel resetują licznik sekwencji do określonej liczby lub uruchamiają go ponownie na określonym poziomie nagłówka.
FieldRevNum
FieldRevNum implementuje pole REVNUM i nie posiada własnych właściwości poza bazowymi członkami Field.
Formatowanie liczb przy użyciu NumberStyle
NumberStyle jest wyliczeniem używanym na różnych poziomach list, w numeracji przypisów/końcowych notatek oraz numeracji stron, aby określić sposób renderowania liczby. Popularne style obejmują Arabic, UppercaseRoman / LowercaseRoman, UppercaseLetter / LowercaseLetter, Ordinal i OrdinalText, wraz z dużym zestawem stylów specyficznych dla lokalizacji (Kanji, Hangul, Hanja, ThaiLetter, HindiLetter1 i wiele innych) oraz Bullet, LeadingZero, None i Custom dla formatu dostarczonego przez wywołującego.
Wskazówki i najlepsze praktyki
- Użyj
FieldListNum, gdy liczba musi odwoływać się do istniejącej definicji listy po nazwie; użyjFieldAutoNum/FieldAutoNumLgl/FieldAutoNumOutdo numeracji, która nie jest powiązana z konkretnymList. - Pamiętaj, że
FieldPageiFieldSectionPageszależą od układu, tak samo jakNUMPAGES— nie polegaj na tym, że ichResultodzwierciedla rzeczywistą obliczoną liczbę stron w tej edycji. - Użyj
FieldSeq.BookmarkName, gdy pole SEQ musi odwoływać się do liczby zdefiniowanej w innym miejscu dokumentu, zamiast zwiększać własny licznik w miejscu pola. - Ustaw
FieldSeq.ResetHeadingLevel, gdy numerowana sekwencja (np. numery rysunków) ma być resetowana przy każdym nowym rozdziale lub nagłówku sekcji.
Typowe problemy
| Problem | Przyczyna | Naprawa |
|---|---|---|
FieldPage lub FieldSectionPages zawsze wyświetla 0 | Te pola zależą od obliczonego układu strony, który nie jest częścią tej edycji | Oczekiwane zachowanie – użyj wersji komercyjnej Aspose.Words dla .NET jeśli wymagana jest obliczona liczba stron |
FieldListNum nie używa oczekiwanego formatowania listy | ListName nie pasuje do definicji numeracji abstrakcyjnej obecnej w dokumencie | Potwierdź dokładną nazwę listy lub sprawdź HasListName, aby zobaczyć, czy kod pola w ogóle dostarcza taką nazwę |
Liczby FieldSeq nie restartują się tam, gdzie się tego oczekuje | ResetNumber lub ResetHeadingLevel nie zostały ustawione w polu, które powinno zrestartować sekwencję | Ustaw odpowiednią właściwość resetowania w tej instancji FieldSeq |
FAQ
Jaka jest różnica między numeracją list a tymi polami numeracji?
Numeracja listy (List, ListFormat, ListLevel, omówiono w Praca z listami) formatuje całe akapity jako elementy listy. Pola na tej stronie obliczają numer w określonym miejscu w tekście – dla sekwencji, liczników stron/sekcji lub automatycznego numerowania w stylu prawnym – niezależnie od formatowania listy w akapicie.
Dlaczego pole PAGE zawsze zwraca 0?
FieldPage zależy od obliczonego układu strony, a ta edycja nie zawiera silnika układu/renderowania stron — z tego samego powodu NUMPAGES ocenia się jako wartość zastępcza.
Jak utworzyć nazwany, niezależnie numerowany ciąg, taki jak „Figure 1”, „Figure 2”?
Użyj FieldSeq z konsekwentnym SequenceIdentifier (na przykład "Figure") w każdej instancji pola; każdy z nich wyświetla kolejny numer w tej sekwencji.
Jak kontrolować, w jakim stylu cyfr lub liter liczba jest renderowana?
Użyj wyliczenia NumberStyle — wartości takie jak Arabic, UppercaseRoman, LowercaseLetter i OrdinalText wybierają styl renderowania, wraz z Bullet, None i Custom dla formatów nienumerycznych lub dostarczonych przez wywołującego.
API Reference Podsumowanie
| Klasa / Wyliczenie | Opis |
|---|---|
FieldAutoNum | AUTONUM pole; SeparatorCharacter |
FieldAutoNumLgl | AUTONUMLGL pole; RemoveTrailingPeriod, SeparatorCharacter |
FieldAutoNumOut | AUTONUMOUT pole |
FieldListNum | LISTNUM pole; ListName, HasListName, ListLevel, StartingNumber |
FieldPage | PAGE pole (zależne od układu; zwraca 0 w tej edycji) |
FieldSection | SECTION pole |
FieldSectionPages | SECTIONPAGES pole (zależne od układu; zwraca 0 w tej edycji) |
FieldSeq | SEQ pole; SequenceIdentifier, BookmarkName, InsertNextNumber, ResetNumber, ResetHeadingLevel |
FieldRevNum | REVNUM pole |
NumberStyle | Enum stylów renderowania liczb używanych w poziomach list, przypisach/stopkach i numeracji stron |