Numreringsfält (AUTONUM, PAGE, SEQ och mer)
Numreringsfält (AUTONUM, PAGE, SEQ och mer)
Den här guiden visar hur du arbetar med Words automatiska numreringsfält i Aspose.Words FOSS för .NET, och hur de skiljer sig från listbaserad numrering. Arbeta med listor covers List, ListFormat, och ListLevel – objektmodellen bakom Words numrerade och punktlistade liststycken. Word har också en separat familj av numrering fields som beräknar ett nummer på fältets plats i texten, snarare än via stycke-listformatering: juridisk och dispositions-autonumrering, sid- och sektionräknare, listkopplad numrering och namngivna sekvenser. Den modellerar varje som en Field subklass i the Aspose.Words.Fields namnutrymme, plus NumberStyle enum som delas av listnivåer, fotnoter och slutnoter, samt sidnummer för att välja hur ett nummer renderas.
Autonumereringsfält: AUTONUM, AUTONUMLGL, AUTONUMOUT
FieldAutoNum implementerar AUTONUM fält (enkel sekventiell numrering) och exponerar SeparatorCharacter. FieldAutoNumLgl implements AUTONUMLGL (legal/outline-stil numrering), lägger till RemoveTrailingPeriod bredvid sin egen SeparatorCharacter. FieldAutoNumOut implements AUTONUMOUT (outline-numrering) och har inga egna egenskaper utöver bas Field medlemmar beskrivna i Arbeta med fält.
Listkopplad numrering med FieldListNum
FieldListNum implementerar LISTNUM-fältet: ListName namnger den abstrakta nummerdefinitionsen som ska användas, och HasListName rapporterar om fältkoden faktiskt tillhandahåller ett namn. ListLevel åsidosätter standardlistnivån som fältet numrerar på, och StartingNumber anger det värde som fältets numrering börjar från.
Sid- och avsnittsräknare: FieldPage, FieldSection, FieldSectionPages
FieldPage implementerar PAGE fält och FieldSectionPages implements SECTIONPAGES. Båda beror på beräknad sidlayout för att producera ett resultat; precis som NUMPAGES fält som beskrivs i Arbeta med fält, layoutberoende fältvärden beräknas inte i denna utgåva eftersom den inte innehåller en sidlayout/renderingsmotor, så dessa fält utvärderas till en platshållare 0. FieldSection implements SECTION, returnerar dokumentets aktuella avsnittsnummer – det beror inte på paginering och påverkas inte av den begränsningen.
Namngivna sekvenser med FieldSeq
FieldSeq implementerar SEQ-fältet för namngivna, oberoende numrerade sekvenser (såsom figurer eller tabeller): SequenceIdentifier namnger sekvensen, och BookmarkName pekar valfritt fältet på ett element någon annanstans i dokumentet istället för fältets egen plats. InsertNextNumber infogar nästa nummer i sekvensen utan att visa ett värde för den aktuella positionen, och ResetNumber / ResetHeadingLevel återställer sekvensens räknare till ett specifikt nummer, eller startar om den på en specifik rubriknivå.
FieldRevNum
FieldRevNum implementerar REVNUM-fältet och har inga egna egenskaper utöver de grundläggande Field-medlemmarna.
Formatera tal med NumberStyle
NumberStyle är den uppräkning som används över listnivåer, fotnot-/slutnotnummerering och sidnummer för att välja hur ett tal renderas. Vanliga stilar inkluderar Arabic, UppercaseRoman / LowercaseRoman, UppercaseLetter / LowercaseLetter, Ordinal och OrdinalText, tillsammans med en stor uppsättning localespecifika stilar (Kanji, Hangul, Hanja, ThaiLetter, HindiLetter1 och många fler) samt Bullet, LeadingZero, None och Custom för ett anroparlevererat format.
Tips och bästa praxis
- Använd
FieldListNumnär ett tal måste referera till en befintlig listdefinition med namn; användFieldAutoNum/FieldAutoNumLgl/FieldAutoNumOutför numrering som inte är knuten till en specifikList. - Kom ihåg att
FieldPageochFieldSectionPagesär layoutberoende, på samma sätt somNUMPAGESär – lita inte på att derasResultspeglar ett faktiskt beräknat sidantal i denna upplaga. - Använd
FieldSeq.BookmarkNamenär ett SEQ-fält behöver referera till ett tal som definierats någon annanstans i dokumentet snarare än att öka sin egen räknare på fältets plats. - Ställ in
FieldSeq.ResetHeadingLevelnär en numrerad sekvens (t.ex. figurnummer) ska börja om vid varje nytt kapitel- eller avsnittsrubrik.
Vanliga problem
| Problem | Orsak | Lösning |
|---|---|---|
FieldPage eller FieldSectionPages visar alltid 0 | Dessa fält beror på beräknad sidlayout, vilket inte är en del av den här utgåvan | Förväntat beteende – använd den kommersiella Aspose.Words för .NET om ett beräknat sidantal krävs |
FieldListNum använder inte den förväntade listformateringen | ListName matchar inte en abstrakt numreringsdefinition som finns i dokumentet | Bekräfta det exakta listnamnet, eller kontrollera HasListName för att se om fältets kod faktiskt tillhandahåller ett |
FieldSeq-numren startar inte om där det förväntas | ResetNumber eller ResetHeadingLevel var inte inställd på fältet som ska starta om sekvensen | Ställ in rätt återställnings-egenskap på den FieldSeq-instansen |
FAQ
Vad är skillnaden mellan listnumrering och dessa nummerfält?
Listnumrering (List, ListFormat, ListLevel, täckt i Arbeta med listor) formaterar hela stycken som listobjekt. Fälten på den här sidan beräknar ett nummer på en specifik punkt i texten – för sekvenser, sid/avsnittsräknare eller juridisk stil auto-numrering – oberoende av stycke-listformatering.
Varför utvärderas ett PAGE-fält alltid till 0?
FieldPage beror på beräknad sidlayout, och den här utgåvan inkluderar inte en sidlayout-/renderingsmotor – samma anledning som NUMPAGES utvärderas till ett platshållarvärde.
Hur skapar jag en namngiven, självständigt numrerad sekvens som “Figure 1”, “Figure 2”?
Använd FieldSeq med en konsekvent SequenceIdentifier (t.ex. "Figure") för varje fältinstans; var och en visar nästa nummer i den sekvensen.
Hur kontrollerar jag vilken siffer- eller bokstavsstil ett tal visas i?
Använd NumberStyle-enumen – värden såsom Arabic, UppercaseRoman, LowercaseLetter och OrdinalText väljer renderingsstilen, tillsammans med Bullet, None och Custom för icke-numeriska eller anropar-tillhandahållna format.
API Reference Sammanfattning
| Klass / Enum | Beskrivning |
|---|---|
FieldAutoNum | AUTONUM fält; SeparatorCharacter |
FieldAutoNumLgl | AUTONUMLGL fält; RemoveTrailingPeriod, SeparatorCharacter |
FieldAutoNumOut | AUTONUMOUT fält |
FieldListNum | LISTNUM fält; ListName, HasListName, ListLevel, StartingNumber |
FieldPage | PAGE fält (layout-beroende; utvärderas till 0 i den här utgåvan) |
FieldSection | SECTION fält |
FieldSectionPages | SECTIONPAGES fält (layout-beroende; utvärderas till 0 i den här utgåvan) |
FieldSeq | SEQ fält; SequenceIdentifier, BookmarkName, InsertNextNumber, ResetNumber, ResetHeadingLevel |
FieldRevNum | REVNUM fält |
NumberStyle | Enum för talrenderingsstilar som används av listnivåer, fotnoter/slutnoter och sidnummer |