\入力ファイルは共同作業者間で共有され、異なるフォルダに配置されている

\入力ファイルは共同作業者間で共有され、異なるフォルダに配置されている

私は共同プロジェクトに取り組んでおり、共有ファイルの保存に 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 システムのユーザー名を取得し、それを に保存します。は (未登録の) 外部コマンドであるため、LaTeX コンパイラにフラグ\usernameを追加する必要があります。--shell-escapeid

こちらをご覧ください:--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。)

関連情報