Mientras está en MiKTeX, se activa automáticamente un proceso de instalación si tiene, digamos, \usepackage{beamer}
en el preámbulo de un documento sin el paquete correspondiente instalado, no existe tal función en TeX Live.
La última declaración no es cierta en realidad, como lo señaló wastofspace en los comentarios, existe el paquete texliveonfly que implementa la instalación bajo demanda en TeX Live 2010 y versiones posteriores. Nunca lo probé y no sé si tiene inconvenientes.
Sin embargo, si instala la colección completa (o casi completa) de paquetes de TeX Live (~2400), no necesitará agregar nuevos paquetes, un tlmgr update -all
periódico se encargará de todo, incluida la instalación de paquetes agregados a la colección TeX Live después de su primera instalación completa. Esta característica se explica en el tlmgr
manual.
De manera análoga, si se ha agregado un paquete a una colección en el servidor que también está instalada localmente, se agregará a la instalación local. Esto se llama auto-install
y se anuncia como tal al usar la opción --list
. Esta autoinstalación se puede suprimir mediante la opción --no-auto-install
El manual tiene mucha información sobre comandos útiles y es una lectura recomendada para todos los usuarios.
La desventaja es, por supuesto, que necesita el conjunto completo de paquetes instalados en su máquina, lo que puede ser un problema si no tiene suficiente espacio libre. Si realmente no puede prescindir de 2 GB de su HD, también es posible instalar TeX Live en una llave USB de, digamos, 4 GB y vivir felices para siempre :)
Todo lo que acabo de escribir requiere que instale TeX Live con uno de los métodos descritos aquí. Si decide usar los paquetes TeX de su distribución, se ve obligado a seguir su política de actualización, que es diferente para diferentes distribuciones
texliveonfly
Como se menciona en los comentarios, hay un paquete TeX Live llamado texliveonfly
que puedes usar con texliveonfly filename.tex
y descargará automáticamente los paquetes de TeX Live correctos.
Esto también funciona para paquetes en los que el nombre del paquete de LaTeX y el nombre del paquete de TeX Live no coinciden (por ejemplo, el rubikrotation
de LaTeX el paquete está contenido en el rubik
paquete TeX Live), y también tiene en cuenta las dependencias del paquete.
Uso
Instalando Es un script de Python, por lo que requiere que Python esté instalado. Luego puede instalarlo como de costumbre con tlmgr install texliveonfly
. Si tienes que usar sudo tlmgr
aquí, tendrás que usar sudo texliveonfly
más tarde.
Correr Si vas en tu terminal al directorio de tu filename.tex
archivo, puede ejecutarlo con texliveonfly filename.tex
.
Otros compiladores Por el momento usa pdflatex
de forma predeterminada, pero puede configurarlo para que se ejecute con otros motores de compilación utilizando el --compiler
(o -c
), como texliveonfly --compiler=lualatex filename.tex
.
Indicadores del compilador Puedes pasar indicadores para el compilador que usas a texliveonfly
utilizando el --arguments
(o -a
), por ejemplo, si utilizó anteriormente latexmk -shell-escape -pdf filename.tex
entonces ahora usas texliveonfly --compiler=latexmk --arguments='-shell-escape -pdf' filename.tex
.
Problemas conocidos
- Hay algunos casos de paquetes faltantes que fallan con un mensaje de error no estándar, por ejemplo babel cuando faltan idiomas, en cuyo caso
texliveonfly
no los descarga. Por el momento, se sabe que los siguientes paquetes deben instalarse manualmente:(edítelos si encuentra más)
- Idiomas de Babel, por ejemplo, para idiomas europeos, instale el
collection-langeuropean
paquete - Estilos Biblatex, p. para el estilo natural necesitas el
biblatex-nature
paquete - codificación de fontenc, p. para obtener
t2aenc.def
necesitas elcyrillic
paquete, y para obtener elly1enc.def
necesitas elly1
paquete. - Paquetes involucrados cuando se usa el paquete acuñado, que son
minted fvextra upquote lineno xstring framed caption
(gracias a pablgonz por probar) - Al ejecutar programas externos como
texcount
en su archivo LaTeX, texliveonfly no detecta que necesita eltexcount
paquete.
- Al dar opciones a texliveonfly, por ejemplo para un compilador diferente, a veces se bloquea sin motivo aparente al instalar paquetes. Lo más probable es que puedas solucionarlo ejecutando primero texliveonfly sin opciones, así que
texliveonfly main.tex
(para que descargue los paquetes) y luego ejecute lo que quiera, por ejemplolatexmk main.tex
.
Antecedentes
Esencialmente, texliveonfly es una herramienta de compilación como latexmk (que es un script de Perl), envuelve el motor TeX. Tenga en cuenta, sin embargo, que puede encadenarlos con texliveonfly --compiler=latexmk filename.tex
.
Es un script de python que funciona al intentar ejecutar su archivo LaTeX, y si falla porque falta un paquete, intentará instalar ese paquete.
Además de en ctan.org/pkg/texliveonfly, puede ver la fuente en ctan.org/tex-archive/support/texliveonfly o en latex.org/forum
PD Probé esto en Arch Linux 4.19.4 y en Travis CI (Ubuntu 14.04).
Mi enfoque bastante simplista fue buscar \usepackage
, extraiga el contenido e instálelo usando el administrador de paquetes de la distribución.
cat *.tex | sed -n 's/^[^%]*\\usepackage[^{]*{\([^}]*\)}.*$/tex\(\1.sty\)/p' | paste -sd ' ' -
Esto devuelve una lista de paquetes con .sty
y rodeado de tex()
, p.ej. tex(amsmath.sty) tex(enumitem.sty) tex(graphicx.sty)
. Puedo pasarlos directamente a yum
/dnf
(Estoy usando Fedora).
sudo dnf install $( cat *.tex | sed -n 's/^[^%]*\\usepackage[^{]*{\([^}]*\)}.*$/tex\(\1.sty\)/p' | paste -sd ' ' - )
Había un par de paquetes que había dividido en varias líneas que el sed
expresión perdida, que instalé manualmente usando sudo dnf install 'tex(some-package-name.sty)'
.
Esperemos que haya un simple .sty
instalación equivalente para apt-get
en ubuntu.