paquete librerias instalar descargar completo como agregar actualizar latex packages xelatex

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:

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 .