Hi,

I'd like to submit a patch to make the dinbriefl LaTeX style work
together with the current available dinbrief class style found at
the TeX archive of tug.org.  This classs was developed by Richard
Gussmann of the University of Karlsruhe.

My old dinbrief.el was implemented for an old and outdated dinbrief
style file back to 1992 and used only at the University of Stuttgart.


    Werner

-- 
  "Having a smoking section in a restaurant is like having
          a peeing section in a swimming pool." -- Edward Burr
--- style/dinbrief.el
+++ style/dinbrief.el	2006-06-29 18:40:59.000000000 +0200
@@ -2,6 +2,9 @@
 
 ;; Contributed by Werner Fink <[email protected]>
 ;; Please direct comments to him.
+;;
+;; Change to new dinbrief.sty -- Werner Fink <[email protected]>
+;;                               ... yes, we are identical
 
 ;;; Commentary:
 
@@ -14,80 +17,120 @@
 (TeX-add-style-hook "dinbrief"
  (function
   (lambda ()
+    (add-hook 'LaTeX-document-style-hook
+     'LaTeX-style-dinbrief)
     (LaTeX-add-environments
-     '("letter" LaTeX-recipient-hook))
+     '("letter" LaTeX-recipient-hook)
+     "dinquote")
     (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: ")
+     '("address" "Absender: ")
+     '("postremark" "Postvermerk: ")
+     '("date" "Datum: ")
+     '("subject" "Betreff: ")
+     '("handling" "Behandlungsvermerk: ")
+     '("cc" "Verteiler: ")
+     '("place" "Heutiger Ort: ")
+     "makelabels"
+     "nowindowrules"
+     "windowrules"
+     "nowindowtics"
+     "windowtics"
+     "disabledraftstandard"
+     "enabledraftstandard"
+     "centeraddress"
+     "normaladdress"
+     '("encl" "Anlagen: ")
+     '("backaddress" "Retouradresse: ")
      '("signature" "Unterschrift: ")
      '("opening" "Anrede: ")
-     '("closing" "Schlu\"s: ")))))
+     '("closing" "Schluss: ")))))
+
+(if (string-match "XEmacs" emacs-version)
+    (defun TeX-deactivate-mark () (zmacs-deactivate-region))
+  (defun TeX-deactivate-mark () (deactivate-mark)))
+
+(defmacro din-insert (&rest args)
+  "Insert text ignoring active markers."
+  `(progn (if (TeX-mark-active) (TeX-deactivate-mark))
+     (insert ,@args)))
+
+(defun LaTeX-style-dinbrief ()
+  "Insert some useful packages for writing german letters."
+  (if (equal LaTeX-version "2e")
+    (save-excursion
+      (goto-char (point-min)) ; insert before \begin{document}
+      (if (re-search-forward ".begin.document." (point-max) t)
+          (beginning-of-line 1))
+      (open-line 2)
+      (indent-relative-maybe)
+	(din-insert TeX-esc "usepackage"
+		LaTeX-optop "latin1" LaTeX-optcl
+		TeX-grop "inputenc" TeX-grcl)
+	(newline-and-indent)
+	(din-insert TeX-esc "usepackage"
+		LaTeX-optop "T1" LaTeX-optcl
+		TeX-grop "fontenc" TeX-grcl)
+	(newline-and-indent)
+	(din-insert TeX-esc "usepackage"
+		TeX-grop "ngerman" TeX-grcl)
+	(newline-and-indent)
+	(din-insert TeX-esc "usepackage"
+		TeX-grop "umlaut" TeX-grcl)
+	(TeX-run-style-hooks "inputenc")
+	(TeX-run-style-hooks "fontenc")
+	(TeX-run-style-hooks "ngerman")
+	(TeX-run-style-hooks "umlaut"))))
 
 (defun LaTeX-recipient-hook (environment)
   "Insert ENVIRONMENT and prompt for recipient and address."
-  (let ((sender (read-string "Absender: " (user-full-name)))
-	(recipient (read-string "Empf\"anger: "))
-	(address (read-string "Anschrift: "))
-	(postvermerk (read-string "Postvermerk: "))
+  (let (
+	(sender (LaTeX-sender))
+	(recipient (read-string "Empf�nger: "))
+	(address (LaTeX-recipient))
 	(date (read-string "Datum: " (LaTeX-today)))
-	(betreff (read-string "Betreff: "))
+	(postremark (read-string "Postvermerk: "))
+	(fenster (read-string "Fenster \(ja/nein\): "))
 	(vermerk (read-string "Behandlungsvermerk: "))
 	(verteil (read-string "Verteiler: "))
-	(anlage (read-string "Anlagen: "))
+	(betreff (read-string "Betreff: "))
 	(opening (read-string "Anrede: "))
-	(closing (read-string "Schlu\"s: "))
-	(fenster (read-string "Fenster \(ja/nein\): "))
+	(closing (read-string "Schluss: "))
 	(signature (read-string "Unterschrift: "))
+	(anlage (read-string "Anlagen: "))
 	)
 
-    (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-string "Retouradresse: " (user-full-name))))
+	  (din-insert TeX-esc "enabledraftstandard")
+	  (newline-and-indent)
+	  (din-insert TeX-esc "centeraddress")
+	  (newline-and-indent)
+	  (din-insert TeX-esc "nowindowrules")
+	  (newline-and-indent)
+	  (din-insert TeX-esc "windowtics")
+	  (newline-and-indent)
+	  (let ((retouradr (read-string "Retouradresse: " sender)))
 	    (newline-and-indent)
 	  (if (not (zerop (length retouradr)))
 	      (progn
-		(insert TeX-esc "Retouradresse" TeX-grop retouradr TeX-grcl)
-		(newline-and-indent))))))
+		(if (TeX-mark-active) (TeX-deactivate-mark))
+		(din-insert TeX-esc "backaddress" TeX-grop retouradr TeX-grcl)
+		(newline-and-indent)))))
+      (din-insert TeX-esc "enabledraftstandard")
+      (newline-and-indent)
+      (din-insert TeX-esc "centeraddress")
+      (newline-and-indent)
+      (din-insert TeX-esc "nowindowrules")
+      (newline-and-indent)
+      (din-insert TeX-esc "windowtics"))
+      (newline-and-indent)
     (if (not (zerop (length signature)))
 	(progn
-	  (insert TeX-esc "signature" TeX-grop signature TeX-grcl)
+	  (din-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)
+	  (din-insert TeX-esc "date" TeX-grop date TeX-grcl)
 	  (newline-and-indent)))
     (newline-and-indent)
 
@@ -112,9 +155,32 @@
 		      (progn
 			(newline)
 			(indent-to addr-column))))))))
-      (insert "\n")
+      (din-insert "\n")
       (indent-to indentation))
-    (insert TeX-esc "opening"
+    (if (not (zerop (length postremark)))
+	(progn
+	  (din-insert TeX-esc "postremark" TeX-grop postremark TeX-grcl)
+	  (newline-and-indent)))
+    (if (not (zerop (length betreff)))
+	(progn
+	  (din-insert TeX-esc "subject" TeX-grop)
+	    (if (equal LaTeX-version "2e")
+	      (din-insert TeX-esc "textbf" TeX-grop betreff TeX-grcl TeX-grcl)
+	      (din-insert betreff TeX-grcl))
+	  (newline-and-indent)))
+    (if (not (zerop (length vermerk)))
+	(progn
+	  (din-insert TeX-esc "handling" TeX-grop vermerk TeX-grcl)
+	  (newline-and-indent)))
+    (if (not (zerop (length verteil)))
+	(progn
+	  (din-insert TeX-esc "cc" TeX-grop verteil TeX-grcl)
+	  (newline-and-indent)))
+    (if (not (zerop (length anlage)))
+	(progn
+	  (din-insert TeX-esc "encl" TeX-grop anlage TeX-grcl)
+	  (newline-and-indent)))
+    (din-insert TeX-esc "opening"
 	    TeX-grop
 	    (if (zerop (length opening))
 		(concat TeX-esc " ")
@@ -123,7 +189,7 @@
 
     (indent-relative-maybe)
     (save-excursion
-      (insert "\n" TeX-esc "closing"
+      (din-insert "\n" TeX-esc "closing"
 	      TeX-grop
 	      (if (zerop (length closing))
 		  (concat TeX-esc " ")
@@ -131,6 +197,47 @@
 	      TeX-grcl "\n")
       (indent-relative-maybe))))
 
+(defun LaTeX-sender nil
+  "Read and writes the senders address"
+  (interactive)
+  (let ((name (read-string "Absender: " (user-full-name)))
+	(str  (read-string "Meine Strasse:  "))
+	(ort  (read-string "Mein Wohnort:  ")))
+    (if (not (zerop (length name)))
+	(progn
+	  (goto-char (point-min)) ; insert before \end{document}
+	  (if (re-search-forward ".end.document." (point-max) t)
+	     (beginning-of-line 1))
+	  (previous-line 1)
+	  (din-insert TeX-esc "address" TeX-grop name)
+	  (if (not (zerop (length str)))
+	      (progn
+		(din-insert " " TeX-esc TeX-esc)
+		(newline-and-indent)
+		(din-insert str)))
+	  (if (not (zerop (length ort)))
+	      (progn
+		(din-insert " " TeX-esc "par")
+		(newline-and-indent)
+		(din-insert ort)))
+	  (din-insert TeX-grcl)
+	  (newline-and-indent)
+	  (concat name ", " str ", " ort)))))
+
+(defun LaTeX-recipient nil
+  "Read and returns the recipient address"
+  (interactive)
+  (let ((str  (read-string "Wohnhaft in Strasse:  "))
+	(ort  (read-string "Aus der Ortschaft:  ")))
+    (if (not (zerop (length str)))
+	(if (not (zerop (length ort)))
+	    (concat str " " TeX-esc TeX-esc " " ort)
+	  str)
+      (if (not (zerop (length ort)))
+	  ort))
+    )
+)
+
 (defun LaTeX-today nil
   "Return a string representing todays date according to flavor."
   (interactive)
@@ -152,12 +259,13 @@
      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))))
+	  (day (substring ctime-string (match-beginning 2) (match-end 2)))
+	  (place (read-string "Heutiger Ort: ")))
       (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))))
+      (format "%s, den %s. %s %s" place day month year))))
 
 ;;; dinbrief.el ends here
_______________________________________________
auctex-devel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/auctex-devel

Reply via email to