The Lollipop Project

When someone says, “I want a programming language in which I need only say what I wish done,” give him a lollipop.

—  ALAN PERLIS, Epigrams on Programming (1982)

Lol­lipop is “TeX made easy” — it is a macro pack­age that func­tions as a tool­box for writ­ing TeX macros. Its main aim is to make macro writing so easy that im­ple­ment­ing a fully new lay­out in TeX would be­come a mat­ter of less than an hour for an av­er­age doc­u­ment. The aim is that such a task could be ac­com­plished by some­one with only a very ba­sic train­ing in TeX pro­gram­ming.

Thus, Lol­lipop aims to make struc­tured text for­mat­ting avail­able in en­vi­ron­ments where typ­i­cal users would switch to WYSIWYG pack­ages for the free­dom that such a mech­a­nism of­fers.

In ad­di­tion, de­vel­op­ment of sup­port for Lol­lipop doc­u­ments writ­ten in RTL lan­guages (such as Per­sian) is un­der­way.

You can find more information about Lollipop in the manual.


The Lollipop project was begun in late 1989 to typeset Victor Eijkhout's Ph.D. thesis, ‘Vectorizable and Parallelizable Preconditioners for the Conjugate Gradient Method’. At that time Victor was using TeX on an Atari 1040ST. Loading the style definition for the thesis took about two minutes. Lollipop was heavily augmented in late 1991 to typeset his book ‘TeX by Topic’, for which he used Sun 3 and Sun 4 computers. Writing Lollipop's manual brought Lollipop to its version 0.96; the first public release (version 0.9) was announced on the internet in October 1992.

Between 1992 and 2014, Lollipop was unmaintained and Vafa Karen-Pahlav took over the development of Lollipop in April 2014.

The name ‘Lollipop’ refers to the above quote by Alan Perlis, quoted on page 365 of the TeXbook.

How to install Lollipop?

If you have a recent TeX distribution (TeXLive or MiKTeX), then there is nothing to do; Lollipop binaries are included in your TeX distribution.

How to use Lollipop?

Lollipop comes in the following three formats

  • lollipop uses PdfTeX and produces pdf output.
  • lualollipop uses LuaTeX and produces pdf output.
  • xelollipop uses XeTeX and produces pdf output.

Assuming you know how to write an input Lollipop document, you can process your document by the following command

$ lollipop filename.tex


$ lualollipop filename.tex


$ xelollipop filename.tex

depending on which of the engines you wish to use.


Lollipop documents have a very simple structure; for instance the Hello world document in lollipop is

Hello world typeset by Lollipop.

Here \Start shows the beginning of the document and \Stop shows the end of the document.

Your definitions can be put before \Start or you can alternatively put your definitions in a separate Lollipop file and then load your definitions in your main document by


Learning Lollipop

The best way to learn Lollipop is reading the manual and doing the examples yourself.

If you find that something written in the manual does not work or it does not make sense, then please open a ticket on the Tickets.


After the manual, your second source of useful information, example files, of answers to frequently asked questions is the Wiki. The idea is that Lollipop users add useful tips and tricks, or anything related to Lollipop here.

This Wiki is maintained by Vafa Karen-Pahlav.

Mailing lists

There are two mailing lists for Lollipop. The first mailing list is used solely to announce new versions of Lollipop. Traffic on this list is very light, as most messages on this list come from me. You can subscribe to the announcement list here.

The second list is used to discuss Lollipop. You can subscribe here. Please don't use it to report bugs—the bug tracker is much better at that.

Both lists are maintained by Vafa Karen-Pahlav.


You may open a ticket on the Tickets to

  • Report issues with Lollipop;
  • Report typos in the manual;
  • Ask for new features;
  • Suggest fixes or workarounds for existing bugs.

Before reporting an issue, please verify that you have the latest Lollipop version, and check that the problem is not explained in the frequently asked questions on the Wiki. Please do not send issue reports directly to me (the first thing I would do with your report is to enter it into the bug tracker).

Testing the development version

You may like to test the development version of Lollipop; this section describes how you can download the development version of Lollipop and build the Lollipop formats.

To demonstrate how you can build the Lollipop formats, we use the lollipop format here as an example. Other Lollipop formats can be built similarly.

To build the lollipop format, follow the following instructions

  1. Download Snapshot. This will download the latest development version of Lollipop as a zip file on your computer.
  2. Extract the zip file.
  3. Move all the .ini files from the config/ subdirectory into the tex/ subdirectory.
  4. The process of building each Lollipop format is described at the end of the .ini files. Thus to build the lollipop format, we open a terminal and write the following commands
    $ cd tex 
    $ pdftex -ini   -jobname=lollipop -progname=lollipop -translate-file=cp227.tcx -etex lollipop.ini
    This will create the file lollipop.fmt. This file is all you need; therefore you can get rid of the rest of the files.
  5. Put the file lollipop.fmt in the same directory as your input Lollipop document. If your input Lollipop document is test.tex, then to produce the pdf output, run the following command
    $ pdftex --fmt=lollipop.fmt test.tex


The current version of Lollipop is 1.03.

Ideally, when you update your TeX distribution, you will have the latest version of Lollipop.

You may download older versions of Lollipop from SourceForge.


Lollipop is "free," this means that everyone is free to use it and free to redistribute it on certain conditions. Lollipop is not in the public domain; it is copyrighted and there are restrictions on its distribution as follows:

Copyright © 1992–1993 Vic­tor Ei­jkhout

Copyright © 2014 Vafa Karen-Pahlav

This program is free software; you can redistribute it and/or modify it under the terms of the Gnu General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the Gnu General Public License for more details.


If you enjoy Lollipop and want to support the project, then please donate to the project. It encourages me to continue, and is the perfect way to say thank you!

You may use PayPal to give back. Any amount is appreciated!

If for some reason you have a problem using PayPal: please check the online help provided by PayPal.