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)
Lollipop is “TeX made easy” — it is a macro package that functions as a toolbox for writing TeX macros. Its main aim is to make macro writing so easy that implementing a fully new layout in TeX would become a matter of less than an hour for an average document. The aim is that such a task could be accomplished by someone with only a very basic training in TeX programming.
Thus, Lollipop aims to make structured text formatting available in environments where typical users would switch to WYSIWYG packages for the freedom that such a mechanism offers.
In addition, development of support for Lollipop documents written in RTL languages (such as Persian) is underway.
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.
If you have a recent TeX distribution (TeXLive or MiKTeX), then there is nothing to do; Lollipop binaries are included in your TeX distribution.
Lollipop comes in the following three formats
lollipopuses PdfTeX and produces pdf output.
lualollipopuses LuaTeX and produces pdf output.
xelollipopuses 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
\Start Hello world typeset by Lollipop. \Stop
\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
\InputLollipop:yourdefinitionfile \Start ... \Stop
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.
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
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).
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
lollipop format here as an example. Other Lollipop
formats can be built similarly.
To build the
lollipop format, follow the following instructions
.inifiles from the
config/subdirectory into the
.inifiles. Thus to build the
lollipopformat, we open a terminal and write the following commands
This will create the file
$ cd tex $ pdftex -ini -jobname=lollipop -progname=lollipop -translate-file=cp227.tcx -etex lollipop.ini
lollipop.fmt. This file is all you need; therefore you can get rid of the rest of the files.
lollipop.fmtin 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 Victor Eijkhout
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.