% Prelim.tex copyright 1992 Victor Eijkhout % \Chapter[chap:prelim] Preliminaries \Section What is Lollipop? Lollipop is `\TeX\ made easy'. Lollipop is a macro package that functions as a toolbox for writing \TeX\ macros. It was my intention 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, and that it would be a task that could be accomplished by someone with only a very basic training in \TeX\ programming. Lollipop is an attempt to make structured text formatting available for environments where previously only wysiwyg packages could be used because adapting the layout is so much more easy with them than with traditional \TeX\ macro packages. \Section But is it compatible? Lollipop, like \LaTeX, is not compatible with plain \TeX. I~don't consider this a real problem. Most plain \TeX\ commands will work in \Lollipop\ with the exception of anything output routine related. (See also below.) \Lollipop\ is also not compatible with \LaTeX, although it has a lot of the same functionality. There are two reasons why \Lollipop\ still has a reason for existing, even though \LaTeX\ is used pretty much all over the scientific world. For one, Lollipop is targeted in part to different users than the typical plain \TeX\ or \LaTeX\ user. For another, I~have a vain hope that I~can capture some of the \LaTeX\ market share. Since developing styles in \Lollipop\ is so much more easier than in \LaTeX, I~may stand a fighting chance. \SubSection \Lollipop\ and plain \TeX Having said the above, I'll conceded that \Lollipop\ is more compatible with plain \TeX\ than with \LaTeX. You can use quite some plain \TeX\ commands in \Lollipop. However, stay away from the following:\Description\item \cs{everypar} This one is heavily used by \Lollipop. You may use \cs{EveryPar} instead, which functions pretty much like \cs{everypar}; see section~\ref[sec:everypar].\item \cs{output} Page output is done so very differently from plain \TeX\ that all commands pertaining to page numbers and head/footlines have been eradicated. (Well, \cs{pageno} still gives the page number.) See chapter~\ref[chap:output]. \> The current version of \Lollipop\ is based on the plain \TeX\ file that comes with \TeX\ version~3.0. \SubSection \Lollipop\ and \TeX\ programming The tools in \Lollipop\ allow you to program in a simple manner quite complicated macros. Still you may want to have some knowledge of ordinary \TeX\ macro programming. If you are just starting in \TeX\ you can pick up the basics from the book by Seroul and Levy~\bibref[SeLe:book], and after that there is the book by the original author of \TeX~\bibref[Kn:book] and my own \TeX\ reference guide~\bibref[E:book]. \Section How to Use \Lollipop The following files comprise the Lollipop format: \Ver> fonts.tex lists.tex define.tex heading.tex lollipop.tex text.tex document.tex lolplain.tex output.tex tools.tex> initex lollipop This is TeX, C Version 3.0 (INITEX) (lollipop.tex (lolplain.tex (hyphen.tex)) (tools.tex) (define.tex) (fonts.tex) (text.tex) (document.tex) (heading.tex) (output.tex) (lists.tex)) Beginning to dump on file lollipop.fmt (format=lollipop 92.5.30) 3102 strings of total length 41719 27016 memory locations dumped; current usage is 142&26543 2076 multiletter control sequences \font\nullfont=nullfont ... 2706 words of font info for 12 preloaded fonts 17 hyphenation exceptions Hyphenation trie of length 6075 has 181 ops out of 500 181 for language 0 No pages of output. Transcript written on lollipop.log. > tex &lollipop test > tex &lollipopbookstyle *\dump> tex &bookstyle book Also in the case where the style designer and the style user are on different levels of \TeX pertise it may be wise to hide the style definition from the user by making only a format available. \ImpNote The file \file{lollipop.tex} contains a \cs{dump} command. This is not the way plain \TeX\ and \LaTeX\ operate, but I~like this better. \ImpNoteStop If you have used \TeX\ before, you will notice that the page numbers get reported slightly differently from the usual way. See section~\ref[sec:page-counter] for the explanation. \Section The errors of \Lollipop / known bugs Since \Lollipop\ is an order of magnitude more powerful (and hence complicated) than formats such as \LaTeX, its error messages can also be an order of magnitude more cryptic (see section~\ref[sec:error-msg] for the possible origin of some of the more obscure error messages). Fortunately, \Lollipop\ is also quite a bit better than existing formats at catching potential errors. Typos in a style definition will usually lead to warning messages, and also during run time \Lollipop\ is able to track down ommisions. In addition, you can switch on various trace modes to get more detailed information about \Lollipop's thought processes. See chapter~\ref[chap:tracing]. These are the known bugs in \Lollipop\ at the moment. \Enumerate\item Local references have been insufficiently tested, and the code definitely is buggy. \item The `firstpage' test in the page grids does not work. \item The table of contents example is slightly wrong. \item Titles get written to the aux file with double spaces. This shouldn't cause any problem, but it has to be fixed. \item Rules in page grids get white space around them. \item External items shouldn't declare \cs{FooTitle} or \cs{FooCounter}. \item \cs{ToExternalFile} doesn't work. \> \Section About this manual This manual consists of a main file \file{manual.tex}, and the following input files: \Ver> titlepag.tex prelim.tex struct.tex head.tex list.tex out.tex extern.tex opt.tex comm.tex trace.tex appendix.texHere is how much of TeX's memory you used: 1259 strings out of 4808 14894 string characters out of 21967 62606 words of memory out of 65536 3042 multiletter control sequences out of 10000 19 hyphenation exceptions out of 307 22i,4n,24p,225b,502s stack positions out of 200i,60n,60p,5000b,2000s Victor Eijkhout Department of Computer Science University of Tennessee 107 Ayres Hall Knoxville TN 37996 USA \SubSection A bit of history The \Lollipop\ format was begun in late 1989 to typeset my Ph.D. thesis, `{\Style:italic Vectorizable and Parallelizable Preconditioners for the Conjugate Gradient Method}'. At that time I~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 my book `{\Style:italic \TeX\ by Topic}', for which I~used Sun~3 and Sun~4 computers. Writing this manual brought \Lollipop\ to its present state; the first public release (version~0.9) was announced on the internet in October 1992. At present I~am using Lightning Textures on a Macintosh Powerbook~145. The name `\cs{Lollipop}' refers to a quote by Alan Perlis~\bibref[Pe:epigrams], quoted on page 365 of the \TeX book~\bibref[Kn:book]. In a way it's rather pretentious. The philosophy of the \cs{Lollipop} format is described~\bibref[EL:Cork,E:Portland]. \endinput 92/10/22 historical remark about name added 92/11/03 section 'Lollipop and plain TeX' added; remarks about IniTeX in Textures 92/11/26 uses bibrefs