> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/ko/more-topics/25-how-to-write-a-latex-class-file-and-design-your-own-cv-part-1.md).

# LaTeX 클래스 파일을 작성하고 나만의 CV를 디자인하는 방법(1부)

1부 | [2부](/latex/ko/more-topics/26-how-to-write-a-latex-class-file-and-design-your-own-cv-part-2.md)

**저자: James Allen (2011년 3월)**

누구나 전문적으로 보이는 CV를 원하며, 그런 CV를 만들어 줄 LaTeX 템플릿은 얼마든지 있습니다. 하지만 저처럼 여러분도 자신의 CV를 직접 소유하고 자신만의 것으로 만들고 싶을 것입니다. 즉, 직접 모양과 느낌을 사용자 정의할 수 있어야 하는데, 이는 LaTeX에서 악명 높을 정도로 어렵습니다. 이 블로그 글 연재에서는 여러분이 자신만의 사용자 정의 클래스 파일을 만드는 과정을 안내하고, 원하는 대로 CV를 정확히 서식 지정하는 것이 얼마나 쉬운지 보여드리고자 합니다. 여기서는 CV 스타일에 초점을 맞추겠지만, 방법은 어떤 종류의 문서에도 동일합니다.

### 클래스 파일이란?

다음을 작성하면 `\documentclass{article}` LaTeX 파일에 다음을 작성하면 클래스 파일을 포함하게 됩니다 `article.cls`. 이것은 다음과 같은 모든 명령을 정의합니다: `\section` 및 `\title` 이 명령들은 문서의 구조를 만드는 데 사용됩니다. 또한 이러한 명령이 페이지의 형식과 레이아웃에 어떻게 영향을 미치는지도 설정합니다.

### 자신만의 클래스 파일 설정하기

문서 형식을 가장 깔끔하게 사용자 정의하는 방법은 그 모든 정보를 개인용 클래스 파일에 보관하는 것입니다. 이렇게 하면 문서의 구조를 서식과 깔끔하게 분리할 수 있고 재사용도 쉬워집니다. 설정도 간단하니, 다음 내용으로 cv.tex라는 문서를 만들어 보세요:

```latex
\documentclass{my_cv}
\begin{document}
\section{Education}
\subsection{University of Nowhere}
\section{Work}
\subsection{ABC Limited.}
\end{document}
```

이것은 사용자 정의 클래스 파일을 불러오려고 하는 것입니다 `my_cv.cls`, 아직 존재하지 않습니다. 다음을 만드세요 `my_cv.cls` 다음과 같은 동일한 디렉터리에 `cv.tex` 그리고 그 안에 다음 줄을 작성하세요:

```latex
\LoadClass{article}
```

이제 문서를 컴파일하면 기본 article 스타일의 헤더가 보일 것입니다.

그렇다면 여기서 무슨 일이 일어난 걸까요? 클래스 파일에는 LaTeX가 올바르게 작동하도록 많은 서식 정보와 내부 설정이 들어 있어야 하지만, 우리는 그 모든 것을 수동으로 입력하고 싶지 않습니다. 대신 새 클래스 파일을 다음을 기반으로 만들 수 있습니다 `article.cls`. 우리는 `\LoadClass` 않습니다 `article.cls` 그리고 그 안에 정의된 모든 명령과 스타일을 불러옵니다. 일반적으로 사용하는 `\documentclass` 포함할 때 사용하는 `article.cls` 왜냐하면 `\documentclass` 명령은 LaTeX 문서의 맨 처음에서 한 번만 호출되어야 합니다.

### LaTeX에 클래스 알리기

모든 클래스 파일은 다음과 비슷한 두 줄로 시작해야 하며, 이는 다음의 맨 위에 추가해야 합니다 `my_cv.cls` 이제:

```latex
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{my_cv}[2011/03/26 내 사용자 정의 CV 클래스]
```

이 `\NeedsTeXFormat` 명령은 컴파일러에게 이 패키지가 어떤 버전의 LaTeX용인지 알려줍니다. 현재 LaTeX 버전은 LaTeX2e이며, 거의 모든 배포판이 이를 사용합니다.

이 `\ProvidesClass` 명령은 컴파일러에게 패키지에 대한 몇 가지 정보를 알려줍니다. 첫 번째 인수는 클래스 파일의 파일명과 일치해야 하며, LaTeX에 패키지 이름이 무엇인지 알려줍니다. 두 번째 인수는 선택 사항이며, 로그와 다른 곳에 나타날 클래스의 설명을 제공합니다. 설명은 반드시 위와 정확히 같은 형식의 날짜로 시작해야 하며, 그 날짜는 패키지가 마지막으로 수정된 날짜여야 합니다. 클래스에 포함할 때 이 정보를 사용하면 충분히 최신 버전을 사용하고 있는지 확인할 수 있습니다. 예를 들어 다음을 통해 포함하면 `\documentclass{my_cv}[2012/01/01]` 클래스 설명의 날짜보다 더 최신인 날짜를 사용하면, 클래스가 오래되었다는 경고가 표시됩니다.

### 섹션 헤더 수정하기

표준 article 섹션 제목은 CV에 그다지 어울리지 않으므로, 좀 더 깔끔한 것으로 바꾸고 싶습니다. 이를 위해 \section 명령을 다시 정의하여 사용자 정의 헤더를 출력할 수 있습니다. `\section` 명령을 사용해 사용자 정의 헤더를 출력할 수 있습니다.

다행히도 이미 다음과 같은 훌륭한 패키지가 있습니다 `titlesec` 이 패키지는 헤더 스타일을 쉽게 사용자 정의할 수 있게 해줍니다. 클래스 파일에 다음과 같이 포함하세요:

```latex
\RequirePackage{titlesec}
```

우리는 다음을 사용해야 한다는 점에 주의하세요 `\RequirePackage` 일반적으로 사용하는 `\usepackage` 명령이 아니라, 클래스 파일 안에 있기 때문입니다. 이 `\RequirePackage` 명령은 서로 다른 스타일 및 클래스 파일에서 여러 번 호출되더라도 각 패키지가 한 번만 로드되도록 보장합니다.

이 `titlesec` 패키지는 다음 명령을 제공합니다 `\titleformat` 이를 통해 섹션 제목을 사용자 정의할 수 있습니다. 다음을 끝에 추가하세요 `my_cv.cls` 제목 형식을 사용자 정의하려면 다음을 추가하세요:

```latex
\titleformat{\section}         % \section 명령을 사용자 정의합니다
  {\Large\scshape\raggedright} % \section 헤더를 크게(\Large),
                               % 작은 대문자(\scshape)와 왼쪽 정렬(\raggedright)로 만듭니다
  {}{0em}                      % 'Section ...'처럼 모든 섹션에 접두사를 붙이는 데 사용할 수 있습니다
  {}                           % 제목 앞에 코드를 삽입하는 데 사용할 수 있습니다
  [\titlerule]                 % 제목 뒤에 가로선을 삽입합니다
```

컴파일하면 `cv.tex` 이제 CV에 더 적합한 몇 개의 주요 헤더가 보일 것입니다:

![Screenshot1.png](/files/accf532fe618ff0d221115fe3af4f9a7c2d24352)

\subsection 헤더도 사용자 정의할 수 있습니다:

```latex
\titleformat{\subsection}
  {\large\scshape\raggedright}
  {}{0em}
  {}
```

이제 하위 섹션도 같은 스타일이 됩니다:

![Screenshot2.png](/files/c3022043ea7e35b14a9fbf71ac12702bff583ce0)

사용 가능한 몇 가지 서식 옵션을 시험해 보고 원하는 스타일을 확인해 보세요:

* `\bfseries`, `\itshape`: 제목을 굵게 또는 이탤릭체로 만들기;
* `\scshape`: 작은 대문자;
* `\small`, `\normalsize`, `\large`, `\Large`, `\LARGE`, `\huge`, `\Huge`: 글꼴 크기 설정;
* `\rmfamily`, `\sffamily`, `\ttfamily`: 글꼴 유형을 각각 세리프체, 산세리프체 또는 타자기체로 설정하기.

### 섹션 헤더에 날짜 추가하기

섹션 제목에 날짜를 포함할 수 있게 해주는 몇 가지 새 명령을 정의할 수 있습니다. 클래스 파일에 다음을 포함하세요:

```latex
\newcommand{\datedsection}[2]{%
  \section[#1]{#1 \hfill #2}%
}
\newcommand{\datedsubsection}[2]{%
  \subsection[#1]{#1 \hfill #2}%
}
```

이것은 두 개의 새 명령을 정의합니다 `\datedsection` 및 `\datedsubsection` 이 명령들은 두 개의 인수를 받습니다: 이전과 같은 섹션 이름과, 페이지 오른쪽에 조판될 날짜입니다.  `\hfill` 명령은 LaTeX가 가능한 한 많은 공간을 채우도록 하여 두 번째 인수(`#2`)를 페이지 오른쪽으로 밀어냅니다. 다음을 수정하세요 `cv.tex` 이 명령들을 사용하도록:

```latex
\documentclass{my_cv}

\begin{document}

\section{Education}
\datedsubsection{어디에도 없는 대학교}{2004--2008}
어디에도 없는 대학교에 2004년부터 2008년까지 다녔습니다.

\section{Work}
\datedsubsection{ABC 유한회사}{2008--현재}
2008년부터 ABC 유한회사에서 일해 왔습니다.

\end{document}
```

이제 우리 CV에는 날짜가 포함되어 있습니다:

![Screenshot3.png](/files/c2b5f7c5e23f0fa72cfc10ea27a6135da8f1c0f1)

### 결론

이것으로 이 가이드의 1부는 끝입니다. 하지만 여러분이 나가서 유용한 클래스 파일을 만들기 시작할 수 있을 만큼은 충분히 다뤘기를 바랍니다. 이미 꽤 괜찮은 CV 템플릿처럼 보이는 것을 만드는 데 많은 명령이 필요하지 않았고, 우리가 사용자 정의할 수 있는 다른 것들의 표면만 살짝 훑었을 뿐입니다. 다음 몇 부분에서는 클래스에 옵션을 전달해 설정하는 방법, 보기 좋은 제목을 만드는 방법, 그리고 몇 가지 일반적인 레이아웃 옵션을 설정하는 방법에 대해 이야기하겠습니다.

읽어 주셔서 감사합니다!

제가 아직 클래스 파일을 만드는 데 비교적 익숙하지 않다는 점을 참고해 주세요. 따라서 제가 여기서 언급한 것들을 더 잘하는 방법을 아시는 분이 있다면 알려 주시면 감사하겠습니다.

1부 | [2부](/latex/ko/more-topics/26-how-to-write-a-latex-class-file-and-design-your-own-cv-part-2.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/ko/more-topics/25-how-to-write-a-latex-class-file-and-design-your-own-cv-part-1.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
