Práce se seznamy

Práce se seznamy

Tento průvodce ukazuje, jak jsou číslované a odrážkové seznamy reprezentovány a řízeny v Aspose.Words FOSS pro .NET. List je opakovatelná definice seznamu sdílená každým odstavcem, který ji používá, ListFormat je způsob, jakým se jednotlivý odstavec odkazuje na seznam a jeho aktuální úroveň, a ListLevel obsahuje skutečné číslování nebo formátování odrážek pro jednu úroveň seznamu.


Objekt seznamu a ListCollection

List představuje jednu definici seznamu — pravidla číslování, která může dokument použít pro mnoho odstavců. List.ListId ji identifikuje, List.IsMultiLevel uvádí, zda definuje více než jednu úroveň, a List.ListLevels vrací ListLevelCollection obsahující jeden ListLevel pro každou úroveň, kterou seznam definuje. List.IsListStyleDefinition a IsListStyleReference rozlišují seznam, který definuje vlastní formátování, od toho, který odkazuje na formátování pomocí propojeného Style (dostupného přes List.Style). Seznamy každého dokumentu jsou přístupné přes Document.Lists, který vrací ListCollection: ListCollection.Add(listTemplate) vytvoří nový seznam z jednoho z předdefinovaných formátů ListTemplate ve Wordu, Add(listStyle) vytvoří jeden z Style, AddSingleLevelList(listTemplate) vytvoří jednorozměrnou variantu a AddCopy(srcList) duplikuje existující seznam — užitečné, když chcete, aby odstavce měly nezávislé číslování (čerstvé restartování) místo sdílení stejného čítače. ListCollection.GetListByListId(listId) načte konkrétní seznam a Count uvádí, kolik seznamů dokument obsahuje.

Použití seznamů v odstavcích pomocí ListFormat

ListFormat, dosažený z formátování odstavce, řídí, do jakého seznamu odstavec patří a na jaké úrovni. ListFormat.List je List, který odstavec používá, a ListFormat.ListLevelNumber je nulová úroveň v rámci tohoto seznamu; IsListItem uvádí, zda je odstavec vůbec součástí seznamu. ApplyBulletDefault() a ApplyNumberDefault() aplikují výchozí odrážkový nebo číslovaný formát seznamu ve Wordu na odstavec jedním voláním, RemoveNumbers() odstraňuje formátování seznamu a ListIndent()/ListOutdent() posouvají odstavec hlouběji do úrovní seznamu nebo výše — stejné operace, které Word provádí při stisknutí Tab nebo Shift+Tab na začátku odstavce seznamu.

Úrovně seznamu a styl číslování

ListLevel obsahuje formátování pro jednu úroveň seznamu: NumberStyle (hodnota výčtu NumberStyle, například arabské číslice nebo římské číslice), NumberFormat (formátovací řetězec, který kombinuje číslo s doslovným textem, jako tečka nebo závorka), StartAt (počáteční číslo) a RestartAfterLevel (která vyšší úroveň restartuje čítač této úrovně). Alignment (hodnota ListLevelAlignment: Left, Center, Right) a TrailingCharacter (hodnota ListTrailingCharacter: Tab, Space, Nothing) řídí, jak je štítek umístěn a oddělen od textu odstavce, spolu s TabPosition, NumberPosition a TextPosition pro přesné rozvržení. IsLegal vynutí číslování ve stylu právnických dokumentů (vždy arabské, bez ohledu na NumberStyle) a LinkedStyle spojuje úroveň s odstavcem Style. Pro obrázkové odrážky CreatePictureBullet() a DeletePictureBullet() spravují obrázek odrážky ImageData, a ListLevel.Font nastavuje formátování samotného čísla nebo znaku odrážky. ListLevel.GetEffectiveValue(index, numberStyle, customNumberStyleFormat) vypočítá skutečnou hodnotu štítku na dané pozici v sekvenci číslování.

Štítky seznamů a předdefinované šablony

ListLabel popisuje vykreslený štítek pro konkrétní instanci položky seznamu — LabelString je doslovný text, který Word zobrazuje (např. „3.“ nebo „•“), LabelValue je základní číselná hodnota a Font je formátování štítku. ListTemplate je výčet předdefinovaných formátů seznamů ve Wordu (styly odrážek jako BulletDefault, BulletDisk, BulletCircle, BulletSquare, BulletDiamonds a číslované formáty), používaný s ListCollection.Add(listTemplate) pro zahájení od vestavěného formátu místo sestavování vlastnosti po vlastnosti.


Tipy a osvědčené postupy

  • Použijte ListCollection.AddCopy(srcList), když nová skupina odstavců vyžaduje číslování seznamu, které se začíná znovu nezávisle, místo opětovného použití List, která je již připojena k jiným odstavcům.
  • Upřednostněte ListFormat.ApplyNumberDefault() / ApplyBulletDefault() pro standardní seznamy místo ručního nastavování každé vlastnosti ListLevel.
  • Zkontrolujte List.IsListStyleReference versus IsListStyleDefinition před přímou úpravou formátování seznamu — formátování seznamu odkazujícího se na styl může být místo toho řízeno jeho propojeným Style.
  • Nastavte RestartAfterLevel explicitně u vnořených seznamů místo spoléhání se na výchozí chování restartu, když číslování musí být resetováno na konkrétních úrovních osnovy.
  • Použijte ListFormat.ListIndent()/ListOutdent() k přesunu odstavce mezi úrovněmi seznamu místo přímého nastavení ListLevelNumber, protože tyto metody udržují formátování seznamu odstavce interně konzistentní.

Časté problémy

ProblémPříčinaOprava
Dva odstavce, které by měly být číslovány samostatně, pokračují ve stejném pořadí.Obě odstavce mají ListFormat.List, který odkazuje na stejný sdílený objekt List.Dejte druhému odstavci jeho vlastní seznam pomocí ListCollection.AddCopy(srcList) místo opětovného použití stejného List.
Vlastní řetězec formátu číslování se nezobrazuje podle očekávání.ListLevel.NumberFormat neodpovídá očekávanému vzoru pro NumberStyle úrovně.Ověřte, že NumberFormat a NumberStyle jsou nastaveny konzistentně pro upravovanou úroveň
Odsazení seznamu vypadá špatně po programové změně úrovníListLevelNumber byl nastaven přímo, aniž by byly aktualizovány související vlastnosti pozicePoužijte ListFormat.ListIndent()/ListOutdent() místo přímého nastavení ListLevelNumber
Obrázkový odrážkový znak se nezobrazujePro úroveň nebyl vytvořen žádný obrázkový odrážkový znak, nebo je stále aktivní výchozí formátování textové odrážkyZavolejte ListLevel.CreatePictureBullet() a před odebráním formátování textové odrážky poskytněte data obrázku

FAQ

Jaký je rozdíl mezi List a ListFormat?

List je znovupoužitelná definice číslování/odrážky sdílená mezi odstavci; ListFormat je na úrovni odstavce — ukazuje, které List konkrétní odstavec používá a na jaké úrovni, pomocí ListFormat.List a ListLevelNumber.

Jak zjistit, zda je odstavec součástí seznamu?

Přečtěte si ListFormat.IsListItem o formátování odstavce; pokud true, ListFormat.List a ListLevelNumber popisují, ke kterému seznamu a úrovni patří.

Jak vytvořit nový seznam, který začne číslovat od 1 nezávisle na existujícím seznamu?

Použijte ListCollection.AddCopy(srcList) k vytvoření nezávislé kopie definice seznamu, pak tuto kopii použijte na nové odstavce — místo opětovného použití původního List, který by pokračoval ve stejném číslování.

Jak vytvořit odrážkový nebo číslovaný seznam od začátku?

Použijte ListFormat.ApplyBulletDefault() nebo ApplyNumberDefault() pro výchozí formátování ve Wordu, nebo ListCollection.Add(listTemplate) s hodnotou ListTemplate, abyste vycházeli z jednoho z předdefinovaných formátů Wordu a přizpůsobili tak vzniklý List.ListLevels.

Jak mohu ovládat formát číslování, například “1)” místo “1.”?

Nastavte ListLevel.NumberFormat na příslušné úrovni na požadovaný řetězec formátu, spolu s NumberStyle pro samotný styl čísla.


API Reference Shrnutí

Třída/metodaPopis:
ListOpakovatelná definice seznamu (číslování/odrážky)
ListCollectionKolekce všech seznamů v dokumentu
ListCollection.Add(listTemplate) / AddCopy(srcList)Vytvořte seznam z předdefinované šablony nebo zkopírujte existující.
ListFormatOdkaz na List pro každý odstavec a aktuální úroveň
ListFormat.ApplyBulletDefault() / ApplyNumberDefault()Použijte výchozí formátování odrážek nebo číslování na odstavec
ListLevelFormátování číslování/odrážek pro jednu úroveň List
ListLevel.NumberStyle / NumberFormatČíselný styl a formátovací řetězec pro úroveň
ListLabelVykreslený popisek (text a hodnota) pro konkrétní položku seznamu
ListTemplateVýčet předdefinovaných formátů seznamů ve Wordu

Viz také:

 Čeština