한글 TeX이 만족시켜야 될 여러 가지

처음 한글 TeX이 만들어진 이래, 여러 사람의 손에 의해 계속적인 많은 변화가 있었습니다. 아마도 여러 사람들이 한글 TeX을 만드는 일에 관심을 갖고 실제로 그 일에 참여한 이유는 바로 여러 사람이 한글 TeX을 필요로 했기 때문일 것입니다. 또 한가지 이유라면, (적어도) 과거에 존재하던 한글 TeX들이 사용자들의 요구 중 상당 부분을 만족시키지 못하고 있었다는 것을 들 수 있을 것입니다. 한글 TeX을 필요로 하는 사람이 없다면 한글 TeX에 관심을 가질 필요도 없을 것이고, 또한 모든 사용자의 요구를 충족시키는 완전한 한글 TeX이 있었다면 그것을 사용하면 되지 구태여 새로운 한글 TeX을 만들 필요가 없었을 것입니다. 무엇인가 고쳐져야 될 점이 있었기 때문에 계속적인 변화가 이루어졌을 것입니다.

이 글에서는 한글 TeX이 궁극적으로 만족해야 할 조건이 과연 무엇인가에 대해 논의해보고자 합니다. 사용자 입장에서 본 이제까지의 한글TeX에 대한 바램이나 요구 사항과, 또 한글 TeX이나 TeX 매크로 패키지를 만드는 사람들이 원하는 한글 TeX의 목표를 함께 고려할 것입니다.

이렇게 조금은 원론적이고 추상적인 문제에 대해 논의한 결과는 한글 TeX 개발에서 직면하게 되는 보다 구체적인 문제들의 해결 방법에 대한 길잡이 또는 하나의 철학이 될 수 있을 것입니다. 또한, 한글 TeX의 사용자들에게는 한글 TeX의 개념을 이해하는 데에 많은 도움을 줄 수 있을 것입니다. 한글 TeX 사용자들은 한글 TeX을 보다 잘 이해함으로서 한글 TeX의 여러 기능들을 적재적소에서 보다 잘 활용할 수 있을 것입니다.

여러 영문용 TeX 매크로 패키지들이 여태까지 만들어 졌지만, 요즈음에는 대부분의 사람들이 LaTeX을 사용하고 있고, 또 다른 패키지들은 모두 LaTeX의 일부로 또는 LaTeX과 함께 사용할 수 있도록 되어가는 것이 추세입니다. 따라서 우리가 만들어야 할 한글 TeX은 아마도 "LaTeX에서 한글을 쓸 수 있게 해주는" 것이 되어야 할 것입니다.

차례

한글 코드
- 어떤 글자들을 사용할 수 있어야 하는가?

처리 속도
- 영문 TeX에 뒤지지 않는 빠른 한글 TeX

호환성
- 영문 TeX과의 호환성 보장

한글 처리의 안정성
- 영문은 되는데 한글은 안 된다? 깨지지 않는 한글

한글다운 한글의 처리
- 한글 줄바꿈, 조사, ...

한글 글꼴 관리
- 다양한 한글 글꼴은 어떻게?

한글 TeX의 표준화
- 왜 여러 가지 한글 TeX의 사용 방법이 다른가?

이 글에서 논의되지 않은 점들 가운데에서도 한글 TeX이 꼭 갖추고 있어야 하겠다는 사항들이 있을 것입니다. 이러한 사항들에 대해 여러 사람의 좋은 의견이 있었으면 좋겠습니다. 물론 이 글에서 제시된 기준들에 대한 다른 의견도 환영입니다. 아마 우리나라에 TeX 사용자 모임이 생긴다면 그곳에서 꼭 논의되어야 할 사항일 것이라고 생각합니다.


한글 코드
- 어떤 글자들을 사용할 수 있어야 하는가?

영문 TeX 대신에 한글 TeX이 필요한 첫번째 이유를 꼽으라면, TeX으로 한글이 들어 있는 문서를 조판하고 싶다는 요구 때문일 것입니다. "한글이 들어 있는 문서" 라는 말을 좀더 명확하게 할 필요가 있습니다. 얼마나 많은 한글 글자들을 사용할 수 있어야 할까요? 또 한자도 쓰고 싶지는 않을까요?

아마도 한글 창제 이후 쓰였던 모든 한글 글자를 사용할 수 있게 해 준다면 그것이 가장 좋은 답이 될 것입니다. 그러나 현실적인 문제를 돌아보면 이와 같이 하기에는 상당한 어려움이 있다는 사실을 알 수 있습니다.

TeX에서 어떤 글자들을 사용할 수 있는가 하는 문제는 TeX문서 파일(.tex 파일)에서 어떤 글자들을 사용할 수 있는가라는 문제와 밀접한 관계가 있습니다. 만약 TeX 문서 파일에 ascii 글자만을 사용할 수 있어서 "한글"을 "\hiet \ah \nien ..." 과 같이 입력해야 되는 일이 일어난다면 그 누구도 한글 TeX을 사용하지 않을 것입니다 :) 결국 문제는 TeX 문서 파일이 어떤 문자 코드를 사용해야 하는가로 귀착됩니다.

우리가 TeX 문서 파일을 위해 사용하려는 문자 코드는 여러 가지 OS에서 공통적으로 널리 사용될 수 있어야 할 것입니다. TeX은 어느 컴퓨터에서나 사용할 수 있는 프로그램입니다.. 원하는 컴퓨터와 OS로 TeX 프로그램이 이식되기만 한다면 TeX을 사용할 수 있고, 또 대부분의 컴퓨터에서 쓸 수 있는 TeX 프로그램이 이미 있습니다. 여러 다른 컴퓨터에서 TeX을 사용할지라도 같은 TeX문서 파일을 처리하면 한 치의 오차도 없이 같은 결과를 얻을 수 있습니다. 이렇게 되려면 TeX문서 파일을 어떤 컴퓨터의 어떤 OS에서도 쉽게 볼 수 있고 고칠 수 있어야 합니다.

아마도 현실적으로는, 우리 나라 국가 표준 문자 코드인 KSC5601이 여러 컴퓨터와 OS에서 공통으로 잘 사용할 수 있는 유일한 코드가 아닐까 합니다. 현재 한글 TeX이 택할 수 있는 최선의 선택일 것입니다. KSC 5601에는 2350자의 한글, 4880자의 한자, 768자의 기호 문자가 포함되어 있습니다. 거의 모든 OS에서 KSC 5601를 사용할 수 있으며, 많은 사람들이 KSC 5601의 글자들만으로 문서를 작성하고 있습니다. 물론, KSC 5601에 있는 모든 글자를 한글 TeX 문서 중에서 자연스럽게 사용할 수 있어야 할 것입니다.

많은 사람들의 공통된 의견은 문서 작성에 필요한 글자들을 KSC 5601이 모두 수용하고 있지는 않다는 것입니다. 즉 KSC 5601 만으로는 부족하다는 것입니다. 따라서, 더 많은 우리말 글자들을 사용할 수 있는 한글 TeX을 만드는 것도 중요한 과제입니다. 아마도 이후의 대안은 unicode가 될 가능성이 큽니다. 우리 나라에서는 unicode와 같은 무자 코드를 국가 표준 KSC 5900 으로 정의하고 있습니다.

unicode를 사용하는 한글 TeX이 본격적으로 사용되려면 많은 OS들에서 unicode를 지원하게 되어야 할 것입니다. 대부분의 OS에서 unicode를 지원하지 않아 문서 작성이나 편집이 어렵다면 unicode 한글 TeX은 현실적으로 여러 사람에게 도움을 줄 수 있는 프로그램은 되지 못할 것입니다.

저자의 hTeXp/hLaTeXp는 KSC 5601을 사용합니다.

[차례]


처리 속도
- 영문 TeX에 뒤지지 않는 빠른 한글 TeX

한글 TeX의 속도 문제는 실제 한글 TeX으로 오랜 시간 작업하는 사용자의 입장에서는 매우 중요합니다. 느린 한글 TeX을 사용하는 것은 작업 능률을 매우 떨어뜨립니다. 과거의 한글 TeX들은 영문 TeX에 비해 매우 느리게 동작하였습니다. 전처리기를 사용하지 않는 한글 TeX들은 특히 느린 경우가 많았습니다.

한글 TeX을 쓰는 우리나라 사람이 빠른 영문 TeX을 쓰는 외국의 사람들보다 시간을 낭비하는 것은 결코 좋은 일이 아닐 것입니다. 한글 TeX은 적어도 영문용 TeX과는 비슷한 속도를 낼 수 있어야 할 것입니다.

많은 경우, 프로그램을 만드는 사람은 빠른 처리 속도와 처리 결과의 깔끔함을 놓고 고심하게 됩니다. 물론 두 가지를 모두 만족시키게 된다면 좋지만 그렇게 하기 어려운 경우가 많습니다. 여러 가지 발생할 수 있는 특별한 경우들에 대해 깨끗한 결과를 보여주려면 프로그램이 할 일이 많아지기 때문입니다. 저자의 hTeXp/hLaTeXp는 이 두 가지 측면을 적절한 수준에서 양립시키기 위한 여러 가지 시험을 거쳤습니다.

[차례]


호환성
- 영문 TeX과의 호환성 보장

한글 LaTeX은 영문용 LaTeX과의 호환성을 보장하여야 할 것입니다. 영문 LaTeX 문서를 한글 LaTeX으로 돌리면 영문용 LaTeX으로 조판한 것과 같은 결과를 얻어야 할 것입니다. 또한 영문으로 된 LaTeX문서에 한글을 약간 첨가하여도 많은 수정 없이 만족할만한 결과를 얻을 수 있어야 할 것입니다. 가령 원래 영어로 되어 있었던 제 1장의 제목에 한글을 몇마디 넣었더니 영어는 굵은 글씨로 나오는데 한글은 그렇지 않아 보기 좋지 않더라 같은 현상은 여러 사람이 바라고 있는 바가 아닐 것입니다.

또한, 한글을 위한 특별한 명령을 제공하는 것은 최소한으로 해야 할 것입니다. 될 수 있으면 영문을 위한 LaTeX의 명령이 한글에 대해서도 잘 동작할 수 있도록 해 주어야 할 것입니다. 즉 "다음 명령어들은 한글 LaTeX에서는 동작이 보장되지 않습니다.." 와 같은 구절은한글 LaTeX의 매뉴얼에 없는 것이 좋을 것입니다.

물론, 우리말에만 있는 고유의 개념을 위해서는 새로운 명령이 꼭 추가되어야 할 것입니다. 한글다운 한글의 처리를 참조하기 바랍니다.

[차례]


한글 처리의 안정성
- 영문은 되는데 한글은 안 된다? 깨지지 않는 한글

과거 한글 TeX 사용자들이 말하는 불만 중의 하나는 "한글이 깨진다" 라는 것이었습니다. TeX 사용 도중 한글이 깨지는 대표적인 곳은 에러 메시지입니다. TeX은 원래 어디에서 에러가 났나 알아보기 좋으라고 에러 발생 근처를 보여 주는데, 여태까지의 많은 한글용 TeX들에서는 에러 발생 근처에 한글이 있으면 그 주위가 다 깨져 보이곤 했습니다.

또 더욱 심각한 것은 조판 결과에서 한글이 깨지는 것입니다. headline, footline에 한글 관련 명령을 심하게 사용하면 한글이 깨진다거나, 인수를 옮기는(moving argument) LaTeX명령의 인수에 한글을 사용하면 조판 결과에서 한글이 깨진다거나 하는 등의 문제들이 있었습니다.

한글 TeX에서는 "여기에 한글을 써도 되어야 할 것 같은데 깨지더라" 라는 이야기가 될 수 있으면 없도록 해야 할 것입니다. 영문을 자연스럽게 사용할 수 있는 위치에는 한글을 사용할 수도 있어야 할 것입니다.

[차례]


한글다운 한글의 처리
- 한글 줄바꿈, 조사, ...

비슷한 맥락으로, 과거의 한글 TeX에서는 한글 조판에서 자연스럽게 요구되는 기능들을 제공하지 못한 경우가 많았습니다. 그중 대표적인 것이 한글 문단에서의 줄바꿈입니다. 영어와 같은 라틴 문자 언어의 경우와 달리, 한글 조판에서는 한글과 한글 사이는 한 단어 안이라도 줄바꿈을 허용합니다. 그럼 한글 다음에서는 언제나 줄바꿈을 허용하면 되겠네요? 라고 생각할 수 있을 것입니다. 그러나 그렇지 않습니다. 한글과 문장 부호, 즉 따옴표, 괄호, 마침표, .. 등등 사이에서는 또 줄바꿈을 하면 안 됩니다. 그래서 한글 앞 또는 뒤에서 항상 줄바꿈을 허용할 수도 없습니다.

과거의 한글 TeX에서는 한글 단어 안에서의 줄바꿈을 포기한 경우도 있었고, 또 무리하게 줄바꿈을 행하여 한글 문장 중 맨 끝의 마침표만 다음 줄로 넘어가버리는 일도 있었습니다. 한글 조판에 있어 자연스러운 줄바꿈은 당연히 지원되어야 할 것입니다. hTeXp/hLaTeXp는 라틴 문자 줄바꿈과 한글 줄바꿈을 모두 지원합니다.

또 한가지 예는 조사의 문제입니다. LaTeX에서는 장, 절, theorem, 그림 등의 여러 가지 아이템에 이름을 붙여 사용할 수 있습니다. "제 3장을 보면..."과 같이 장이나 절의 번호를 쓰고 싶을 때에 숫자를 직접 기억하여 입력할 필요 없이 그 이름을 지정하면 (\ref, \pageref 명령) LaTeX이 자동으로 해당하는 번호를 인쇄해 줍니다.

그런데, 우리말의 경우에는 조사가 있기 때문에 이 때 미묘한 문제가 발생합니다. 우리말에서는 "부록 A를..", "그림 1.1을 ..." 또는 "그림 1.2를 .."과 같이 숫자 뒤에 조사가 바로 나오는 경우가 종종 있습니다. 이 경우, A, 1.1, 1.2 등의 말은 LaTeX이 자동으로 생성해 주는 것이므로, 사용자가 문서 입력을 하는 시점에서는 과연 어떤 번호가 붙여질지 알 수가 없고 따라서 조사 "을"이 맞을지 아니면 "를"맞을지 알 수가 없습니다.

이러한 경우를 위해 앞의 음절에 따라 맞는 조사를 자동으로 표시해주는 명령이 제공되어야 할 것입니다. hTeXp/hLaTeXp는 조사를 자동으로 선택해주는 명령들을 지원합니다.

[차례]


한글 글꼴 관리
- 다양한 한글 글꼴은 어떻게?

얼마나 많은 글꼴을 한글 TeX에서 사용할 수 있는가 하는 문제는 매우 중요합니다. 다시 말하면 TeX에서 사용할 수 있는 한글 글꼴의 갯수가 많아야 합니다. 그리고 그 질적인 면 또한 매우 중요합니다. 전문 출판에 TeX을 사용하려면 그에 걸맞는 양질의 글꼴이 있어야 할 것입니다.

더 나아가, 하나의 TeX문서 안에서 가능한 한 많은 수의 글꼴을 사용할 수 있게 해 주어야 합니다. 예를 들어 한글 글꼴이 아무리 많아도 하나의 TeX 문서에서는 동시에 10개만 사용할 수 있다고 하면 별로 도움이 안 됩니다. 과거의 한글 TeX들은 실제로 이러한 제약이 있는 경우가 많이 있었습니다.

저자는 몇 권의 책을 한글 TeX으로 만든 적이 있는데, 실제로 TeX을 써서 책을 만들다 보면 이 글꼴 숫자 제한 문제는 상당히 심각하게 다가옵니다. 이런 작업을 할 때에는 페이지 번호나 참고문헌 또는 색인 처리 관계로 인해, 책 한권을 한 번의 TeX 작업으로 처리하는 것이 여러모로 바람직합니다. 그런데 한 400여 페이지가 넘는 책이 되면 그리 복잡하지 않은 편집 디자인을 가지는 경우에도 20-30가지 정도의 한글 font가 사용되게 됩니다. (TeX은 크기만 다른 글꼴도 서로 다른 것으로 생각합니다.) 따라서 넉넉잡아 50가지의 한글 글꼴은 하나의 문서 안에서 사용할 수 있어야 할 것입니다.

hTeXp/hLaTeXp에서 사용할 수 있는 글꼴의 종류는 다른 어떤 한글 TeX보다도 다양합니다. 한글 31가지, 한자 2가지, 기호문자 1가지를 제공합니다. 또한 이들 글꼴 모두를 동시에 TeX문서 안에서 사용할 수 있습니다.

조금 기술적인 문제로 넘어가자면, LaTeX이 어떻게 한글 글꼴을 관리하고 사용해야 되는가 하는 점 역시 논의할 가치가 있습니다. 이 점은 영문용 LaTeX와의 호환성 문제 중의 하나로 생각될 수도 있지만 매우 중요한 문제이기에 따로 떼어 생각해보고자 합니다.

LaTeX2e는 NFSS2라는 시스템을 통해 영문 글꼴들을 관리합니다. 호환성을 유지하기 위해서는 NFSS2에 어떻게 한글 글꼴의 사용을 잘 배합하는가가 관건입니다. NFSS2는 영문 글꼴에 (encoding, family, series, shape, size)의 5가지 속성을 부여함으로서 글꼴을 식별합니다. 저자의 생각에는 한글용 또는 한자용의 글꼴들도 이와 비슷한 방법으로 식별용 속성을 부여하고, 그리고 사용하는 문자 집합 (예를 들자면 KSC 5601 이나 unicode)의 영문, 한글, 한자, 기호 문자 등의 각 영역마다 이와 같은 글꼴들을 하나씩 지정하는 것으로 "현재 사용하고 있는 글꼴"을 나타내는 것이 좋은 방법이라고 생각됩니다. 즉 현재 사용하는 글꼴은 글자가 영문이냐 한글이냐 한자냐에 따라 여러 가지가 될 수 있는 것입니다.

이러한 글꼴 관리 방법은 방법은 비단 TeX에서 뿐 아니라, unicode와 같은 다국어 문자 코드 기반의 OS들에서도 사용될 수 있는 좋은 방법이라고 생각됩니다. 그러나 이것이 어려울 때에는, 각각의 영어 글꼴마다 한글, 한자 등을 위한 글꼴을 대응시키는 것도 차선책이라고 생각됩니다. 실제로 한글화된 여러 OS들이 택하고 있는 방법이기도 합니다. 이러한 방법의 장점은 영문용 시스템에 큰 변화를 주지 않고도 한글을 사용할 수 있다는 것입니다. hLaTeXp/ hTeXp도 이러한 방법으로 글꼴을 관리합니다. 자세한 설명은 한글 한자 기호문자 사용에 대해 를 참고하기 바랍니다.

[차례]


한글 TeX의 표준화
- 왜 여러 가지 한글 TeX의 사용 방법이 다른가?

여러가지의 한글 TeX이 존재함으로서 생기는 문제점도 간과할 수 없습니다. 그 사용법이 다르기 때문에 한글 TeX 시스템을 바꾼 사용자의 경우 문서 작성에 곤란을 겪게 됩니다. 그리고 이미 작성해 둔 한글 TeX 문서의 호환성도 유지되지 못합니다. 다른 한글 TeX을 사용하려면 과거에 작성한 문서를 다시 고쳐야 하는 경우가 대부분입니다. 또한 어찌어찌 조판은 겨우 되어도 그 출력 결과가 달라지는 경우가 생깁니다. TeX은 어떤 컴퓨터에서도 같은 처리 결과를 보여주는 프로그램인데, 이런 결과가 생기는 것은 결코 사용자의 입장에서 바람직하지 않습니다.

왜 이렇게 여러 한글 TeX이 만들어졌을까요? 아마 이것은 한글 TeX의 역사와 깊은 관계가 있을 것입니다. 한글 TeX이 지나온 길을 참조하시기 바랍니다.

이렇게 여러 호환성 없는 한글 TeX이 생기는 것이 각 한글 TeX을 만든 사람들의 성취감에는 보탬이 될지 몰라도, 실제 사용자들에게는 불편함만을 초래합니다. 따라서 어느정도 납득할 만한 수준까지는 한글 TeX의 사용법 등을 통일할 필요가 있습니다. 더욱 좋은 방법은 뭐 돈 벌자고 한글 TeX 만드는 것이 아닌 사람들끼리는 서로 갖고있는 기술을 합쳐 제일 좋은 한글 TeX 하나를 만드는 것이라 생각합니다. 정치하는 사람이나 장사하는 사람과는 다른 면을 뭔가 보여주는 것이 좋지 않을까요?

[차례]


(C) 차재춘, 1996년 2월 6일 - 9월 23일