Mercurial > hg > xemacs-beta
diff lisp/auctex/style/dinbrief.el @ 100:4be1180a9e89 r20-1b2
Import from CVS: tag r20-1b2
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:15:11 +0200 |
parents | 4103f0995bd7 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/auctex/style/dinbrief.el Mon Aug 13 09:15:11 2007 +0200 @@ -0,0 +1,163 @@ +;;; dinbrief.el - Special code for LaTeX-Style dinbrief. + +;; Contributed by Werner Fink <tex@itap.physik.uni-stuttgart.de> +;; Please direct comments to him. + +;;; Commentary: + +;; LaTeX-Style: dinbrief.sty +;; Server: rusinfo.rus.uni-stuttgart.de +;; Directory: /pub/soft/tex/macros/latex/contrib/letters + +;;; Code: + +(TeX-add-style-hook "dinbrief" + (function + (lambda () + (LaTeX-add-environments + '("letter" LaTeX-recipient-hook)) + (TeX-add-symbols + '("Absender" "Absender: ") + '("Postvermerk" "Postvermerk: ") + '("Datum" "Datum: ") + '("Betreff" "Betreff: ") + '("Behandlungsvermerk" "Behandlungsvermerk: ") + '("Verteiler" "Verteiler: ") + "makelabel" "Retourlabel" + '("Anlagen" "Anlagen: ") + '("Fenster" "Fenster \(ja/nein\): ") + '("Retouradresse" "Retouradresse: ") + '("signature" "Unterschrift: ") + '("opening" "Anrede: ") + '("closing" "Schlu\"s: "))))) + +(defun LaTeX-recipient-hook (environment) + "Insert ENVIRONMENT and prompt for recipient and address." + (let ((sender (read-input "Absender: " (user-full-name))) + (recipient (read-input "Empf\"anger: ")) + (address (read-input "Anschrift: ")) + (postvermerk (read-input "Postvermerk: ")) + (date (read-input "Datum: " (LaTeX-today))) + (betreff (read-input "Betreff: ")) + (vermerk (read-input "Behandlungsvermerk: ")) + (verteil (read-input "Verteiler: ")) + (anlage (read-input "Anlagen: ")) + (opening (read-input "Anrede: ")) + (closing (read-input "Schlu\"s: ")) + (fenster (read-input "Fenster \(ja/nein\): ")) + (signature (read-input "Unterschrift: ")) + ) + + (if (not (zerop (length sender))) + (progn + (insert TeX-esc "Absender" TeX-grop sender TeX-grcl) + (newline-and-indent))) + (if (not (zerop (length postvermerk))) + (progn + (insert TeX-esc "Postvermerk" TeX-grop postvermerk TeX-grcl) + (newline-and-indent))) + (if (not (zerop (length betreff))) + (progn + (insert TeX-esc "Betreff" TeX-grop betreff TeX-grcl) + (newline-and-indent))) + (if (not (zerop (length vermerk))) + (progn + (insert TeX-esc "Behandlungsvermerk" TeX-grop vermerk TeX-grcl) + (newline-and-indent))) + (if (not (zerop (length verteil))) + (progn + (insert TeX-esc "Verteiler" TeX-grop verteil TeX-grcl) + (newline-and-indent))) + (if (not (zerop (length anlage))) + (progn + (insert TeX-esc "Anlagen" TeX-grop anlage TeX-grcl) + (newline-and-indent))) + (if (string= fenster "ja") + (progn + (insert TeX-esc "Fenster") + (let ((retouradr (read-input "Retouradresse: " (user-full-name)))) + (newline-and-indent) + (if (not (zerop (length retouradr))) + (progn + (insert TeX-esc "Retouradresse" TeX-grop retouradr TeX-grcl) + (newline-and-indent)))))) + (if (not (zerop (length signature))) + (progn + (insert TeX-esc "signature" TeX-grop signature TeX-grcl) + (newline-and-indent))) + (if (not (zerop (length date))) + (progn + (insert TeX-esc "Datum" TeX-grop date TeX-grcl) + (newline-and-indent))) + (newline-and-indent) + + (let ((indentation (current-column))) + (LaTeX-insert-environment + environment + (concat TeX-grop recipient + (if (not (zerop (length address))) + (concat + (if (not (zerop (length recipient))) + (concat " " TeX-esc TeX-esc " ")) + address)) + TeX-grcl)) + (save-excursion ; Fix indentation of address + (if (search-backward TeX-grcl nil 'move) + (let ((addr-end (point-marker))) + (if (search-backward TeX-grop nil 'move) + (let ((addr-column (current-column))) + (while (search-forward + (concat TeX-esc TeX-esc) + (marker-position addr-end) 'move) + (progn + (newline) + (indent-to addr-column)))))))) + (insert "\n") + (indent-to indentation)) + (insert TeX-esc "opening" + TeX-grop + (if (zerop (length opening)) + (concat TeX-esc " ") + opening) + TeX-grcl "\n") + + (indent-relative-maybe) + (save-excursion + (insert "\n" TeX-esc "closing" + TeX-grop + (if (zerop (length closing)) + (concat TeX-esc " ") + closing) + TeX-grcl "\n") + (indent-relative-maybe)))) + +(defun LaTeX-today nil + "Return a string representing todays date according to flavor." + (interactive) + (let ((ctime-string (current-time-string)) + (month-alist '(("Jan" . "Januar") + ("Feb" . "Februar") + ("Mar" . "M\\\"arz") + ("Apr" . "April") + ("May" . "Mai") + ("Jun" . "Juni") + ("Jul" . "Juli") + ("Aug" . "August") + ("Sep" . "September") + ("Oct" . "Oktober") + ("Nov" . "November") + ("Dec" . "Dezember")))) + (string-match + "^\\S-+\\s-+\\(\\S-+\\)\\s-+\\(\\S-+\\)\\s-+\\S-+\\s-+\\(\\S-+\\)" + ctime-string) + (let ((year (substring ctime-string (match-beginning 3) (match-end 3))) + (month (substring ctime-string (match-beginning 1) (match-end 1))) + (day (substring ctime-string (match-beginning 2) (match-end 2)))) + (if (assoc month month-alist) + (progn + (setq month (cdr (assoc month month-alist))) + (if (> 2 (length day)) + (setq day (concat "0" day))))) + (format "Stuttgart, den %s. %s %s" day month year)))) + +;;; dinbrief.el ends here