EDRSPIHCRSSRSS

CP949한글

1. CP949, EUC-KR

마이크로소프트 사가 도입한 코드페이지로서 KS C 5601 (완성형 한글)을 표현한 코드페이지였다가 윈도 95부터 통합형 한글 코드(UHC)로 확장되어 현대 한글 전부를 포함하게 되었다. 위키백과의 코드페이지949 항목 참조.

EUC-KR은 KS X 1001에 정의된 한글 문자(완성형 한글)의 인코딩 방식이다. 한글은 현대 한글 중 2350자만으로 이루어진다. CP949는 EUC-KR을 확장한 것이다. 즉 CP949의 UHC는 유니코드 한글 음절 영역의 현대 한글 완성형 문자 집합과 그 표현범위가 같지만 인코딩 방법은 다르다.

2. 한글 라텍과 EUC-KR

초창기 한글 라텍은 EUC-KR 완성형 한글을 기준으로 만들어졌다. hLaTeXp, HLaTeX이 모두 그러하였다. 당시 소위 "조합형" 한글이 라텍 매크로에서 시도된 적은 -없다-.[1] 8비트 문자(만)을 처리할 수 있는 텍 엔진 자체의 한계 때문에 2바이트 문자인 한글을 처리하기 위해서 (지금 생각하면) 온갖 편법과 꼼수가 난무하는(?) 방식으로 겨우겨우 한글을 처리할 수 있었기 때문에 16비트 문자까지 텍의 처리 능력을 확장하려 한 오메가(람브다)에 대하여 기대가 컸으며, 실제로 은광희의 HLaTeX 1.0은 Lambda에서 동작하는 한글 텍을 만들기도 하였다. HLaTeX-Lambda는 CP949의 UHC 한글, 즉 "모든 현대 한글 11172자"를 처리할 수 있었다.[2] 오메가와 람브다가 그다지 널리 쓰이지 못하고 사장된 후,[3] XeTeXLuaTeX이 등장하여 유니코드를 자연스럽게 처리할 수 있게 됨에 따라, 한글 표현 문제는 최종적으로 해결을 보게 된다.
----
  • [1] yahTeX 초기 버전이 조합형 한글을 지원하였다고 하는데 지금 그 흔적을 찾아볼 수 없다.
  • [2] 유니코드 인코딩도 지원하였다. HLaTeX-Lambda는 DHHangul과 더불어 한글 표현 능력을 확장한 최초의 사례로 기억되어야 한다. 한글LaTeX패키지 참조.
  • [3] 현재 TeX Live 2013에는 omega, lambda가 없다. 그 대신 aleph, lamed가 남아 있어서 예전 Lambda 매크로들을 여전히 돌려볼 수 있다.

3. 라텍에서 사용하기

CP949 인코딩된 한글 문자를 라텍으로 처리하는 방법은 다음과 같다. XeTeX이나 LuaTeX에서는 CP949 한글도 유니코드 한글처럼 자연스럽게 처리한다.

3.1. 레거시 텍

레거시 텍에서는 EUC-KR 범위의 한글밖에 처리하지 못한다. 이 방법은 비교적 낡은 것으로 권장하지 않는 것들이다. 어떤 경우든 UTF-8 유니코드 입력의 한글을 사용하는 것이 권장사항이지만 특히 레거시 텍의 경우에는 EUC-KR 한글을 처리하는 방법이 자연스럽지 못하므로 이런저런 한계(문제점)가 있을 수 있다.

  • ko.TeX-euc 패키지를 사용한다.
    • kotex 사설 저장소를 등록한 후
    • tlmgr install kotex-euc unfonts-base 명령으로 kotex-euc와 untype1을 설치한다.
    • 문서의 처음에
      \usepackage[euc]{kotex}


  • CJK 패키지를 이용한다.
    • 다음과 같이 소스를 작성한다.
      \usepackage{CJK}
      ...
      \begin{CJK}[HL]{KS}{}
      한글 문자
      \end{CJK}
    • [HL] 옵션은 uhc type1 글꼴을 사용한다는 의미인데 현재 (TeX Live 설치만으로) 사용할 수 있는 한글 글꼴은 이것뿐이다.

3.2. XeTeX

  • xetexko를 통하여 CP949 한글을 처리할 수 있다.
  • 다음 선언을 문서의 처음에 적어준다.
     \XeTeXinputencoding="korean"
     \XeTeXdefaultencoding="korean"
  • 한글, 한자, 기호문자 등을 CP949 인코딩으로 처리할 수 있다.

3.3. LuaTeX

  • luatexko를 통하여 CP949 한글을 처리할 수 있다.
  • 다음 선언을 내려준다.
    \luatexuhcinputencoding=1
  • 한글, 한자, 기호 문자 등을 처리할 수 있다.

4. CP949한글 인코딩을 지시하는 TeXworks magic comment

  • 윈도우즈에서 texwork의 magic comment를 다음과 같이 지정한다.
    %!TEX encoding = cp949
    
  • Linux 또는 Mac에서는 texwork magic comment를 다음과 같이 지정한다.
    %!TEX encoding = cp949
    
  • Mac의 TeXShop에서는 magic comment를 다음과 같이 한다.
    %!TEX encoding = DOSKorean
    
    • 단, 이 설정으로는 TeXworks에서 파일을 열 수 없으며 다른 운영체제로 가져가도 역시 읽을 수 없다. 오직 TeXShop에서만 된다. 한편 cp949나 euc-kr 인코딩을 지정한 파일은 TeXworks에서는 읽을 수 있으나 TeXShop으로는 읽을 수 없다.

4.1. encoding = system에 관하여

  • 한글 윈도우에서 encoding = systemCP949를 의미한다. 한글 윈도우가 아닌 다른 언어의 윈도우에서는 전혀 다른 의미(해당 언어의 코드페이지)가 되며 맥이나 리눅스 등의 운영체제에서는 그 시스템의 로케일을 의미한다. 즉, encoding = system을 지정한 한글 문서는 한글 윈도 이외의 어떤 시스템에서도 제대로 읽을 수 없다.
  • 따라서, 한글 CP949 또는 EUC-KR을 표현하기 위하여 system 인코딩을 지정하는 것은 피해야 한다.
  • 그러나 MiKTeXTeXworks와 같이 cp949도 euc-kr도 이해하지 못하는 경우에 부득이하게 개인 용도로 이 인코딩을 지정해야 할 수 있으나, 공동작업이나 공개를 위해서는 해당 인코딩 지정 부분을 삭제하고 유포해야 할 것이다.

5. TeXWorks에서 CP949 한글 문서를 읽어오기

  • texworks의 기본 문자셋이 UTF-8이기 때문에 magic comment가 없는 CP949 파일을 불러오면 다음 그림과 같이 한글이 "깨져" 보인다.(아래 그림은 질문답변 게시판에 올라온 글에 첨부된 것이다.)
  • 이렇게 열린 상태에서 절대로 저장하지 말고 인코딩을 바꾸어서 새로 읽어들인다.
    • texworks 편집창 오른쪽 아래에 UTF-8이라고 적힌 작은 단추가 있습니다. 이것을 눌러 cp949를 선택한 다음, 다시 한번 더 눌러서 목록 맨 위 “선택한 인코딩을 써서 다시 읽기” 를 클릭합니다. 주의할 것은 이러면 팝업창이 뜨는데 여기서 “예”를 선택해야 한다는 겁니다. 링크
  • 한글이 제대로 보이는 상태에서 cp949 magic comment를 문서의 처음 부분에 붙인 다음 저장한다.
    %!TEX encoding = cp949