
Estoy trabajando en un proyecto colaborativo y usamos Dropbox para almacenar nuestros archivos compartidos. Me gustaría ingresar una tabla hecha en tex (llamada table.tex) en un documento tex, pero table.tex tiene una ruta de archivo diferente dentro de Dropbox en diferentes computadoras. Por ejemplo, el de una persona podría verse así
/Users/usernameA/Dropbox/folder1/tables/table.tex
y el del otro podría ser
/Users/usernameB/Dropbox/folderx/folder1/tables/table.tex
Esto es lo que hemos estado haciendo:
\newcommand{\rootPath}{/Users/usernameA/Dropbox/folder1/tables
%\newcommand{\rootPath}{/Users/usernameB/Dropbox/folderX/folder1/tables
Quien esté recompilando el documento comenta las rutas de otras personas y más adelante en el documento.
\input{"\rootpath/table.tex"}
¿Existe una forma más sencilla de acceder a table.tex desde diferentes carpetas en diferentes computadoras?
Respuesta1
La siguiente solución llama id
al comando para obtener el nombre de usuario del sistema UNIX actual y lo almacena en formato \username
. Debe agregar --shell-escape
una bandera a su compilador LaTeX porque id
es un comando externo (no registrado).
Mira aquí:¿Qué hace --shell-escape?
\documentclass{article}
\usepackage{expl3}
\ExplSyntaxOn
\newcommand{\username}{}
\msg_new:nnn {doc} {noshell} {no~shell~avaliable-please~enable~shell~escape!}
\msg_new:nnn {doc} {nousername} {unable~to~extract~user~name}
\cs_generate_variant:Nn \regex_extract_once:nnN {nVN}
% determine if shell is avaliable
\sys_if_shell_unrestricted:TF {
% run id command
\sys_get_shell:nnN {id} {} \l_tmpa_tl
% use regex to extract user name
\regex_extract_once:nVN {uid=[0-9]*\((.*?)\)} \l_tmpa_tl \l_tmpa_seq
\int_compare:nTF {\seq_count:N \l_tmpa_seq < 2} {
\msg_error:nn {doc} {nousername}
}{
% extract user name
\tl_gset:Nx \username {\seq_item:Nn \l_tmpa_seq {2}}
}
} {
\msg_error:nn {doc} {noshell}
}
\ExplSyntaxOff
\begin{document}
\newcommand{\rootpath}{/Users/\username/Dropbox/folder1/tables}
\rootpath
\end{document}
Respuesta2
Para profundizar en mi comentario: si el archivo tex principal está en el mismo directorio que folder1
, entonces todos los usuarios pueden tener \input{folder1/tables/table}
. El principal requisito para que esto suceda es que hayas compartido la carpeta que contiene todo el proyecto. (Y \input
no necesita "
ni .tex
.)