HangulAndMiKTeX (rev. 1.31)

EDRSPIHCRSSRSS

Hangul And MiKTeX

2019/05 현재 MiKTeX에서 한글 문서는 자연스럽게 작성할 수 있다. 다만 pdflatex 사용시 type1 폰트를 수동 등록해야 하는 문제가 있으므로 이에 대해서는 아래 관련 절 참조. 2013/11/01, MiKTeX에 kotex-utf, kotex-plain, kotex-oblivoir가 패키징됨으로써, ko.TeX 군 중에서 kotex-utils를 제외하고 모두 사용가능해졌다. MiKTeX에서 LaTeX 한글 타이프세트 지원은 다음과 같다.
  • pdftex, e-tex 엔진
    • kotex-utf (UTF-8)
    • cjk-ko (UTF-8)
  • xetex 엔진
    • xetexko
  • luatex 엔진
    • luatexko

이밖에 CJK 패키지가 한글을 지원하고 있지만 cjk-ko가 어차피 CJK 패키지를 이용하는 것이므로 여기에서는 논외로 한다.
  • MiKTeX 설치 후 Update를 반드시 실행해야 한다. 특히 fontspec은 반드시 업데이트해야 함.

1. MiKTeX 2.9에서 ko. TeX 사용하기 (xetex/lualatex)

xelatex/lualatex 한글 문서를 즉시 작성할 수 있다.
%!TEX encoding = utf-8
\documentclass{article}
\usepackage{xetexko}
\begin{document}
한글 테스트. 안녕.
\end{document}

2. MiKTeX 2.9에서 ko. TeX 사용하기 (pdflatex)

pdflatex으로 ko. TeX 문서를 작성하려면 다음 절차가 더 필요하다.

2.1. 한글 TYPE1 폰트

2019년 5월 현재, nanumtype1과 uhc type1 폰트 패키지는 자동설치되지만 updmap 등록이 자동으로 이루어지지 않는다.
nanumtype1과 uhc는 원래 자동 설치되어야 하는 것인데 버전에 따라 되기도 하고 안 되기도 한다. 따라서 설치 직후에 (아직 아무런 문서를 작성하지 않았다 해도) MiKTeX Console의 Package Manager에서 검색하여 설치하는 것이 좋다.

다음 절차는 수동으로 진행하여야 한다.
  1. 패키지가 설치된 후에 명령행(cmd 또는 MiKTeX command line)을 열어서 다음 명령을 써넣는다.
    > initexmf --edit-config-file updmap
    
  2. 노트패드가 열리면 다음 내용을 써넣고 저장한다.
    Map nanumtype1.map
    Map uhc.map
    
  3. 명령행에서 다음 명령을 실행한다.
    > updmap
    

3. 주의사항 등

3.1. pdfTeX 사용시의 주의사항 (한자)

  • - 명조체 한자는 표시되지 않는다.( MiKTeX에서만 그렇다. TeX Live에서는 명조체 한자도 잘 표시한다.)-
  • 만약 unfonts-base-type1 (KTUG 사설저장소 패키지)를 설치하였다면 한자만 은 글꼴의 것을 쓰게 할 수 있다.
     \SetHanjaFonts{utbt}{nanumgt}{nanumgt}
    

3.2. LuaTeX 사용시의 주의사항

  • luaotfload 실행을 방해하는 폰트가 C:\Windows\Fonts에 있을 경우 luatex이 실행되지 않는 경우가 있다. LuaLaTeX의 trouble shooting을 참조한다.

4. 기타

  • MiKTeX 2.9 (Windows 7)에서 파일 이름을 띄어쓰기가 포함된 한글 이름으로 지을 수 있다.
    • 단, 한글 파일 이름은 pdflatex으로 컴파일하는 경우만 사용할 수 있다. xelatex, lualatex의 경우는 한글 파일 이름을 쓸 수 없다.
    • TeXworks에서는 이렇게 한글 파일 이름을 쓰면 inverse search가 동작하지 않는다. 그 이외에 컴파일 등에는 아무런 문제가 없다.
    • TeXnicCenter 2.02를 편집기로, SumatraPDF를 pdf 뷰어로 사용하는 경우, 한글 파일 이름, 심지어 파일 이름에 띄어쓰기 공백문자가 포함된 경우에도 forward/inverse search가 잘 작동하였다.
    • WinEdt에서는 확인바람.

5. 문제해결

5.1. 한글 Windows의 cmd에서 xelatex 컴파일 실패 현상

  • MiKTeX 2.9.7140에서도 동일한 문제가 있다.
  • 증상: 한글 Windows의 powershell 또는 cmd 상에서 MiKTeX의 xelatex을 실행했을 때, 문서의 크기가 크고 한자 또는 특수문자가 포함된 파일(UTF-8 인코딩)을 컴파일하는 과정에서 이해할 수 없는 메시지를 보이면서 죽는다. 로그 파일을 보면 "No space left on device"라고 되어 있다.
    • error.png
      [PNG image (11.18 KB)]
  • 원인은 알 수 없으며 miktex 커뮤니티에 유사한 사례가 보고되고 있으나 miktex 제작자/관리자가 이 현상을 재현할 수 없어서 무대책인 상태이다.
  • TeXworks 내부에서 컴파일하면 이런 일이 벌어지지 않는 경우가 많다. 그러나 cmd 또는 powershell을 통하여 컴파일하는 다른 에디터의 경우에는 같은 일이 벌어질 수 있을 것이다.
  • 현재로서 해결책은 TeXworks 내부에서만 컴파일하거나, cmd 또는 powershell의 codepage를 cp949가 아닌 다른 페이지, 이를테면 65001로 바꾸는 것이다. 즉 xelatex을 실행하기 전에
    
    chcp 65001
    
    을 한 번 실행해둔다. 대부분의 경우에 에러없이 컴파일이 될 것이다.
  • 아마도 MiKTeX의 xelatex이 UTF-8 유니코드 문자를 cp949 셸 상에서 처리하는 데 뭔가 문제가 있는 모양이지만... MiKTeX이 이를 수정하기를 기다리기는 요원해보인다.
  • 이 현상은 Mac용 MiKTeX, 리눅스용 MiKTeX에서는 발생하지 않으며 오직 Windows에서만 볼 수 있다.
  • TeXLive에서는 이런 일이 없다.

이 아래는 예전 정보들이다.

5.2. 기타

  • nanumtype1과 hfontspec.default를 수동설치해야 하는 상황
  • pdfLaTeX으로 컴파일하는 파일에 BOM이 있으면 안 된다. XeLaTeX의 경우에는 있든 없든 상관없다. BOM 붙은 UTF-8 파일에서 BOM을 제거하는 가장 손쉬운 방법은, TeXworks 에디터에서 매직 코멘트를 다음과 같이 달고 그냥 저장하는 것이다.
    %!TEX encoding = UTF-8 Unicode
    %!TEX program = pdflatex
    

6. 참고: MiKTeX 업데이트

MiKTeX 2.9.4987 이후 버전이면 한글 사용이 가능하다. 그 이전 버전으로 설치하였다면 다음과 같이 MiKTeX을 업데이트한다.
  1. 시작 메뉴에서 모든 프로그램 -> MiKTeX 2.9 -> Maintenance (Admin) -> Update (Admin)
  2. http://ftp.ktug.org 를 저장소로 선택하고 진행한다.
  3. 업데이트는 두 단계로 진행되므로 위의 프로그램을 두 번 실행해야 한다.
  4. 먼저 MiKTeX 자체를 업데이트한다.
  5. MiKTeX 업데이트가 끝난 뒤에 같은 방법으로 다시 실행하면 현재 설치된 패키지를 최신 버전으로 갱신하는 업데이트가 진행된다.

패키지 매니저를 이용하여 패키지 리스트를 갱신한다. (위의 업데이트가 잘 이루어지면 이 단계는 건너뛰어도 된다.)
  1. 시작 메뉴에서 모든 프로그램 -> MiKTeX 2.9 -> Maintenance (Admin) -> Package Manager (Admin) 을 실행하여 패키지매니저를 연다.
  2. 메뉴의 "Repository" 아래 "Change Package Repository"를 선택하여 Korea, KTUG으로 저장소 위치를 맞추면 패키지 리스트가 갱신된다.
    • capture_miktex_05.png
      [PNG image (29.3 KB)]
    • capture_miktex_06.png
      [PNG image (35.96 KB)]