.NET에서 목록 작업하는 방법
.NET에서 목록 작업하기
Word 문서의 번호 매기기 및 글머리표 목록은 세 개의 협력 객체로 구성됩니다: List, 재사용 가능한 번호 매기기 정의; ListFormat, 특정 단락에 어떤 목록과 수준에 속하는지 알려주는 객체; 그리고 ListLevel, 한 수준에 대한 실제 서식을 보유하는 객체. 이 가이드는 단락에 목록을 적용하는 방법, 별개의 목록이 카운터를 공유하지 않도록 유지하는 방법, 단락을 수준 간에 이동하는 방법, 그리고 Aspose.Words FOSS for .NET를 사용하여 번호 매기기 및 글머리표 서식을 사용자 정의하는 방법을 보여줍니다.
단계별 가이드
1단계: 단락에 목록 적용
ListFormat.ApplyBulletDefault() 또는 ApplyNumberDefault()을(를) 단락 서식에 사용하면 Word의 기본 글머리표 또는 번호 매기기 목록을 한 번에 적용할 수 있습니다 — 이는 표준 목록을 적용하는 가장 빠른 방법입니다. 기본값 대신 특정 사전 정의된 형식을 사용하려면 Document.Lists (a ListCollection) .Add(listTemplate)를 ListTemplate 값과 함께 호출하십시오. 예를 들어 BulletDisk, BulletSquare, NumberArabicDot, 또는 NumberUppercaseRomanDot와 같은 값을 사용하여 Word에 내장된 형식 중 하나에서 List을 만들거나 단일 수준 변형을 위해 AddSingleLevelList(listTemplate)을 사용할 수 있습니다. 단락에 목록 서식이 적용되면 ListFormat.IsListItem가 true을 보고하고, ListFormat.List/ListLevelNumber는 해당 목록과 수준을 식별합니다.
2단계: 새 단락 그룹에 독립적인 번호 매기기 부여
같은 공유 List 객체를 가리키는 ListFormat.List을(를) 가진 단락은 동일한 카운터를 계속 사용합니다. 새로운 단락 그룹이 독립적으로 1부터 번호 매기기를 다시 시작해야 할 경우, 기존 목록 정의를 복제하기 위해 ListCollection.AddCopy(srcList)를 호출하고, 원본을 재사용하는 대신 복제본을 새로운 단락에 적용합니다. ListCollection.GetListByListId(listId)는 ListId를 사용해 특정 목록을 검색할 때 생성하지 않고 찾아야 할 경우에 사용되며, Count는 현재 문서에 존재하는 목록 수를 보고합니다.
3단계: 단락을 목록 수준 사이로 이동하기
ListFormat.ListIndent()를 사용하여 단락을 목록 안에서 한 단계 더 깊게 이동하고, ListOutdent()를 사용하여 한 단계 얕게 이동합니다 — 이는 Word가 목록 단락 시작에서 Tab 및 Shift+Tab을 수행하는 것과 동일한 동작입니다. ListLevelNumber를 직접 설정하는 것보다 이러한 방법을 선호하십시오. 이렇게 하면 단락의 목록 서식이 내부적으로 일관성을 유지합니다. RemoveNumbers()를 호출하면 단락에서 목록 서식을 완전히 제거할 수 있습니다.
4단계: 목록 수준의 번호 매기기 형식 맞춤 설정
특정 수준에 List.ListLevels(a ListLevelCollection)를 통해 도달한 다음, ListLevel.NumberStyle(예: Arabic, UppercaseRoman, LowercaseLetter, Bullet와 같은 NumberStyle 값)와 NumberFormat—숫자와 마침표 또는 괄호와 같은 리터럴 텍스트를 결합한 형식 문자열—를 함께 설정합니다. 쌍이 맞지 않으면 예상치 못한 렌더링이 발생합니다. StartAt는 수준의 시작 번호를 설정하고, RestartAfterLevel은 어느 상위 수준의 증가가 이 수준의 카운터를 다시 시작할지를 제어합니다 — 기본 재시작 동작에 의존하지 말고 중첩 목록에서는 명시적으로 설정하십시오. Alignment(Left, Center, Right)와 TrailingCharacter(Tab, Space, Nothing)는 레이블 위치와 레이블과 단락 텍스트 사이의 구분자를 제어하며, TabPosition, NumberPosition, TextPosition은 정밀 레이아웃을 위한 추가 설정입니다. IsLegal는 NumberStyle와 관계없이 항상 아라비아 숫자를 사용하는 법적 스타일 번호 매기기를 강제합니다.
5단계: 목록 수준에 그림 글머리표 추가
대상 수준에서 ListLevel.CreatePictureBullet()를 호출하여 그림 글머리표 정의를 만든 다음, 동일한 수준에 기존 텍스트 글머리표 서식이 있으면 이를 제거하기 전에 글머리표의 ImageData를 제공하십시오. DeletePictureBullet()를 호출하면 그림 글머리표를 제거하고 텍스트 기반 글머리표 서식으로 되돌릴 수 있습니다.
6단계: 목록 항목의 렌더링된 레이블 검사
ListLabel은(는) 항목의 단락 서식에서 도달한, 하나의 리스트 항목 인스턴스에 실제로 표시되는 레이블을 설명합니다. LabelString은 Word가 표시하는 문자 그대로의 텍스트—예: “3.” 또는 “•"—이며, LabelValue은 기본 숫자 값이고, Font은 단락 텍스트 서식과 무관한 레이블 자체의 서식입니다. 전체 리스트를 렌더링하지 않고 시퀀스의 임의 위치에서 레이블 값을 계산하려면 ListLevel.GetEffectiveValue(index, numberStyle, customNumberStyleFormat)를 호출하십시오.
일반적인 문제 및 해결 방법
독립적으로 번호가 매겨져야 하는 두 단락이 같은 순서를 이어갑니다. 두 단락의 ListFormat.List 같은 공유된 List 객체. 두 번째 그룹에 자체 목록을 부여하려면 ListCollection.AddCopy(srcList) 같은 것을 재사용하는 대신 List.
사용자 정의 번호 형식 문자열이 예상대로 렌더링되지 않습니다. ListLevel.NumberFormat 레벨에 기대되는 패턴과 일치하지 않습니다 NumberStyle. 확인 NumberFormat and NumberStyle 편집 중인 레벨에 대해 일관되게 설정됩니다.
레벨을 프로그래밍 방식으로 변경한 후 목록 들여쓰기가 잘못된 것처럼 보입니다. ListLevelNumber 관련 위치 속성을 업데이트하지 않고 직접 설정되었습니다. 사용 ListFormat.ListIndent()/ListOutdent() 설정하는 대신 ListLevelNumber 직접적으로.
레벨에 그림 글머리표가 표시되지 않습니다. 해당 레벨에 그림 글머리표가 생성되지 않았거나 기본 텍스트 글머리표 서식이 여전히 활성화되어 있습니다. 호출 ListLevel.CreatePictureBullet() 텍스트 글머리표 서식을 제거하기 전에 이미지 데이터를 제공하십시오.
스타일 연결된 목록은 직접 서식 변경에 반응하지 않습니다. Check List.IsListStyleReference — 스타일 참조 목록의 서식은 연결된 Style (via List.Style), 직접 목록을 편집해서가 아니라. 다음과 비교하십시오 IsListStyleDefinition 자체 서식을 정의하는 목록을 구별하기 위해.
자주 묻는 질문
List와 ListFormat의 차이점은 무엇인가요?
List은(는) 단락 전체에서 공유되는 재사용 가능한 번호 매기기 또는 글머리 기호 정의입니다. ListFormat은(는) 단락별이며 — 특정 단락이 사용하는 List와 그 수준을 ListFormat.List와 ListLevelNumber를 통해 가리킵니다.
단락이 이미 목록의 일부인지 어떻게 확인할 수 있나요?
ListFormat.IsListItem에서 단락의 서식을 읽으세요. true인 경우, ListFormat.List와 ListLevelNumber가 해당 단락이 속한 목록과 수준을 식별합니다.
기존 목록과 독립적으로 새 목록이 1부터 번호 매기기를 시작하도록 하려면 어떻게 해야 하나요?
ListCollection.AddCopy(srcList)를 사용하여 목록 정의의 독립적인 복사본을 만든 다음, 원본 List을 재사용하는 대신 복사본을 새 단락에 적용하세요. 원본을 재사용하면 동일한 카운터가 계속됩니다.
처음부터 글머리 기호 목록이나 번호 매기기 목록을 만들려면 어떻게 해야 하나요?
Word의 기본 서식에 대해서는 ListFormat.ApplyBulletDefault() 또는 ApplyNumberDefault()을 사용하고, 미리 정의된 서식에서 시작하여 결과 List.ListLevels를 사용자 정의하려면 ListCollection.Add(listTemplate)에 ListTemplate 값을 지정합니다.
“1.” 대신 “1)“와 같은 번호 서식을 얻으려면 어떻게 해야 하나요?
관련 수준에서 ListLevel.NumberFormat을 원하는 서식 문자열로 설정하고, 숫자 스타일 자체에 대해서는 NumberStyle을 함께 설정합니다.