\input 文件在协作者之间共享,位于不同的文件夹中

\input 文件在协作者之间共享,位于不同的文件夹中

我正在开展一个协作项目,我们使用 Dropbox 来存储共享文件。我想将用 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。)

相关内容