패키지 및 글꼴 관리

그러나 TeX 설치 모양을 완성하더라도 곧 부족한 패키지나 라이센스가 있는 글꼴이 필요하게 될 것입니다. 이 페이지에서는 매일 실제로 입력하는 명령을 다룹니다. TeX Live의 tlmgr 및 해당 tlshell GUI, 별도로 배송되는 글꼴의 경우 getnonfreefonts, 그리고 "해당 파일은 어디에 있습니까?"라고 대답하는 kpsewhich입니다. — 각자가 하는 일과 그 일을 하는 이유.

tlmgr로 패키지 관리

tlmgr(TeX Live Manager)는 TeX Live 패키지를 설치, 제거 및 업데이트하기 위한 공식 명령입니다. 설치에서 누락된 수천 개의 CTAN 패키지 중 하나를 추가하는 방법입니다. 일본어와 영어 설정 모두 동일합니다(MiKTeX는 별도의 세계입니다. 아래 참조). 이름별로 패키지를 설치하는 것부터 시작하세요. 해당 종속성은 기본적으로 함께 제공됩니다.

terminal
# パッケージを 1 つ以上インストール(依存も自動で入る)
tlmgr install siunitx
tlmgr install collection-fontsrecommended

# 依存を引かずに本体だけ/既存の上書き再インストール
tlmgr install --no-depends siunitx
tlmgr install --reinstall siunitx

패키지가 시스템 전체 트리에 들어갈 때 tlmgr관리자 권한(Unix의 sudo tlmgr install …, Windows의 상승된 셸)으로 실행되어야 합니다. 사용자별 트리(TEXMFHOME)에 직접 파일을 놓을 수도 있지만 tlmgr는 배포 자체 트리를 관리합니다. 어떤 트리가 무엇을 보유하고 경로가 어떻게 해결되는지는 "TeX 디렉토리 구조 및 경로"의 주제입니다. 여기서 우리는 tlmgr가 항목을 올바른 위치에 놓을 것이라고 믿습니다.

놓치기 쉬운 점: tlmgr installtlmgr remove 모두 /usr/local/bin와 같은 시스템 디렉터리의 심볼릭 링크를 새로 고치지 않습니다. PATH가 TeX Live의 자체 bin 디렉토리를 직접 가리키는 경우 이를 무시할 수 있지만 tlmgr path add를 사용하여 실행 파일, 매뉴얼 페이지 및 정보 페이지에 대한 심볼릭 링크를 연결한 경우 새 실행 파일을 제공하는 패키지를 설치한 후(그리고 패키지를 제거한 후 tlmgr path remove) 직접 tlmgr path add를 다시 실행해야 합니다.

업데이트 내용을 쌍으로 알아보세요. --selftlmgr 자체(인프라)를 최신 상태로 유지합니다. --all는 설치된 다른 모든 패키지를 최신 상태로 유지합니다. 두 가지를 동시에 제공하는 것이 표준적인 움직임입니다. tlmgr가 먼저 자신을 교체한 다음 나머지를 업데이트합니다. 이는 서버에 삭제된 패키지를 자동으로 제거하고 컬렉션의 새 구성원을 자동으로 설치하는 경우이기도 합니다.

terminal
# 定番:自分自身 → 全パッケージの順で最新化
tlmgr update --self --all

# 特定パッケージだけ更新/更新があるか一覧で確認
tlmgr update siunitx
tlmgr update --list

tlmgr info는 패키지에 대해 알려줍니다. 인수 없이 모든 패키지를 나열하고 설치된 패키지를 앞에 i로 표시합니다. 이름을 지정하면 설명, 라이센스, 크기, 포함된 파일 및 TeX 카탈로그 데이터가 인쇄됩니다. 설치하지 않은 패키지에 대해서도 저장소를 쿼리합니다. 이름을 절반만 기억하는 경우 search가 도움이 됩니다. --global는 로컬 설치가 아닌 저장소를 검색하고 --file는 패키지 전체에서 파일 이름으로 검색합니다.

terminal
# パッケージの詳細(説明・ライセンス・収録ファイル)
tlmgr info siunitx

# 名前・説明から探す/ファイル名で横断検索
tlmgr search --global siunit
tlmgr search --global --file tikz.sty

저장소 선택(CTAN 미러)

저장소tlmgr가 패키지를 가져오는 곳입니다. 기본적으로 CTAN의 자동 미러 리디렉션을 사용하지만 연결이 느리거나 하나의 미러를 고정하려는 경우 tlmgr option repository로 영구적으로 전환하세요. 별칭 ctanhttps://mirror.ctan.org/systems/texlive/tlnet의 약어입니다. 그것을 가리키면 근처의 CTAN 미러로 자동으로 연결됩니다.

terminal
# 既定(近くの CTAN ミラーへ自動振り分け)に設定
tlmgr option repository ctan

# 特定ミラーへ固定(例:好きな tlnet ミラーの URL)
tlmgr option repository https://example.org/CTAN/systems/texlive/tlnet

# 今の設定をまとめて確認(repository だけでなく paper なども)
tlmgr option show

이번 한 번만 다른 미러에서 가져오려면 영구 설정을 건드리지 않고 해당 단일 실행에 대해 --repository <url>를 추가하세요. tlmgr option에는 용지 크기와 같은 기본값도 포함되어 있습니다. 모든 도구의 용지를 한 번에 전환하려면 tlmgr paper a4(또는 프로그램당 tlmgr dvips paper a4)를 사용하세요.

GUI(tlshell) 및 MiKTeX

명령줄이 마음에 들지 않으면 TeX Live는 Tcl/Tk GUI인 tlshell을 제공합니다(tlshell로 실행). 단순히 tlmgr를 구동하는 프런트 엔드이므로 검색, 설치, 제거, 패키지 대량 업데이트, 창에서 리포지토리 전환 등 동일한 작업을 수행할 수 있습니다. 기본 명령 로그도 표시하므로 tlmgr가 수행하는 작업을 쉽게 알아볼 수 있습니다.

MiKTeX(주로 Windows)는 별도의 세계입니다. tlmgr 대신 명령줄은 mpm(MiKTeX 패키지 관리자)이고 GUI는 MiKTeX Console입니다. MiKTeX의 특징은 즉석 설치입니다. 문서에서 없는 패키지를 요청하면 컴파일 중간에 해당 패키지를 다운로드하여 설치합니다(콘솔을 사용하면 항상 설치, 매번 묻기 또는 전혀 묻지 않도록 설정할 수 있음). 아이디어는 동일합니다. 단지 명령 이름과 작업 흐름이 다를 뿐입니다.

글꼴은 별도로 배송됨 — getnonfreefonts

일부 글꼴에는 "무료로 사용할 수 있지만 판매할 수 없음"과 같은 라이센스가 있으므로 판매용 DVD에도 배포되는 TeX Live에서 사용할 수 없습니다. TUG의 getnonfreefonts 스크립트는 이러한 설치를 정확하게 처리합니다. CTAN는 글꼴과 해당 TeX 지원 파일을 보유합니다. 스크립트는 이를 가져와 TeX가 찾을 수 있도록 모든 것을 연결합니다.

먼저 스크립트 자체를 한 번 설치합니다(tug.org/fonts/getnonfreefonts/의 단계를 따르세요). 현재 사용법에서는 명시적으로 --user(개인 설치) 또는 --sys(시스템 전체 설치)를 선택하도록 요청합니다. --lsfonts와 함께 제공되는 글꼴을 나열한 다음 이름별로 설치하세요. 예를 들어, 타자기 글꼴 luximono가 그러한 대상 중 하나입니다.

terminal
# 自分専用ツリーで、入れられるフォントの一覧を見る
getnonfreefonts --user --lsfonts

# 自分専用ツリーへ個別に入れる/配布元のものを全部入れる
getnonfreefonts --user luximono
getnonfreefonts --user --all

주요 차이점은 --user--sys입니다. --user는 개인 트리(TEXMFHOME)에 설치되고, --sys는 시스템 전체 트리에 설치됩니다. 이전 노트에 있던 별도의 getnonfreefonts-sys 명령은 더 이상 존재하지 않습니다. 머신의 모든 사람에 대해 관리자 권한으로 getnonfreefonts --sys ...를 실행하십시오. 나중에 파일 이름 데이터베이스를 새로 고쳐야 할 수도 있지만(mktexlsr) 일반적으로 스크립트가 이를 처리합니다. 이러한 글꼴 및 데이터베이스 명령은 "글꼴 및 DB 도구"에서 다룹니다.

terminal
# システム全体のツリーへ(全ユーザ向け・要管理者権限)
sudo getnonfreefonts --sys luximono

# 念のため手動でファイル名 DB を更新する場合
sudo -H mktexlsr

kpsewhich로 파일 찾기

TeX는 kpathsea라는 검색 라이브러리를 통해 파일을 찾고, kpsewhich는 셸에서 동일한 검색을 쿼리하는 도구입니다. “이 클래스가 실제로 어떤 파일을 해결합니까?”라고 대답합니다. 그리고 "두 버전이 충돌하고 있나요?" 한 번에 — 대부분의 문제 해결의 첫 번째 조치입니다. 파일 이름을 지정하면 TeX가 선택할 첫 번째 경로가 인쇄됩니다.

terminal
# このファイルが解決される実際のパスを表示
kpsewhich article.cls
kpsewhich siunitx.sty

# 同名ファイルが複数あれば全部出す(衝突の発見に)
kpsewhich -all siunitx.sty

경로 외에도 구성 변수 값도 보고합니다. -var-value=VARVAR 변수의 확장을 인쇄합니다. 이는 사용자 트리(TEXMFHOME) 또는 구성 트리(TEXMFCONFIG)가 실제로 어디에 있는지 찾는 데 유용합니다. 두 가지 종류의 확장이 있습니다. -expand-var는 변수만 확장하고, -expand-path는 중괄호를 포함하여 경로를 완전히 확장합니다.

terminal
# 設定変数の値を見る(ユーザツリーの場所など)
kpsewhich -var-value=TEXMFHOME
kpsewhich -var-value=TEXMFCONFIG

# 変数だけ展開 / パス全体を完全展開
kpsewhich -expand-var='$TEXMFHOME'
kpsewhich -expand-path='$TEXMF'

다른 종류의 동일한 이름의 파일을 명확하게 하려면 -format=NAME를 사용하십시오. 예를 들어 BibTeX 스타일(.bst) 및 참고 문헌 데이터(.bib)에는 별도의 검색 경로가 있으므로 파일 형식의 이름을 지정하면 올바른 경로가 확인됩니다. -show-path=NAME는 해당 유형에 대한 전체 검색 경로를 인쇄하여 어떤 디렉터리가 어떤 순서로 검색되는지 보여줍니다. kpsewhich --help를 사용하여 유형 이름을 나열하십시오.

terminal
# ファイル種別を指定して探す(.bst と .bib は別パス)
kpsewhich -format=bst plainnat.bst
kpsewhich -format=bib mybibliography.bib

# その種別の探索パス全体を表示(探索順の確認)
kpsewhich -show-path=tex

검색 경로가 엔진에 따라 달라지는 경우 컨텍스트를 -engine=NAME 또는 -progname=NAME(예: -progname=lualatex)와 일치시킵니다. 검색 자체의 메커니즘(texmf.cnf의 역할 및 트리 탐색 방법)은 "TeX 디렉토리 구조 및 경로"에 속합니다. 여기서 우리는 무엇이 무엇을 해결하는지 확인하기 위한 도구로만 kpsewhich를 사용합니다.

원고작업의 실무순서

File ... not found로 인해 보고서나 논문이 실패하는 경우 웹에서 임의의 .sty를 즉시 원고 디렉토리에 넣지 마십시오. 먼저 파일 이름패키지 이름을 분리하세요. kpsewhich siunitx.sty가 아무것도 찾지 못하면 tlmgr search --global --file siunitx.sty를 실행하여 어떤 TeX Live 패키지가 제공하는지 확인한 다음 배포 패키지로 설치하십시오. tlmgr install siunitx. 이를 통해 tlmgr는 종속성, 업데이트 및 제거를 추적할 수 있습니다.

협업 및 CI의 경우 "노트북에 한 번 설치했습니다"는 재현성이 없습니다. README 또는 빌드 구성에 TeX Live 연도, 추가 패키지 이름, 고정된 저장소 또는 Docker 태그를 기록합니다. 제출 직전에 tlmgr update --self --all를 실행한다는 것은 어제와 다른 패키지로 PDF를 빌드한다는 의미입니다. 업데이트를 별도로 테스트하세요. 제출된 버전의 경우 작동했던 환경을 동결합니다.

  • 컨퍼런스 템플릿 전용 파일은 배포본이 아닌 해당 제출 번들에 속하므로 원고 저장소 내부에 있을 수 있습니다.
  • 범용 패키지tlmgr와 함께 설치해야 합니다. 원고 폴더의 오래된 복사본은 업데이트된 TeX Live 버전을 계속 섀도잉하고 혼란스러운 오류를 발생시킵니다.
  • 공유 머신 및 CI는 README 또는 .latexmkrc에 필수 패키지를 기록하고 재현성을 위해 Docker 태그 또는 TeX Live 연도를 고정해야 합니다.