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.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode
- Carsten
_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode