Sie sind hier

Hyperref und Koma

Hallo, ich würde gerne die Meta-Daten meiner PDF Dateien automatisch ausfüllen lassen. Warum kann ich nicht in hypersetup Befehle wie \usekomavar{signature} oder \usekomavar{subject} benutzen? Woran liegt das?
Denn wenn ich einen Brief schreibe, ist ja das mehrmalige Eintragen meines Namens und des Betreffs/Titels redundant.

Bild von Markus Kohm

AFAIK kann man innerhalb von \hypersetup nur voll expandierbare Anweisungen verwenden. Damit fallen alle Anweisungen flach, die ein optionales Argument oder eine Sternform besitzen – also auch \usekomavar. Man könnte sich nun etwas basteln, das über \edef und das optionale Argument von \usekomavar von hinten durch die Brust ins Knie arbeitet. Der Weg wäre grob skizziert:

\newcommand*{\hilfsmakro}{}
\usekomavar[\edef\hilfsmakro]{signature}
\hypersetup{pdfauthor=\hilfsmakro}

Getestet habe ich das aber nicht, denn eigentlich ist es doch kein Problem, in der lco-Datei, in der Du Deine Absenderinformationen einmalig anlegst, gleich noch ein

\@ifpackageloaded{hyperref}{%
  \hypersetup{pdfauthor=towolf}%
}{}

einzufügen. Es ist ja nicht so, dass man das bei jedem Brief wieder neu eingeben müsste. Damit ist diese Lösung aber deutlich schneller gebastelt als die andere.

klasse Idee!

Gruß,
Alexander

Bild von Markus Kohm

Da man die Absender-lco vermutlich bereits bei \documentclass angibt und sie somit am Ende der scrlttr2-Klasse geladen wird, ist es für \@ifpackageloaded zu früh. Dafür ist allerdings das scrlfile-Paket zu dem Zeitpunkt bereits geladen. Also kann man einfach mit \AfterPackage*{hyperref}{...} arbeiten. Die Anweisung \AfterPackage* führt das zweite Argument aus, sobald das Paket aus dem ersten Argument (also hyperref) geladen wurde. Wurde das Paket bereits geladen, werden die Anweisungen direkt ausgeführt. Damit funktioniert die lco-Datei sowohl vor als auch nach Laden von hyperref. Genau für solche Zwecke habe ich das Paket scrlfile geschrieben.

Ausgezeichnet. Ich finds einfach toll, vernünftig ge-tag-te Dokumente zu haben. Zusammen mit hyperxmp und Beagle ist das sogar alltagstauglich. Nur eins noch: wie bekomme ich Zugriff auf toname? Und wenn ich Felder konkatenieren will, an welcher Stelle mache ich das denn?

Bild von Markus Kohm

Wofür? Wenn es für \hypersetup ist, dann über die Umweglösung mit \edef, die ich schon skizziert habe, allerdings ist toname natürlich erst nach \begin{letter}{<em>Adressangabe</em>} entsprechend der Adressangabe belegt. Ich weiß nicht, ob das dann für hyperref nicht bereits zu spät ist.

Wozu Du wo Felder verbinden willst, ist mir nicht klar. Allgemein würde ich sagen, schreibt man bei Verwendung dann einfach den Zugriff auf die Felder hintereinander. Speziell kommt es darauf an. Da brauche ich mehr bzw. konkretere Infos.

könnte man aus Betreff und toname Infos zusammen in das Title-Feld der PDF Datei reinschreiben, wie: „Mahnung: Peter Gläubig” als pdftitle=\mysubject :\mytoname.
Ich würde dann in meine pers. Suchmaschine eintippen mahnung gläubig und genau diese Datei finden, ohne noise.
Ich bekomme den Subject auch nur, wenn ich \AtBeginDocument benutze. Gibt es eventuell auch sowas wie \After... zum ausprobieren?

Aber ich gebe zu, das grenzt an Spielerei.

Bild von Markus Kohm

toname gibt es erst nach \begin{letter}{...}. Demgegenüber ist subject verfügbar, sobald er gesetzt ist, also nach \setkomavar{subject}{...}. Wenn man beide zusammensetzen will, dann geht das erst nach \begin{letter}{...}. In der Anleitung sollte übrigens irgendwo \AtBeginLetter dokumentiert sein. Das kann man verwenden – falls \hypersetup mitspielt. Was dann allerdings passiert, wenn man mehr als einen Brief in einem Dokument hat, weiß ich auch nicht.

Comments for "Hyperref und Koma" abonnieren