Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Enterprise Pharo (english version) Build Status Build Status

How to write a book

This book is written in Pillar markup. If you are not familiar with it please read the Pillar chapter.


####Install LaTeX

The book requires TeX Live 2015 to generate the PDFs. Linux distributions often require to install several packages, please refer to the SBAbook description.

Mac OS X users: download and install MacTeX (the 2.4Gb MacTeX.pkg file), and add its binaries to your system path (don't forget to start a new terminal session, for the path changes to take effect):

echo /usr/texbin > TeX
sudo mv TeX /etc/paths.d

####Download Pillar

Run ./ to obtain the required Pillar executable. This will also download the required Pharo image and VM and install it locally in the book's directory.

###Generating the book

To generate the individual book chapters, execute ./ This will place the rendered chapters in book-result/.

To compose the chapters into the full book, after running ./, execute ./

To generate a single chapter (for example, the Teapot chapter):

./pillar export Teapot/Teapot.pillar

###Adding a chapter

To add a chapter create a directory for it (named, e.g., Example) and put there a .pillar file (named, e.g., Example.pillar) which will contain the chapter itself. Put images in the figures subdirectory of the new chapter directory.

Add your chapter to:

  • pillar.conf in the inputFiles array as: "Example/Example.pillar"
  • support/latex/book.tex in \graphicspath as {Example/}
  • EnterprisePharo.pillar as ${inputFile:Example/Example.pillar}$


  • You must neither use spaces nor underscores (_) in file names.


Chapter Latest Link reference
1 - Teapot html pdf Chapter *@cha:teapot* link: *Teapot>../Teapot/Teapot.pillar@cha:teapot*
2 - Handling CSV with NeoCSV html pdf Chapter *@cha:neoCSV* link: *NeoCSV>../NeoCSV/NeoCSV.pillar@cha:neoCSV*
3 - JSON html pdf Chapter *@cha:JSON* link: *JSON>../NeoJSON/NeoJSON.pillar@cha:JSON*
4 - STON: a Smalltalk Object Notation html pdf Chapter *@cha:ston* link: *STON>../STON/STON.pillar@cha:ston*
5 - Serializing Complex Objects with Fuel html pdf Chapter *@cha:fuel* link: *Fuel>../Fuel/Fuel.pillar@cha:fuel*
6 - Persisting Objects with Voyage html pdf Chapter *@cha:voyage* link: *Voyage>../Voyage/Voyage.pillar@cha:voyage*
7 - Mustache Templates for Pharo html pdf Chapter *@cha:mustache* link: *Mustache>../Mustache/Mustache.pillar@cha:mustache*
8 - Cascading Style Sheets with RenoirSt html pdf Chapter *@cha:renoirst* link: *RenoirST>../RenoirST/RenoirST.pillar@cha:renoirst*
9 - Documenting your Project with Pillar html pdf Chapter *@cha:pillar* link: *Pillar>../PillarChap/Pillar.pillar@cha:pillar*
10 - Generate PDF documents with Artefact html pdf Chapter *@cha:artefact* link: *Artefact>../Artefact/Artefact.pillar@cha:artefact*
11 - Character Encoding and Resource Meta Description html pdf Chapter *@cha:zincEncoding* link: *Zinc Encoding Meta>../Zinc-Encoding-Meta/Zinc-Encoding-Meta.pillar@cha:zincEncoding*
12 - Zinc HTTP: The Client-side html pdf Chapter *@cha:zinc-client* link: *Zinc Client>../Zinc-HTTP-Client/Zinc-HTTP-Client.pillar@cha:zinc-client*
13 - Zinc HTTP: The server side html pdf Chapter *@cha:zinc-server* link: *Zinc Server>../Zinc-HTTP-Server/Zinc-HTTP-Server.pillar@cha:zinc-server*
14 - REST Web Services html pdf Chapter *@cha:zinc-rest* link: *Zinc Rest>../Zinc-REST/Zinc-REST.pillar@cha:zinc-rest*
15 - Building and deploying your first web app with Pharo html pdf Chapter *@cha:webApp* link: *WebApp>../WebApp/WebApp.pillar@cha:webApp*
16 - WebSockets html pdf Chapter *@cha:webSockets* link: *WebSockets>../WebSockets/WebSockets.pillar@cha:webSockets*


There are mods/bundles/packages for text editors, that provide improvements for pillar files editing: