From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sebastian Rose Subject: Re: [PATCH] fontified source-code on latex export with listings package Date: Sun, 09 Aug 2009 18:48:08 +0200 Message-ID: <87y6ptndbr.fsf@kassiopeya.MSHEIMNETZ> References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MaBUx-0000V2-QG for emacs-orgmode@gnu.org; Sun, 09 Aug 2009 12:43:55 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MaBUs-0000Tk-Gd for emacs-orgmode@gnu.org; Sun, 09 Aug 2009 12:43:55 -0400 Received: from [199.232.76.173] (port=39940 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MaBUs-0000Th-7N for emacs-orgmode@gnu.org; Sun, 09 Aug 2009 12:43:50 -0400 Received: from mail.gmx.net ([213.165.64.20]:43711) by monty-python.gnu.org with smtp (Exim 4.60) (envelope-from ) id 1MaBUr-0008Lg-Ed for emacs-orgmode@gnu.org; Sun, 09 Aug 2009 12:43:49 -0400 In-Reply-To: (Eric Schulte's message of "Sat, 08 Aug 2009 12:59:39 -0600") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Eric Schulte Cc: Org Mode Ahhh - yeees, yes, yes! I'm looking forward to stop using my old \variable{name} stuff!!! :) Thanks a bunch! Sebastian "Eric Schulte" writes: > Hi, > > The attached patch allows for fontified source code blocks on export to > LaTeX. It does this using the 'listings' latex package. A new variable > is introduced; `org-export-latex-listings' which should be set to > non-nil for source-code to be exported as listings blocks. This > variable defaults to nil in which case the current practice of exporting > source code to verbatim latex blocks remains unchanged. > > To use this functionality add the following to your org-mode config. > > > ;; tell org to use listings > (setq org-export-latex-listings t) > > ;; you must include the listings package > (add-to-list 'org-export-latex-packages-alist '("" "listings")) > > ;; if you want colored source code then you need to include the color package > (add-to-list 'org-export-latex-packages-alist '("" "color")) > > In addition to the patch, I'm attaching an example org-mode file, along > with the generated LaTeX file and PDF file. > > Do you think this would be appropriate for inclusion into org-mode? > > Thanks -- Eric > > > diff --git a/lisp/org-exp.el b/lisp/org-exp.el > index 00fd6c8..9de5e5f 100644 > --- a/lisp/org-exp.el > +++ b/lisp/org-exp.el > @@ -2204,6 +2204,8 @@ in the list) and remove property and value from the list in LISTVAR." > (defvar htmlp) ;; dynamically scoped > (defvar latexp) ;; dynamically scoped > (defvar org-export-latex-verbatim-wrap) ;; defined in org-latex.el > +(defvar org-export-latex-listings) ;; defined in org-latex.el > +(defvar org-export-latex-listings-langs) ;; defined in org-latex.el > > (defun org-export-format-source-code-or-example > (backend lang code &optional opts indent) > @@ -2310,8 +2312,20 @@ INDENT was the original indentation of the block." > ((eq backend 'latex) > (setq rtn (org-export-number-lines rtn 'latex 0 0 num cont rpllbl fmt)) > (concat "\n#+BEGIN_LaTeX\n" > - (org-add-props (concat (car org-export-latex-verbatim-wrap) > - rtn (cdr org-export-latex-verbatim-wrap)) > + (org-add-props > + (if org-export-latex-listings > + (concat > + (if lang > + (let* ((lang-sym (intern (concat ":" lang))) > + (lstlang (or (plist-get org-export-latex-listings-langs > + lang-sym) > + lang))) > + (format "\\lstset{language=%s}\n" lstlang)) > + "") > + "\\begin{lstlisting}\n" > + rtn "\\end{lstlisting}\n") > + (concat (car org-export-latex-verbatim-wrap) > + rtn (cdr org-export-latex-verbatim-wrap))) > '(org-protected t)) > "#+END_LaTeX\n\n")) > ((eq backend 'ascii) > diff --git a/lisp/org-latex.el b/lisp/org-latex.el > index fdf9ae2..f80e221 100644 > --- a/lisp/org-latex.el > +++ b/lisp/org-latex.el > @@ -69,6 +69,9 @@ > org-deadline-string "\\|" > org-closed-string"\\)") > "Regexp matching special time planning keywords plus the time after it.") > +(defvar org-export-latex-listings nil > + "If non-nil then source code blocks will be fontified using the > +listings package.") > > (defvar latexp) ; dynamically scoped from org.el > (defvar re-quote) ; dynamically scoped from org.el > @@ -297,6 +300,12 @@ Defaults to \\begin{verbatim} and \\end{verbatim}." > :type '(cons (string :tag "Open") > (string :tag "Close"))) > > +(defcustom org-export-latex-listings-langs > + '(:emacs-lisp "lisp") > + "Property list mapping languages to their listing language counterpart." > + :group 'org-export-latex > + :type 'plist) > + > (defcustom org-export-latex-remove-from-headlines > '(:todo nil :priority nil :tags nil) > "A plist of keywords to remove from headlines. OBSOLETE.