Skip to content


Subversion checkout URL

You can clone with
Download ZIP
SICP PDF with Texinfo and LaTeX source
Perl TeX Ruby Makefile
Fetching latest commit...
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Par dreaming and smiling

This is a PDF version of "Structure and Interpretation of Computer Programs" by Harold Abelson, Gerald Jay Sussman, and Julie Sussman. It is a further development of the Unofficial Texinfo Format (UTF), which was originally derived from the HTML version at The MIT Press.

Biggest change in this revision is the conversion to LaTeX, which opens the door to design and customization possibilities that the massive CTAN archive enables. Also, the latest typesetting engine XeTeX can be used, along with the Unicode and OpenType goodness it brings.


The src directory contains both Texinfo and LaTeX sources. To recompile the book, enter:

$ ./ sicp.texi ; xelatex sicp.tex

You may need to issue the xelatex sicp.tex command again once or twice to get the labels and cross-references right.

The Perl script pulls in both preamble.tex and postamble.tex. The preamble contains all the configuration and style declarations. Note that the LaTeX file sicp.tex will be generated on the fly, overwriting the previous version. To keep sicp.texi and sicp.tex in sync, I make changes to sicp.texi, which is already a hybrid of Texinfo and LaTeX code. This is fine, because all non-Texinfo content remains unchanged by the script.

Chances for successful compilation by xelatex are increased if you have almost complete installation of recent TeX Live distribution. The needed OpenType fonts must be installed in the operating system.


  • Lytha Ayth
  • Neil Van Dyke
  • Gavrie Philipson
  • J. E. Johnson


The files sicp.texi, sicp.tex, sicp.pdf, and the diagrams in directory fig are licensed under Creative Commons Attribution-ShareAlike 3.0 Unported License (cc by-sa).

The script files, survey.rb, and are licensed under GNU General Public License version 3 (for details, see LICENSE).

Something went wrong with that request. Please try again.