Windows Sybsystem for Linux 환경에서 texlive를 설치하고 운영하는 방법을 설명한다. 이 문서의 이전 버전은 Windows 10 version 1903과 WSL1을 기준으로 작성되어 있었으나 현재 Windows 11의 WSLg에서 불필요한 설명이 많으므로 이를 모두 삭제하고 간명하게 하였다. (2022/10) 이 글은 Windows 11 22H2 (22621.608)을 기준으로 작성하였다. [[TableOfContents]] == 목적과 필요성 == * Windows 시스템에서 texlive win32가 아니라 Linux용 texlive를 설치 운용한다. * texlive는 ubuntu가 제공하는 debian 패키지 버전이 아니라 ctan의 최신 버전을 설치할 것이다. * WSLg를 통하여 Linux GUI 프로그램을 이용한다. * WSL에 설치하는 Linux는 Ubuntu를 기준으로 한다. * 일반적으로 말해서 linux의 binaries가 더 안정적이다. win32에서 일어나는 자잘한 문제들을 피해가는 데 이보다 좋은 방법은 없다. 특히 까닭없이 tex 프로그램을 차단하는 백신 프로그램의 괴롭힘에서 벗어날 수 있다. * pgfplot (gnuplot), minted (pygments), arara (java) 등 외부 유틸리티를 활용해야 하는 경우 Windows에서 해당 프로그램을 일일이 설치하는 부담이 크다. WSL 리눅스에서 이 프로그램의 설치는 간단하고 안정적으로 잘 동작하므로 이를 효율적으로 활용할 수 있다. ---- 아래 서술에서 >는 windows의 커맨드 라인을 의미하고 $는 Linux (bash)의 커맨드 라인을 의미한다. == 준비 == === WSL 활성화 === {{{ > wsl --install }}} === wsl bash shell === {{{ > wsl }}} === TeX Live 설치 === * TeX Live 설치에는 두 가지 방법이 있다. 1. Ubuntu 배포판의 TeX Live를 ```apt```로 설치하는 방법 (관리가 간편하고 설치가 쉬우나 최신 texlive가 아니고 tlmgr을 이용한 사용자화가 어렵다.) {{{ $ sudo apt update && sudo apt install texlive }}} 2. ctan 배포판의 texlive를 설치 * [wiki:설치하기Linux] 페이지에서 설명하는 방법을 그대로 적용하면 된다. 이후의 서술은 [wiki:설치하기Linux/tlinstall]의 방법을 따른다.{{{ $ wget https://mirror.ctan.org/tex-archive/systems/texlive/tlnet/install-tl-unx.tar.gz $ tar zxvf install-tl-unx.tar.gz $ cd install-tl-XXXXXX $ sudo ./install-tl }}} * ```mirror.ctan.org/tex-archive``` 부분은 원하는 repository의 주소로 바꾸어서 시도해도 좋다. 예를 들면 ```mirror.kakao.com/CTAN``` * ```XXXXXX``는 날짜이다. === 설치 관련 팁 === * 원하는 repository 주소를 지정할 수 있다. {{{ $ ./install-tl --repository https://mirror.kakao.com/CTAN/systems/texlive/tlnet }}} * 설치 디렉토리는 기본값을 그대로 사용하는 것이 좋은데 저대로 계속 진행하면 ```/usr/local/texlive``` 폴더의 권한 문제가 생기므로 항상 sudo 하여야 한다. WSL 리눅스는 기본적으로 개인 시스템이므로, 다음과 같이 하여 ```sudo``` 없이 실행할 수 있게 해두는 것이 좋다. {{{ $ sudo mkdir /usr/local/texlive $ sudo chown -R $(whoami) /usr/local/texlive }}} * 이 조치를 install-tl 이전에 선택하면 /usr/local/bin을 쓸 수 없어서 아래 설명하는 symlinks 생성이 실패한다. 그러므로 설치는 sudo로 하고 owner를 바꾸는 조치를 설치 후에 하는 것이 좋다. * full-scheme이 아니라 medium-scheme 정도를 설치해두고 필요하면 ```texliveonfly``` 유틸리티로 관리하는 방법도 있다. ```texliveonfly```는 python 스크립트인데 ```python```이라는 실행 파일을 요구한다. ```python3```을 ```python```으로 심볼릭 링크를 걸어두면 된다. * install-tl의 옵션 선택 화면에서 `/usr/local/bin`으로 실행 파일을 symlink하도록 하는 것이 좋다. path 관련 번거로움을 줄일 수 있다. === 폰트 관련 팁 === * XeLaTeX을 위하여 texmf.cnf를 수정하라. {{{ $ vi `kpsewhich texmf.cnf` }}} * 다음 한 줄을 써넣고 저장한다. {{{ OSFONTDIR = ~/.fonts//;/usr/share/fonts//;/usr/local/share/fonts// }}} * 그리고 Windows의 폰트 폴더를 심볼릭 링크한다. {{{ $ ln -s /mnt/c/Windows/Fonts ~/.fonts/winfonts }}} * 일부 Windows 폰트는 C:\Windows\Fonts가 아닌 C:\Users\(유저명)\AppData\Local\Microsoft\Windows\Fonts 디렉터리에 설치될 수도 있다. (예를 들어 KoPub 글꼴) 이런 글꼴이 있는지 확인해 보고 있다면 다음과 같이 심볼릭 링크를 추가한다. {{{ $ ln -s '/mnt/c/Users/(유저명)/AppData/Local/Microsoft/Windows/Fonts' ~/.fonts/winfonts2 }}} * texlive의 fonts 폴더를 심볼릭 링크한다. 아래 명령의 디렉터리는 TeX Live 2022 기준이므로 다른 버전을 설치한다면 그에 맞게 /usr/local/texlive/ 다음의 2022를 버전에 맞는 숫자로 바꿔주자. {{{ $ sudo ln -s /usr/local/texlive/2022/texmf-dist/fonts/truetype /usr/local/share/fonts/ $ sudo ln -s /usr/local/texlive/2022/texmf-dist/fonts/opentype /usr/local/share/fonts/ }}} * Noto Korean 폰트를 설치한다. {{{ $ sudo apt install fonts-noto-cjk fonts-noto-cjk-extra }}} * Ubuntu에서 설치한 Noto 폰트는 ```Noto Serif CJK KR``` 또는 ```Noto Sans CJK KR```로 참조할 수 있다. === KTUG 사설저장소 설정 === * {{{ $ tlmgr repository add https://mirror.ischo.org/KTUG/texlive/tlnet ktug $ tlmgr pinning add ktug "*" $ wget https://mirror.ischo.org/KTUG/texlive/tlnet/ktugrepo.pub.txt && tlmgr key add ./ktugrepo.pub.txt }}} == 에디터 기타 == === Linux GUI === * kate, texstudio, kile, gummi, latexilla, texworks 등 Ubuntu 에디터를 사용할 수 있다. * texstudio, kile 등을 설치하려 하면 apt가 ubuntu texlive를 의존성 때문에 일부 설치하려 한다. 디스크 용량이 충분하다면 그냥 설치해버려도 사용에 지장은 없다. 그러나 이것이 마음에 걸린다면 [http://wiki.ktug.org/wiki/wiki.php/%EB%8D%B0%EB%B9%84%EC%95%88/%EC%9A%B0%EB%B6%84%ED%88%AC%20%EA%B3%84%EC%97%B4%20%EB%A6%AC%EB%88%85%EC%8A%A4%EC%97%90%EC%84%9C%20TeX%20Live%20%EB%8D%94%EB%AF%B8%20%ED%8C%A8%ED%82%A4%EC%A7%80%20%EB%A7%8C%EB%93%A4%EA%B8%B0 더미패키지 만들기] 방법을 참조 * Linux GUI 앱을 사용할 때의 한글 입력 문제 * 한글 입력기를 설치하면 해결된다. fcitx라면 {{{ $ sudo apt install fcitx fcitx-hangul }}} * 환경 변수를 설정한다. {{{ export XMODIFIERS="@im=fcitx" export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx }}} * 이 환경변수는 ~/.bashrc에 등록해둘 수 있다. * fcitx를 실행한 후에 fcitx-configtool을 실행하여 ```Hangul```을 등록하고 한/영 전환키를 설정해둔다. (Shift-Space가 제일 좋은 듯) * 에디터를 실행하기 전에 fcitx를 한 번 부른다. === VS Code의 wsl extension === * Visual Studio Code 에디터의 wsl 확장을 설치하면 wsl 디렉터리의 파일을 편집할 수 있다. === Emacs === * 한글 입력기를 자체 내에 갖추고 있다. === vim, nvim === * GUI 에디터를 이용하지 않는다면 한글 입력기 없이 콘솔에서 한글 입력에 어려움을 겪지 않는다. == 팁 == === 유틸리티 === 1. ghostscript {{{ $ sudo apt install ghostscript }}} 1. pygments를 설치한다. {{{ $ sudo apt install python3-pygments }}} 2. arara를 실행하려면 default-jre를 설치한다. {{{ $ sudo apt install default-jre }}} 3. spix를 실행하려면 tlmgr install spix로 충분하지만 `python`이라는 이름의 프로그램이 존재해야 한다. {{{ $ sudo ln -s `which python3` /usr/local/bin/python }}} === SyncTeX === * okular를 PDF viewer로 설치하면 Kile, Emacs, TeXStudio로의 inverse search 설정을 선택할 수 있다. (Configure Okular -> Editor) 단축키는 LeftShift+Click * okular로의 forward search도 에디터의 실행조건을 주어서 간단하게 설정할 수 있고 그 방법을 인터넷 검색을 통해 쉽게 찾을 수 있다. attachment:wsl_guil.png == Microsoft Windows 10에서 사용하려면 == [https://github.com/microsoft/wslg WSLg]는 windows 10을 지원하지 않는다. 그러므로 [http://wiki.ktug.org/wiki/wiki.php/%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0Windows/WSLtexlive?action=recall&rev=1.34 이 글의 1.34 버젼]을 참조하라. 혹은 X server를 windows에서 실행시켜야 하며, [https://www.netsarang.com/ko/xmanager/ 넷사랑의 Xmanager], [http://www.straightrunning.com/XmingNotes/ Xming X server for Windows], [https://x.cygwin.com/ Cygwin/X X Window]등을 n살펴볼 수 있다.