KTUG마당은 KTUG를 방문하는 모든 이용자가 대화를 나누고 소식을 전하는 곳입니다.

  • 로그인 없이 자유롭게 글을 읽고 쓸 수 있는 철학은 처음과 같이 계속됩니다.
  • Team Blog의 글을 이곳 게시판의 "정보글"로 모았습니다. Team blog는 기고자가 올린 글에 질문을 받는 부담을 줄이기 위하여 댓글을 허용하지 않았습니다. 그러나 이곳 게시판으로 모으면서 댓글을 달 수 있습니다. 게시물을 작성하실 때 댓글을 원하지 않으시면 댓글을 허용하시지 않으시기를 바랍니다. 또한 불필요한 소모성 댓글을 달지 않도록 주의하여 주시기를 바랍니다.
  • TeX과 관련된 질문이나 답변은 QnA 마당을 이용하십시오. TeX과 관련된 질문은 지웁니다
  • MathJax를 이용한 수식조판을 사용하실 수 있습니다. 여기를 참조하세요.
  • 스팸 글을 막기 위하여 짧은 시간 내에 다시 글이 등록되는 IP를 막거나, 광고 글을 막기 위하여 금지어로 .com, .net 등을 설정하고 있습니다. 다소간의 불편함이 있으시더라도 양해 바랍니다.
    • 금지어에서 stackexchange, stackoverflow, ctan, overleaf, , github, google.com, gmail.com, .org, .io, sil.org, wiki.com, tistory.com등은 해제하였습니다.
  • 사용하는 편집기는 CKeditor입니다. 편집기에서 [enter]를 누르면 <p> 태그가 들어가고, 문단으로 생각하고 한줄을 비웁니다. 글줄만 바꾸려면 shift-enter 를 누르시면 <BR>가 들어가므로 용도에 맞게 나누어 쓸 수 있습니다.

자유글 Windows에서 Emacs+MiKTeX 작업환경 (docker)

2021.11.18 05:18

noname 조회 수:903

Windows에 적당한 에디터가 없다는 안타까운 글들을 보고, 그러면 차라리 Emacs는 어떤가 생각하게 되었습니다. 미니멀리스트들이 질색하는 초거대 에디터이기는 하지만 약간의 적응 기간을 거치면 이보다 편한 에디터가 다시 없다는 그 전설의 운영체제형 에디터입니다. 하필 Emacs인 까닭은 이것이 WSL Linux로부터 실행되었을 때 별도의 한글 입력기를 설정하지 않아도 자체 한글 입력 기능을 가지고 있다는 것이 가장 큰 이유였습니다. (다른 얘기지만 Emacs Windows 바이너리로 구축한 작업 환경은 생각만큼 쾌적하지 않았습니다. 개인적인 감상이겠지만요. 시스템 콜은 느리고 뭔가 버벅대는 느낌이 있었어요.)

docker로 WSL2에서 MiKTeX+Emacs 작업 환경을 꾸며본 경험을 간략히 적어둡니다. 최근 각광받는(?) TinyTeX이 아니라 MiKTeX인 이유는, Emacs/AucTeX에서 컴파일 명령을 주면 latex/xelatex 등이 실행되는데, 이 때 필요한 패키지를 가져오게 하려면 TinyTeX에서는 xelatex이 아니라 tinitex을 실행해야 하기 때문입니다. MiKTeX은 xelatex 컴파일 명령 자체가 mpm을 호출하는 (중요한) 편의 기능을 가지고 있습니다.

1, WSL2와 Docker Desktop 준비

   (1) Windows 11 build 22000 이후 버전이어야 합니다. (중요) 꼭 Pro가 아니라 Home이어도 됩니다.
   (2) WSL 2 설정을 하고, 간단한 Linux 하나를 설치합니다. 저는 Kali Linux였습니다만 Ubuntu도 괜찮을 겁니다. 구체적인 과정은 생략.
   (3) WSL 2 Linux에서 GUI 앱이 동작하도록 간단한 거 하나를 설치해봅니다. sudo apt install x11-apps. 그런 다음 xeyes가 동작하는지 확인.
   (4) Docker Desktop을 설치할 때, WSL 통합을 체크하여 둡니다.

2. 진행

   (1) Docker 실행.
   (2) WSL 명령행을 열어서 다음 명령으로 진행 (주: Linux GUI를 docker 내부에서 실행하려면 Linux bash shell에서 실행해야 하는 것 같습니다.)

> docker pull novadehi/miktexwktug
> docker volume create --name miktex
> docker run -ti --rm \
    -v miktex:/miktex/.miktex \
    -v $(pwd):/miktex/work \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    -e DISPLAY=:0 \
    novadehi/miktexwktug emacs

 3. 설명

    (0) 원래 이 container image는 Windows용으로 작성되었던 것은 아닙니다. Mac에서도 쓸 수 있지만 arm64용은 제작하지 못했습니다.  
    (1) emacs, auctex과 okular가 설치되어 있고, forward/inverse search 설정도 되어 있습니다. forward search는 C-c C-v이고, inverse search는 "Browser" 도구 상태에서 Shift+Left Click입니다.
    (2) MiKTeX만으로는 설치하기 귀찮은 KTUG 사설 저장소 패키지들이 미리 설치되어 있습니다.
    (3) pygments가 설치되어 있습니다.
    (4) emacs/auctex의 default engine이 xetex으로 설정되어 있습니다. 다른 엔진을 사용하려면 메뉴에서 선택하세요.
    (5) emacs의 한/영 변환키는 C+\ 말고 Shift-Space도 동작합니다.

4. 팁

    (1) Windows 폰트를 문서나 Emacs에서 사용하려면, 다음 두 줄의 옵션을 더 줍니다. *username*은 자신의 계정 이름으로 바꾸십시오.

   -v /mnt/c/Windows/Fonts:/root/.fonts/winfont
   -v /mnt/c/Users/*username*/AppData/Local/Microsoft/Windows/Fonts:/root/.fonts/locfonts

    (2) Emacs 폰트는 Options 메뉴에서 선택 가능한데, Emacs 설정을 바꾼 후에는 commit하여 사용하세요.
    (3) Emacs GUI 없이 컴파일러로만 사용하려면 굳이 WSL command prompt를 열지 않고 powershell (or cmd)에서 다음과 같이 할 수 있습니다. C:/usr/test.tex을 xelatex으로 컴파일하려면

   docker run -ti --rm \
     -v miktex:/miktex/.miktex \
     -v C:/usr:/miktex/work \
     novadehi/miktexwktug xelatex -shell-escape test.tex

scapture.jpg

 

Windows의 WSL을 싫어하시는 분이 계신 것으로 압니다. 주로 VirtualBox나 Hyper-V를 돌리는 데 부담이 된다는 이유인 것 같습니다만 어떤 것이 더 중요하냐의 문제겠지요. VirtualBox를 사용하지 않는 저같은 경우는 WSL에 꽤 호의적일 수밖에 없겠지만 VM 작업을 헤비하게 하시는 분들이야 이 접근방법이 마음에 들지 않을 수도 있을 것입니다. 그러나 아무래도 대세는 docker 아니겠어요? :-)

 




XE Login