Difference between r1.1 and the current
@@ -1,13 +1,68 @@
== 설치 ==
[[TableOfContents]]
== 장점과 단점 ==
=== 장점 ===
1. MiKTeX 특유의 MPM 시스템 덕분에 작은 크기의 이미지만 설치하고도 이후의 작업에 지장이 없다. 패키지나 유틸리티가 필요해지면 스스로 다운로드받는다.
1. 현재 MiKTeX (21.X)은 갱신이 빠르고 상당히 안정적이다. TeX Live와 큰 차이가 없다.
1. texmf를 추가하여 운영할 수 있기 때문에 사용자 패키지를 활용하는 것이 가능하다. (KTUG 사설저장소 패키지들을 미리 설치해둔 후에 등록하여 쓸 수 있다.)
1. Linux MiKTeX은 실행 속도에서도 만족스럽다.
1. 호스트 운영체제가 무엇이든 상관없이 동일하게 동작한다.
1. docker에서 돌아간다는 것이 장점이다.
=== 단점 ===
1. tlmgr이 없는 것은 단점이다. 그 결과 KTUG 사설저장소를 통합적으로 운용하지 못한다.
1. MPM 다운로드가 서버 사정으로 동작하지 않을 가능성을 배제할 수 없다.
1. docker에서 돌아간다는 것이 단점이다.
* Microsoft Windows는 docker를 돌리기 위해서 WSL2를 동작시킬 것이고, WSL2는 Hyper-V를 동작시킬 것이다. 이 경우 VMware, VirualPC등이 실행되지 않거나, 실행되더라도 자체 VM를 사용하지 못하고 Hyper-V에서 실행되므로 실행 속도등에서 손실이 많다고 알려져 있다.
== Docker 설치 ==
=== Windows: WSL2 + Docker Desktop ===
* VM Windows의 경우에는 WSL2를 쓸 수 없는 것 같다. Docker는 WSL2를 권장한다.
==== WSL 설정 ====
* https://docs.microsoft.com/ko-kr/windows/wsl/install
* Windows 11 또는 Windows 10 2004이후 버전
* PowerShell을 관리자 권한으로 실행하여 다음 명령을 입력한다. {{{
> wsl --install
}}}
* 재시동한다.
* 그 이전 버전의 Windows라면 수동 설치할 수 있다. 참고: https://docs.microsoft.com/ko-kr/windows/wsl/install-manual
==== Docker Desktop 설치 ====
* winget으로 설치하는 방법이 있다. {{{
> winget "Docker Desktop"
}}}
* 또는 https://www.docker.com/products/docker-desktop 에서 설치 프로그램을 다운로드받아 실행한다.
=== Mac OS ===
* homebrew로 설치할 수 있다. {{{
# brew install docker
}}}
* 또는 https://www.docker.com/products/docker-desktop
=== Linux: Ubuntu ===
* apt로 설치한다. {{{
# apt install docker.io
}}}
== miktex/miktex ==
=== docker image pull ===
* miktex docker image {{{docker pull miktex/miktex
}}}
* miktex/miktex이 ARM 아키텍처를 제공하지 않는 듯한데, M1 Mac에서 Rosetta2로 어찌어찌 되는지 어떤지 해보지 않아서 모릅니다. 시도해보신 분은 추가바람.
* miktex이라는 이름의 volume을 만든다. {{{
docker volume create --name miktex
}}}
=== execute without container ===
* 다음 명령 예시의 `\`는 다음 줄과 이어진다는 표시이다.
* `$(pwd)`는 Linux나 Mac에서라면 이대로 입력해도 현재 폴더로 되지만 Windows에서는 현재 폴더의 절대경로를 디렉터리 구분자를 `/`로 하여 적어주어야 한다. 예를 들면 `-v C:/Users/tester/Documents/dockerwork:/miktex/work`. {{{
docker run -ti --rm \
-v miktex:/miktex/.miktex \
-v $(pwd):/miktex/work \
miktex/miktex pdflatex <filename> }}}
=== container ===
* build container {{{docker run -ti \
--name <unique_name> \
-v miktex:/miktex/.miktex \
-v <working_dir>:/miktex/work \
miktex/miktex
miktex/miktex \
/bin/bash
}}}* ```<unique_name>```은 기억하기 쉬운 container 이름으로. (이하 ```mymiktex```으로 예를 들 것임.)
* ```<working_dir>```는 host측 작업 디렉토리. Windows라면 ```C:/MyTeXWork```과 같은 방법으로 지정한다.
@@ -20,38 +75,94 @@
}}}
* ```/bin/bash```를 실행하면 docker container 시스템 내부의 bash가 열린다. 이 시스템은 Debian Linux이다.
* ```/bin/bash``` 대신 컴파일 명령을 줄 수 있다. ex) ```docker exec -ti mymiktex xelatex --shell-escape --synctex=1 mytex.tex```
mpm --admin --update
mpm --update
* local repository (texmf) 등록 {{{
initexmf --register-root=<path_to>
initexmf --admin -u
initexmf -u
* ```path_to```는 container 내부에서 인식하는 경로를 적어야 한다.
* 폰트 관련 {{{
ln -s /miktex/.miktex/texmfs/install/fonts/truetype \
/usr/local/share/fonts/truetype
ln -s /miktex/.miktex/texmfs/install/fonts/opentype \
/usr/local/share/fonts/opentype
* 위의 두 명령을 (docker 내부에서) 실행해두는 것이 좋다.
* Noto Sans/Serif CJK나 나눔글꼴 같은 것은 apt 명령으로 실행한다. ```apt install fonts-noto-cjk```
* MiKTeX이 제공하는 (CTAN 등재) 폰트들을 자동 다운로드/설치되게 하려면 '''폰트 파일 이름으로''' fontspec 명령들을 사용해야 한다. 예) ```\setmainfont{texgyretermes-regular.otf}```
* 그렇지 않으면 mpm 명령으로 직접 인스톨해야 할 수 있다. {{{
mpm --install tex-gyre
* 유틸리티 관련
* arara를 사용하려면 default-jre 설치. ```apt install default-jre```.
* spix 사용하려면, 다음 명령을 실행할 것. {{{
ln -s `which python3` /usr/local/bin/python
* pygmentize를 사용하려면, 다음 명령을 실행할 것. {{{
apt install python3-pip
pip3 install pygments
* ```/bin/bash```를 실행하면 docker container 시스템 내부의 bash가 열린다. 이 시스템은 Debian Linux이다.
* ```/bin/bash``` 대신 컴파일 명령을 줄 수 있다. ex) ```docker exec -ti mymiktex xelatex --shell-escape --synctex=1 mytex.tex```
== MiKTeX 관리 ==
* container를 /bin/bash entry point로 열어서 작업한다.
* update {{{
== novadehi/miktexwktug ==
* [http://www.ktug.org/xe/index.php?mid=KTUG_open_board&document_srl=255839|소개글]
* Dockerized MiKTeX에 [[KTUG Private Repository]]의 주요 패키지들과 미리 설정된 Emacs + Okular 작업 환경을 추가한 개인 배포 버전.
* `cli` 태그가 붙은 버전은 GUI App인 Emacs와 Okular를 제외하고 MiKTeX과 한글 및 유틸리티 설정만을 한 것이다. X11을 실행할 수 없는 환경에서는 이것을 TeX 시스템으로 활용할 수 있다.
* Windows 11, Linux, Mac OS에서 실행 가능하다.
* Windows 11 (22000+) 조건은 Gui App 실행에 필요한 조건이다. 이를 충족하지 않는 경우에도 docker 설치 실행이 가능하다면 `cli` 버전을 쓸 수 있다.
* Apple Silicon Mac을 위한 arm64 플랫폼의 MikTeX binary가 (아직) 없기 때문에 `--platform linux/amd64` 옵션을 주어서 (로제타를 경유하여) 실행하여야 한다. DeleteMe 확인요망.
* 별도로 TeX 시스템과 에디터를 설치할 필요 없이 이 도커 이미지 하나로 TeX 사용환경을 설정할 수 있다.
* Workflow 자동화 프로그램은 latexmk, spix, cluttex, texify 등이 있다. arara는 jre가 설치되어 있지 않기 때문에(용량문제로) 사용할 수 없다. cluttex의 경우 clxelatex과 같은 단축 명령은 제공하지 않는다. `cluttex -e xelatex`과 같이 사용하여야 한다. latexmk 또는 spix를 권장함.
* arara가 꼭 필요하면 container를 만들어서 `apt install default-jre` 명령을 한 번 준다. 이 container를 commit하여 사용할 수 있다.
* 참고: `cli` 버전은 java가 동작하므로 arara를 쓸 수 있다.
* pygments는 설치되어 있다. minted 사용 가능함.
* 한글 폰트는 함초롬LVT와 나눔글꼴(사설저장소 제공 글꼴) 및 Noto CJK KR. 다른 폰트가 필요하면 host computer의 폰트 폴더를 volume 옵션(`-v`)으로 `/root/.fonts` 아래 디렉터리로 연결하여 사용한다.
* Emacs의 한영 전환은 `C-\` 이외에 `Shift-SPC`.
* Emacs에서 View를 열려면 `C-c C-c`, 또는 `C-c C-a`. Okular에서 Inverse Search는 "Browse" 도구 상태에서 `Shift+Click`.
* Emacs 내부에서 ShellEscape 해야 한다면 `M-x customize-variable RET TeX-command-extra-options RET`로 편집창을 연 상태에서 `-shell-escape`를 추가하고 Apply.
=== 사용법 ===
==== 공통 ====
아래 docker 명령은 (시스템 설정에 따라) `sudo`를 필요로 할 수 있음.
1. 시작하기: {{{
$ docker pull novadehi/miktexwktug
}}} * 둘 다 하는 것이 좋음
* 또는 cli 버전 {{{
$ docker pull novadehimiktexwktug:cli
}}} 2. 볼륨 만들기 (처음 한 번만 하면 되고 볼륨은 docker로 관리 가능) {{{
$ docker volume create --name miktex
}}} 3. 컴파일 명령으로 실행 (xelatex) {{{
$ docker -v miktex:/miktex/.miktex -v $(pwd):/miktex/work novadehi/miktexwktug xelatex <filename>.tex
}}}=== GUI 프로그램(Emacs) 실행 ===
==== Windows ====
2. GUI 프로그램은 wsl 명령행에서 실행한다. {{{
# docker run -ti --rm \
-v miktex:/miktex/.miktex \
-v $(pwd):/miktex/work \
-e DISPLAY=:0 \
-v /tmp/.X11-unix:/tmp/.X11-unix \
novadehi/miktexwktug emacs
}}} 3. 윈도우즈 시스템 폰트를 컴파일에 사용하려면 다음 행을 추가한다. (wsl 명령행 기준) {{{
-v /mnt/c/Windows/Fonts:/root/.fonts/winfonts
}}}
4. GUI Emacs 없이 컴파일러로만 사용하려면 cmd 명령행에서도 가능하다. 다만 `$(pwd)` 대신 현재 작업 디렉터리를 다음과 같은 형식으로 지정. {{{
-v C:/Users/myname/Documents/texwork:/miktex/work
}}}
* GUI 없이 컴파일러로만 사용하는 경우 현재 폴더를 -v 옵션으로 지정하는 귀찮은 문제를 간단히 하는 배치파일이 작성되어 있다. 위의 [http://www.ktug.org/xe/index.php?mid=KTUG_open_board&document_srl=255839|소개글]에 딸린 댓글의 첨부파일 참조.
==== Mac OS ====
1. XQuartz를 설치하고 Preferences에서 Security -> Allow connections from network clients 체크
2. terminal에서 다음 명령을 한 번 실행 {{{
# xhost + localhost
}}}
3. Emacs를 실행하는 명령 {{{
# docker run -ti --rm \
-v miktex:/miktex/.miktex \
-v $(pwd):/miktex/work \
-e DISPLAY=host.docker.internal:0 \
-v /tmp/.X11-unix:/tmp/.X11-unix \
novadehi/miktexwktug emacs
}}}
* `/tmp/.X11-unix` 부분은 없어도 된다.
==== Linux ====
1. GUI를 위하여 다음 명령을 미리 실행해둔다. {{{
# xhost local:root
}}}
2. Emacs 실행 {{{
# docker run -ti --rm \
-v miktex:/miktex/.miktex \
-v $(pwd):/miktex/work \
-e DISPLAY
-v /tmp/.X11-unix:/tmp/.X11-unix \
novadehi/miktexwktug emacs
}}}
== Docker 운영 팁 ==
* Windows는 Pro면 Hyper-V, Home이면 wsl2로 사용하는 것을 추천함.
=== Docker daemon 실행 방법 ===
* Windows, Mac OS에서는 [https://www.docker.com/products/docker-desktop|Docker Desktop]을 이용하는 것이 제일 쉽다.
* OpenSUSE의 경우, 다음과 같이. {{{
sudo systemctl start docker
}}}
* Ubuntu에서는 {{{
sudo service docker start
}}}
=== 사용자에게 docker 그룹 권한 주기 (Linux) ===
{{{
sudo usermod -G docker -a <username>
}}}
* 생성되는 파일의 권한 문제 (Linux) {{{
--user "$(id -u):$(id -g)"
}}}1.1. 장점 ¶
- MiKTeX 특유의 MPM 시스템 덕분에 작은 크기의 이미지만 설치하고도 이후의 작업에 지장이 없다. 패키지나 유틸리티가 필요해지면 스스로 다운로드받는다.
- 현재 MiKTeX (21.X)은 갱신이 빠르고 상당히 안정적이다. TeX Live와 큰 차이가 없다.
- texmf를 추가하여 운영할 수 있기 때문에 사용자 패키지를 활용하는 것이 가능하다. (KTUG 사설저장소 패키지들을 미리 설치해둔 후에 등록하여 쓸 수 있다.)
- Linux MiKTeX은 실행 속도에서도 만족스럽다.
- 호스트 운영체제가 무엇이든 상관없이 동일하게 동작한다.
- docker에서 돌아간다는 것이 장점이다.
2.1.1. WSL 설정 ¶
- https://docs.microsoft.com/ko-kr/windows/wsl/install
- Windows 11 또는 Windows 10 2004이후 버전
- PowerShell을 관리자 권한으로 실행하여 다음 명령을 입력한다.
> wsl --install
- 재시동한다.
- PowerShell을 관리자 권한으로 실행하여 다음 명령을 입력한다.
- 그 이전 버전의 Windows라면 수동 설치할 수 있다. 참고: https://docs.microsoft.com/ko-kr/windows/wsl/install-manual
2.1.2. Docker Desktop 설치 ¶
- winget으로 설치하는 방법이 있다.
> winget "Docker Desktop"
- 또는 https://www.docker.com/products/docker-desktop 에서 설치 프로그램을 다운로드받아 실행한다.
2.2. Mac OS ¶
- homebrew로 설치할 수 있다.
# brew install docker
- 또는 https://www.docker.com/products/docker-desktop
3.1. docker image pull ¶
- miktex docker image
docker pull miktex/miktex
- miktex/miktex이 ARM 아키텍처를 제공하지 않는 듯한데, M1 Mac에서 Rosetta2로 어찌어찌 되는지 어떤지 해보지 않아서 모릅니다. 시도해보신 분은 추가바람.
- miktex이라는 이름의 volume을 만든다.
docker volume create --name miktex
3.2. execute without container ¶
- 다음 명령 예시의
\
는 다음 줄과 이어진다는 표시이다. $(pwd)
는 Linux나 Mac에서라면 이대로 입력해도 현재 폴더로 되지만 Windows에서는 현재 폴더의 절대경로를 디렉터리 구분자를/
로 하여 적어주어야 한다. 예를 들면-v C:/Users/tester/Documents/dockerwork:/miktex/work
.docker run -ti --rm \ -v miktex:/miktex/.miktex \ -v $(pwd):/miktex/work \ miktex/miktex pdflatex <filename>
3.3. container ¶
- build container
docker run -ti \ --name <unique_name> \ -v miktex:/miktex/.miktex \ -v <working_dir>:/miktex/work \ miktex/miktex \ /bin/bash
<unique_name>
은 기억하기 쉬운 container 이름으로. (이하
mymiktex
으로 예를 들 것임.)
<working_dir>
는 host측 작업 디렉토리. Windows라면
C:/MyTeXWork
과 같은 방법으로 지정한다.
- starting/stopping container
docker start mymiktex docker stop mymiktex
- executing container
docker exec -ti mymiktex /bin/bash
/bin/bash
를 실행하면 docker container 시스템 내부의 bash가 열린다. 이 시스템은 Debian Linux이다.
/bin/bash
대신 컴파일 명령을 줄 수 있다. ex)
docker exec -ti mymiktex xelatex --shell-escape --synctex=1 mytex.tex
4. novadehi/miktexwktug ¶
- 소개글
- Dockerized MiKTeX에 KTUG Private Repository의 주요 패키지들과 미리 설정된 Emacs + Okular 작업 환경을 추가한 개인 배포 버전.
- Windows 11, Linux, Mac OS에서 실행 가능하다.
- Windows 11 (22000+) 조건은 Gui App 실행에 필요한 조건이다. 이를 충족하지 않는 경우에도 docker 설치 실행이 가능하다면
cli
버전을 쓸 수 있다.
- Windows 11 (22000+) 조건은 Gui App 실행에 필요한 조건이다. 이를 충족하지 않는 경우에도 docker 설치 실행이 가능하다면
- Apple Silicon Mac을 위한 arm64 플랫폼의 MikTeX binary가 (아직) 없기 때문에
--platform linux/amd64
옵션을 주어서 (로제타를 경유하여) 실행하여야 한다. DeleteMe 확인요망. - 별도로 TeX 시스템과 에디터를 설치할 필요 없이 이 도커 이미지 하나로 TeX 사용환경을 설정할 수 있다.
- Workflow 자동화 프로그램은 latexmk, spix, cluttex, texify 등이 있다. arara는 jre가 설치되어 있지 않기 때문에(용량문제로) 사용할 수 없다. cluttex의 경우 clxelatex과 같은 단축 명령은 제공하지 않는다.
cluttex -e xelatex
과 같이 사용하여야 한다. latexmk 또는 spix를 권장함.- arara가 꼭 필요하면 container를 만들어서
apt install default-jre
명령을 한 번 준다. 이 container를 commit하여 사용할 수 있다. - 참고:
cli
버전은 java가 동작하므로 arara를 쓸 수 있다.
- arara가 꼭 필요하면 container를 만들어서
- pygments는 설치되어 있다. minted 사용 가능함.
- 한글 폰트는 함초롬LVT와 나눔글꼴(사설저장소 제공 글꼴) 및 Noto CJK KR. 다른 폰트가 필요하면 host computer의 폰트 폴더를 volume 옵션(
-v
)으로/root/.fonts
아래 디렉터리로 연결하여 사용한다. - Emacs의 한영 전환은
C-\
이외에Shift-SPC
. - Emacs에서 View를 열려면
C-c C-c
, 또는C-c C-a
. Okular에서 Inverse Search는 "Browse" 도구 상태에서Shift+Click
. - Emacs 내부에서 ShellEscape 해야 한다면
M-x customize-variable RET TeX-command-extra-options RET
로 편집창을 연 상태에서-shell-escape
를 추가하고 Apply.
- Workflow 자동화 프로그램은 latexmk, spix, cluttex, texify 등이 있다. arara는 jre가 설치되어 있지 않기 때문에(용량문제로) 사용할 수 없다. cluttex의 경우 clxelatex과 같은 단축 명령은 제공하지 않는다.
4.1.1. 공통 ¶
아래 docker 명령은 (시스템 설정에 따라)
sudo
를 필요로 할 수 있음.
- 시작하기:
$ docker pull novadehi/miktexwktug
- 또는 cli 버전
$ docker pull novadehimiktexwktug:cli
- 또는 cli 버전
- 볼륨 만들기 (처음 한 번만 하면 되고 볼륨은 docker로 관리 가능)
$ docker volume create --name miktex
- 컴파일 명령으로 실행 (xelatex)
$ docker -v miktex:/miktex/.miktex -v $(pwd):/miktex/work novadehi/miktexwktug xelatex <filename>.tex
4.2.1. Windows ¶
- GUI 프로그램은 wsl 명령행에서 실행한다.
# docker run -ti --rm \ -v miktex:/miktex/.miktex \ -v $(pwd):/miktex/work \ -e DISPLAY=:0 \ -v /tmp/.X11-unix:/tmp/.X11-unix \ novadehi/miktexwktug emacs
- 윈도우즈 시스템 폰트를 컴파일에 사용하려면 다음 행을 추가한다. (wsl 명령행 기준)
-v /mnt/c/Windows/Fonts:/root/.fonts/winfonts
- GUI Emacs 없이 컴파일러로만 사용하려면 cmd 명령행에서도 가능하다. 다만
$(pwd)
대신 현재 작업 디렉터리를 다음과 같은 형식으로 지정.-v C:/Users/myname/Documents/texwork:/miktex/work
- GUI 없이 컴파일러로만 사용하는 경우 현재 폴더를 -v 옵션으로 지정하는 귀찮은 문제를 간단히 하는 배치파일이 작성되어 있다. 위의 소개글에 딸린 댓글의 첨부파일 참조.
4.2.2. Mac OS ¶
- XQuartz를 설치하고 Preferences에서 Security -> Allow connections from network clients 체크
- terminal에서 다음 명령을 한 번 실행
# xhost + localhost
- Emacs를 실행하는 명령
# docker run -ti --rm \ -v miktex:/miktex/.miktex \ -v $(pwd):/miktex/work \ -e DISPLAY=host.docker.internal:0 \ -v /tmp/.X11-unix:/tmp/.X11-unix \ novadehi/miktexwktug emacs
/tmp/.X11-unix
부분은 없어도 된다.
4.2.3. Linux ¶
- GUI를 위하여 다음 명령을 미리 실행해둔다.
# xhost local:root
- Emacs 실행
# docker run -ti --rm \ -v miktex:/miktex/.miktex \ -v $(pwd):/miktex/work \ -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix \ novadehi/miktexwktug emacs
5.1. Docker daemon 실행 방법 ¶
- Windows, Mac OS에서는 Docker Desktop을 이용하는 것이 제일 쉽다.
- OpenSUSE의 경우, 다음과 같이.
sudo systemctl start docker
- Ubuntu에서는
sudo service docker start