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 .