> 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/in-depth-articles/49-the-tex-family-tree-latex-pdftex-xetex-luatex-and-context.md).

# TeX 계통도: LaTeX, pdfTeX, XeTeX, LuaTeX 및 ConTeXt

LaTeX의 역사는 1977년까지 거슬러 올라갑니다. 그때 Donald Knuth는 고품질 조판 프로그램의 필요성을 처음 깨달았습니다. 그가 당시 구상한 시스템이 오늘날에도 이 작업에 가장 좋은 도구라는 사실은 LaTeX의 품질을 보여 주는 놀라운 증거입니다. 그 이후 수십 년 동안 많은 유용한 기능이 추가되었지만 말입니다. 사실 LaTeX는 Donald Knuth가 개발한 원래 시스템에 더해진 여러 추가 요소 중 하나로, 그 시스템은 [TeX](http://www.tug.org/).

LaTeX 세계에서 아는 체하려면 T와 X를 대문자로 써서 Lay-Tech처럼 발음해야 합니다. TeX의 X는 사실 그리스어의 대문자 카이(χ)이기 때문입니다. 일반적인 대소문자와 발음으로 쓰는 Latex는 고무의 한 종류입니다!

## 원래 TeX

지금은 TeX에서 파생된 도구들이 아주 많아서, 처음 보면 말도 안 되는 단어 목록처럼 보일 수 있습니다: LaTeX, pdfTeX, XeLaTeX, LuaTeX, ConTeXt 등등. 이 모든 것의 조상은 물론 Knuth의 원래 TeX 프로그램입니다. 이것은 일반 텍스트 문서를 받아 아름답게 조판된 문서로 변환합니다. Knuth는 조판에 매우 까다로웠고, TeX에 담긴 세심한 배려는 분명히 드러납니다. TeX 문서의 예는 대략 다음과 같을 수 있습니다:

```latex
\TeX{}는 `fjord', `efficiency', 같은 단어를 조판하는 데 능숙합니다.
그리고 `fiasco'도 그렇습니다. 또한 다음과 같은 수학식 조판도 잘합니다,
$a^2 + b^2 = c^2$.
\bye
```

이를 TeX 프로그램에 돌린 뒤의 출력은 다음과 같습니다:

![Texsample.png](/files/9107e7173c60fa98431a1ae99a121c80e30ecfe8)

예시 단어들에서 'fi', 'fj', 'ff'의 조합이 보기 좋게 이어지고, 수학 기호들이 알맞게 간격을 두고 배치된 것을 보세요. 더 큰 규모에서도 TeX는 적절한 위치에서 줄을 잘 끊어 깔끔하게 맞춰진 텍스트를 만들며, 필요할 때는 하이픈도 적절히 넣어 줍니다.

텍스트를 보기 좋게 조판할 뿐만 아니라, 다음과 같은 여러 명령도 갖추고 있습니다: `\bye` 및 `\TeX` 위 예시에서처럼 말입니다. 이것들은 글꼴 크기를 바꾸거나 텍스트 배치를 바꾸는 것처럼 단순한 일도 할 수 있고, 페이지를 서로 참조할 수 있도록 섹션 번호를 유지하거나 목차를 자동으로 만드는 것처럼 훨씬 더 강력한 일도 할 수 있습니다. TeX 프로그램에는 기본적으로 약 300개의 명령이 내장되어 있지만, 그 안에서 다른 명령을 정의할 수도 있습니다. Donald Knuth는 TeX 내부에서 또 다른 약 600개의 유용한 명령을 작성했는데, Plain TeX라는 패키지로 묶여 있어 몇 가지 흔한 조판 작업을 더 쉽게 해 줍니다.

## LaTeX

TeX와 Plain TeX의 명령은 여전히 꽤 기본적이어서 그것들로 복잡한 일을 하기는 쉽지 않습니다. 이를 돕기 위해 Leslie Lamport는 [LaTeX](http://www.latex-project.org/) 를 1980년대 초에 만들어 TeX보다 더 높은 수준의 언어를 제공했습니다. LaTeX는 기반이 되는 TeX 명령을 바탕으로 정의된 명령들의 집합으로, 종종 매우 많은 추상화 층 위에 놓여 있습니다. LaTeX 문서에서 사용하는 모든 명령은 사실 그 아래에서 보면 복잡한 TeX 명령의 집합일 뿐입니다. 물론 TeX 명령을 직접 사용하는 경우는 예외입니다! 패키지(`\usepackage{...}`), 환경(`\begin{environment} ... \end{environment}`), 문서 클래스(`\documentclass{...}`) 같은 개념은 모두 Leslie Lamport가 LaTeX에 도입한 것입니다.

LaTeX를 위한 표준화된 패키지 시스템을 만들어 Leslie Lamport는 커뮤니티가 엄청나게 성장할 수 있게 했습니다. 이제는 소그림부터 뜨개질 무늬까지 무엇이든 조판할 수 있게 해 주는 수천, 수만 개의 LaTeX 패키지가 있습니다. 책, 실험 보고서, 이력서 등 문서의 종류에 따라 사용할 수 있는 문서 클래스도 많이 있습니다. 많은 출판사와 학술지는 자신들이 원하는 방식으로 문서를 꾸밀 수 있는 자체 문서 클래스를 가지고 있습니다.

## pdfTeX

TeX 프로그램은 20년이 넘은 소프트웨어치고는 놀라울 정도로 안정적입니다. Knuth는 1989년에 기능이 완성되었다고 선언했고, 그 이후로는 버그 수정만 이루어졌습니다. 물론 이것이 TeX 위에서 작성된 LaTeX의 중요한 지속적 발전을 막지는 못했습니다. 사실 TeX의 안정성 덕분에 LaTeX 같은 상위 패키지들이 그 위에서 번성할 수 있었습니다.

이 말이 기반이 되는 TeX 프로그램이 지난 20년 동안 어떤 발전도 없었다는 뜻은 아닙니다. 사실은 전혀 그렇지 않습니다. 단지 TeX 자체는 안정적으로 두고, 개선은 TeX와 함께 이루어졌을 뿐입니다. 1990년대 가장 중요한 개선은 [pdfTeX](http://www.tug.org/applications/pdftex/) Hàn Thế Thành이 박사 논문을 위해 만든 것입니다. 원래 TeX 프로그램은 조판된 문서를 DVI(장치 독립 형식, DeVice Independent format)라는 자체 형식으로 출력하며, 이것은 나중에 인쇄용 PostScript 파일로 바꿀 수 있습니다. 그러나 PDF 형식은 1993년에 등장했고, 오늘날에는 PostScript보다 더 나은 형식으로 분명히 승리했다고 볼 수 있습니다. PDF를 더 좋게 만드는 기능은 매우 많습니다. 예를 들어 섹션 간 하이퍼링크, PDF 뷰어 왼쪽에 목차를 볼 수 있게 해 주는 메타데이터 섹션, 그리고 더 넓고 현대적인 다양한 이미지 형식 지원이 있습니다. pdfTeX는 TeX를 수정해 PDF로 직접 출력할 수 있게 함으로써 이런 추가 기능들을 활용할 수 있게 해 줍니다.

오늘날 시스템에 LaTeX 배포판을 설치하면 실제로는 두 개의 서로 다른 프로그램이 함께 들어 있습니다: `tex`, 그리고 `pdftex`. 여기에 더해 또 다른 두 프로그램도 함께 제공됩니다: `latex` 및 `pdflatex`, 하지만 이것들은 실제로는 각각 다음의 래퍼일 뿐입니다 `tex` 및 `pdftex` 각각입니다. 이들은 먼저 LaTeX 패키지를 불러온 뒤 문서를 처리하지만, 그 아래에서는 여전히 TeX입니다. 만약 `latex` 또는 `tex` 을 실행하면 나중에 PostScript 파일이나 PDF로 바꿀 수 있는 DVI 파일이 생성되지만, `pdflatex` 을 실행하면 PDF가 바로 생성됩니다.

대체로, `pdftex` 및 `pdflatex` 는 다음의 개선판입니다 `tex` 및 `latex`, 하지만 한 가지 단점이 있습니다. 원래 TeX와 DVI 형식은 Encapsulated PostScript 파일(`.eps`)을 지원하는데, 이는 PostScript 파일( `.dvi` 파일을 다음을 통해 PostScript로 변환하여 [`Dvips`](https://www.tug.org/texinfohtml/dvips.html)) 생성한 파일에 쉽게 포함할 수 있기 때문입니다. 그러나 `pdftex` 는 EPS 파일을 포함할 수 없으며, 대신 PDF를 사용해야 합니다(EPS 파일은 다음 명령으로 만들 수 있습니다 `epstopdf` 이며, 이는 보통 LaTeX 배포판에 포함되어 있습니다). 하지만 이 단점을 감수하는 대신 pdfTeX는 `.png`, `.jpg` 및 `.pdf` 이미지 지원을 추가하며, 원래 TeX는 .eps만 지원합니다( [`Dvips`](https://www.tug.org/texinfohtml/dvips.html)).

## XeLaTeX와 LuaTeX

지금까지 우리는 TeX가 처음 등장한 이후 두 가지 다른 방식으로 진화해 왔음을 보았습니다. 하나는 원래 시스템 위에 더 쉽게 사용할 수 있는 명령을 더한 것(LaTeX)이고, 다른 하나는 PDF 출력을 지원하도록 기반 프로그램을 업데이트한 것(pdfTeX)입니다. 그러나 이야기는 거기서 끝나지 않았고, TeX를 현대화하려는 노력이 계속 이어져 왔습니다. 2004년 Jonathon Kew는 [XeTeX](http://tug.org/xetex/)를 만들었는데, 이는 기반 TeX 엔진을 수정한 또 다른 버전으로, 이번에는 일반적인 영어의 숫자와 문자뿐 아니라 더 넓은 범위의 문자들을 지원하고 현대적인 글꼴 형식도 포함하도록 했습니다. 덕분에 외국어로 글을 쓰기가 훨씬 쉬워졌고, 전통적으로 워드 프로세서에서만 사용할 수 있었던 글꼴도 LaTeX 안에서 사용할 수 있게 되었습니다.

[LuaTeX](http://www.luatex.org/) 는 좀 더 합리적인 프로그래밍 언어를 사용해 원래 TeX 프로그램을 확장하려는 시도입니다. 원칙적으로는 TeX 안에서 무엇이든 할 수 있지만, 실제로는 매우 다루기 불편한 프로그래밍 언어이며, 애초에 프로그래밍 언어라고 부를 수 있을지조차 의문입니다. LaTeX 내부의 많은 부분은 TeX 안에서만 작업해야 하기 때문에 복잡하고 외부인이 이해하기 어렵습니다. LuaTeX는 이름 그대로의 스크립팅 언어인 Lua로 확장되었는데, Lua는 단순하고 안정적인 언어로 복잡한 매크로를 작성하기에 이상적입니다. 2012년 현재도 활발히 개발 중이며 API는 바뀔 가능성이 있지만, 여전히 매우 유용합니다.

## ConTeXt

우리는 LaTeX를 TeX에서 사용할 수 있는 명령의 확장판으로 언급했지만, TeX를 의미 있게 확장한 패키지는 그것만이 아닙니다. [ConTeXt](http://wiki.contextgarden.net/What_is_ConTeXt) 는 1990년에 Hans Hagen이 만든 또 다른 시스템입니다. LaTeX는 사용자가 조판과 레이아웃에 대한 결정을 내리지 않아도 되도록 하는 것을 목표로 합니다(당신이 입력하는 것은 `\\section` 및 `\emph` 하지만 그것들이 무엇을 하는지는 신경 쓰지 않아도 됩니다. 그건 문서 클래스나 레이아웃에 맡겨 두면 됩니다). 반면 ConTeXt는 고급 조판 기능을 쉽게 사용할 수 있는 인터페이스를 제공하는 것을 목표로 합니다. 아쉽게도 저는 ConTeXt에 대해 알고 있는 것이 제가 바라는 만큼 많지 않아서 더 자세히 설명할 수는 없지만, 나중에 더 실험해 보게 된다면 반드시 그 결과를 정리해 쓸 생각입니다.

마지막으로 역사적인 점 하나를 언급하자면, [AMSTeX](http://en.wikipedia.org/wiki/AMS-LaTeX) 는 Plain TeX 매크로를 확장한 것이며, 1982년부터 1985년까지 미국수학회(AMS)에서 사용되었습니다. 그 유산은 많은 LaTeX 문서의 필수 요소인 AMS-LaTeX 패키지에 남아 있습니다: `\usepackage{amsmath}`.

## 미래

TeX와 LaTeX의 미래는 어떻게 될까요? 아직은 모르지만, Alan Kay가 한때 말했듯이:

> 미래를 예측하는 가장 좋은 방법은 그것을 발명하는 것이다.

ShareLaTeX를 통해 우리는 LaTeX 작업 흐름에 큰 개선을 가져와 TeX와 LaTeX를 세 번째 방향으로 발전시키고자 합니다. LaTeX는 20년이 넘었음에도 여전히 대체로 명령줄 프로그램이며, 글을 쓰고, 컴파일하고, 출력을 확인하는 어색한 순환 과정을 거쳐야 합니다. 협업 방식도 Google Docs 같은 워드 프로세싱 도구에서 제공하는 매끄러운 과정보다는 투박한 이메일 메시지에 의존하는 경우가 많습니다.


---

# 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/in-depth-articles/49-the-tex-family-tree-latex-pdftex-xetex-luatex-and-context.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.
