목록 수준에서 사용자 지정 탭 정지를 제거하면 Word 문서에서 목록 레이아웃을 세밀하게 제어할 수 있습니다. Removing List Level Tab Stops 기능은 이전에 설정된 탭 정지를 지우는 간단한 ListLevel.RemoveTabStop() 메서드를 추가합니다. 이 문서에서는 SDK를 설치하고, 목록을 만들고, 탭 정지를 제거하고, 업데이트된 문서를 저장하는 과정을 안내합니다.

Word 문서에서 목록 수준 탭 정지 제거 이유

Word 목록은 일반적으로 목록 번호나 글머리표를 텍스트와 맞추는 기본 탭 정지에 의존합니다. 문서를 프로그래밍 방식으로 생성할 때 특정 시각적 정렬을 위해 사용자 정의 탭 정지를 추가할 수 있습니다. 이후 비즈니스 요구 사항이 변경되거나 동일한 템플릿을 다른 레이아웃에 재사용해야 할 수 있습니다. 탭 정지를 삭제하기 위해 문서를 수동으로 편집하는 것은 시간도 많이 걸리고 오류가 발생하기 쉽습니다. ListLevel.RemoveTabStop()을 사용하면 프로그래밍 방식으로 목록 수준을 기본 동작으로 되돌릴 수 있어, 수동 개입 없이 생성된 문서 전반에 걸쳐 일관성을 보장합니다.

ListLevel API 소개

Aspose.Words for .NET은 Word 문서를 조작하기 위한 풍부한 객체 모델을 제공합니다. ListLevel 클래스는 목록 내의 단일 레벨을 나타냅니다(예: 번호 매기기 목록의 첫 번째 레벨). 버전 26.7부터 이 클래스에는 해당 레벨에 설정된 사용자 지정 탭 정지를 제거하는 RemoveTabStop() 메서드가 포함됩니다.

시작하려면 NuGet에서 Aspose.Words 패키지를 설치하십시오:

Install-Package Aspose.Words

제품에 대해 자세히 알아보려면 Aspose.Words for .NET product page를 방문하십시오. 자세한 문서는 Aspose.Words .NET docs에서 확인할 수 있으며, 전체 API 참조는 here에서 탐색할 수 있습니다.

단일 목록 수준에서 사용자 정의 탭 정지 제거

단계별 튜토리얼

  1. 새 Document와 DocumentBuilder를 생성합니다. Document 객체는 Word 파일을 메모리에 보관하고, DocumentBuilder는 콘텐츠 생성을 단순화합니다.
  2. 기본 번호 매기기 목록 형식을 적용합니다. 이렇게 하면 미리 정의된 레벨과 탭 정지점이 있는 목록이 생성됩니다.
  3. 몇 개의 목록 항목을 작성합니다. 항목은 목록 서식을 상속합니다.
  4. 빌더에서 현재 ListLevel을 가져옵니다. 이것이 방금 만든 레벨입니다.
  5. ListLevel에서 RemoveTabStop()을 호출합니다. 이렇게 하면 사용자 지정 탭 정지점이 제거됩니다.
  6. 문서를 저장하여 변경 사항을 확인합니다.

다음 예제는 C#와 Aspose.Words를 사용하여 목록 수준에서 사용자 지정 탭 정지를 제거하는 방법을 보여줍니다.

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Create a list with default formatting
builder.ListFormat.ApplyNumberDefault();
builder.Writeln("Numbered list item 1");
builder.Writeln("Numbered list item 2");

// Get the list level and remove its tab stop
ListLevel listLevel = builder.ListFormat.ListLevel;
listLevel.RemoveTabStop();

doc.Save("Paragraph.RemoveTabStopFromListLevel.docx");

작동 방식

  • builder.ListFormat.ApplyNumberDefault()는 Word에서 정의된 기본 목록 스타일을 사용하여 빌더를 번호 매기기 목록 컨텍스트로 전환합니다. 이는 암묵적으로 새 List 객체와 첫 번째 수준에 해당하는 ListLevel을 생성합니다.
  • builder.Writeln(...)은 두 개의 목록 항목을 씁니다. 빌더가 목록 모드에 있기 때문에 각 호출은 자동으로 적절한 목록 번호를 앞에 붙이고 수준의 탭 정지 위치에 따라 텍스트를 정렬합니다.
  • builder.ListFormat.ListLevel은 현재 목록 수준(이 경우 수준 0)의 서식을 제어하는 ListLevel 인스턴스를 반환합니다.
  • listLevel.RemoveTabStop()은 목록 수준이 생성될 때 설정된 사용자 지정 탭 정지를 제거합니다. 이 호출 후 목록은 일반적으로 수준의 왼쪽 들여쓰기 위치에 있는 Word의 기본 탭 정지를 사용합니다.
  • doc.Save(...)은 메모리 내 문서를 Paragraph.RemoveTabStopFromListLevel.docx라는 파일에 저장합니다. 파일을 Microsoft Word 또는 호환 뷰어에서 열어 번호와 텍스트가 이제 기본 탭 정지를 사용하여 정렬된 것을 확인하십시오.

Note: 이 코드 샘플은 공식 Aspose.Words 릴리스 노트에서 재현된 것이며 샌드박스 환경에서 실행되지 않았습니다. 프로덕션에 사용하기 전에 자체 개발 환경에서 확인하십시오.

문서의 모든 목록 수준에서 탭 정지 제거

많은 실제 시나리오에서 문서는 여러 개의 목록을 포함하고 있으며, 각각은 여러 수준을 가지고 있습니다. 하나의 수준에서만 탭 정지를 제거하는 것으로는 충분하지 않을 수 있습니다. 다음 스니펫은 문서의 모든 목록을 반복하고 각 수준에서 탭 정지를 지우는 방법을 보여줍니다.

// Load an existing document that contains multiple lists
Document doc = new Document("Input.docx");

// Iterate through every list in the document
foreach (List list in doc.Lists)
{
    // Each list can have multiple levels (0‑8). Iterate them.
    foreach (ListLevel level in list.ListLevels)
    {
        // Remove any custom tab stop for this level
        level.RemoveTabStop();
    }
}

// Save the updated document
doc.Save("Output_NoTabStops.docx");

코드 설명

  • new Document("Input.docx")는 여러 목록이 포함될 수 있는 기존 Word 파일을 로드합니다.
  • doc.Lists는 문서에서 각각의 고유한 목록을 나타내는 List 객체 컬렉션을 반환합니다.
  • list.ListLevels는 해당 목록에 대해 가능한 9개의 레벨(0‑8)에 접근할 수 있게 합니다. 레벨이 사용되지 않더라도 컬렉션에는 기본 서식이 적용된 ListLevel 인스턴스가 여전히 포함됩니다.
  • 내부 루프에서 level.RemoveTabStop()이 모든 레벨에 대해 호출되어 문서 어디에서도 사용자 지정 탭 정지점이 남지 않도록 보장합니다.
  • 마지막으로 doc.Save("Output_NoTabStops.docx")는 정리된 문서를 저장합니다.

이 접근 방식은 생성된 보고서 배치 전체에 걸쳐 일관된 목록 레이아웃을 적용해야 하거나 외부 소스로부터 받은 문서를 정규화할 때 특히 유용합니다.

프로그래밍 방식으로 탭 정지점 추가 및 제거

때때로 임시 레이아웃을 위해 사용자 정의 탭 정지를 추가하고 몇 가지 작업을 수행한 다음 기본값으로 되돌려야 할 수 있습니다. SDK는 ListLevel.TabStops.Add(double position)를 사용하여 탭 정지를 추가할 수 있게 해줍니다. 임시 서식을 완료한 후에는 RemoveTabStop()을 호출하여 정리를 할 수 있습니다.

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

builder.ListFormat.ApplyNumberDefault();
builder.Writeln("Temporarily aligned item 1");

// Add a custom tab stop at 72 points (1 inch)
ListLevel level = builder.ListFormat.ListLevel;
level.TabStops.Add(72);

builder.Writeln("Item with custom tab stop");

// Later, remove the custom tab stop
level.RemoveTabStop();

builder.Writeln("Item after removing tab stop");

doc.Save("TempTabStopDemo.docx");

코드 설명

  • 문서를 만든 후 번호 매기기 목록을 적용하고 첫 번째 항목을 작성합니다.
  • level.TabStops.Add(72)은 72포인트(정확히 1인치) 위치에 사용자 정의 탭 정지를 삽입합니다. 이후 목록 항목은 해당 위치에 텍스트를 맞춥니다.
  • 임시 서식이 더 이상 필요 없게 되면 level.RemoveTabStop()이 사용자 정의 탭 정지를 제거하여 이후 항목이 기본 정렬로 돌아갑니다.
  • 마지막 Writeln은 제거 효과를 보여줍니다.

이 패턴은 한 번만 필요한 조정이 필요할 때—예를 들어, 특정 페이지 레이아웃을 위해 목록 내의 헤딩을 정렬해야 할 때—문서의 나머지는 깔끔하게 유지하면서 유용합니다.

무료 라이선스 받기

Aspose는 평가 워터마크를 제거하고 개발 및 테스트를 위한 전체 API 액세스를 제공하는 임시 무료 라이선스를 제공합니다. Aspose 임시 라이선스 페이지에서 요청할 수 있습니다.

무료 추가 리소스

결론

이 튜토리얼에서는 Aspose.Words 26.7에 도입된 새로운 ListLevel.RemoveTabStop() 메서드 사용 방법을 다루었습니다. 사용자 지정 탭 정지를 지우면 목록 정렬을 다시 제어할 수 있고, 문서 템플릿을 단순화하며, 생성된 Word 파일 전반에 걸쳐 일관된 서식을 보장합니다. 예제에서는 단일 목록 수준에 대한 제거, 전체 문서에 대한 일괄 제거, 그리고 일시적인 탭 정지 조정을 위한 패턴을 보여주었습니다. 이러한 기술을 .NET 애플리케이션에 통합하면 Word 자동화가 보다 견고해지고 유지 관리가 쉬워집니다.

자주 묻는 질문

  1. What does ListLevel.RemoveTabStop() actually remove?
    이 메서드는 리스트 레벨에 정의된 모든 사용자 지정 탭 정지를 지우고, 레벨이 문서 스타일에 정의된 기본 탭 정지를 사용하도록 되돌립니다.

  2. 탭 정지를 제거한 후 Save()를 호출해야 합니까?
    예. 변경 사항은 메모리에서 이루어지므로, 업데이트된 목록 서식을 파일에 저장하려면 Document.Save()를 호출해야 합니다.

  3. 단일 문서의 모든 목록 수준에서 탭 정지를 제거할 수 있나요?
    물론입니다. 문서의 각 List를 반복한 다음 각 ListLevel을 반복하면서 필요에 따라 RemoveTabStop()을 호출할 수 있습니다.

  4. RemoveTabStop() 메서드는 글머리표 목록과 번호 매기기 목록 모두에서 지원되나요?
    예. 이 메서드는 글머리표, 번호 또는 다단계 형식인지에 관계없이 모든 ListLevel에서 작동합니다.

  5. 사용자 지정 탭 정지를 제거하면 기존 목록 항목의 들여쓰기에 영향을 줍니까?
    탭 정지 위치만 변경됩니다. 목록 수준의 왼쪽 들여쓰기로 정의된 전체 들여쓰기는 변경되지 않으므로 목록 항목은 시각적 계층 구조를 유지합니다.

  6. ListLevel.RemoveTabStop()을 사용하려면 유료 라이선스가 필요합니까?
    이 API는 무료 임시 라이선스에서 사용할 수 있지만, 실제 운영에서는 Aspose에서 전체 라이선스를 받아야 합니다.

더 읽기