latex - librerias - ¿Cómo cargar archivos.sty de látex desde un subdirectorio?
librerias de texmaker (3)
Utilizo algunos .sty-files que no son parte de texlive y quiero tenerlos en un subdirectorio de la carpeta con mi main.tex. Usé la siguiente línea para cargar el paquete:
/usepackage{sty/prettythesis}
Esto funciona, pero compilar main.tex con xelatex y usar rubber me da una advertencia:
sty/prettythesis.sty: You have requested package `sty/prettythesis'',
but the package provides `prettythesis''. (page 1)
¿Hay alguna manera de evitar esta advertencia o manejar este caso sin tener que incluir "sty /" en todos los comandos .sty-files ''ProvidesPackage o establecer la variable de entorno TEXINPUTS (que parece no ser posible desde main.tex) ?
Como descubrió, colocando el paquete en un subdirectorio (por ejemplo, ./sty/prettythesis.sty
con respecto a su archivo .tex
principal en ./
), y llamando al paquete a través de
/usepackage{sty/prettythesis}
cargará exitosamente el paquete, pero generará la advertencia
sty/prettythesis.sty: You have requested package `sty/prettythesis'',
but the package provides `prettythesis''. (page 1)
Si lo único que desea es deshacerse de esta advertencia, y está de acuerdo con pequeñas modificaciones en el archivo .sty
, entonces simplemente puede cambiar el nombre del paquete que informa, cambiando el comando /ProvidesPackage
a
/ProvidesPackage{sty/prettythesis}
Esto puede ser un inconveniente si vas a moverlo entre cargas, pero la carga de modificaciones tampoco es tan mala.
Aún mejor, si lo que tienes allí es una versión específica y modificada de un paquete TeX estándar (como, por ejemplo, este parche de natbib ), entonces el cambio en el nombre del paquete indica claramente qué paquete está proporcionando, y si reutilizas el archivo, lo más probable es que vuelva a generar una advertencia para que se asegure de que sabe lo que está haciendo.
Simplemente coloque la línea a continuación antes de llamar a pdflatex (o latex) en su archivo make o script de compilación:
export TEXINPUTS=".:./sty:"
Luego haga referencia a su paquete como:
/usepackage{prettythesis}
Yo creo este hilo aquí:
habla exactamente de lo mismo: así parece, las únicas alternativas son usar la variable de entorno TEXINPUTS
; o usando el paquete de importación . ( nota, hay una variante en el paquete de import
en ... Incluyendo archivos tex pg 3. )
Un poco más sobre TEXINPUTS:
- Preguntas frecuentes sobre TeX - Instalación "temporal" de archivos (La) TeX
- Configuración de rutas variables de entorno TeX
- Variables de entorno para ejecutar LaTeX
- TeX (y variaciones) para escribir matemáticas - math.umn.edu (ver ''Entradas TeX'')
- Instalación de paquetes LaTeX - Rutas de búsqueda de TeX
Espero que esto ayude;
¡Aclamaciones!
EDITAR: esperaba que uno pudiera establecer la ruta TEXINPUTS directamente en el archivo tex ( usando /write18
- y note, algunas versiones de LaTeX usan --enable-write18
, la mina usa -shell-escape
para habilitar /write18
; vea también this ) - pero parece que no es posible:
" ... Esto no es posible ... Se establece la variable de entorno del proceso hijo, pero esto no tiene efecto en su proceso principal (TeX). " ( Re: Configuración de la variable de entorno TEXINPUTS dentro del látex - comp.text.tex ).
... entonces, ahora solo llamo a pdflatex
en mi bash
Linux así:
TEXINPUTS=.//:$TEXINPUTS pdflatex ./myfile.tex
y luego se resolverá directamente /usepackage{mypackage}
en el archivo myfile.tex
, incluso si mypackage.sty
está en un subdirectorio, digamos ./subdir/mypackage.sty
.