TeX: 두 판 사이의 차이
편집 요약 없음 |
(→글꼴) |
||
39번째 줄: | 39번째 줄: | ||
커누스 교수는 TeX에 쓸 글꼴을 위한 [[벡터 폰트]]인 메타폰트(METAFONT)라는 것도 만들었다. 굉장히 뛰어난 품질의 글꼴을 ([[알파벳]] 한정으로) 만들어 낸다. TeX에서 쓸 때에는 이걸 가지고 출력 장치의 해상도에 맞는 비트맵 글꼴인 TFB와 그 정보 파일인 TFM 파일을 만든다. DVI에는 TFB는 포함 안 되고 TFM만 포함되므로 크기가 무척 줄어든다. 컴퓨터가 더럽게 느리던 시절에는 아예 처음 TeX을 설치할 때 메타폰트로부터 여러 가지 해상도와 글자 크기에 맞는 TFB와 TFM 파일을 만들어내는 작업을 했는데 이것만 한나절 걸렸다. 그래도 한 번 만들어 놓으면 문서 [[컴파일]]할 때에는 시간이 대폭 단축되었으니까 참았던 것. | 커누스 교수는 TeX에 쓸 글꼴을 위한 [[벡터 폰트]]인 메타폰트(METAFONT)라는 것도 만들었다. 굉장히 뛰어난 품질의 글꼴을 ([[알파벳]] 한정으로) 만들어 낸다. TeX에서 쓸 때에는 이걸 가지고 출력 장치의 해상도에 맞는 비트맵 글꼴인 TFB와 그 정보 파일인 TFM 파일을 만든다. DVI에는 TFB는 포함 안 되고 TFM만 포함되므로 크기가 무척 줄어든다. 컴퓨터가 더럽게 느리던 시절에는 아예 처음 TeX을 설치할 때 메타폰트로부터 여러 가지 해상도와 글자 크기에 맞는 TFB와 TFM 파일을 만들어내는 작업을 했는데 이것만 한나절 걸렸다. 그래도 한 번 만들어 놓으면 문서 [[컴파일]]할 때에는 시간이 대폭 단축되었으니까 참았던 것. | ||
한글 사용자에게 가장 문제는 이 메타폰트가 256 글자만 지원한다는 것이었다. 곧, 알파벳 라틴 계열 문자 세트만 지원한다. 이 당시의 한글 TeX은 문제 해결 방법으로 한글 글자를 여러 개의 글꼴로 분산시킨 다음에 글자에 따라서 계속 글꼴을 바꿔가면서 찍었다. 예를 들어, [[명조체]] 2,360자 [[완성형 한글]] 글꼴 한 벌을 256 글자가 들어갈 수 있는 글꼴 10개 (명조01, 명조02...)로 분산시키고 조판할 때에는 그 글자가 들어 있는 글꼴로 바꿔 가면서 찍는 것이다. 조판 결과 한글은 보이지만 최적화와는 뭔가 거리가 멀고, 결과물로 만들어진 DVI나 PDF에서는 한글 텍스트 추출이 안 되는 것도 문제였다. 요즈음은 컴퓨터의 속도가 엄청나게 빨라져서 굳이 미리 TFB 비트맵 글꼴을 만들지 않아도 되니, [[트루타입]]이나 [[오픈타입]] 글꼴을 그대로 쓸 수 있는 XeTeX이 각광을 받고 있는 중이다. 이제는 [[유니코드]]를 직접 지원하기 때문에 굳이 한글 글꼴을 256 글자씩 쪼갤 필요도 없고 해서 한글 처리도 이제는 아주 매끄럽게 지원되고 있다. | 한글 사용자에게 가장 문제는 이 메타폰트가 256 글자만 지원한다는 것이었다. 곧, 알파벳 라틴 계열 문자 세트만 지원한다. 이 당시의 한글 TeX은 문제 해결 방법으로 한글 글자를 여러 개의 글꼴로 분산시킨 다음에 글자에 따라서 계속 글꼴을 바꿔가면서 찍었다. 예를 들어, [[명조체]] 2,360자 [[완성형 한글]] 글꼴 한 벌을 256 글자가 들어갈 수 있는 글꼴 10개 (명조01, 명조02...)로 분산시키고 조판할 때에는 그 글자가 들어 있는 글꼴로 바꿔 가면서 찍는 것이다. 조판 결과 한글은 보이지만 최적화와는 뭔가 거리가 멀고, 결과물로 만들어진 DVI나 PDF에서는 한글 텍스트 추출이 안 되는 것도 문제였다. 요즈음은 컴퓨터의 속도가 엄청나게 빨라져서 굳이 미리 TFB 비트맵 글꼴을 만들지 않아도 되니, [[트루타입]]이나 [[오픈타입]] 글꼴을 그대로 쓸 수 있는 XeTeX이 각광을 받고 있는 중이다. 이제는 [[유니코드]]를 직접 지원하기 때문에 굳이 한글 글꼴을 256 글자씩 쪼갤 필요도 없고 해서 한글 처리도 이제는 아주 매끄럽게 지원되고 있다. [[LuaTeX]] 역시 [[트루타입]]이나 [[오픈타입]] 글꼴을 사용할 수 있는데, XeTeX은 컴퓨터 운영체제의 글꼴 처리 엔진을 사용하는 반면 [[LuaTeX]]은 자체 엔진을 사용하기 때문에 미세한 부분에 차이가 있다. | ||
==배포판== | ==배포판== |
2017년 12월 15일 (금) 04:53 판
디지털 조판 프로그램. 이공계 대학원생, 특히 수학 전공 대학원생들의 공공의 적.[1]
출판물에는 [math]\displaystyle{ \TeX }[/math]이라고 써야 정확하다. 글자만 보고 '텍스'라고 발음하면 안 되고, 원래는 그리스어에서 온 것이므로 '테흐'에 가깝지만 보통은 '텍'이라고 발음한다.
역사
스탠포드대학교의 컴퓨터 과학자 도널드 커누스(Donald Knuth) 교수가 자신의 책 <The Art of Computer Programming>[2] 개정판 내려다가 출판사가 보내 온 교정본의 조판 품질에 빡친 것이 시작이다. 커누스 교수는 당시 초창기 단계였던 디지털 조판 장비를 최대한 활용할 수 있는 조판 시스템을 직접 만들어 보기로 결심했다. 가끔 휴대폰 가게에 "싼 휴대폰 찾다가 빡쳐서 직접 차린 집"이라는 문구가 붙어 있는 걸 볼 수 있는데, TeX은 "좋은 조판 시스템 찾다가 빡쳐서 직접 만든 시스템"이 되시겠다. 그리고 수많은 이공계 대학원생들이 빡치고 있다.
TeX의 메이저 버전은 3이다. 버전 3이 1989년에 나온 이후로는 자잘한 기능 개선이나 버그 수정이 이루어졌고, 그나마 이제는 한강에서 바늘 찾기 수준으로 나오는 버그만 고치는 정도다. 최신 버전은 3.14159265다. 어라? 어디사 많이 본 숫자인데...? 원주율이다. 마이너 업그레이드가 이루어질 때마다 원주율에 맞춰서 뒤에 숫자가 하나 붙는 식으로 버전을 올리고 있다. 앨런튜링상 수상자의 유머 감각. 즉, 이 버전은 14159265번 수정된 게 아니라 8번 수정된 것이다. 1989년에 나온 프로그램이 겨우 8번 밖에 수정이 안 된 것이다. 그만큼 버그가 없고 안정된 프로그램이라는 뜻.
특징
텍스트에 마치 프로그래밍을 하듯이 명령어를 넣어서 문서의 구성이나 모양을 만든다. 이 점이 TeX을 어렵게 만드는 가장 큰 원인이다. 대회상자로 문서의 모양을 잡고 글꼴을 바꾸면 화면에 바로 그 결과가 나타나는, WYSIWYG(What You See Is What You Get) 방식의 워드프로세서나 전자조판프로그램에 익숙해져 있디면 마치 윈도우만 쓰다가 DOS 혹은 유닉스의 명령행 쉘을 쓸 때와 같은 멘붕 상태에 빠질 것이다.[3] 하지만 프로그래밍이나 HTML에 익숙해 있다면 생각보다는 어렵지 않다. 또한 나만의 명령어를 만들어서 반복되는 귀찮은 작업을 간편하게 명령어 하나로 해결할 수도 있다. 최근에는 아예 TeX이 가진 프로그래밍의 특성을 강화하는 방향으로 나아가고 있다. 현대 프로그래밍의 개념을 많이 집어넣은 LaTeX3도 그렇고 Lua 스크립트를 넣을 수 있는 LuaTeX도 있다. 조판 엔진 차원에서 지원되지는 않지만 파이썬 코드를 넣을 수있는 PythonTeX 패키지도 있다.
수식 조판에 대단한 강점을 가지고 있다. TeX의 난이도에 빡치더라도 수식 편집에 오는 순간 왜 TeX을 그렇게 쓰라고 하는지 절절하게 느끼게 된다. 굉장히 복잡한 수식도 상당히 논리적으로 표현할 수 있다. 수학과 교수 쯤 되면 몇 페이지에 걸친 수식도 TeX으로 척척 만들어 낸다. 그러니까 수학 잘하는 사람보다 TeX 잘하는 사람이 교수되는 건가?
수식 말고도 논문 작성에 또 한 가지 대단한 위력을 발휘하는 것은 BibTeX. 논문을 쓰다 보면 참고문헌을 각주나 목록으로 붙이는 게 여간 귀찮고 까다로운 게 아니다. 엄격하게 정해진 형식에 따라서 붙여야 하는데, 그나마도 하나의 표준이 있는 게 아니라 학교마다, 또는 학회마다 형식이 다르기 때문, 널리 통용되는 표준 형식이 있긴 하지만 이게 한 가지가 아니다. 아무튼 BibTeX을 쓰면 서지 정보만 제대로 써 주면 알아서 참고문헌을 형식에 맞게 붙여 준다. 대부분의 이공계 아카이브는 서지정보를 BibTeX 형식으로 제공하고 있는 것도 강점. 수식이 많지 않더라도 BibTeX을 쓰기 위해 TeX으로 논문을 쓰는 사람들도 많다.
하지만 수식이나 논문이 아닌, 일반 출판물을 위해 쓰더라도 손색이 없다. 1970년대에 만들어진 프로그램인데도 그 조판 결과가 지금의 어도비 인디자인이나 쿼크익스프레스 같은 전자출판 프로그램으로 제작한 것과 비교해도 결코 못하다 할 수 없다. TeX에서 쓸 수 있는 최소 단위는 sp로, 1 sp = 65536 pt(포인트)이므로 어마어마한 정밀도를 자랑한다. 정렬이나 빈칸 배분을 비롯한 타이포그래피 성능도 지금의 전자출판 프로그램들이 무색하도록 뛰어나다. 물론 잡지처럼 텍스트 배치나 컬러 사용이 복잡한 출판물은 TeX으로 하기 힘들지만[4] 탄순 텍스트 위주의 출판물은 TeX을 잘 쓰는 중고급 사용자라면 충분히 미려한 결과물을 만들 수 있다.
TeX이 하도 쓰기 어렵다 보니, TeX을 기반으로 해서 좀 더 쓰기 쉽게 만든 LaTeX이 나왔다. 오늘날 TeX을 쓰는 대다수 사람들은 LaTeX으로 작업한다. LaTeX이 TeX보다는 훨씬 쉽지만 어디까지나 'TeX보다'다. TeX이 박사 과정이라면 LaTeX은 석사 과정 쯤으로 생각하면 된다. 그밖에 ConTeXt와 같은 것들도 있지만 LaTeX의 점유율이 압도적으로 높은 상태.
워드프로세서 혹은 조판 프로그램으로는 호환성이 최강이다. 거의 모든 유닉스 계열 운영체제에서 다 돌아가며 맥이나 윈도우도 당연히 지원한다. 사실 도널드 커누스 교수는 웹(WEB)[5]이라는, 추상적인 형태의 언어로 TeX을 만들었는데, WEB을 각 운영체제에 맞는 적당한 프로그래밍 언어로 번역해 주면 되므로 호환성이 좋다. 보통 TeX 프로그램은 Web2C라는, WEB을 C로 변환한 다음 컴파일하는 방식으로 만든다. 심지어 안드로이드에 TeX을 이식해 놓은 앱도 있다. 고만해 미친놈들아.
C 언어 컴파일러가 소스 코드 파일을 컴파일해서 실행 파일을 만들어 내듯, TeX은 소스 문서 파일을 컴파일해서 DVI(DeVice Independent, 장치 독립) 형식의 전자문서 파일을 만든다. 당연히 DVI도 커누스 교수가 만든 형식. 말 그대로 장치 독립이라서 TeX이 깔려 있는 시스템이라면 어떤 운영체제로 가지고 가든 똑같은 출력을 보장한다. PDF가 널리 퍼지면서부터는 DVI를 PDF로 바꿔주는 변환 프로그램이 등장했고, 최근에는 아예 PDF를 바로 만들어 주는 PDFTeX이 널리 쓰이고 있다.
최근에는 아래아한글이나 MS워드와 같은 그래픽 기반 워드프로세서들도 수식 입력 및 편집기능이 강화되어 TeX의 장점도 조금은 퇴색되었다. 아래아한글은 그래픽 기반 인터페이스와 명령어 입력 방식을 모두 지원한다. 하지만 그래픽 기반 워드프로세서들의 기능이 향상된다고 해도 근본적인 한계가 있다. 수식이 석박사 논문 수준으로 복잡해지면 오히려 그래픽 기반 방식이 훨씬 시간도 오래 걸리고 성가시며[6], 워드프로세서에서 수식은 그림처럼 일종의 독립된 '개체'로 들어가기 때문에 수식과 텍스트가 자연스럽게 섞여 어울리는 것도 TeX을 따르지 못한다. 당분간 수학계를 비롯한 이공계에서 TeX의 위상이 크게 내려가지는 않을 분위기다.
형식
모든 TeX 문서는 텍스트와 명령으로 구성된다. 텍스트는 문서에 실제로 표시되는 내용이고, 명령은 텍스트를 어떻게 꾸밀지를 지시하는 것이다. 명령은 백슬래시(\)로 시작되며, 빈칸 없이 곧바로 명령어를 입력한다. 명령어는 다음과 같은 특징이 있다.
- 명령어는 대소문자를 구별한다.
\mycommand
와\MyCommand
는 다른 명령으로 인식한다. - 오로지 알파벳만 쓸 수 있다.
\Command2
와 같은 명령어는 쓸 수 없다. TeX은 명령어를 보다가 알파벳이 아닌 숫자 같은 것들이 나오면 그 앞에서 명령이 끝난 것으로 간주한다.\Command2
명령어를 만나면 TeX은\Command
와2
로 나누어서 인식한다. - 명령어에 밑줄이나 점과 같은 기호도 쓸 수 없는 것이 원칙인데.다만 @ 기호는
\makeatletter
와\makeatother
사이에서 쓸 수 있다. 이것은 원래 패키지를 만들 때 일반 사용자는 바로 쓸 수 없는 내부용 명령어를 정의하기 위한 것이다. LaTeX3는 내부 명령어를 위해 @ 대신 밑줄(_)과 쌍점(:)을 쓰며,\ExplSyntaxOn
과\ExplSyntaxOff
사이에서만 사용할 수 있다.
글꼴
커누스 교수는 TeX에 쓸 글꼴을 위한 벡터 폰트인 메타폰트(METAFONT)라는 것도 만들었다. 굉장히 뛰어난 품질의 글꼴을 (알파벳 한정으로) 만들어 낸다. TeX에서 쓸 때에는 이걸 가지고 출력 장치의 해상도에 맞는 비트맵 글꼴인 TFB와 그 정보 파일인 TFM 파일을 만든다. DVI에는 TFB는 포함 안 되고 TFM만 포함되므로 크기가 무척 줄어든다. 컴퓨터가 더럽게 느리던 시절에는 아예 처음 TeX을 설치할 때 메타폰트로부터 여러 가지 해상도와 글자 크기에 맞는 TFB와 TFM 파일을 만들어내는 작업을 했는데 이것만 한나절 걸렸다. 그래도 한 번 만들어 놓으면 문서 컴파일할 때에는 시간이 대폭 단축되었으니까 참았던 것.
한글 사용자에게 가장 문제는 이 메타폰트가 256 글자만 지원한다는 것이었다. 곧, 알파벳 라틴 계열 문자 세트만 지원한다. 이 당시의 한글 TeX은 문제 해결 방법으로 한글 글자를 여러 개의 글꼴로 분산시킨 다음에 글자에 따라서 계속 글꼴을 바꿔가면서 찍었다. 예를 들어, 명조체 2,360자 완성형 한글 글꼴 한 벌을 256 글자가 들어갈 수 있는 글꼴 10개 (명조01, 명조02...)로 분산시키고 조판할 때에는 그 글자가 들어 있는 글꼴로 바꿔 가면서 찍는 것이다. 조판 결과 한글은 보이지만 최적화와는 뭔가 거리가 멀고, 결과물로 만들어진 DVI나 PDF에서는 한글 텍스트 추출이 안 되는 것도 문제였다. 요즈음은 컴퓨터의 속도가 엄청나게 빨라져서 굳이 미리 TFB 비트맵 글꼴을 만들지 않아도 되니, 트루타입이나 오픈타입 글꼴을 그대로 쓸 수 있는 XeTeX이 각광을 받고 있는 중이다. 이제는 유니코드를 직접 지원하기 때문에 굳이 한글 글꼴을 256 글자씩 쪼갤 필요도 없고 해서 한글 처리도 이제는 아주 매끄럽게 지원되고 있다. LuaTeX 역시 트루타입이나 오픈타입 글꼴을 사용할 수 있는데, XeTeX은 컴퓨터 운영체제의 글꼴 처리 엔진을 사용하는 반면 LuaTeX은 자체 엔진을 사용하기 때문에 미세한 부분에 차이가 있다.
배포판
옛날에는 설치가 정말 어려웠다. 거의 한나절이었다. 컴퓨터가 빠르지 않았기 때문에 미리 메타폰트로 여러 가지 해상도와 크게에 맞는 비트맵 글꼴을 만들어서 썼는데 그 과정만 한나절 걸렸다. 게다가 필요한 패키지를 찾아서 설치하는 것도 만만치 않은 작업. 저장 용량이 넉넉치 않았던 시대에는 지금처럼 수백 가지의 패키지를 왕창 깔기에도 부담스러웠다.
이후에는 설치를 쉽게 해주는 패키지들이 나왔는데 이제는 대략 텍라이브(TeX Live)로 모이는 추세다. 전 세계 TeX 커뮤니티의 본진이라 할 수 있는 CTAN(Comprehensive TEX Archive Network)에서 제공하는 배포판으로 기본 설치도 쉽지만 TeX과 LaTeX에서 쓰는 수많은 부속파일이나 패키지를 손쉽게 설치하거나, 업데이트하거나, 지울 수 있게 해 준다. 1년에 한 번씩 새로운 배포판이 나오며 각종 업데이트는 수시로 제공된다. 윈도우용으로는 믹텍(MikTeX)로 예전부터 널려 쓰여 왔던 배포판이지만 텍라이브에 많이 밀리는 추세다. 특히 한국 TeX 커뮤티니의 본진인 KTUG도 텍라이브 저장소를 운영하고 이쪽을 주로 밀어주고 있어서 더더욱 믹텍이 불리하다. 그래도 믹텍도 꾸준히 업데이트 되고 있으며 이쪽 사용자층도 무시할 수 없는 정도라서 당분간 라이벌 관계는 이어질 듯. 맥을 쓰고 있다면 맥텍(MacTeX)이 거의 진리. 텍라이브 기반으로 맥을 위한 추가 기능을 지원하기 때문에 맥 사용자들에게는 거의 맥텍만 권한다. 우분투나 페도라 같은 리눅스 주요 배포판은 텍라이브를 패키지 형태로 편리하게 설치할 수 있도록 제공하고 있긴 한데 버전이 좀 뒤처져 있는 경우가 많다. 패키지를 제공하지 않는 배포판을 쓰고 있거나 최신 버전의 텍라이브를 쓰고 싶으면 직접 받아서 설치해 쓰자. KTUG 한글 TeX 사용자 그룹 에 가면 여러 가지 안내 문서도 있고 질문을 올릴 수도 있다.
TeX을 기반으로 위지윅을 제공하는 프로그램도 있는데, Scientific WorkPlace나 Mathmatica 같은 프로그램이 그것. 사실 이들 프로그램은 단순히 TeX 편집 기능만이 아니라 수식 기반의 수치 계산과 같은 기능을 주요한 기능으로 하고 있지만 단순히 TeX 편집을 위해서 쓰는 사람들도 꽤 있다.
프로그램을 다운로드 받고 설치하는 것도 귀찮다 싶으면 아예 웹 기반으로 동작하는 서비스를 이용할 수도 있다. ShareTeX이나 Overleaf와 같은 서비스가 그것으로[7], 웹 기반 편집기도 제공하고 결과물을 바로바로 확인할 수 있다. 심지어 kotex 패키지를 사용하면 LaTeX에서 한글도 지원한다.
편집기
일단 기본 텍스트 편집기만 있으면 충분히 쓸 수 있다. TeX의 강점 중 하나는 저사양 컴퓨터에서도 너끈히 쓸 수 있으며, 만약 텍 컴파일이 힘들 정도로 저사양이라고 해도 일단 문서는 텍스트 편집기에서 편집만 하고 다른 컴퓨터로 옮겨서 컴파일 하는 방법도 있다. 하지만 텍스트 편집기를 쓸 때에는 따로 커맨드라인 프롬프트를 띄워서 컴파일을 하기 때문에 좀 불편한 면이 있다. 그 때문에 TeX에 특화된 하이라이팅 기능이나 명령어 제안 및 자동 완성, 컴파일 및 결과로 나오는 PDF[8] 보기 기능 과 같은 것들을 제공한다.
널리 쓰이는 편집기로는 텍라이브에 들어 있는 TeXworks, TeX Maker, TeX Studio 같은 것들이 있으며 이들은 윈도우, 맥, 리눅스까지 멀티 플랫폼을 지원한다. WinEdt, EmEditor 같은 범용 텍스트 편집기도 자체 지원 또는 플러그인 기능을 사용하면 상당히 편리하게 TeX 편집을 할 수 있다. 비주얼 스튜디오 코드도 TeX Workshop 플러그인 설치로 상당히 뛰어난 TeX 편집 지원을 한다.
각주
- ↑ 하지만 TeX이 없었다면 복잡한 수식이 들어간 논문을 작성하기 위해 훨씬 더 많은 시간과 노력을 소모했을 것이므로 사실 적이라기보다는 오히려 축복에 가깝다. 논문을 쓸 때에는 수식 부분 말고는 외워야 할 명령어도 별로 없고 논문 저자에게는 아주 직관적인 명령어들이 많다 보니 익숙해지고 특화된 편집기의 도움을 받으면 논문 쓰기에는 편리하다.
- ↑ 컴퓨터 과학계에서는 정말로 손꼽히는 알고리즘 분야의 명저다.
- ↑ 이와 비교되는 개념으로 TeX을 WYSIWYM(What You See Is What You Mean)이라고 부른다. 즉 '당신이 보는 것이 당신이 의미하는 바다'란 뜻. 문서를 만드는 사람은 의미 위주로 문서를 만들면 TeX이 알아서 예쁘게 만들어 준다는 얘기다.
그러나 정말 의미에만 신경 써서 만들다 보면 결과물이 별로 안 예쁘다는 것은 함정. - ↑ 초고급 사용자들은 어떻게든 하긴 하지만 굳이 그럴 필요는 없고, TeX의 철학에도 맞지 않는다
- ↑ 인터넷의 월드 와이드 웹(World Wide Web)과는 전혀 관계 없다.
일단 그때는 인터넷이 없었잖아. - ↑ 운영체제의 인터페이스도 그래픽 기반이 초보자도 쉽게 사용할 수 있지만 많은 작업을 해야 할 때에는 주요한 명령어 사용 방법을 어느 정도 알고 있을 경우 오히려 명령어 기반이 훨씬 빠르다. 일단 그래픽 기반 운영체제는 마우스와 키보드를 왔다갔다 해야 하고 마우스로 메뉴나 아이콘을 찾아 클릭하거나 하는 동작들이 시간을 많이 잡아먹는다. 명령어 기반이라면 명령어를 알고 있으면 키보드 타자로 간단히 끝나므로 속도가 훨씬 빠르다. 리눅스와 같이 서버에서 많이 쓰이는 운영체제는 bash와 같은 명령행 쉘을 많이 쓴다.
- ↑ 이 두 서비스는 2017년에 협력을 선언하고 서비스 공동 개발을 추진하게 되었다.
- ↑ 예전에는 DVI였지만 지금은 PDF가 대세라 상당수가 기본으로는 PDF 프리뷰 기능만 제공한다.