Einzelne Autornamen extrahieren und anderweitig verwenden
Verfasst: Mi 13. Dez 2017, 15:33
Hallo liebe Leute,
ich arbeite derzeit in meinem Institut an einem jährlich erscheinenden Journal, für welches wir unsere Arbeitsroutinen verbessern bzw. weiter automatisieren möchten. Da wir die Artikel jeweils von den einzelnen Autoren zugeschickt bekommen, sind ich und mein Kollege dafür zuständig, die einzelnen *.tex-Dateien zu überarbeiten und entsprechend zum Gesamtband zusammenzusetzen (wir nutzen hierzu ein einfaches, globales *.-tex Dokument, das die einzelnen Teilartikel über \include{...} zusammenfügt).
Da wir die Dokumente allesamt im globalen Dokument kompilieren, möchten wir die Automatisierung unserer Arbeitsschritte weiter ausbauen, wenn es um das Labeln einzelner Abschnitte, Bilder etc. geht.
Unsere \label{...}-Befehle in einem Teilartikel folgen einer festen Struktur, die sich klassisch aus dem zu markierenden Objekt (fig, tab, sec etc.), dem Doppelpunkt und einer Zahl zusammensetzt, d.h.
Dieses Markieren von Objekten hat offensichtlich den Nachteil, dass ggf. doppelt besetzte Label vorkommen können. Um hier die Eindeutigkeit des Labels herzustellen, verwenden wir am Anfang des Label-Befehls den Nachnamen des ersten Autores, der am jeweligen Teilartikel beteiligt ist, d.h.
Da sich der \author{...}-Befehl somit über alle Dokumente hin von Artikel zu Artikel ändert, war nun der Gedanke, den Inhalt des \author-Befehls
via \@author zu extrahieren, den Inhalt auf den Nachnamen des ersten Autores zu beschneiden (d.h. das zweite Wort des Inhaltes zu extrahieren) und den Nachnamen dann entsprechend automatisiert im label{...}-Befehl einzusetzen (selbstverständlich dann auch in den Referenzbefehlen wie \ref{...}, \pageref{...} usw.).
Da ich mit der Be- und Verarbeitung von Strings mit LaTeX nicht so bewandert bin, habe ich zunächst folgenden Ansatz ausprobiert (gefunden unter https://tex.stackexchange.com/questions ... n-a-string)
was zumindest schon einmal für die Wort-Extraktion mit normalen Wordketten funktioniert. Das Einfügen von \@author und \makeatletter bzw. \makeatother funktioniert allerdings - zumindest, was meine Versuche angeht - nicht so ganz, als dass ich den extrahierten Namen dann auch direkt weiterverwenden könnte.
Die Frage ist nun
Da ich von der genauen Definition der \label{...} bzw. \ref{...}-Befehle kaum Ahnung und mit der Neudefinition dieser Befehle keine Erfahrungen habe, wende ich mich nun an euch.
Hat hier vielleicht jemand eine Idee, wie man dieses Vorhaben möglichst geschickt umsetzen kann? Ich muss allerdings noch dazu sagen, dass unsere Fakultät für ihre Veröffentlichungen eine modifizierte Springer (Verlag)-Klasse verwendet, die auf der article-Klasse basiert; diese wird in allen Dokumenten gleich verwendet.
D.h. also zusammenfassend:
Vielen lieben Dank und ganz liebe Grüße! :)
ich arbeite derzeit in meinem Institut an einem jährlich erscheinenden Journal, für welches wir unsere Arbeitsroutinen verbessern bzw. weiter automatisieren möchten. Da wir die Artikel jeweils von den einzelnen Autoren zugeschickt bekommen, sind ich und mein Kollege dafür zuständig, die einzelnen *.tex-Dateien zu überarbeiten und entsprechend zum Gesamtband zusammenzusetzen (wir nutzen hierzu ein einfaches, globales *.-tex Dokument, das die einzelnen Teilartikel über \include{...} zusammenfügt).
Da wir die Dokumente allesamt im globalen Dokument kompilieren, möchten wir die Automatisierung unserer Arbeitsschritte weiter ausbauen, wenn es um das Labeln einzelner Abschnitte, Bilder etc. geht.
Unsere \label{...}-Befehle in einem Teilartikel folgen einer festen Struktur, die sich klassisch aus dem zu markierenden Objekt (fig, tab, sec etc.), dem Doppelpunkt und einer Zahl zusammensetzt, d.h.
\label{<Objektart>:<Nummer>}
\label{<Autor-Nachname><Objektart>:<Nummer>}
\author{Vorname1 Nachname1(zu extrahieren), Vorname2 Nachname2, Vorname3 Nachname3, ... and VornameN NachnameN}
Da ich mit der Be- und Verarbeitung von Strings mit LaTeX nicht so bewandert bin, habe ich zunächst folgenden Ansatz ausprobiert (gefunden unter https://tex.stackexchange.com/questions ... n-a-string)
\documentclass{scrartcl} \usepackage{l3regex} \ExplSyntaxOn \newcommand{\extractWord}[2]{% % split the argument at spaces \seq_set_split:Nnn \l_tmpa_seq { ~ } { #1 } % get the first item \tl_set:Nx \l_tmpa_tl { \seq_item:Nn \l_tmpa_seq { #2 } } % remove a trailing period, semicolon or comma (\Z matches the end) \regex_replace_once:nnN { [.;,]\Z } { } \l_tmpa_tl % output the result \tl_use:N \l_tmpa_tl } \ExplSyntaxOff \begin{document} \extractWord{Ludwig Wilhelm}{2} \end{document}
Die Frage ist nun
- - wie ich den Namen vernünftig extrahiert bekomme, um ihn dann weiter zu verarbeiten und
- wie ich diesen dann anschließend in die Label- bzw. Referenz-Befehl integrieren kann, so dass alles automatisch verknüpft wird.
Da ich von der genauen Definition der \label{...} bzw. \ref{...}-Befehle kaum Ahnung und mit der Neudefinition dieser Befehle keine Erfahrungen habe, wende ich mich nun an euch.
Hat hier vielleicht jemand eine Idee, wie man dieses Vorhaben möglichst geschickt umsetzen kann? Ich muss allerdings noch dazu sagen, dass unsere Fakultät für ihre Veröffentlichungen eine modifizierte Springer (Verlag)-Klasse verwendet, die auf der article-Klasse basiert; diese wird in allen Dokumenten gleich verwendet.
D.h. also zusammenfassend:
- a) Extraktion des ersten Nachnamens eines Autors (die pro Teilartikel variieren), mit der Form \author{Vorname Nachname, Vorname Nachname ... and Vorname Nachname} und
b) Weiterverarbeitung des Namens in den Befehlen \label{...}, \ref{...}, \pageref{...} usw.
Vielen lieben Dank und ganz liebe Grüße! :)