\input файлы, совместно используемые соавторами и расположенные в разных папках

\input файлы, совместно используемые соавторами и расположенные в разных папках

Я работаю над совместным проектом, и мы используем 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.)

Связанный контент