emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: "Sébastien Vauban" <wxhgmqzgwmuf-geNee64TY+gS+FvcfC7Uqw@public.gmane.org>
To: emacs-orgmode-mXXj517/zsQ@public.gmane.org
Subject: How to get pretty printed source code in PDFLaTeX
Date: Fri, 06 Aug 2010 09:59:30 +0200	[thread overview]
Message-ID: <87k4o4893x.fsf_-_@mundaneum.com> (raw)
In-Reply-To: 8762zoogf5.fsf@gmx.de

Hi Dan and Sebastian,

Sebastian Rose wrote:
> Dan Davison <davison-+7o2aNKnwVPQzY9nttDBhA@public.gmane.org> writes:
>> Can you point me to an example that shows how to make source code in latex
>> look (almost) as nice as html?
>
> That is supposed to work with the `listings' package. I havent tried that
> yet.
>
> I still use my old LaTeX headers and write verbatim LaTeX code.  I'd
> like to switch though, since it's a lot to type.
>
> Here is an example:
>
>       \begin{codeblock}
>       \keyword{public function}~\func{\_\_construct}~(\increaseindent[15]\doindent
>       \variable{\$instance}~=~\konstante{MAP\_STANDARD\_JS\_INSTANCE},\doindent
>       \variable{\$z}~=~\konstante{MAP\_STANDARD\_ZOOM},\doindent
>       \variable{\$centerX}~=~-1,\doindent
>       \variable{\$centerY}~=~-1,\doindent
>       \variable{\$highlights}~=~\keyword{true},\doindent
>       \variable{\$spots}~=~\keyword{false}\doindent
>       )\resetindent
>       \end{codeblock}
>
> Looks horrible, does it?

If I understand you right, here's such an example you're after:

--8<---------------cut here---------------start------------->8---
#+TITLE:     Using the listings package
#+AUTHOR:    Seb Vauban
#+DATE:      2010-08-06
#+LANGUAGE:  en_US

* Code

This must be nice to see in LaTeX.

#+SRCNAME: srcModifyDB1.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

Right?

* Much better code

For that, you need to customize =listings=:

#+begin_LaTeX
% typeset source code listings
\usepackage{listings} % must be loaded after `babel'
\lstloadlanguages{C}
\definecolor{sva@lstbackground}{HTML}{FFFFCC} % light yellow
\definecolor{sva@lstkeyword}{HTML}{0000FF} % blue
\definecolor{sva@lstidentifier}{HTML}{000000} % black
\definecolor{sva@lstcomment}{HTML}{FF0000} % red
\definecolor{sva@lststring}{HTML}{008000} % dark green
\lstset{%
    basicstyle=\ttfamily\scriptsize, % the font that is used for the code
    tabsize=4, % sets default tabsize to 4 spaces
    numbers=left, % where to put the line numbers
    numberstyle=\tiny, % line number font size
    stepnumber=0, % step between two line numbers
    breaklines=false, %!! don't break long lines of code
    showtabs=false, % show tabs within strings adding particular underscores
    showspaces=false, % show spaces adding particular underscores
    showstringspaces=false, % underline spaces within strings
    keywordstyle=\color{sva@lstkeyword},
    identifierstyle=\color{sva@lstidentifier},
    stringstyle=\color{sva@lststring},
    commentstyle=\color{sva@lstcomment},
    backgroundcolor=\color{sva@lstbackground}, % sets the background color
    captionpos=b, % sets the caption position to `bottom'
    extendedchars=false %!?? workaround for when the listed file is in UTF-8
}
#+end_LaTeX

#+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
--8<---------------cut here---------------end--------------->8---

with the following in my `.emacs' file:

--8<---------------cut here---------------start------------->8---
      (setq org-export-latex-default-packages-alist
            '(("AUTO" "inputenc" t)
              ("T1" "fontenc" t)
              ("" "fixltx2e" nil)
              ("" "graphicx" t)
              ("" "longtable" nil)
              ("" "float" nil)
              ("" "wrapfig" nil)
              ("" "soul" t)
              ("" "t1enc" t)
              ("" "textcomp" t)
              ("" "marvosym" t)
              ("" "wasysym" t)
              ("" "latexsym" t)
              ("" "amssymb" t)
              ("" "hyperref" nil)
              "\\tolerance=1000"))

      ;; tell org to use listings (instead of verbatim) for source code
      (setq org-export-latex-listings t)

      ;; if you want fontified source code, then 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
      ;; `xcolor' package
      (add-to-list 'org-export-latex-packages-alist '("" "xcolor"))
--8<---------------cut here---------------end--------------->8---

I've put the PDF (for easy access) onto my Web site:

http://www.mygooglest.com/sva/ECM-Listings.pdf

Best regards,
  Seb

-- 
Sébastien Vauban


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

  reply	other threads:[~2010-08-06  7:59 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-04 17:00 Change resolution of LaTeX formulas in HTML output? amscopub-mail
2010-08-04 22:32 ` Bastien
2010-08-05 19:11   ` Dan Davison
2010-08-06  9:12     ` Bastien
2010-08-06 10:46   ` Carsten Dominik
2010-08-06 17:21     ` Bastien
2010-08-05 19:14 ` Dan Davison
2010-08-05 20:34   ` Sebastian Rose
2010-08-05 21:36     ` Dan Davison
2010-08-05 22:14       ` Sebastian Rose
2010-08-06  7:59         ` Sébastien Vauban [this message]
2010-08-06 13:39           ` How to get pretty printed source code in PDFLaTeX Dan Davison
2010-08-09 20:30             ` Sébastien Vauban
2010-08-09 22:29               ` Dan Davison
2010-08-10 16:38                 ` Thomas S. Dye
2010-08-10 17:37                   ` Dan Davison
2010-08-10 19:08                     ` Thomas S. Dye

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87k4o4893x.fsf_-_@mundaneum.com \
    --to=wxhgmqzgwmuf-genee64ty+gs+fvcfc7uqw@public.gmane.org \
    --cc=emacs-orgmode-mXXj517/zsQ@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).