hyperref
verwenden kannDa heutzutage Briefe zunehmend nicht mehr in Papierform sondern als PDF archiviert werden, ist es sinnvoll, diese mit nützlichen Metainformationen zu versehen. Häufig will man dabei auf die bereits in den KOMA-Script-Variable, per \setkomavar
definierten Informationen zurückgreifen. Allerdings wird ein einfaches \hypersetup{author=\usekomavar{fromname}}
nicht funktionieren, da \usekomavar
nicht expandierbar ist. Wie das folgende Beispiel zeigt, kann hier jedoch das optionale Argument von \usekomavar
eingesetzt werden:
\documentclass[ngerman]{scrlttr2}
\usepackage{babel}
\usepackage{hyperref}
\setkomavar{fromname}{Meinereiner}
\setkomavar{fromaddress}{Seinestraße 13 \\34567 Meinestadt}
\setkomavar{fromemail}{mail@example.com}
\setkomavar{yourref}[Bestellnummer]{12345}
\setkomavar{yourmail}[Bestelldatum]{2014-11-08}
\setkomavar{invoice}[Angebot]{2015-0012}
\setkomavar{subject}{Angebot} % sehr aufdringlich
\newcommand*{\hypersetupone}[2]{\hypersetup{#1={#2}}}
\newcommand*{\hypersetupbykomavar}[2]{%
\usekomavar[\hypersetupone{#1}]{#2}%
}
\newcommand*{\hypersetupbykomadescandvar}[2]{%
\begingroup
\usekomavar*[\def\desc]{#2}%
\usekomavar[\def\value]{#2}%
\hypersetup{#1={\desc{} \value}}%
\endgroup
}
\hypersetupbykomadescandvar{pdftitle}{invoice}
\hypersetupbykomavar{pdfauthor}{fromname}
\hypersetupbykomavar{pdfkeywords}{invoice}
\hypersetupbykomavar{pdfsubject}{subject}
\begin{document}
\begin{letter}{Peter Pan\\Meinestraße 12\\34567 Meinestadt}
\opening{Hallo Peter,}
vielen Dank für Deine Anfrage. Wir haben mehrere „Lorem Ipsum“ auf Lager und
können diese kurzfristig an Deine Anforderungen anpassen.
Allerdings sind wir zur Zeit gut ausgelastet, es wird also ein paar Tage dauern.
\closing{Mit freundlichen Grüßen}
\end{letter}
\end{document}
Schaut man sich jetzt die Metadaten beispielsweise mit pdfinfo
an, so findet man darin unter anderem:
Title: Angebot 2015-0012
Subject: Angebot
Keywords: 2015-0012
Author: Meinereiner
Als erstes definieren wir eine neue Anweisung \hypersetupone
, mit der genau eine hyperref
-Option auf einen neuen Wert gesetzt werden kann. Dabei ist der Name der Option das erste Argument und der Wert das zweite:
\newcommand*{\hypersetupone}[2]{\hypersetup{#1={#2}}}
Diese neue Anweisung verwenden wir dann bei der Definition von \hypersetupbykomavar
im optionalen Argument von \usekomavar
, um eine hyperref
-Option (erstes Argument) auf den Wert einer KOMA-Script-Variablen (zweites Argument) zu setzen.
\newcommand*{\hypersetupbykomavar}[2]{%
\usekomavar[\hypersetupone{#1}]{#2}%
}
Die dritte neue Anweisung
\newcommand*{\hypersetupbykomadescandvar}[2]{%
\begingroup
\usekomavar*[\def\desc]{#2}%
\usekomavar[\def\value]{#2}%
\hypersetup{#1={\desc{} \value}}%
\endgroup
}
zeigt, wie man vorgehen kann, wenn man mehr machen will, als nur den Wert der Variablen zu verwenden. Dabei werden lokal in einer Gruppe zwei Hilfsanweisungen \desc
und \value
via \usekomavar*
und \usekomavar
definiert. \desc
ist dann die Bezeichnung der Variablen und \value
der Wert. Anschließend werden diese wieder mit \hypersetup
verarbeitet. Natürlich hätte man an der Stelle auch erneut auf \hypersetupone
zurückgreifen können.
Es sei darauf hingewiesen, dass diese Methode nicht funktioniert, wenn KOMA-Script-Variablen selbst KOMA-Script-Variablen verwenden. Würde man also beispielsweise
\setkomavar{subject}{\usekomavar*{invoice} \usekomavar{invoice}}
definieren, so funktioniert das ganze nicht mehr. In solchen Fällen kommt man um die Definition von Hilfsmakros nicht herum, beispielsweise:
\providecaptionname{ngerman}{\invoicename}{Angebot}
\newcommand*{\invoicevar}{2015-0012}
\setkomavar{invoice}{\invoicevar}
\setkomavar{subject}{\invoicename{} \invoicevar}
Selbstverständlich kann man dann auch direkt \hypersetup{title={\invoicename{} \invoicevar}}
verwenden.