Home
Reading
Searching
Subscribe
Sponsors
Statistics
Posting
Contact
Spam
Lists
Links
About
Hosting
Filtering
Features Download
Marketing
Archives
FAQ
Blog
 
Gmane
From: Jambunathan K <kjambunathan <at> gmail.com>
Subject: Composing letters using org-mode and scrlttr2
Newsgroups: gmane.emacs.orgmode
Date: Sunday 25th July 2010 21:17:44 UTC (over 6 years ago)
#+TITLE: 
#+AUTHOR:
#+EMAIL:
#+LANGUAGE:
#+TEXT:
#+DATE:

#+LaTeX_CLASS_OPTIONS:
[a4paper,parskip=full,backaddress=off,foldmarks=off,jambu]

#+OPTIONS: toc:nil 
#+LaTeX_CLASS: scrlttr2

* letter
  Org Mode User Group \\
  World Wide Web
  
* subject
  Composing letters using org-mode and scrlttr2
  
* opening
  Dear Org-Mode Users

* body
  Lately, I have been composing formal letters using KOMA script's
  scrlttr2. I find it convenient to have them composed auto-magically
  from within org-mode.
  
  I am enclosing the initial set of changes needed to compose some
  simple letters as this one.
  
  The only change that is too 'intrusive' seems to be an extra newline
  which gets added immediately after the emission of labels. These
  extra newlines trigger syntax errors in the closing{} and encl{}
  directives.
  
  I think rest of the changes could be squeeed in through existing
  hooks.

#+BEGIN_EXAMPLE
-	  (insert (mapconcat (lambda (l) (format "\\label{%s}" l))
-			     label-list "\n") "\n"))
+	    (insert (mapconcat (lambda (l) (format "\\label{%s}" l))
+			       label-list "\n")))
#+END_EXAMPLE 
  
  If there is some general interest, I could work on making a formal
  patch available.

* closing
  Yours Truly

* encl
  Patch from my work-area.

Jambunathan K.
  
diff --git a/lisp/org-latex.el b/lisp/org-latex.el
old mode 100644
new mode 100755
index f3a55ee..6a86c35
--- a/lisp/org-latex.el
+++ b/lisp/org-latex.el
@@ -113,8 +113,10 @@
      ("\\subsubsection{%s}" . "\\subsubsection*{%s}"))
     ("beamer"
      "\\documentclass{beamer}"
-     org-beamer-sectioning
-     ))
+     org-beamer-sectioning)
+    ("scrlttr2"
+     "\\documentclass{scrlttr2}"
+     org-scrlttr2-sectioning))
   "Alist of LaTeX classes and associated header and structure.
 If #+LaTeX_CLASS is set in the buffer, use its value and the
 associated information.  Here is the structure of each cell:
@@ -776,6 +778,9 @@ when PUB-DIR is set, use this as the publishing
directory."
 	   (org-export-latex-parse-global level odd)))))
 
     ;; finalization
+    (when (string-equal org-export-latex-class "scrlttr2")
+      (insert "\n\\end{letter}"))
+    
     (unless body-only (insert "\n\\end{document}"))
 
     ;; Attach description terms to the \item macro
@@ -1016,8 +1021,8 @@ If NUM, export sections as numerical sections."
 			(or sub-heading "")))
 	(insert	"\n")
 	(when label
-	  (insert (mapconcat (lambda (l) (format "\\label{%s}" l))
-			     label-list "\n") "\n"))
+	    (insert (mapconcat (lambda (l) (format "\\label{%s}" l))
+			       label-list "\n")))
 	(insert (org-export-latex-content content))
 	(cond ((stringp subcontent) (insert subcontent))
 	      ((listp subcontent)
diff --git a/lisp/org-scrlttr2.el b/lisp/org-scrlttr2.el
new file mode 100755
index 0000000..c2b3764
--- /dev/null
+++ b/lisp/org-scrlttr2.el
@@ -0,0 +1,20 @@
+(defun org-scrlttr2-sectioning (level heading) 
+  (let ((open "\n\\%s {")
+	(close "}"))
+
+    (setq heading (replace-regexp-in-string "\\s-+" "" heading))
+    (cond 
+     ((string-equal heading "subject")
+      (setq open "\n\\setkomavar{%s} {")
+      )
+     ((string-equal heading "letter")
+      (setq open "\n\\begin{%s} {")
+      )
+     ((string-equal heading "body")
+      (setq open "\n")
+      (setq close "\n")
+      )
+     (t 'ignore))
+    
+    (list heading open close open close))
+  )
diff --git a/lisp/org.el b/lisp/org.el
index abc57a6..6e2b4a1 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -3677,7 +3677,8 @@ If TABLE-TYPE is non-nil, also check for
table.el-type tables."
 		  org-export-icalendar-all-agenda-files
 		  org-export-icalendar-combine-agenda-files))
   (org-autoload "org-xoxo" '(org-export-as-xoxo))
-  (org-autoload "org-beamer" '(org-beamer-mode org-beamer-sectioning)))
+  (org-autoload "org-beamer" '(org-beamer-mode org-beamer-sectioning))
+  (org-autoload "org-scrlttr2" '(org-scrlttr2-sectioning)))
 
 ;; Declare and autoload functions from org-agenda.el

_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
[email protected]
http://lists.gnu.org/mailman/listinfo/emacs-orgmode
 
CD: 3ms