
Estou trabalhando em um projeto colaborativo e usamos o Dropbox para armazenar nossos arquivos compartilhados. Eu gostaria de inserir uma tabela feita em tex (chamada table.tex) em um documento tex, mas table.tex tem um caminho de arquivo diferente no Dropbox em computadores diferentes. Por exemplo, o de uma pessoa pode ser assim
/Users/usernameA/Dropbox/folder1/tables/table.tex
e o outro pode ser
/Users/usernameB/Dropbox/folderx/folder1/tables/table.tex
Isto é o que temos feito:
\newcommand{\rootPath}{/Users/usernameA/Dropbox/folder1/tables
%\newcommand{\rootPath}{/Users/usernameB/Dropbox/folderX/folder1/tables
Quem está recompilando o documento comenta os caminhos de outras pessoas e posteriormente no documento
\input{"\rootpath/table.tex"}
Existe uma maneira mais simples de acessar table.tex de pastas diferentes em computadores diferentes?
Responder1
A solução a seguir chama id
o comando para obter o nome de usuário do sistema UNIX atual e o armazena no arquivo \username
. Você precisa adicionar --shell-escape
um sinalizador ao seu compilador LaTeX porque id
é um comando externo (não registrado).
Veja aqui:O que --shell-escape faz?
\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}
Responder2
Para elaborar meu comentário: se o arquivo tex principal estiver no mesmo diretório que folder1
, todos os usuários poderão ter \input{folder1/tables/table}
. O principal requisito para que isso aconteça é que você tenha compartilhado a pasta que contém todo o projeto. (E \input
não precisa "
nem .tex
.)