\input-Dateien, die von Mitarbeitern gemeinsam genutzt werden und sich in verschiedenen Ordnern befinden

\input-Dateien, die von Mitarbeitern gemeinsam genutzt werden und sich in verschiedenen Ordnern befinden

Ich arbeite an einem Gemeinschaftsprojekt und wir verwenden Dropbox, um unsere gemeinsamen Dateien zu speichern. Ich möchte eine in Tex erstellte Tabelle (mit dem Namen table.tex) in ein Tex-Dokument einfügen, aber table.tex hat auf verschiedenen Computern in Dropbox unterschiedliche Dateipfade. Beispielsweise könnte die Datei einer Person so aussehen

/Users/usernameA/Dropbox/folder1/tables/table.tex

und die anderen könnten

/Users/usernameB/Dropbox/folderx/folder1/tables/table.tex

Das haben wir getan:

\newcommand{\rootPath}{/Users/usernameA/Dropbox/folder1/tables
%\newcommand{\rootPath}{/Users/usernameB/Dropbox/folderX/folder1/tables

Wer das Dokument neu kompiliert, kommentiert die Pfade anderer Personen aus und später im Dokument

\input{"\rootpath/table.tex"}

Gibt es eine einfachere Möglichkeit, von verschiedenen Ordnern auf verschiedenen Computern aus auf table.tex zuzugreifen?

Antwort1

Die folgende Lösung ruft idden Befehl auf, um den Benutzernamen des aktuellen UNIX-Systems abzurufen und ihn in zu speichern \username. Sie müssen --shell-escapeIhrem LaTeX-Compiler ein Flag hinzufügen, da ides sich um einen (nicht registrierten) externen Befehl handelt.

Siehe hier:Was macht --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}

Antwort2

Um meinen Kommentar näher zu erläutern: Wenn sich die Haupt-Tex-Datei im selben Verzeichnis befindet wie folder1, können alle Benutzer haben \input{folder1/tables/table}. Die wichtigste Voraussetzung hierfür ist, dass Sie den Ordner freigegeben haben, der das gesamte Projekt enthält. (Und \inputbenötigt weder "noch .tex.)

verwandte Informationen