
En un sistema tipo Unix que usa TeX Live, el comando kpsewhich --var-value=TEXMFLOCAL
proporciona la ruta del directorio donde instalar el paquete casero. Por ejemplo, en mi Mac obtengo la ruta /usr/local/texlive/texmf-local
.
¿Funciona esto en Windows usando TeX Live?
Respuesta1
Aunque ya obtuviste algunas respuestas (algunas de ellas en los comentarios), déjame decirte lo siguiente: TeXLive (y MikTeX hasta donde yo sé)
- está configurado, para utilizar correctamenteSDT, que es la(s) estructura(s) de directorio TeX.
- está utilizando las herramientas de Karl Berry Search Path. Por lo tanto, puede utilizar la herramienta de línea de comando
kpsewhich
para determinar dónde se encuentra un archivo. Este comando se inspiró en lawhich
herramienta Unix, que intenta encontrar la ubicación de un ejecutable determinado. Para su uso en sistemas TeX, se mejoró un poco.
Especialmente en TeXLive (pero nuevamente, creo que también en MikTeX), puedes usar más de un árbol TDS paralelo a otro. Por lo general, los sistemas TeXLive están configurados para tener tres de estos árboles TDS:
- El TDS para el mantenedor de las distribuciones,
- El TDS para el administrador del sistema local,
- La TDS para el usuario individual.
El primero contiene todos los paquetes que vienen con TeXLive (MikTeX, respectivamente). Se instalará cuando usted (como administrador del sistema) instale su sistema TeXLive. Se cambiará cada vez que actualice su sistema TeXLive. Por lo tanto, no deberías instalar ningún paquete en ese árbol TDS (a menos que seas un mantenedor de TeXLive, por supuesto. Pero, ¿por qué debería explicarte la configuración?).
El segundo árbol TDS es para el administrador del sistema, que apoya a sus usuarios con un depósito central de paquetes locales fácilmente instalados. Por ejemplo, aquí se instalarán los archivos de estilo que obedecerán al diseño corporativo de tu universidad. Si se trata de una red compartida, todos los usuarios de TeX de toda la universidad (de toda la empresa, si lo desea) pueden utilizar estos archivos sin ninguna configuración adicional. Para poder instalar paquetes en este árbol, generalmente también necesita tener derechos de administrador del sistema para poder escribir archivos aquí.
El tercer y último árbol es el árbol del usuario individual. Estará ubicado en un directorio propiedad del propio usuario; Clásicamente esto estaba dentro del directorio de inicio del usuario en sistemas Unix.
Puede utilizar la herramienta de comando TeXLive tlmgr
para averiguar dónde se encuentran estos tres TDS en su computadora individual. Solo corre
tlmgr conf
y verifique las líneas que comienzan con
TEXMFDIST
TEXMFLOCAL
TEXMFHOME
Le indican las ubicaciones correctas en su instalación TeX.
(No conozco la herramienta que proporciona esta información sobre MikTeX, lo siento).
También hay una línea texmf.cnf
que comienza con la ubicación del archivo de configuración maestro. Si alguna vez planeas cambiar algunas de las ubicaciones y realmente sabes lo que estás haciendo allí, ¡ese es el archivo que debes editar!
Hay otra cosa importante que señalar. Hoy en día, un sistema TeX completo consta de cientos de miles de archivos. Sería tedioso para su computadora buscar en cada ruta una y otra vez, solo para localizar, por ejemplo book.cls
. (¿He mencionado que las computadoras son estúpidas? ¡Las computadoras no pueden recordar esas ubicaciones si no les brindas ayuda!) Para evitar buscar, buscar y buscar nuevamente, todos los archivos, que se encuentran en el árbol de distribución TDS y en el árbol TDS local, se almacenan en una base de datos simple. Por lo tanto, no es suficiente copiar un archivo en uno de esos árboles. TeX no encontrará estos archivos, a menos que actualice la base de datos. Por supuesto, seguramente necesitarás derechos de superusuario (también conocido como super poder de vaca :-)) para actualizar la base de datos. En los sistemas Unix clásicos, este solía ser el texhash
comando o mktexlsr
la forma abreviada de "Crear la base de datos TeX ls-minus-R" (Para ser cierto: no es nada más que ls -R $TEXMFDIST
cualquier árbol TDS que desee agregar a su base de datos. )
Para resumir todo eso: si planea enriquecer el mundo lanzando un paquete suyo, para instalarlo en la computadora de otra persona, la mejor manera sería convencer a los mantenedores de TeXLive para que lo incluyan en TeXLive. Entonces ya no tendrás que preocuparte. Si su paquete no es tan importante y puede convencer a los mantenedores de TeXLive para que lo incluyan, podría ser mejor instruir a sus clientes para que lo instalen en la TEXMFHOME
parte de su sistema. Sólo pídeles que corran
tlmgr conf | grep TEXMFHOME
en sistemas tipo Unix. En sistemas Windows más nuevos que tengan instalado un bash, también podría funcionar. En esa ubicación no necesitan tener poderes de súper vaca ni molestarse en actualizar la base de datos. Si entrega su paquete a los administradores del sistema, ellos generalmente sabrán dónde almacenar el paquete y cómo actualizar la base de datos.
PD: Si desea asegurarse de que la versión más reciente book.cls
de CTAN se pueda utilizar en su sistema TeXLive, mientras que los mantenedores no la incorporaron a su distribución, debe instalarla en TEXMFLOCAL
o TEXMFHOME
y configurar su sistema mediante editando temf.cnf
de tal manera que TEXMFDIST
se buscará al final de los tres árboles TDS dados.
Respuesta2
Una de las cosas a tener en cuenta es que en Windows muchas de las variables de configuración no están activadas por defecto, sumado a esto, algunas cosas las podemos hacer con permisos de administrador y otras como un simple usuario. Me inclinaré por la opción de usuarios simples, es decir las configuraciones sólo afectarán al usuario actual del sistema.
Para este ejemplo el nombre de usuario es yourself
y cada vez que iniciemos una línea de comando cmd
lo haremossin privilegios de administrador.
Configuración de variables y directorios.
- Configuración de
TEXMFHOME
Cuando ejecuta en una línea de comandocmd
obtendrá:
C:\Users\yourself>kpsewhich -var-value=TEXMFHOME
C:/Users/yourself/texmf
Pero, en realidad el texmf
directorio no existe como tal, debemos crearlo siguiendo la TDS
estructura. Lo crearemos cuidando el separador de ruta que en este caso es \
.
C:\Users\yourself>mkdir texmf\tex\latex
- Configuración de
TEXMFCNF
Abra una línea de comandocmd
y ejecute la siguiente línea:
C:\Users\yourself>kpsewhich -all texmf.cnf
c:/texlive/2019/texmf.cnf
c:/texlive/2019/texmf-dist/web2c/texmf.cnf
El resultado indica que la variable no está configurada para nuestro usuario. Lo configuramos de la siguiente manera:
C:\Users\yourself>setx TEXMFCNF C:/Users/yourself/texmf;
CORRECTO: se guardó el valor especificado.
Salimos y volvemos a entrar y corremos:
C:\Users\yourself>reg query HKEY_CURRENT_USER\Environment
HKEY_CURRENT_USER\Environment
Path REG_EXPAND_SZ %USERPROFILE%\AppData\Local\Microsoft\WindowsApps;
TEMP REG_EXPAND_SZ %USERPROFILE%\AppData\Local\Temp
TMP REG_EXPAND_SZ %USERPROFILE%\AppData\Local\Temp
OneDrive REG_EXPAND_SZ C:\Users\yourself\OneDrive
TEXMFCNF REG_SZ C:/Users/yourself/texmf;
Hemos terminado de configurar esta variable. Esta variable se utilizará junto con el auxtrees
comando del ejemplo.
- Configuración de
TEXINPUTS
Supongamos que tenemos un directorioD:/transcripts
de secciones o imágenes pero solo están disponibles localmente y las queremos para probar. Lo mejor en este caso es usar laTEXINPUTS
variable y aquí depende si queremos que la configuración sea permanente (siempre disponible) o temporal (solo en la consola actual).
a. Configuración temporal Abra una línea de comando cmd
y ejecute:
C:\Users\yourself>set TEXINPUTS=.;D:/transcripts//;
esto funcionará hasta que cierres la línea de comando, es decir, debes ejecutar estocada vezdespués de cerrar una línea de comando.
b. Configuración permanente Abra una línea de comando cmd
y ejecute:
C:\Users\yourself>setx TEXINPUTS .;D:/transcripts//;
cerrar la línea de comando. De esta forma hemos configurado TEXINPUTS
en tuVariable ambientaly ahora está permeando.
Si necesita ver TEXINPUTS
desde la variable de entorno, use:
C:\Users\yourself>reg query HKEY_CURRENT_USER\Environment
Si necesita eliminar TEXINPUTS
de la variable de entorno, utilice:
C:\Users\yourself>reg delete HKEY_CURRENT_USER\Environment /v TEXINPUTS /f
Alternativamente, esto se puede hacer en modo gráfico ajustando suVariable ambiental.
Ejemplo completo usandoauxtrees
Esta es parte de la configuración que usamos con un grupo de colegas en mi trabajo usando un proyecto alojado en github
(que también distribuimos en .zip
formato) con el uso de algunos paquetes y clases personalizadas, transcribe la parte relacionada con windows (espero que entiendo, mi lengua materna es el español). La TDS
carpeta para este ejemplo se encuentra D:/ltxcole/stycole/
y la estructura del proyecto es:
D:\ltxcole>tree
Listado de rutas de carpetas para el volumen driveD
El número de serie del volumen es FACD-A6DF
D:.
├───octavo
│ ├───diagnostico
│ ├───guias
│ ├───pruebas
│ ├───test
│ └───trabajos
├───produccion
├───septimo
│ ├───diagnostico
│ ├───guias
│ ├───pruebas
│ └───test
├───sintesis
└───stycole
└───tex
└───latex
La clave está en stycole
que tiene una TDS
estructura:
└───stycole
└───tex
└───latex
colegio-new2019.sty
keyanswer.sty
logoaurora.jpg
tkz-custom.sty
La documentación de TeXLive para configuraciones de Windows no es muy "explicativa", pero, en el foro hay buena información. El uso de auxtrees
le permite mantener varios proyectos sin afectar todo el sistema usando la TEXMFLOCAL
variable o cargando todo en TEXMFHOME
.
Abra una línea de comando cmd
y ejecute:
C:\Users\yourself>tlmgr conf auxtrees --conffile C:/Users/yourself/texmf/texmf.cnf show
tlmgr.pl: no auxiliary texmf trees defined.
el resultado nos dice que no tenemos nada configurado, ahora ejecutamos:
C:\Users\yourself>tlmgr conf auxtrees --conffile C:/Users/yourself/texmf/texmf.cnf add D:/ltxcole/stycole/
para comprobar que todo está correcto ejecutamos:
C:\Users\yourself>tlmgr conf auxtrees --conffile C:/Users/yourself/texmf/texmf.cnf show
List of auxiliary texmf trees:
D:/ltxcole/stycole/
Con esto hemos terminado de configurar nuestro proyecto, los archivos colocados D:/ltxcole/stycole/tex/latex/
estarán disponibles para todos nuestros archivos. El archivo C: Users\yourself\texmf.cnf
contiene la siguiente línea:
TEXMFAUXTREES = D:/ltxcole/stycole/,
y podrás agregar tantos proyectos como quieras siempre y cuando respetes la TDS
estructura.
Por supuesto, si sólo quieres hacer pruebas por ti mismo es más sencillo de usar TEXMFHOME
, aunque la ventaja de usarauxtrees+git
es que puedes generar unmultiplataformaconfiguraciónguion o un sencillo README
con instrucciones relevantes para un proyecto colaborativo.