goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


Login  | Registrieren
Forum
      Option
[Erweitert]
  • Diese Seite weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Einzelne Autornamen extrahieren und anderweitig verwenden

 

Schmantii
Forum-Anfänger
Forum-Anfänger

Beiträge: 22
Anmeldedatum: 05.12.15
Wohnort: ---
Version: TeX Live 2015
     Beitrag Verfasst am: 13.12.2017, 15:33     Titel: Einzelne Autornamen extrahieren und anderweitig verwenden
  Antworten mit Zitat      
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.
Code • Öffne in Overleaf

\label{<Objektart>:<Nummer>}
 

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.
Code • Öffne in Overleaf

\label{<Autor-Nachname><Objektart>:<Nummer>}
 

Da sich der \author{...}-Befehl somit über alle Dokumente hin von Artikel zu Artikel ändert, war nun der Gedanke, den Inhalt des \author-Befehls
Code • Öffne in Overleaf

\author{Vorname1 Nachname1(zu extrahieren), Vorname2 Nachname2, Vorname3 Nachname3, ... and VornameN NachnameN}
 

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/quest.....ct-first-word-in-a-string)

Code • Öffne in Overleaf

\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}
 


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

    - 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.


Ich persönlich habe zunächst an einen Search-and-Replace-Algorithmus gedacht, der die einzelnen *.tex-Dateien nach den Label- / Referenz-Befehlen absucht und dann die Namen einpflegt (was schon ziemlich aufwendig und unübersichtlich werden könnte). Nach längerer Diskussion mit meinem Kollegen bin ich dann aber bei der Idee stehen geblieben, die Befehle ggf. mit \let zu kopieren und dann entsprechend mit \renewcommand neuzudefinieren, damit einfach nur das Label, mit dem zugehörigen Namen, in der *.aux-Datei gespeichert wird, was für die Verknüpfung ja schließlich ausreichend sein sollte, sofern die \ref-Befehle auch entsprechend verändert wurden.

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.


Meine Kollegen verwenden u.a. auch Python-Skripte, um ihre LaTeX-Dokumente zu bearbeiten. Ein Search-and-Replace Algorithmus wäre hier vielleicht möglich - ich bin aber davon überzeugt, dass es in LaTeX (immerhin die Zielanwendung des ganzen Unterfangens) auf direktem Wege und einfacher funktionieren kann.

Vielen lieben Dank und ganz liebe Grüße! :)
Private Nachricht senden Benutzer-Profile anzeigen

Neues Thema eröffnen Neue Antwort erstellen



Options and Permissions
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen
.

goLaTeX ist Teil der goForen
goForen.de goMATLAB.de goLaTeX.de goPCB.de


  Impressum | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2018 goLaTeX.de