> 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/01-a-six-part-series-how-do-tex-macros-actually-work.md).

# 6부작 시리즈: TeX 매크로는 실제로 어떻게 작동하는가?

## 이 시리즈에 관하여

이 기사 시리즈는 야심 찬 목표를 가지고 있습니다: 단계별로 설명하는 것입니다, *어떻게* LaTeX 명령과 같은 TeX 매크로가 실제로 어떻게 동작하는지—TeX 엔진 소프트웨어 내부에서 일어나는 과정을 살펴봄으로써. 이 글은 TeX의 처리 동작에 대한 이야기를 전하려고 합니다:

* 입력 문자를 읽고 범주 코드(category code)를 사용하는 것;
* 문자 토큰과 명령 토큰의 생성—그리고 TeX이 사용하는 공식들;
* TeX이 TeX 명령을 어떻게 식별한 다음 처리하는지;
* 매크로 정의와 매크로 인수를 토큰 목록으로 저장하는 내부 세부 사항—내부 TeX 데이터로 생성한 그래픽을 사용하여;
* 그리고 마지막으로 매크로 확장이 무엇을 *실제로* 의미하는지—TeX 엔진 내부의 실제 데이터를 사용하여 살펴봅니다.

그러나 TeX 엔진은 매우 복잡한 소프트웨어 프로그램이기 때문에 모든 것을 다 다루기는 어렵지만, 우리는 TeX의 매크로 처리 기능에서 가장 중요하고 핵심적인 부분들을 다루려고 노력했습니다.

#### 내비게이션 바

각 기사에는 본문 앞뒤에 다음과 같은 내비게이션 바가 있어 시리즈의 다른 기사로 빠르게 이동할 수 있습니다:

[1부](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_1?preview=true) [2부](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_2?preview=true) [3부](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_3?preview=true) [4부](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_4?preview=true) [5부](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_5?preview=true) [6부](https://www.overleaf.com/learn/latex/Understanding_TeX_macros:_Part_6?preview=true)

### 1부: 범주 코드

이 글은 TeX의 범주 코드 개념에 담긴 이유를 살펴봅니다: 범주 코드가 무엇인지, 그리고 TeX이 이를 사용해 입력을 조판될 내용과 실행될 명령으로 어떻게 걸러내는지 설명합니다.

### 2부: TeX의 “눈”을 통해 입력 읽기

일련의 그래픽을 통해, 우리는 TeX이 “눈”을 가지고 입력을 읽는(스캔하는) 것이라는 오랜 비유를 사용합니다. 우리는 문자 토큰을 생성하기 위한 TeX의 범주 코드 사용 예와, TeX이 범주 코드 0(“이스케이프 문자”)를 사용하여 명령을 어떻게 인식하고 처리하는지 살펴봅니다.

### 3부: 입력 텍스트에서 명령으로

이 글은 TeX이 입력에서 감지된 명령을 어떻게 인식하고 처리하는지 깊이 있게 살펴봅니다. TeX이 명령에 대한 정보를 저장하고 불러오는 방법—명령 코드, 명령 한정자—과, 입력에서 읽어 들인 항목에 대한 정보를 저장하기 위해 TeX이 사용하는 몇 가지 내부 변수를 살펴봅니다. 이 글의 일부는 상당히 저수준의 내용이므로 처음 읽을 때는 건너뛸 수 있습니다.

### 4부: 매크로의 구조

매크로의 구조를 설명하기 위해 다음과 같은 “틀”을 소개하고 사용합니다:

```
<TeX macro primitive><macro name><parameter text>{<replacement text>}
```

그런 다음 매크로의 `<매개변수 텍스트>` 의 역할과 목적을 보여 주기 위해 다양한 예를 살펴봅니다. 이는 다음과 같은 토큰들을 사용하여 구성될 수 있는 “토큰 템플릿”으로서 *구분 기호를*.

### 5부: 토큰 목록과 TeX의 내부 매크로 저장

이 글은 TeX이 토큰 목록을 사용하여 매크로 정의를 저장하는 방식을 자세히 살펴봅니다. 특별히 수정된 TeX 버전으로 생성한 방대한 도표를 사용하여, TeX이 사용자의 매크로 인수를 식별하고 처리하는 데 사용하는 특수 토큰을 살펴봅니다.

### 6부: 매크로 확장과 처리

6부에서는 자세한 그래픽을 사용해 매크로 확장의 정확한 의미와, TeX의 토큰화가 매크로의 . 안으로 넣기 전에 매크로 인수에 미치는 결과를 설명하고 살펴봅니다.

## 짧은 주의: LaTeX가 아니라 “TeX” 사용하기

기사에서 논의했듯이 [이름에 담긴 것: TeX의 여러 변형에 대한 안내](/latex/ko/in-depth-articles/55-what-s-in-a-name-a-guide-to-the-many-flavours-of-tex.md) TeX, LaTeX 및 그 파생형을 지칭하거나 설명하기 위해 매우 다양한 용어가 사용됩니다. 따라서 이 시리즈의 맥락에서 우리가 “TeX”를 어떻게 사용하는지, 그리고 그 의미가 무엇인지 잠시 분명히 해두는 것이 좋습니다.

“TeX”은 다소 혼란스럽게도 실행 가능한 프로그램의 이름이기도 하고 조판 언어의 이름이기도 합니다. 둘을 구분하기 위해, 용어 *TeX 엔진* 는 실행 가능한 TeX 프로그램과 조판 언어를 구분하는 데 사용됩니다. 이 시리즈에서 사용되는 특정 데이터, 정보 및 세부 사항 중 일부는 Knuth의 원래 TeX 소프트웨어의 소스 코드를 자세히 검토하여 얻은 것이지만, 설명된 원리는 모든 TeX 엔진에 공통적입니다. 따라서 전체 논의에서 “TeX”의 사용은 Knuth의 원래 TeX, pdfTeX, XeTeX 또는 LuaTeX과 같은 실행 가능한 TeX 엔진 중 하나를 의미한다고 이해해야 합니다.

기사들 안에서는 TeX 기본 명령 `\def` 을 사용해 매크로 예제를 정의합니다: 우리는 LaTeX 명령 `\newcommand` 을 사용하지 않습니다. 이는 아마 대부분의 Overleaf 사용자에게 더 익숙할 것입니다. 그럴 만한 아주 좋은 이유가 있습니다: 우리의 목표는 TeX 매크로 동작의 근본 원리를 이해하는 것이지만, 이를 위해서는 TeX 소프트웨어에 내장된 핵심 명령(프리미티브)을 사용해야 합니다. 다음과 같은 LaTeX 명령 `\newcommand`은 그 자체로 매크로입니다: 특정하게 프로그래밍된 동작을 가진 명령이며, 결국 더 낮은 수준의 TeX 기본 명령 여러 층으로 구성됩니다. TeX의 근본적인 동작을 더 잘 이해하려면 LaTeX 매크로가 아니라 TeX 프리미티브를 사용해야 합니다.

## 예제와 그래픽

TeX의 다양한 기능, 경계 사례 및 동작을 보여 주기 위해 설계된 예제 매크로 모음에만 의존하는 대신, 우리는 TeX 내부를 들여다보아 *어떻게* 및 *왜일까요* 그 매크로 처리 방식이 왜 그런 방식으로 작동하는지 보기 위해 방대한 그래픽 자료도 사용합니다. 많은 그래픽(토큰 목록/노드 다이어그램)은 Knuth의 원래 TeX를 특별히 수정한 버전으로 준비되었습니다.

Overleaf는 Knuth의 TeX에 TeX의 매크로 처리에 “훅”을 걸어, 일반적으로 사용자가 접근할 수 없는 데이터와 데이터 구조를 탐색하는 C로 작성된 추가 코드를 더했습니다. 매크로가 호출될 때마다 수정된 TeX 엔진은 다음을 사용해 처리할 수 있는 형식의 데이터를 포함한 추가 출력 파일을 생성합니다 [Graphviz](https://www.graphviz.org/)—오픈소스 그래프 시각화 프로그램입니다. 최종 결과는 매크로가 호출되었을 때 사용자가 제공한 인수의 그래픽 표현과 함께, TeX이 매크로 정의를 정확히 어떻게 저장하는지 보여 주는 그래픽(노드 목록 다이어그램)입니다.

필연적으로 이 시리즈의 목표는 다양한 주제를 논의해야 하며, 그중 많은 부분은 상당히 저수준이고 처음에는 문서를 조판하는 일과는 매우 동떨어져 보일 수 있습니다. 하지만 깊이 파고들고 나면, 더 나은 이해를 쌓을 수 있는 기초를 얻게 되어 결국 많은 시간을 절약하고 어쩌면 좌절감도 줄일 수 있기를 바랍니다. 또한 이 시리즈와 함께 제공되는 특별 제작 그래픽이 TeX 매크로를 더 잘 이해하려는 독자들에게 도움과 지원이 되는 독특하고도 귀중한 통찰을 제공하기를 바랍니다.

## Overleaf의 맞춤형 TeX 버전

이 비디오는 Graphiviz 노드 다이어그램(을 생성하도록 조정된 Overleaf의 수정된 TeX 버전을 간단히 시연합니다`.gv`  파일)—이 변경 사항은 TeX의 다른 어떤 동작에도 영향을 주지 않습니다. `.gv` 파일에는 매크로 정의와 매크로 인수를 저장하는 데 사용되는 TeX 토큰 목록의 표현이 들어 있습니다. Graphviz 시각화 결과는 SVG로 내보내진 뒤 [Inkscape](https://inkscape.org/) 로 가져와 기사에 삽입하기 전에 추가 주석을 달기 위해 사용됩니다.

{% embed url="<https://videos.ctfassets.net/nrgyaltdicpt/40EAwKxZnNwgxwe9SpAwNY/5bce5de21509f3324bc50527ec6815e7/texdemo.mp4>" %}


---

# 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/01-a-six-part-series-how-do-tex-macros-actually-work.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.
