Gestión de paquetes y fuentes

Por muy completa que parezca su instalación de TeX, pronto querrá un paquete del que carece o una fuente que la licencia mantiene lista para usar. Esta página cubre los comandos que usted escribe día a día: tlmgr de TeX Live y su tlshell GUI, getnonfreefonts para las fuentes enviadas por separado y kpsewhich para responder "¿dónde vive ese archivo?" – con lo que hace cada uno y por qué lo busca.

Administrar paquetes con tlmgr

tlmgr (el TeX Live Manager) es el comando oficial para instalar, eliminar y actualizar paquetes TeX Live. Así es como agrega cualquiera de los miles de paquetes CTAN que faltan en su instalación; lo mismo en configuraciones japonesas e inglesas (MiKTeX es un mundo separado; ver más abajo). Comience instalando un paquete por nombre; sus dependencias vienen de forma predeterminada.

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

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

Cuando los paquetes van al árbol de todo el sistema, tlmgr debe ejecutarse con derechos de administrador (sudo tlmgr install … en Unix, un shell elevado en Windows). También puede colocar archivos en un árbol por usuario (TEXMFHOME) manualmente, pero tlmgr administra los propios árboles de la distribución. Qué árbol contiene qué y cómo se resuelven las rutas es el tema de “rutas y estructura de directorios TeX”; aquí simplemente confiamos en tlmgr para colocar las cosas en el lugar correcto.

Algo fácil de pasar por alto: ni tlmgr install ni tlmgr remove actualizarán los enlaces simbólicos en directorios del sistema como /usr/local/bin. Si su PATH apunta directamente al directorio bin de TeX Live, puede ignorarlo, pero si ha usado tlmgr path add para conectar enlaces simbólicos para ejecutables, páginas de manual y páginas de información, debe volver a ejecutar tlmgr path add usted mismo después de instalar un paquete que incluye un nuevo ejecutable (y tlmgr path remove después de eliminar uno).

Aprenda las actualizaciones en pareja. --self actualiza tlmgr (la infraestructura); --all actualiza todos los demás paquetes instalados. Dar ambos a la vez es el movimiento estándar: tlmgr se reemplaza a sí mismo primero y luego actualiza el resto. Esto también ocurre cuando elimina automáticamente los paquetes colocados en el servidor e instala automáticamente nuevos miembros de una colección.

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

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

tlmgr info le informa sobre un paquete. Sin argumentos, enumera todos los paquetes, marcando los instalados con un i inicial. Asígnele un nombre e imprimirá la descripción, la licencia, los tamaños, los archivos contenidos y los datos del catálogo TeX, consultando el repositorio incluso para paquetes que no haya instalado. Cuando solo recuerda a medias un nombre, search ayuda: --global busca en el repositorio en lugar de en su instalación local, y --file busca por nombre de archivo en todos los paquetes.

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

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

Elegir un repositorio (espejo CTAN)

El repositorio es de donde tlmgr recupera los paquetes. De forma predeterminada, utiliza la redirección automática de espejos de CTAN, pero cuando una conexión es lenta o desea fijar un espejo, cambie permanentemente con tlmgr option repository. El alias ctan es la abreviatura de https://mirror.ctan.org/systems/texlive/tlnet; apuntarlo lo dirige automáticamente a un espejo CTAN cercano.

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

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

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

Para extraer de un espejo diferente solo esta vez, agregue --repository <url> para esa ejecución única sin tocar la configuración permanente. Tenga en cuenta que tlmgr option también contiene valores predeterminados como el tamaño del papel: para cambiar el papel para cada herramienta a la vez use tlmgr paper a4 (o por programa, tlmgr dvips paper a4).

El GUI (tlshell) y el MiKTeX

Si la línea de comando no es lo tuyo, TeX Live incluye tlshell, un Tcl/Tk GUI (ejecútalo con tlshell). Es una interfaz que simplemente controla tlmgr, por lo que puede hacer las mismas cosas: buscar, instalar, eliminar, actualizar paquetes de forma masiva y cambiar de repositorio desde una ventana. Incluso muestra el registro de comandos subyacente, lo que lo convierte en una forma sencilla de saber qué está haciendo tlmgr.

MiKTeX (principalmente Windows) es un mundo separado: en lugar de tlmgr, su línea de comando es mpm (el administrador de paquetes MiKTeX) y su GUI es MiKTeX Console. El sello distintivo de MiKTeX es la instalación sobre la marcha: cuando un documento solicita un paquete que no tiene, lo descarga e instala durante la compilación (la consola le permite configurar esto para que se instale siempre, pregunte cada vez o nunca). La idea es la misma; sólo difieren los nombres de los comandos y el flujo de trabajo.

Las fuentes se envían por separado: getnonfreefonts

Algunas fuentes tienen licencias como “de uso gratuito, pero no se pueden vender”, por lo que no pueden incluirse en TeX Live, que también se distribuye en un DVD a la venta. El script getnonfreefonts de TUG maneja la instalación exactamente de estos. CTAN contiene las fuentes y sus archivos de soporte TeX; el script los busca y conecta todo para que TeX pueda encontrarlos.

Primero instala el script una vez (siga los pasos en tug.org/fonts/getnonfreefonts/). El uso actual le pide que elija --user (instalación personal) o --sys (instalación en todo el sistema) explícitamente. Enumere las fuentes que ofrece con --lsfonts, luego instale una por nombre. La fuente de máquina de escribir luximono es uno de esos objetivos, por ejemplo.

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

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

La distinción clave es --user versus --sys. --user se instala en su árbol personal (TEXMFHOME), mientras que --sys se instala en el árbol de todo el sistema. El comando separado getnonfreefonts-sys que se encuentra en notas anteriores ya no existe. Para todos los usuarios de la máquina, ejecute getnonfreefonts --sys ... con derechos de administrador. Después, es posible que sea necesario actualizar la base de datos de nombres de archivos (mktexlsr), aunque el script normalmente se encarga de ello. Esos comandos de fuentes y bases de datos se tratan en “Herramientas de fuentes y DB”.

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

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

Encontrar archivos con kpsecuál

TeX localiza archivos a través de una biblioteca de búsqueda llamada kpathsea, y kpse, que es la herramienta que consulta esa misma búsqueda desde su shell. Responde "¿en qué archivo se resuelve realmente esta clase?" y "¿están chocando dos versiones?" de una sola vez: el primer paso en la mayoría de las soluciones de problemas. Entréguele un nombre de archivo e imprimirá la primera ruta que seleccionará TeX.

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

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

Más allá de las rutas, también informa valores de variables de configuración. -var-value=VAR imprime la expansión de la variable VAR, lo cual es útil para encontrar dónde se encuentra realmente su árbol de usuarios (TEXMFHOME) o árbol de configuración (TEXMFCONFIG). Existen dos tipos de expansión: -expand-var expande solo variables, mientras que -expand-path expande completamente una ruta que incluye llaves.

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

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

Para eliminar la ambigüedad de archivos con el mismo nombre de diferentes tipos, utilice -format=NAME. Los estilos BibTeX (.bst) y los datos de bibliografía (.bib), por ejemplo, tienen rutas de búsqueda separadas, por lo que nombrar el tipo de archivo resuelve el correcto. -show-path=NAME imprime la ruta de búsqueda completa para ese tipo, mostrando qué directorios se buscan y en qué orden. Enumere los nombres de los tipos con kpsewhich --help.

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

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

Cuando la ruta de búsqueda depende del motor, haga coincidir el contexto con -engine=NAME o -progname=NAME (por ejemplo, -progname=lualatex). La mecánica de la búsqueda en sí (la función de texmf.cnf y cómo se atraviesan los árboles) pertenece a la “estructura y rutas de directorios de TeX”; Aquí utilizamos kpsewhich únicamente como una herramienta para comprobar qué se resuelve en qué.

Un orden práctico para el trabajo manuscrito.

Cuando un informe o tesis falla con File ... not found, no coloque inmediatamente un .sty aleatorio de la web en el directorio del manuscrito. Primero separe el nombre del archivo del nombre del paquete. Si kpsewhich siunitx.sty no encuentra nada, ejecute tlmgr search --global --file siunitx.sty para descubrir qué paquete TeX Live lo proporciona y solo entonces instálelo como un paquete de distribución, por ejemplo. tlmgr install siunitx. Eso permite a tlmgr rastrear dependencias, actualizaciones y eliminaciones.

Para colaboración y CI, "Lo instalé una vez en mi computadora portátil" no es reproducible. Registre el año TeX Live, los nombres de paquetes adicionales y cualquier repositorio anclado o etiqueta Docker en README o en la configuración de compilación. Ejecutar tlmgr update --self --all justo antes del envío significa construir PDF con paquetes diferentes a los de ayer. Pruebe las actualizaciones por separado; para la versión enviada, congele el entorno que funcionó.

  • Los archivos de plantilla de conferencia únicamente pueden vivir dentro del repositorio de manuscritos, porque pertenecen a ese paquete de envío y no a la distribución.
  • Los paquetes de uso general deben instalarse con tlmgr; una copia obsoleta en la carpeta del manuscrito seguirá ocultando la versión actualizada de TeX Live y creará fallas confusas.
  • Las máquinas compartidas y CI deben registrar los paquetes requeridos en README o .latexmkrc, y fijar la etiqueta Docker o el año TeX Live para mayor reproducibilidad.