
Я работаю над совместным проектом, и мы используем Dropbox для хранения наших общих файлов. Я хотел бы \input таблицу, созданную в tex (называется table.tex), в документ tex, но table.tex имеет разные пути к файлу в Dropbox на разных компьютерах. Например, у одного человека это может выглядеть так
/Users/usernameA/Dropbox/folder1/tables/table.tex
а другой может быть
/Users/usernameB/Dropbox/folderx/folder1/tables/table.tex
Вот чем мы занимаемся:
\newcommand{\rootPath}{/Users/usernameA/Dropbox/folder1/tables
%\newcommand{\rootPath}{/Users/usernameB/Dropbox/folderX/folder1/tables
Тот, кто перекомпилирует документ, комментирует чужие пути и далее в документе
\input{"\rootpath/table.tex"}
Есть ли более простой способ получить доступ к table.tex из разных папок на разных компьютерах?
решение1
Следующее решение вызывает id
команду для получения имени пользователя текущей системы UNIX и сохраняет его в \username
. Вам необходимо добавить --shell-escape
флаг в ваш компилятор LaTeX, поскольку id
это (незарегистрированная) внешняя команда.
Глянь сюда:Что делает --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}
решение2
Разъясняя свой комментарий: если основной файл tex находится в том же каталоге, что и folder1
, то все пользователи могут иметь \input{folder1/tables/table}
. Главное требование для этого — чтобы вы предоставили общий доступ к папке, содержащей весь проект. (И \input
не нужно "
ни .tex
.)