emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orgmode] minted for latex source code export


From: Carsten Dominik
Subject: Re: [Orgmode] minted for latex source code export
Date: Sat, 7 Aug 2010 09:20:27 +0200

Hi Dan,

Looks good!

- Carsten

On Aug 6, 2010, at 3:34 PM, Dan Davison wrote:

Seb's nice listings code led me to come across this[1] blog post,
describing the latex package "minted"[2]. I've made a first-pass
implementation of org-mode latex export using minted. This didn't take
too long because I copied the original work Eric Schulte did on
listings. I think that minted may be an improvement over using listings
for exporting code from org-mode.

This pdf shows an example of export from org-mode

http://www.princeton.edu/~ddavison/software/org-minted/minted.pdf

My patch is below and in branch "minted" at
http://github.com/dandavison/org-devel.

minted does coloured syntax highlighting in ~150 languages. Unlike with the latex listings package, no extra configuration is required to set up
the colors and fonts for different language elements. There are other
nice features such as displaying latex code in code comments, support
for unicode in the code, and (apparently) greater sophistication of the syntax highlighters than the listings package. It uses a python library
pygments[3] to do the syntax highlighting, so imposes a requirement on
org users.

Below is the org source for the pdf, with instructions for installing
minted and pygments, and the necessary elisp configuration.

Dan

--8<---------------cut here---------------start------------->8---
#+title: latex export with minted

This demonstrates export using the [[http://code.google.com/p/ minted/][minted]] package. minted is a latex
package that formats source code with syntax highlighting. It uses the
python library [[http://pygments.org/][pygments]] to do the syntax highlighting.

The org-mode patch is in branch =minted= at

git://github.com/dandavison/org-devel.git.

You will also need to get minted.sty, and the python package (see
requirements). Then, using the =minted= branch of org-mode, make the
elisp customizations in the Org config section. The source code blocks
in this file can then be exported to pdf as usual with e.g. C-c C-e d.

* Requirements
#+begin_src sh
 # Clone minted
 hg clone https://minted.googlecode.com/hg/ minted
 # Install the python syntax highlighter
 sudo aptitude install python-pygments
#+end_src

* Org config
#+begin_src emacs-lisp :results silent
  (setq org-export-latex-minted t)
  (add-to-list 'org-export-latex-packages-alist '("" "minted"))
  (setq org-latex-to-pdf-process
     '("pdflatex --shell-escape -interaction nonstopmode %s"))
#+end_src

* Example by the minted author

#+begin_src csharp
 string title = "This is a Unicode \pi in the sky"
 /*
Defined as $\pi=\lim_{n\to\infty}\frac{P_n}{d}$ where $P$ is the perimeter
 of an $n$-sided regular polygon circumscribing a
 circle of diameter $d$.
 */
 const double pi = 3.1415926535
#+end_src


This example originally demonstrated both unicode strings and \LaTeX \nbsp
code in comments. However the unicode \pi in the string isn't working
for me at the moment, and I've replaced it with backslash pi.

* Sébastian's example
#+SRCNAME: srcModifyDB2.sql
#+BEGIN_SRC sql :tangle srcModifyDB.sql
   -- add column `DossierSentToSecteur' (if column does not exist yet)
   IF NOT EXISTS (SELECT *
                  FROM INFORMATION_SCHEMA.COLUMNS
                  WHERE TABLE_NAME = 'dossier'
                  AND COLUMN_NAME = 'DossierSentToSecteur')
   BEGIN
       ALTER TABLE dossier
       ADD DossierSentToSecteur smalldatetime NULL
   END
   GO
#+END_SRC

* Python
#+begin_src python
def tabulate(x):
   # Return dict containing values and counts
   vals = sorted(unique(x))
   return dict(zip(vals, map(lambda(val): x.count(val), vals)))
#+end_src

* Notes

To list minted language identifiers:

#+begin_src sh
 pygmentize -L lexers
#+end_src

#+options: toc:nil
--8<---------------cut here---------------end--------------->8---

<minted.diff>

Footnotes:

[1] http://stackoverflow.com/questions/1966425/source-code-highlighting-in-latex

[2] http://code.google.com/p/minted/

[3] http://pygments.org/



_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
address@hidden
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

- Carsten






reply via email to

[Prev in Thread] Current Thread [Next in Thread]