Ich bin derzeit dabei, ein Brieftemplate für unsere Fachschaft zu basteln. Dazu würde eine eigene Klasse oder eine eigene .sty Datei in Frage kommen -- im `clsguide'lese ich die Rule of Thumb, dass sty Dateien für die Wiederverwendung in beliebigen Dokumentenklassen gedacht sind, Dokumentenklassen eben nur für eine bestimmte Klasse von Dokumenten.
Ich entscheide mich also für eine Dokumentenklasse und lege los:
Ich erstelle zunächst lokal meine Dokumentenklasse `gfs-ltr.cls' (später soll sie im lokalen texmf Baum liegen).
%% this is file gfs-ltr.cls \ProvidesClass{gfs-ltr}[2008/07/18 v1.0 Letter template FS GI] \NeedsTeXFormat{LaTeX2e}[2005/12/01]
Nun möchte ich nicht bei Null beginnen und mache mir die wunderbare Letter Klasse des KOMA-Script Bundles zu nutze. Daraufhin möchte ich eine Schrift, die elegant und in der Regel bei Laserdruckern verfügbar ist. Ein Logo wäre auch nicht schlecht. Als `backaddressseparator' ziehe ich einen Punkt vor, der im `textcomp' Paket enthalten ist.
\LoadClassWithOptions{scrlttr2}[2006/07/30] \RequirePackage{palatino} \RequirePackage{graphicx} \RequirePackage{textcomp} \setkomavar{backaddressseparator}{$\cdot$~}
Ein erster Testlauf mit
%% this is a letter-template test file \documentclass{gfs-ltr} \listfiles \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{lipsum} \begin{document} \begin{letter}{Anschrift des \\ Empfängers} \opening{Sehr geehrte Damen und Herren,} \lipsum[2] \closing{Mit freundlichem Gruß} \end{letter} \end{document}
schreibt dank `\listfiles' die Versionen der einzelnen verwendeten Pakete in die log Datei. Diese ergänze ich in meiner `gfs-ltr.cls', um Versionsfehlern schneller auf den Grund gehen zu können, wenn die Klasse nachher auf anderen Rechnern (mit potenziell anderen TeX-System) liegt.
\RequirePackage{palatino}[2005/04/12] \RequirePackage{graphicx}[1999/02/16] \RequirePackage{textcomp}[2005/09/27]
Damit läuft ja eigentlich schon alles (kein Wunder, denn letztendlich basiert ja alles auf scrlttr2). Nun kommt das eigentliche Layout dran. Dazu lege ich erstmal die Adressdaten in einer `geofs.lco' Datei an. Diese wird im Briefdokument per `\LoadLetterOption{geofs}' geladen. Ich bin auf Nummer sicher gegangen und habe alle Umlaute in TeX Manier geschrieben (das Laden der .lco Datei nach dem inputenc-Paket sollte allerdings da keine Probleme machen).
% this is file geofs.lco \ProvidesFile{geofs.lco}[2008/07/18 local class option: geofs addr] \setkomavar{fromname}{\textsc{\textbf{Fachschaft Geoinformatik}} \\ [0.25em] Westf\"alische Wilhelms-Universit\"at \\ Institut f\"ur Geoinformatik} \setkomavar{fromaddress}{Robert-Koch-Str.~28 \\ D-48149 M\"unster} \setkomavar{place}{M\"unster} \setkomavar{fromphone}{+49 251 83-xxxxx} \setkomavar{fromemail}{fsgi @ uni-muenster.de} % für den gedruckten Brief bitte ohne Leerzeichen \setkomavar{fromurl}{http://geofs.uni-muenster.de} \setkomavar{fromlogo}{\includegraphics[width=7em]{logo}} % Backaddress ist zu lang fürs Adressfeld \setkomavar{backaddress}{Fachschaft Geoinformatik \\ \usekomavar{fromaddress}}
Standardmäßig werden URL, Email und Logo nicht ausgegeben. Über ein paar Einstellungen der KOMAoptions kann ich jedoch neben anderen Einstellungen auch die Briefkopferweiterungen durch Setzen von `fromalign' anschalten. Ich ergänze also `gfs-ltr.cls' mit
\KOMAoptions{% fontsize=10pt, parskip=half+, pagenumber=botright, % Paginierung rechts unten % % Erweiterungen des Briefkopfes fromalign=right, fromlogo=true, fromrule=true, }
und nehme ein paar Verfeinerungen vor:
Im `location' (-> komavariable) nehme ich die Raumnummer als Adresszusatz auf, sowie übliche Kontaktinformationen. Dabei definiere ich mir weitere KOMA Variablen (geiles Feature übrigens) und deren Bezeichner, um sprachunabhängig zu bleiben (zunächst nur für Englisch und Deutsch). Innerhalb `geofs.lco' kann ich alles auch sogleich setzen. Der Brieffuß wird als Tabelle eingefügt.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Adresszusatz % Vorsitz im Dokument ändern \newkomavar{room} \newkomavar{chairPerson} % enthält den Namen des ersten Vorsitz \newkomavar{assistant} % enthält den Namen des stellvertretendenden Vorsitz \newkomavar{presence} % enthält die Präsenzzeiten %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Setzen der Variablen \setkomavar{room}{177} \setkomavar{chairPerson}{A. B.} %\setkomavar{assistant}{B. L.} \setkomavar{presence}{Di 13--15:00 Uhr \\ Mi 15--17:00 Uhr} \setkomavar{signature}{\usekomavar{chairPerson} \\ {\small (\chairPerson)}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Sprachabhängige Bezeichner deklarieren % DEUTSCH \providecaptionname{ngerman}{\room}{Raum} \providecaptionname{ngerman}{\chairPerson}{Vorsitzende/r} \providecaptionname{ngerman}{\assistant}{stellv. durch} \providecaptionname{ngerman}{\presence}{Präsenzzeiten} % ENGLISH \providecaptionname{english}{\room}{Room} \providecaptionname{english}{\chairPerson}{Chairperson} \providecaptionname{english}{\assistant}{assistant by} \providecaptionname{english}{\presence}{Presence} \setkomavar{location}{\raggedleft \small % {\scriptsize\textsf{\textbf{\chairPerson}}} \\ % \usekomavar{firstChair} \\ % {\scriptsize\textsf{\textbf{\assistant}}} \\ % \usekomavar{assistantChair} \\[0.3em] {\scriptsize\textsf{\textbf{\room}}}\\ \usekomavar{room} \\ {\scriptsize\textsf{\textbf{\phonename}}} \\ \usekomavar{fromphone} \\ {\scriptsize\textsf{\textbf{\emailname}}} \\ \usekomavar{fromemail} \\[0.5em] {\scriptsize\textsf{\textbf{\presence}}} \\ \usekomavar{presence} } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Brieffuß \firstfoot{% \parbox[t]{\textwidth}{\centering\footnotesize \begin{tabular}[t]{@{}l l l l@{}}% % Web: & http://geofs.uni-muenster.de & Jabber: & fsgi@jabber.ccc.de \\ % IRC: & irc.freenode.net\#geofs & WGS84: & 51.96\textdegree\,N ; 7.61\textdegree\,E \\ % ICQ: & 37441280 & OpenPGP: & 0x721B8C0E % \end{tabular} }}
Das eigentliche Briefdokument wird dann innerhalb folgender tex Datei geschrieben:
%% this is file geofs-letter-template.tex \documentclass{gfs-ltr} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage[ngerman]{babel} \usepackage[babel,german=guillemets]{csquotes} \LoadLetterOption{geofs} % geofs Adresse aus (geofs.lco) \usepackage{setspace,lipsum} % Zum Überschreiben der Signatur: auskommentieren und ändern %\setkomavar{signature}{\usekomavar{chairPerson} \\ {\small (\chairPerson)}} \begin{document} \begin{letter}{% \enquote{Vorname Nachname} \\ \enquote{Straße Hausnummer} \\ \enquote{PLZ Stadt} } %\setkomavar{specialmail}{\rule[-.1em]{0em}{1.2em}\textsc{-- Hauspost --}} \setkomavar{subject}{\enquote{Die Betreffszeile}} \opening{Sehr geehrte Damen und Herren,} %\opening{Sehr geehrter Herr \enquote{Name},} %\opening{Sehr geehrte Frau \enquote{Name},} \onehalfspacing % nach opening \lipsum[2] \closing{Mit freundlichen Gruß} %% Verteiler %\cc{Institut 1 \\ Fachschaft XY \\ AStA} %% Anhänge \encl{erster Anhang \\ zweiter Anhang \\ etc} \end{letter} \end{document}
Diese Datei liegt schreibgeschützt, aber für jeden zugreifbar in einem template Ordner. User müssen dann über `Save as...' geschriebene Briefe archivieren.
Die Dokumentenklasse, sowie die geofs.lco Datei lege ich in den $TEXMFLOCAL Baum, um diese für jeden Benutzer zur Verfügung zu stellen, den eigentlichen TEXMF Baum in Ruhe zu lassen und nicht zuletzt meine Dateien vor einem Update des TeX-Systems zu schützen. Nicht vergessen den ls-R Suchbaum des TeX-Systems zu updaten. Unter Linux z.B. einfach mit `sudo texhash' zu erreichen.
Vollständig folgen nun `gfs-ltr.cls'
%% this is file gfs-ltr.cls \ProvidesClass{gfs-ltr}[2008/07/18 v1.0 Letter template FS GI] \NeedsTeXFormat{LaTeX2e}[2005/12/01] \LoadClassWithOptions{scrlttr2}[2006/07/30] \RequirePackage{palatino}[2005/04/12] \RequirePackage{graphicx}[1999/02/16] \RequirePackage{textcomp}[2005/09/27] \RequirePackage{setspace}[2000/12/01] \setkomavar{backaddressseparator}{$\cdot$~} \KOMAoptions{% fontsize=10pt, parskip=half+, pagenumber=botright, % Paginierung rechts unten % % Erweiterungen des Briefkopfes fromalign=right, fromlogo=true, fromrule=true, } \addtokomafont{backaddress}{\scriptsize} \addtokomafont{fromname}{\sffamily} \addtokomafont{fromaddress}{\sffamily} \@setplength{fromrulewidth}{0.47\textwidth} %\@setplength{fromrulewidth}{0.77\textwidth} %% EOF </pre> und die local class option <strong>`geofs.lco'</strong> <pre> %% this is file geofs.lco \ProvidesFile{geofs.lco}[2008/07/18 local class option: geofs addr] \setkomavar{fromname}{\textsc{\textbf{Fachschaft Geoinformatik}} \\ [0.25em] Westf\"alische Wilhelms-Universit\"at \\ Institut f\"ur Geoinformatik } \setkomavar{fromaddress}{Robert-Koch-Str.~28 \\ D-48149 M\"unster} \setkomavar{place}{M\"unster} \setkomavar{fromphone}{+49 251 83-33947} \setkomavar{fromemail}{fsgi@uni-muenster.de} \setkomavar{fromurl}{http://geofs.uni-muenster.de} \setkomavar{fromlogo}{\includegraphics[width=7em]{logo}} % Backaddress ist zu lang fürs Adressfeld \setkomavar{backaddress}{Fachschaft Geoinformatik \\ \usekomavar{fromaddress}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Adresszusatz % Vorsitz im Dokument ändern \newkomavar{room} \newkomavar{chairPerson} \newkomavar{assistant} \newkomavar{presence} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Setzen der Variablen \setkomavar{chairPerson}{Alexandra Bicsan} %\setkomavar{assistant}{Birte Lütkebohmert} \setkomavar{presence}{Di 13--15:00 Uhr \\ Mi 15--17:00 Uhr} \setkomavar{room}{177} \setkomavar{signature}{\usekomavar{chairPerson} \\ {\small (\chairPerson)}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Sprachabhängige Bezeichner deklarieren % DEUTSCH \providecaptionname{ngerman}{\room}{Raum} \providecaptionname{ngerman}{\chairPerson}{Vorsitzende/r} \providecaptionname{ngerman}{\assistant}{stellv. durch} \providecaptionname{ngerman}{\presence}{Präsenzzeiten} % ENGLISH \providecaptionname{english}{\room}{Room} \providecaptionname{english}{\chairPerson}{Chairperson} \providecaptionname{english}{\assistant}{assistant by} \providecaptionname{english}{\presence}{Presence} \setkomavar{location}{\raggedleft \small % {\scriptsize\textsf{\textbf{\chairPerson}}} \\ % \usekomavar{firstChair} \\ % {\scriptsize\textsf{\textbf{\assistant}}} \\ % \usekomavar{assistantChair} \\[0.3em] {\scriptsize\textsf{\textbf{\room}}}\\ \usekomavar{room} \\ {\scriptsize\textsf{\textbf{\phonename}}} \\ \usekomavar{fromphone} \\ {\scriptsize\textsf{\textbf{\emailname}}} \\ \usekomavar{fromemail} \\[0.5em] {\scriptsize\textsf{\textbf{\presence}}} \\ \usekomavar{presence} } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Brieffuß \firstfoot{% \parbox[t]{\textwidth}{\centering\footnotesize \begin{tabular}[t]{@{}l l l l@{}}% % Web: & http://geofs.uni-muenster.de & Jabber: & fsgi@jabber.ccc.de \\ % IRC: & irc.freenode.net\#geofs & WGS84: & 51.96\textdegree\,N ; 7.61\textdegree\,E \\ % ICQ: & 37441280 & OpenPGP: & 0x721B8C0E \\ [0.5em] % % \multicolumn{4}{c}{\textsc{geofs -- SICHERHEIT, SAUBERKEIT, FREUNDLICHKEIT.}} % \end{tabular} }} %% EOF
Sehr schönes Beispiel
Und jetzt die Überraschung: von
\ProvidesClass
und\LoadClassWithOptions
abgesehen hätte man alles von gfs-ltr.cls auch in einer lco-Datei machen können.Ich würde übrigens noch ein \PassOptionsToClass{version=2.95b}{scrlttr2} vor dem Laden von scrlttr2 ergänzen. Damit wäre dann in der Voreinstellung Kompatibilität mit dieser Version, statt mit 2.9t erreicht. Damit hast Du dann auch einen echten Vorteil durch die Verwendung einer Klasse statt einer lco-Datei. In einer lco-Datei kann man die Kompatibilität nämlich nicht setzen. Dort ist es schlicht zu spät.
BTW: Version 2.95b ist ein wenig sehr veraltet. Ok, im Augenblick lohnt es sich vielleicht auf 3.00 zu warten, statt noch ein Update dazwischen zu schieben.
Update
Ich ergänze das mal. Danke dafür.
Wird die neue KOMA Version Bestandteil von TL2008 sein, oder dauert das noch ein Weilchen länger?
--
Henning Bredel
--
Henning Bredel
Wächst mir Petersilie aus den Ohren?
Bisher kenne ich weder eine Deadline für TL2008 noch den Erscheinungstermin für KOMA-Script 3.00. Dieses Mal ist es so, dass erst das Buch fertig werden muss. Dann werde ich überlegen, was als Doku KOMA-Script 3.00 beigelegt wird. Wenn das dann alles fertig ist wird es eventuell noch einen RC geben. Dann gibt es die Release auf BerliOS. Die gelangt aber leider auch nicht automatisch auf CTAN. Das muss jemand machen. Dabei muss man sich auch wieder überlegen, was in das Announcement soll. Die aktuelle Release von KOMA-Script ist auch noch nicht auf CTAN, weil die beiden, die das unabhängig voneinander in Aussicht gestellt haben, es nicht gemacht haben und ich anderes zu tun habe. In TeX-Live gelangt aber nur, was auf CTAN steht.
So, und jetzt habe ich für heute genug. Ich sitze mit einer Pause von weniger als einer Stunde seit 8 Uhr 15 an der Kiste. 95% davon habe ich KOMA-Script und LaTeX-Anwendern zukommen lassen. Diese Woche waren es insgesamt bestimmt schon an die 50 Stunden.
Vielen Dank ... ;)
Hallo Henning,
Mir war nicht klar, wie ich ein solches Template am besten strukturiere, aber dafür lieferst du ja jetzt einen sinnvollen Ansatz, auf dem man wirklich gut aufbauen kann. Vielen Dank dafür!
Viele Grüße,
Benjamin