\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。)

相關內容