Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Open source LaTeX of Pharo By Example

branch: master

msomehow point

latest commit ba514eab94
Ducasse Ducasse authored September 19, 2013
Octocat-spinner-32 Admin Script to convert OmniGraffle to png January 27, 2010
Octocat-spinner-32 BasicClasses Small fixes to make all PBE1 tests green. May 10, 2011
Octocat-spinner-32 Collections Small fixes to make all PBE1 tests green. May 10, 2011
Octocat-spinner-32 DBXTalk plouf June 23, 2012
Octocat-spinner-32 Environment Large number of corrections from Max Leske in PBE1 and Exceptions cha… March 11, 2010
Octocat-spinner-32 Exceptions Merge branch 'master' of github.com:SquareBracketAssociates/PharoByEx… September 12, 2011
Octocat-spinner-32 FAQ Small fixes to make all PBE1 tests green. May 10, 2011
Octocat-spinner-32 FirstApp Addressing mouseAction May 21, 2013
Octocat-spinner-32 Messages msomehow point September 19, 2013
Octocat-spinner-32 Metaclasses rewrite a few questionable sentences. November 08, 2011
Octocat-spinner-32 Model Small fixes to make all PBE1 tests green. May 10, 2011
Octocat-spinner-32 Monticello migrating more to svn September 12, 2011
Octocat-spinner-32 Morphic Large number of corrections from Max Leske in PBE1 and Exceptions cha… March 11, 2010
Octocat-spinner-32 Omnibrowser migrating more to svn September 12, 2011
Octocat-spinner-32 Preface cleaning block chapter August 17, 2011
Octocat-spinner-32 QuickTour Revert "Merge pull request #16 from bencoman/pharo1.4" May 20, 2013
Octocat-spinner-32 Reflection Small fixes to make all PBE1 tests green. May 10, 2011
Octocat-spinner-32 Regex migrating more to svn September 12, 2011
Octocat-spinner-32 SUnit Large number of corrections from Max Leske in PBE1 and Exceptions cha… March 11, 2010
Octocat-spinner-32 Seaside Large number of corrections from Max Leske in PBE1 and Exceptions cha… March 11, 2010
Octocat-spinner-32 Streams Convert graffle figures to 300dpi png January 27, 2010
Octocat-spinner-32 Syntax Long list of errata from Erwann Wernli corrected September 18, 2009
Octocat-spinner-32 figures adding expanders August 24, 2011
Octocat-spinner-32 .gitignore one more file to ignore September 29, 2011
Octocat-spinner-32 .svnignore Updated .svnignore September 18, 2009
Octocat-spinner-32 Makefile Testing instructions May 10, 2011
Octocat-spinner-32 PBE-Omnibus.bbl bbl; LOGs; TODOs August 12, 2009
Octocat-spinner-32 PBE-Omnibus.tex figures in FAQ September 25, 2009
Octocat-spinner-32 PBE-TO-DO.txt Small fixes to make all PBE1 tests green. May 10, 2011
Octocat-spinner-32 PBE1.bbl Final small formatting fixes August 28, 2009
Octocat-spinner-32 PBE1.tex first cut at FileSystem February 15, 2010
Octocat-spinner-32 README.markdown Update README.markdown November 22, 2011
Octocat-spinner-32 common.tex added guillermo polito as author of the dbxtalk chapter and contributor September 18, 2011
Octocat-spinner-32 commonDemo.tex remove noisy tags; left TO-DO tags June 30, 2009
Octocat-spinner-32 contributors.txt added guillermo polito as author of the dbxtalk chapter and contributor September 18, 2011
Octocat-spinner-32 errata.txt Syntax errors to be fixed October 23, 2010
Octocat-spinner-32 examples.rb examples timestamp September 30, 2009
Octocat-spinner-32 history.sh history July 15, 2009
Octocat-spinner-32 history.txt preparing test version of omnibus for lulu August 12, 2009
Octocat-spinner-32 pbe1-examples.txt Revert "Merge pull request #16 from bencoman/pharo1.4" May 20, 2013
Octocat-spinner-32 pbe2-examples.txt Fix minus sign in listings for copy-paste May 16, 2010
README.markdown

Important

The chapters for Pharo by example Two have been moved to https:/scm.gforge.inria.fr/svn/pharobooks/PharoByExampleTwo-Eng/. The chapters for Pharo by example one are still managed on this git repository so that translators may pull requests.

Pharo by Example

This is the LaTeX source repository of the Pharo by Example books 1 and 2.

The public web site of the books is: http://pharobyexample.org/

All the source repos live here: http://github.com/SquareBracketAssociates/

See PBE-TO-DO.txt for status of tasks for PBE 1 and 2.

Contributing to Pharo by Example one

Pharo by Example volume one is managed on https://github.com/SquareBracketAssociates/PharoByExample-english

To contribute to the book or to a translation project, please:

To start a new translation project:

Contributing to Pharo by Example Two

Pharo by example Volume is managed using svn:

To contribute to the book or to a translation project (we should finish it first), please:

  • subscribe to https://www.iam.unibe.ch/mailman/listinfo/sbe-discussion;
  • register to the htpp://gforge.inria.fr (use RMOD as team) and send an email to sbe-discussion (we will add you to the PharoBooks project)
  • if you are unsure who is in charge, ask on the list;
  • checkout what you want: svn co https://xxxx@scm.gforge.inria.fr/svn/pharobooks/PharoByExampleTwo-Eng
  • publish the changes and notify the list.

License

This work is licensed under Creative Commons Attribution-ShareAlike 3.0 Unported http://creativecommons.org/licenses/by-sa/3.0/

You are free:

  • to Share -- to copy, distribute and transmit the work
  • to Remix -- to adapt the work

Under the following conditions:

Attribution. You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work). Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under the same, similar or a compatible license. For any reuse or distribution, you must make clear to others the license terms of this work. The best way to do this is with a link to this web page. Any of the above conditions can be waived if you get permission from the copyright holder. Nothing in this license impairs or restricts the author's moral rights.

Disclaimer

Your fair dealing and other rights are in no way affected by the above. This is a human-readable summary of the Legal Code (the full license).


File structure

The main file is PBE1.tex (resp. PBE2.tex). Chapters are in subdirectories. You can latex either the entire book, or each individual chapter. Each chapter file starts and ends with the same incantation which will optionally include macros or end the document if it is latexed individually.

Use the \ct{} macro for in-line code. Use the {method} {classdef} {example} and {script} environments for multi-line code.

If you add a new chapter:

  • please be sure to include it from PBE1.tex.
  • Remember to include its /figures/ subdirectory in the graphicspath, which is set in the preamble to PBE1.tex. Don't forget the trailing /
  • Please make sure the chapter compiles with latex both from the main book and as a separate chapter.
  • Set the svn:ignore property on the chapter's directory. The command to do this is svn propset svn:ignore -F .svnignore

IMPORTANT: Please check out a fresh copy of the book and compile the book to verify that you have added all the dependent files (e.g., figures).

Makefile

To build the PDF of the book, simply run "make" in the Book folder. Be sure you have texlive installed (see below).

Printing

The book has been reformatted to 6"x9" (for Lulu). If you want to print any part of the book, you will find that printing 2 up at 140% works well.


Testing

Tests are automatically generated from the LaTeX sources.

Grab a recent Pharo image and move it to the folder Pharo book folder. Do not use a 1-click image, since the actual image should be located at the same level as the PBE1.tex file.

To run the tests, load the package PBE-Testing from the following SqueakSource project:

MCHttpRepository
    location: 'http://www.squeaksource.com/PharoByExample'
    user: ''
    password: ''

Then evaluate the following expression in a workspace:

PBEmain new runTests

For PBE2, instead run:

PBE2main new runTests

This will automatically extract and run the tests in the LaTeX sources of the Pharo by Example book. It will also load the hands-on exercises, and check that they are working. (Some tests may also be included from the dependent hands-on packages.)

This will parse (using Regex) the PBE1.tex (resp. PBE2.tex) to locate the included chapter files, parse each chapter file to search for @TEST annotations, generate test case classes for each chapter with tests in a new category PBE-GeneratedTests, and generate a test method (numbered by the line number in the chapter) for each test found. (NB: Any old generated tests are removed before new ones are generated.) Finally, by sending "runTests", a TestRunner is opened on the new category, and all those tests are run.

How to write tests in LaTeX

A sample test in the BasicClasses looks like this:

=\begin{code}{@TEST}
=a1 := { { 'harry' } } .
=a2 := a1 shallowCopy.
=(a1 at: 1) at: 1 put: 'sally'.
=(a2 at: 1) at: 1 --> 'sally'
=\end{code}

The "print it" invocation (-->) will generate an assertion.

The generated source code looks like this:

=test204
=   a1 := { { 'harry' } } .
=   a2 := a1 shallowCopy.
=   (a1 at: 1) at: 1 put: 'sally'.
=   self assert: [ (a2 at: 1) at: 1  ] value printString = '''sally'''

You may also silently declare or initialize variables immediately after @TEST, and you may now place comments after the test string:

=\begin{code}{@TEST |a b|}
=a := b := 'hello'.
=a == b --> true "two variables but one object"
=\end{code}

The generated testCase subclass is PBEBasicClassesTestCase.

The generated tests can be removed by evaluating "PBEmain removeOldTestCategory". This is done automatically whenever you do "PBEmain new runTests".


LaTeX version

Please use at least texlive 2005. http://www.tug.org/texlive/ If you are using TeXshop or another GUI, be sure to set the path to the tex executables. E.g., in TeXShop>Preferences>Engine set the path to: /usr/local/texlive/2005/bin/powerpc-darwin

For intel macs you will need texlive 2007. The path should be /usr/local/texlive/2007/bin/i386-darwin

OmniGraffle files

Please be sure to use Lucida Sans, not Helvetica, or you may have problems uploading the PDF to Lulu. See the font embedding FAQ on lulu.com See more detailed instructions in Cover/README.txt

Style files

To inform latex about the location of local style files, set the following environment variable (tcsh):

setenv TEXINPUTS ./local//:../local//:
    or (bash):
export TEXINPUTS=./local//:../local//:

If you are using a GUI like TeXshop, you must set the environment variable in ~/.MacOSX/environment.plist :

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>TEXINPUTS</key>
    <string>./local//:../local//:</string>
</dict>
</plist>

NB: You may need to logout and login again after creating or modifying this file. Note colon at end of TEXINPUTS that means "append current value here" (eg local has higher priority). Double slash means search recursively.

Bibliography

The bibliography file scg.bib is available from a separate git repository:

git clone git@scg.unibe.ch:scgbib

Alternatively, you can check out a read-only version as follows:

git clone git://scg.unibe.ch/scgbib

You should separately check out this file and link it in wherever it is needed.


Something went wrong with that request. Please try again.