lipsum access to 150 paragraphs of lorem ipsum dummy text...the lorem ipsum...-dummy text and which...

87
lipsum Access to 150 paragraphs of Lorem Ipsum dummy text ab Patrick Happel c March 3, 2021 Abstract lipsum is a L A T E X package that produces dummy text to be used in test documents or examples. The para- graphs are taken with permission from https://www. lipsum.com/, thanks to James Wilson for this work. Furthermore, the following people contributed to lip- sum by suggesting improvements, correcting bugs or finding typos in the documentation: Florent Chervet, Ulrike Fischer, Vincent Belaïche, Enrico Gregorio, Frank Mittelbach, Karl Hagen. Please, file bug reports, typos in the documentation or feature requests as an issue on https://github. com/PhelypeOleinik/lipsum/issues. a Version: 2.3 b Since March 2021, Phelype Oleinik maintains this package (phelype.oleinikat latex-project.org). c [email protected] 1 Quick usage overview To load the package specify \usepackage{lipsum} in the preamble of your document. This package provides several macros. The most important one is \lipsum. This macro typesets \lipsum the Lorem ipsum paragraphs. It has two optional arguments. The first one allows to specify the range of the paragraphs. For example, \lipsum[4-57] typesets the paragraphs 4 to 57 and accordingly, \lipsum[23] typesets the 23 rd paragraph. Using \lipsum with- out its optional argument typesets the paragraphs 1–7 of Lorem ipsum. . . As of version 2.0, \lipsum has a second optional argument which allows selecting a range of sentences from the paragraphs. To get the sentences four to eight from paragraphs three to nine, use \lipsum[3-9][4-8]. 2 Foreword to Version 2.0 Version 2.0 of lipsum is a complete (well, nearly complete) rewrite of the code in expl3 syntax. I have never used expl3 before and thus the code might be too complicated, might use wrong or badly chosen data types or weird function names. I am happy to receive comments on this. Due the complete rewrite, some internals have changed which might impact older documents. Since, however, I guess that lipsum is not used for documents with true, important, content, I think potentially breaking up old documents is not a big issue here. The changes are: • The package option nopar now uses a \space as terminator, instead of \relax. 1

Upload: others

Post on 26-Jan-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

  • lipsumAccess to 150 paragraphs of Lorem Ipsum dummy textab

    Patrick Happelc

    March 3, 2021

    Abstract

    lipsum is a LATEX package that produces dummy textto be used in test documents or examples. The para-graphs are taken with permission from https://www.lipsum.com/, thanks to James Wilson for this work.Furthermore, the following people contributed to lip-sum by suggesting improvements, correcting bugs or

    finding typos in the documentation: Florent Chervet,Ulrike Fischer, Vincent Belaïche, Enrico Gregorio,Frank Mittelbach, Karl Hagen.

    Please, file bug reports, typos in the documentationor feature requests as an issue on https://github.com/PhelypeOleinik/lipsum/issues.

    aVersion: 2.3bSince March 2021, Phelype Oleinik maintains this package (phelype.oleinik〈at〉latex-project.org)[email protected]

    1 Quick usage overviewTo load the package specify

    \usepackage{lipsum}

    in the preamble of your document. This package provides severalmacros. The most important one is \lipsum. This macro typesets\lipsumthe Lorem ipsum paragraphs. It has two optional arguments. Thefirst one allows to specify the range of the paragraphs. For example,\lipsum[4-57] typesets the paragraphs 4 to 57 and accordingly,\lipsum[23] typesets the 23rd paragraph. Using \lipsum with-out its optional argument typesets the paragraphs 1–7 of Loremipsum. . .

    As of version 2.0, \lipsum has a second optional argumentwhich allows selecting a range of sentences from the paragraphs.To get the sentences four to eight from paragraphs three to nine,use \lipsum[3-9][4-8].

    2 Foreword to Version 2.0Version 2.0 of lipsum is a complete (well, nearly complete) rewriteof the code in expl3 syntax. I have never used expl3 before andthus the code might be too complicated, might use wrong or badlychosen data types or weird function names. I am happy to receivecomments on this.

    Due the complete rewrite, some internals have changed whichmight impact older documents. Since, however, I guess that lipsumis not used for documents with true, important, content, I thinkpotentially breaking up old documents is not a big issue here. Thechanges are:

    • The package option nopar now uses a \space as terminator,instead of \relax.

    1

    https://www.lipsum.com/https://www.lipsum.com/https://github.com/PhelypeOleinik/lipsum/issueshttps://github.com/PhelypeOleinik/lipsum/issuesmailto:[email protected]

  • • The commands \UnpackLipsum and \UnpackLipsum* are nolonger available. The effect of \UnpackLipsum now is de-fault for \unpacklipsum (or \unpacklipsum*, depending onthe package option). The effect of \UnpackLipsum* can bemimicked by using \LipsumProtect{〈command〉}, as in thefollowing example:

    \documentclass{article}\usepackage{lipsum,xcolor}\newcommand\foo{}\SetLipsumParListItemEnd{\LipsumProtect{\foo}}

    \begin{document}\renewcommand\foo{\color{.!75!red}}{ \lipsumexp }

    \newcounter{mycnt}\setcounter{mycnt}{1}\renewcommand\foo{%

    (\themycnt)\stepcounter{mycnt}}\lipsumexp

    \end{document}

    • The internal macros \lips@i, \lips@ii, \lips@iii, . . . ,\lips@cl are no longer available.

    • All other internal macros (with one exception) are no longeravailable, too.

    3 Foreword to version 2.2As of version 2.2, lipsum provides a simple interface to define othertexts to be used as output of the \lipsum-family of commands.This was heavily inspired by an issue raised by svenper on github1.However, the implementation of this interface might not match theneeds of everyone who wants to provide a dummy text in anotherlanguage. Comments and suggestions on this are very welcome.

    Please note that the documentation still only refers to theLorem ipsum. . . -text.

    4 Usagelipsum was intended to quickly provide a way to fill a page or two toanalyze the page layout2. While it has grown in the meanwhile andnow provides some more advanced features, it still is only intendedto quickly provide text. If you want more features, look at theblindtext-package.

    4.1 Package Optionslipsum outputs a range of paragraphs taken from the Lorem ip-sum. . . dummy text. The package option controls how the singleparagraphs of Lorem ipsum. . . are separated. The default is to sep-arate the paragaraph with \par. One option is available to changethe default behaviour:

    1https://github.com/patta42/lipsum/issues/132https://groups.google.com/d/topic/de.comp.text.tex/oPeLOjkrLfk/

    discussion

    2

    https://github.com/patta42/lipsum/issues/13https://groups.google.com/d/topic/de.comp.text.tex/oPeLOjkrLfk/discussionhttps://groups.google.com/d/topic/de.comp.text.tex/oPeLOjkrLfk/discussion

  • nopar: Instead of \par, \space is used to separate the paragraphs.

    4.2 User Commands\lipsum

    \lipsum* \lipsum[〈paragraph range〉][〈sentence range〉]\lipsum*[〈paragraph range〉][〈sentence range〉]

    \lipsum (and \lipsum*) uses a 〈range〉 as input. A 〈range〉 consistseither of a single 〈number〉 or two numbers separated by a dash (-),as in 〈number1〉-〈number2〉. While syntactically correct, \lipsum(and related commands) might fail if 〈number2〉 < 〈number1〉.

    If used without an argument, \lipsum outputs the paragraphs1–7 of Lorem ipsum. . . (as long as the default has not been overwrit-ten, see below). \lipsum terminates every paragraph depending onthe package option (using \par is the default). \lipsum* does thesame, but uses a different termination (default is to use a blankspace) for each paragraph. As a simplified rule of thumb, \lipsumprints the paragraphs as multiple paragraphs, \lipsum* prints themas a single paragraph.

    To change the range of the paragraphs, specify a 〈paragraphrange〉, which can either be a single number, as in \lipsum[23](which will output the 23rd paragraph), or two numbers separatedby a dash, as in \lipsum*[9-12], which will output the paragraphsnine to twelve. lipsum provides 150 paragraphs of Lorem ipsum. . .thus 150 is the maximum that should be specified.

    4.3 Outputting Sentences instead of ParagraphsStarting with lipsum v2.0, \lipsum and \lipsum* allow to out-put sentences of the Lorem ipsum. . . dummy text instead of para-graphs. To retrieve sentences instead of paragraphs, specify a〈sentence range〉 as the second optional argument of \lipsum and\lipsum*. Note: To be able to specify a second optional argu-ment, the first optional argument has to be provided and is thusnot really optional anymore. Furthermore, it must be set to some〈range〉-value, using an empty first optional argument is not imple-mented. As a consequence \lipsum[][1-3] will fail.

    Valid inputs for 〈sentence range〉 are, again, a single number, asin \lipsum[1][1], which will output the first sentence of the firstparagraph (the famous »Lorem ipsum dolor sit amet, consectetueradipiscing elit.«). \lipsum*[3-7][7-8] will output the seventhand eighth sentence of the paragraphs three to seven.

    There are some limitations and remarks on selecting sentencesas described in the following:

    • When sentences are output, they are (by default) separatedby \space. The difference between \lipsum and \lipsum* isthe token that terminates the paragraph of sentences: With-out a package option (and changing the defaults), \lipsumterminates the sequence of senetences by \par, \lipsum* by\space and vice versa, if nopar is specified as package option.

    • Specifying a 〈sentence range〉 which is outside the num-ber of sentences in the specified 〈paragraph range〉 will notlead to an error. Instead, sentences which are not avail-able are ignored and nothing is output. For example,\lipsum[104][9-20] will only output two sentences sinceparagraph #104 consists only of 10 sentences. For the samereason, \lipsum[104][11-20] will output nothing.

    3

  • • If you need a lot of sentences, consider the space option and\lipsum[1-150]. This should be faster.

    5 Advanced or Developer MacrosTo distinguish between macros for users and macros for, for exam-ple, package developers, it has been discussed to use different nam-ing schemes. One option is that user level macros are all lowercase,while developer-level commands are CamelCase. Until version 2.0,lipsum has not yet followed this convention. Thus, the old lowercasecommands are still available, but considered deprecated. They arenot described in this section, but in the corresponding section in thedocumented code (section User- and developer-level commands).

    In order to change the default range of paragraphs that is\SetLipsumDefaultused by \lipsum and friends, specify \SetLipsumDefault{8} or\SetLipsumDefault{123-145}.

    To get a single paragraph of the Lorem ipsum. . . dummy text,\LipsumParuse \LipsumPar{8} (for the eighth paragraph). This is similarto using \lips@viii directly in versions prior to lipsum2.0. thedifference between \LipsumPar{8} and \lipsum[8] is that the firstdirectly accesses the internal macro that stores the correspondingparagraph, while the latter runs the loop that selects the Loremipsum. . . paragraphs.

    The commands \unpacklipsum and \unpacklipsum* work as\unpacklipsum\unpacklipsum*

    \lipsumexp\lipsum and \lipsum* and have the same two optional arguments,but instead of typesetting the Lorem ipsum. . . paragraphs, thecommands store them in the macro \lipsumexp using \edef, thus,everything which can be expanded is expanded.

    5.1 Fine-tuning the outputThe output of \lipsum, whether paragraphs or sentences, can beseen as a 〈list〉 of 〈item〉s, where an item is either a paragraph or asentence. As of version 2.0, lipsum allows to fine-tune which tokensare inserted at the beginning of the 〈list〉, at the end of the 〈list〉,at the beginning and end of each 〈item〉 as well as between thesingle 〈items〉. The resulting list of tokens can be seen in Figure 1.

    lipsum allows to specify all of the tokens in the list indicated\SetLipsumParListStart\SetLipsumParListStart*

    \SetLipsumParListEnd\SetLipsumParListEnd*

    \SetLipsumSentenceListStart\SetLipsumSentenceListStart*

    \SetLipsumSentenceListEnd\SetLipsumSentenceListEnd*

    above except for the item-specific inner and outer 〈items〉 (shownas 〈itemN ,s-outer/inner〉, 〈itemN ,e-outer/inner〉 above), which re-main to be implemented.

    The macros that enable setting these tokens are all availablein a normal and in a starred version, they apply to \lipsum and\unpacklipsum or \lipsum* and \unpacklipsum*, respectively.

    The macro \SetLipsumParListStart{〈tokens〉} and itsstarred variant insert 〈tokens〉 at the very beginning of the list ofparagraphs (〈lists〉 in Figure 1). \SetLipsumSentenceListStartand \SetLipsumSentenceListStart* do the same for the listof sentences. The corresponding macros that allow to in-put 〈tokens〉 at the very end of the output (〈liste〉 in Fig-ure 1) are \SetLipsumParListEnd (and its starred variant)and \SetLipsumSentenceListEnd (and its starred variant).

    As a shorthand, the commands

    . \SetLipsumParListSurrounders{〈start〉}{〈end〉}\SetLipsumParListSurrounders

    . \SetLipsumParListSurrounders*{〈start〉}{〈end〉}\SetLipsumParListSurrounders*

    . \SetLipsumSentenceListSurrounders{〈start〉}{〈end〉}\SetLipsumSentenceListSurrounders

    4

  • 〈lists〉 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . \SetLipsumParListStart{〈tokens〉}〈item1,s-outer〉 . . . . . . . . . . . . . . \SetLipsumParListOuterItemStart{〈item spec〉}{〈tokens〉}

    〈items〉 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . \SetLipsumParListItemStart{〈tokens〉}〈item1,s-inner〉 . . . . . . . . . . \SetLipsumParListInnerItemStart{〈item spec〉}{〈tokens〉}

    〈item1〉〈item1,e-inner〉 . . . . . . . . . . . . \SetLipsumParListInnerItemEnd{〈item spec〉}{〈tokens〉}

    〈iteme〉 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . \SetLipsumParListItemEnd{〈tokens〉}〈item1,e-outer〉 . . . . . . . . . . . . . . . . \SetLipsumParListOuterItemEnd{〈item spec〉}{〈tokens〉}

    〈item-separator〉 . . . . . . . . . . . . . . . . . . . . . . . . . . \SetLipsumParListItemSeparator{〈tokens〉}

    . . . ↑ lists of paragraphs ↑ — ↓ lists of sentences ↓

    〈item-separator〉 . . . . . . . . . . . . . . . . . . . . . . \SetLipsumSentenceListItemSeparator{〈tokens〉}〈itemN ,s-outer〉 . . . . . . . . . \SetLipsumSentenceListOuterItemStart{〈item spec〉}{〈tokens〉}

    〈items〉 . . . . . . . . . . . . . . . . . . . . . . . . . . . . \SetLipsumSentenceListItemStart{〈tokens〉}〈itemN ,s-inner〉 . . . . . . \SetLipsumSentenceListInnerItemStart{〈item spec〉}{〈tokens〉}

    〈itemN 〉〈itemN ,e-inner〉 . . . . . . . . \SetLipsumSentenceListInnerItemEnd{〈item spec〉}{〈tokens〉}

    〈iteme〉 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . \SetLipsumSentenceListItemEnd{〈tokens〉}〈itemN ,e-outer〉 . . . . . . . . . . . \SetLipsumSentenceListOuterItemEnd{〈item spec〉}{〈tokens〉}

    〈liste〉 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . \SetLipsumSentenceListEnd{〈tokens〉}

    Figure 1: Places where additional tokens canbe inserted in the output. N indicates the last〈item〉, ‘. . . ’ indicate the same structure as forthe first and last 〈item〉. Commands colored

    gray are not yet implemented. The upper partdisplays the commands for lists of paragraphs,the lower part for lists of sentences (also indi-cated by the labelled arrows in the middle).

    . \SetLipsumSentenceListSurrounders*{〈start〉}{〈end〉}\SetLipsumSentenceListSurrounders*

    are available to set the 〈tokens〉 for the start and end position witha single command.

    To add 〈tokens〉 in front of every 〈item〉, the commands\SetLipsumParListItemStart\SetLipsumParListItemStart*

    \SetLipsumParListItemEnd\SetLipsumParListItemEnd*

    \SetLipsumSentenceListItemStart\SetLipsumSentenceListItemStart*

    \SetLipsumSentenceListItemEnd\SetLipsumSentenceListItemEnd*

    \SetLipsumParListItemStart (and its starred variant) and\SetLipsumSentenceListItemStart are available. To addtokens after every 〈item〉, the corresponding commands are\SetLipsumParListItemEnd (and its starred variant) and\SetLipsumSentenceListItemStart (and its starred variant).

    Again, there are commands that allow to set a pair of 〈tokens〉to surround every item:

    . \SetLipsumParListItemSurrounders{〈start〉}{〈end〉}\SetLipsumParListItemSurrounders

    . \SetLipsumParListItemSurrounders*{〈start〉}{〈end〉}\SetLipsumParListItemSurrounders*

    . \SetLipsumSentenceListItemSurrounders{〈start〉}{〈end〉}\SetLipsumSentenceListItemSurrounders

    . \SetLipsumSentenceListItemSurrounders*{〈start〉}{〈end〉}\SetLipsumSentenceListItemSurrounders*

    To insert 〈tokens〉 between the single 〈item〉s, the commands\SetLipsumParListItemSeparator\SetLipsumParListItemSeparator*

    \SetLipsumSentenceListItemSeparator\SetLipsumSentenceListItemSeparator*

    \SetLipsumParListItemSeparator (with its starred variant) and\SetLipsumSentenceListItemSeparator (also with its starredvariant) are available. As can be seen in Figure 1, these tokensare inserted after the tokens inserted by \...ListItemEnd and be-fore the following \...ListItemStart.

    To insert 〈tokens〉 that survive the expansion by\LipsumProtect\unpacklipsum and \unpacklipsum*, lipsum provides\LipsumProtect{〈tokens〉}. See the example in the Forewordto Version 2.0.

    The macros introduced above can be used to turn the output of\lipsum, for example, into a list, as exemplified in Figure 2. Thegray commands in Figure 1 are thought to allow inserting 〈tokens〉

    5

  • Code

    \SetLipsumSentenceListSurrounders{\begin{itemize}}{\end{itemize}}\SetLipsumSentenceListItemStart{\item}\lipsum[10][1-2]

    Output

    • Suspendisse vitae elit.

    • Aliquam arcu neque, ornare in, ullamcorper quis, commodo eu, libero.

    Figure 2: Turning the output of \lipsum into a list using inserted tokens.

    around a specific 〈item〉, but they remain to be implemented. Oneway to access a specific 〈item〉 in a list is shown in Figure 3, butother, maybe more elegant ways are conceivable.

    To quickly reset the 〈tokens〉 inserted by the above commandsto their default values, lipsum provides \LipsumRestoreParList\LipsumRestoreParList(for lists of paragraphs), \LipsumRestoreSentenceList (for lists\LipsumRestoreSentenceListof sentences) and \LipsumRestoreAll for both lists.\LipsumRestoreAll

    5.2 Loading and defining different textsStarting with lipsum2.2, a simple interface is provided to define andload other texts for the output of \lipsum and friends. This in-terface can, for example, be used to implement dummy texts indifferent languages without re-coding the logic implemented by lip-sum. In order to provide a new text that will be used by lipsum,define the text by using a set of \NewLipsumPar{〈paragraph〉} com-\NewLipsumParmands in a file with the ending .ltd.tex (ltd means lipsum textdefinition3) to a location where your TEX-system will find it. The〈paragraph〉-argument is a single paragraph of the new text. Thus,the first occurence of \NewLipsumPar defines the first paragraph,the second occurence the second paragraph and so on.

    To specify the new text as output for \lipsum and friends, use\SetLipsumText{〈filename〉}, where 〈filename〉 is the name of the\SetLipsumTextfile without the ending .ltd.tex.

    lipsum ships with two texts, lipsum.ltd.tex which containsthe Lorem ipsum. . . -dummy text and which is loaded by default,and, thanks to github-user svenper, cicero.ltd.tex, which con-tains the speech by Cicero which inspired the Lorem ipsum. . . -dummy text. In contrast to the default Lorem ipsum. . . text, thecicero text, which can be selected by \SetLipsumText{cicero},is true latin, and thus is properly hyphenated by, for example, thebabel package with the language latin loaded (and selected). Fig-ure 4 shows how to load and use the text of Cicero’s speech (notethat the use of babel is optional).

    5.2.1 Limitations of and comments on the interface

    \SetLipsumText more or less just uses an \input or, to be moreprecise, the LATEX3-variant \file_input:n, to load the .ltd.tex

    3To avoid name clashes with files using general languages as names, I choseto introduce the .ltd.tex file ending. I did not find a file with this ending inmy texmf-tree, so I guess it is safe.

    6

  • Code\newcounter{itemcount}\setcounter{itemcount}{0}\SetLipsumParListItemSurrounders{%

    \stepcounter{itemcount}\ifnum\value{itemcount}=2\begingroup\sffamily\fi

    }{\ifnum\value{itemcount}=2\endgroup\fi

    }\lipsum[110-112]

    Output

    Suspendisse in odio. In elit diam, cursus vitae, venenatis in, molestie in, leo. Cras ornare. Nulla libero.Phasellus feugiat mattis libero. Sed vehicula aliquam ligula. Nullam lacinia, felis vel dignissim sodales,enim lectus lobortis diam, quis nonummy mauris odio auctor tortor. Integer in dui nec lacus bibendumultrices. Etiam odio elit, aliquam et, porttitor id, interdum cursus, elit. Nulla eleifend tempor mauris.In vel arcu quis pede laoreet vulputate.

    Morbi pharetra magna a lorem. Cras sapien. Duis porttitor vehicula urna. Phasellus iaculis, mi vitae variusconsequat, purus nibh sollicitudin mauris, quis aliquam felis dolor vel elit. Quisque neque mi, bibendum non,tristique convallis, congue eu, quam. Etiam vel felis. Quisque ac ligula at orci pulvinar rutrum. Donec mieros, sagittis eu, consectetuer sed, sagittis sed, lorem. Nunc sed eros. Nullam pellentesque ante quis lectus.Vivamus lacinia, sapien vel fermentum placerat, purus nisl aliquet odio, et porta wisi dui nec nunc. Fusceporta cursus libero.

    Quisque eu mi a augue mollis posuere. Donec tincidunt, lorem at vestibulum pulvinar, felis purusnonummy urna, at accumsan purus dui nec leo. Praesent tortor turpis, vehicula in, aliquet ut, dignissimac, leo. Curabitur sagittis mi id eros. In magna. Sed vitae elit facilisis elit semper sollicitudin. Curabiturconvallis tempor nulla. Nullam non turpis a pede sagittis ultrices. Etiam vulputate pede in ligula. Sed aante id metus pellentesque suscipit. Sed adipiscing justo vitae sapien. Nunc posuere, pede ullamcorpergravida egestas, justo libero tincidunt arcu, vitae pellentesque arcu leo ut mauris. Pellentesque auctormauris sit amet elit luctus fringilla. Cras sed wisi. Morbi luctus enim vitae tellus. Vivamus venenatissodales libero.

    Figure 3: Styling the second 〈item〉 of a list.

    Code\lipsum[1][1]\SetLipsumText{cicero}\selectlanguage{latin} % optional, requires babel.sty with option latin.\lipsum[1]

    Output

    Lorem ipsum dolor sit amet, consectetuer adipiscing elit.Non eram nescius, Brute, cum, quae summis ingeniis exquisitaque doctrina philosophi Graeco

    sermone tractavissent, ea Latinis litteris mandaremus, fore ut hic noster labor in varias repre-hensiones incurreret. Nam quibusdam, et iis quidem non admodum indoctis, totum hoc displicetphilosophari. Quidam autem non tam id reprehendunt, si remissius agatur, sed tantum studiumtamque multam operam ponendam in eo non arbitrantur. Erunt etiam, et ii quidem eruditiGraecis litteris, contemnentes Latinas, qui se dicant in Graecis legendis operam malle consume-re. Postremo aliquos futuros suspicor, qui me ad alias litteras vocent, genus hoc scribendi, etsisit elegans, personae tamen et dignitatis esse negent.

    Figure 4: Selecting and using the text of Cicero’s speech.

    7

  • file. This means, that the file is not necessarily loaded in the pream-ble of the document and thus the contents of the file underlie therespective restrictions. Most importantly, no additional packagescan be loaded. Thus, if your text requires additional packages, thedocumentation should state that the user has to load the packages.Since lipsum is a package for developers and commonly used forexamples, it will not load any packages except the ones required bylipsum itself to be usable for a maximum of developers.

    Futhermore, the commands used to typeset the new texts arestill \lipsum, \lipsum*, \unpacklipsum and so on and the com-mands to tune the output are still \SetLipsumParListStart andfriends and no way is provided to easily generate a set of com-mands where the lipsum (or Lipsum) part of the command namesis exchanged by, for example, cicero or Cicero.

    Nonetheless, if you want to write a new package instead ofjust providing a new dummy text, maybe because it requires a cer-tain package to be loaded, or because you want to have a differentcommand than \lipsum, this can be as easy as this4:

    \ProvidesPackage{mydummytext}\RequirePackage{lipsum}\SetLipsumText{mydummytext}

    To make the text accesible via a command \mydummytext, simplyuse \let to copy the definition of \lipsum:

    \let\mydummytext\lipsum

    Note that this works fine with one exception: \unpacklipsum and\unpacklipsum* store their content in \lipsumexp, and they willkeep doing so if you simply copy them using \let. Thus, to change\lipsumexp to, for example, \ciceroexp, you will have to re-codethe \unpacklipsum command.

    I would, however, suggest to keep the \lipsum-commands sincethey are known to provide dummy text and one can easily referto this documentation. But in the end this decision—of course—remains to the author of the new package.

    6 lipsum Implementation1 〈*package〉2 〈@@=lipsum〉

    A check to make sure that expl3 is not too old3 \@ifpackagelater { expl3 } { 2018/10/31 }4 { }5 {6 \PackageError { lipsum } { Package~expl3~too~old }7 {8 You~need~to~update~your~installation~of~the~bundles~9 ’l3kernel’~and~’l3packages’.\MessageBreak

    10 Loading~lipsum~will~abort!11 }12 \tex_endinput:D13 }

    6.1 Command VariantsTo parse 〈range〉-like arguments, that is, arguments consisting ei-ther of a single number, as in 8, or of a range, as in 9-11, we use

    4The following code has never been tested, it was just written from mind asan example.

    8

  • the argument processor \SplitArgument of xparse. However, theargument can either be a range as specified above, or a token listcontaining a range. Thus, the argument has to be expanded beforeit is analyzed. This use case is not available in xparse (at least notin the release 2018-10-17). We copy it to a lipsum internal variantto be able to generate a variant.

    \__lipsum_split_argument_-expanded:nne{〈number〉}{〈token〉}{〈argument〉}#1 : See documentation for \SplitArgument in xparse#2 : The argument fed to the function, which is expanded in this

    case.14 \cs_new_eq:NN \__lipsum_split_argument_expanded:nnn \SplitArgument15 \cs_generate_variant:Nn \__lipsum_split_argument_expanded:nnn { nne }

    \__lipsum_split_argument_expanded:nnn\__lipsum_split_argument_expanded:nne

    6.2 MessagesStarting from lipsum2.0, some commands from previous versionsare considered deprecated and issue a warning when used. This isthe corresponding message.

    16 \msg_new:nnnn{lipsum}{DeprecatedCommand}17 {\string#1\msg_line_context:\\18 \string#1~should~be~substituted~by~\string#2.}19 { The~command~\string#1~is~deprecated~20 and~should~be~substituted~by~21 \string#2.~22 \string#1~might~not~be~available~in~a~23 future~version~of~lipsum.sty.}

    6.3 Variables\g__lipsum_paragraph_seq The sequence that stores all the paragraphs.

    24 \seq_new:N\g__lipsum_paragraph_seq

    (End definition for \g__lipsum_paragraph_seq.)

    \g_lipsum_default_range_tl The default range for lipsum paragraphs.25 \tl_new:N \g_lipsum_default_range_tl %

    (End definition for \g_lipsum_default_range_tl. This variable is documentedon page ??.)

    \l__lipsum_pars_tl This variables is used to store the token list containing the selectedparagraphs.

    26 \tl_new:N \l__lipsum_pars_tl

    (End definition for \l__lipsum_pars_tl.)

    \l__lipsum_sentences_tl This variables is used to store the token list containing the selectedsentences.

    27 \tl_new:N \l__lipsum_sentences_tl

    (End definition for \l__lipsum_sentences_tl.)

    \l__lipsum_sentences_seq In this sequence, the sentence list is stored.28 \seq_new:N \l__lipsum_sentences_seq

    (End definition for \l__lipsum_sentences_seq.)

    9

  • \l__lipsum_par_list_start_nostar_tl\l__lipsum_par_list_end_nostar_tl

    \l__lipsum_sentence_list_start_nostar_tl\l__lipsum_sentence_list_end_nostar_tl

    \l__lipsum_par_list_start_star_tl\l__lipsum_par_list_end_star_tl

    \l__lipsum_sentence_star_list_start_tl\l__lipsum_sentence_star_list_end_tl

    Next are the variables used to store the tokens between the listitems for lists of paragraph and lists of sentences.

    29 \tl_new:N \l__lipsum_par_list_start_nostar_tl30 \tl_new:N \l__lipsum_par_list_end_nostar_tl31 \tl_new:N \l__lipsum_sentence_list_start_nostar_tl32 \tl_new:N \l__lipsum_sentence_list_end_nostar_tl33

    34 \tl_new:N \l__lipsum_par_list_start_star_tl35 \tl_new:N \l__lipsum_par_list_end_star_tl36 \tl_new:N \l__lipsum_sentence_list_start_star_tl37 \tl_new:N \l__lipsum_sentence_list_end_star_tl

    (End definition for \l__lipsum_par_list_start_nostar_tl and others.)

    \l__lipsum_par_list_itemseparator_nostar_tl\l__lipsum_sentence_list_itemseparator_nostar_tl

    \l__lipsum_par_list_itemseparator_star_tl\l__lipsum_sentence_list_itemseparator_star_tl

    The variables to store the tokens that separate the single items ofthe paragraph or sentence list.

    38 \tl_new:N \l__lipsum_par_list_itemseparator_nostar_tl39 \tl_new:N \l__lipsum_sentence_list_itemseparator_nostar_tl40

    41 \tl_new:N \l__lipsum_par_list_itemseparator_star_tl42 \tl_new:N \l__lipsum_sentence_list_itemseparator_star_tl43

    (End definition for \l__lipsum_par_list_itemseparator_nostar_tl and oth-ers.)

    \l__lipsum_par_list_itemstart_nostar_tl\l__lipsum_par_list_itemend_nostar_tl

    \l__lipsum_sentence_list_itemstart_nostar_tl\l__lipsum_sentence_list_itemend_nostar_tl

    \l__lipsum_par_list_itemstart_star_tl\l__lipsum_par_list_itemend_star_tl

    \l__lipsum_sentence_list_itemstart_star_tl\l__lipsum_sentence_list_itemend_star_tl

    The variables that surround each single item of a paragraph orsentence list.

    44 \tl_new:N \l__lipsum_par_list_itemstart_nostar_tl45 \tl_new:N \l__lipsum_par_list_itemend_nostar_tl46 \tl_new:N \l__lipsum_sentence_list_itemstart_nostar_tl47 \tl_new:N \l__lipsum_sentence_list_itemend_nostar_tl48

    49 \tl_new:N \l__lipsum_par_list_itemstart_star_tl50 \tl_new:N \l__lipsum_par_list_itemend_star_tl51 \tl_new:N \l__lipsum_sentence_list_itemstart_star_tl52 \tl_new:N \l__lipsum_sentence_list_itemend_star_tl53

    (End definition for \l__lipsum_par_list_itemstart_nostar_tl and others.)

    \l__lipsum_par_list_start_tl\l__lipsum_par_list_end_tl

    \l__lipsum_sentence_list_start_tl\l__lipsum_sentence_list_end_tl

    \l__lipsum_par_list_itemseparator_tl\l__lipsum_sentence_list_itemseparator_tl

    \l__lipsum_par_list_itemstart_tl\l__lipsum_par_list_itemend_tl

    \l__lipsum_sentence_list_itemstart_tl\l__lipsum_sentence_list_itemend_tl

    These variables store a copy of either the \〈name〉_star_tl or\〈name〉_nostar_tl, depending on whether the calling functionwas called with or without a star. The content of these variables isthen used by the functions that generate the Lorem ipsum. . . 〈list〉.

    54 \tl_new:N\l__lipsum_par_list_start_tl55 \tl_new:N\l__lipsum_par_list_end_tl56 \tl_new:N\l__lipsum_sentence_list_start_tl57 \tl_new:N\l__lipsum_sentence_list_end_tl58 \tl_new:N\l__lipsum_par_list_itemseparator_tl59 \tl_new:N\l__lipsum_sentence_list_itemseparator_tl60 \tl_new:N\l__lipsum_par_list_itemstart_tl61 \tl_new:N\l__lipsum_par_list_itemend_tl62 \tl_new:N\l__lipsum_sentence_list_itemstart_tl63 \tl_new:N\l__lipsum_sentence_list_itemend_tl

    (End definition for \l__lipsum_par_list_start_tl and others.)

    \g__lipsum_text_str Holds the current text loaded for the output of \lipsum and friends.Used to avoid loading the same text definition if it is already used.

    64 \str_new:N\g__lipsum_text_str

    (End definition for \g__lipsum_text_str.)

    10

  • 6.4 Developer interface

    \lipsum_store_as_temp_ints:nn{〈number1〉}{〈number2〉}

    #1 : A number.#2 : A number or -NoValue- as produced by the argument pro-

    cessing of xparse.Stores 〈number1〉 in \l_tmpa_int. If 〈number2〉 is -NoValue-,stores 〈number1〉 in \l_tmpb_int, otherwise stores 〈number2〉 in\l_tmpb_int.

    65 \cs_new:Npn \lipsum_store_as_temp_ints:nn #1#2{66 \int_set:Nn\l_tmpa_int{#1}67 \IfNoValueTF{#2}68 {69 \int_set:Nn\l_tmpb_int{#1}70 }71 {72 \int_set:Nn\l_tmpb_int{#2}73 }74 }

    \lipsum_store_as_temp_ints:nn

    \lipsum_get_non_terminated_par:n {〈number〉}\lipsum_get_terminated_par:n {〈number〉}

    These two commands are used to retrieve paragraph 〈number〉 fromthe Lorem ipsum. . . dummy text. \lipsum_get_terminated_-par:n additionally adds \par.

    The single paragraphs are stored as constant token lists.\tl_use:c is used to construct a command sequence fromc_lipsum_par_, _tl and the 〈number〉. This is different fromversions prior to v2.0, where the paragraphs were stored in\lipsum@i, \lipsum@ii, . . . .

    75 \cs_new:Npn \lipsum_get_non_terminated_par:n #1{76 \seq_item:Nn \g__lipsum_paragraph_seq{#1}77 }78

    79 \cs_new:Npn \lipsum_get_terminated_par:n #1 {80 \lipsum_get_non_terminated_par:n{#1}\par81 }82

    \lipsum_get_non_terminated_par:n\lipsum_get_terminated_par:n

    \lipsum_add_to_tokenlist:n{〈number〉}

    Adds a paragraph 〈item〉 to the list of paragraphs (\l__lipsum_-pars_tl) and surrounds it by the user-defined 〈tokens〉 .

    83 \cs_new:Npn \lipsum_add_to_tokenlist:n #1 {84 \tl_put_right:NV85 \l__lipsum_pars_tl86 \l__lipsum_par_list_itemstart_tl87 \tl_put_right:Nn \l__lipsum_pars_tl {88 \lipsum_get_non_terminated_par:n{#1}89 }90 \tl_put_right:NV91 \l__lipsum_pars_tl92 \l__lipsum_par_list_itemend_tl93 }94 \cs_generate_variant:Nn95 \lipsum_add_to_tokenlist:n { V }

    \lipsum_add_to_tokenlist:n

    11

  • \lipsum_range_to_tokenlist:VV{〈number1〉}{〈number2〉}

    Adds the paragraphs specified by 〈number1〉 to 〈number2〉 to thetoken list \l__lipsum_pars_tl.

    96 \cs_new:Npn \lipsum_range_to_tokenlist:nn #1#2 {97 \tl_clear:N \l__lipsum_pars_tl98 \tl_put_right:NV99 \l__lipsum_pars_tl

    100 \l__lipsum_par_list_start_tl101 \int_set:Nn \l_tmpa_int {#1}102 \int_do_until:nNnn103 {\l_tmpa_int} > {#2}104 {105 \int_compare:nNnT106 \l_tmpa_int > {#1}107 {108 \tl_put_right:NV109 \l__lipsum_pars_tl110 \l__lipsum_par_list_itemseparator_tl111 }112 \lipsum_add_to_tokenlist:V {\l_tmpa_int}113 \int_incr:N\l_tmpa_int114 }115 \tl_put_right:NV116 \l__lipsum_pars_tl117 \l__lipsum_par_list_end_tl118 }119 \cs_generate_variant:Nn120 \lipsum_range_to_tokenlist:nn { VV }121 %

    \lipsum_range_to_tokenlist:VV

    \__lipsum_expanded_paragraphs_terminated_with_space:

    To be able to parse the list of paragraphs into a list of sentences,we need a list with defined tokens in between. This is stored locallyin this macro.

    122 \cs_new_nopar:Nn123 \__lipsum_expanded_paragraphs_terminated_with_space:{}

    12

  • \lipsum_sentences_to_tokenlist:VV{〈number1〉}{〈number2〉}

    Puts the sentences specified by 〈sentence range〉 from the para-graphs specified by 〈paragraph range〉 on the token list \l__-lipsum_sentences_tl and surrounds the 〈tokens〉 set by the user.

    124 %125 \cs_new:Npn \lipsum_sentences_to_tokenlist:nnn #1#2#3{

    Now, we only need to put the sentences within 〈sentence range〉into \l__lipsum_sentences_tl. First we clear the token list.

    126

    127 \tl_clear:N \l__lipsum_sentences_tl128

    Using a regexp turned out to be rather slow for large 〈paragraphrange〉s. Thus, I use a loop similar to the one used by \clist_-item:Nn. Since it might be that the 〈sentence range〉 specifies arange not within the number of sentences in the paragraphs, anend has to be indicated. Since empty elements cannot occur, ..can be used as end element.

    129 \int_compare:nT {#2 >= #1}130 {131 \__lipsum_put_sentence_on_tokenlist:nnnw132 {#1}133 {#2}134 {1}135 #3 .. \q_stop136 }137 \tl_put_left:NV138 \l__lipsum_sentences_tl139 \l__lipsum_sentence_list_start_tl140 \tl_put_right:NV141 \l__lipsum_sentences_tl142 \l__lipsum_sentence_list_end_tl143 }144 \cs_generate_variant:Nn145 \lipsum_sentences_to_tokenlist:nnn { VVf }

    \lipsum_sentences_to_tokenlist:VV

    13

  • \__lipsum_put_sentence_on_-tokenlist:nnnw{〈start〉}{〈end〉}{〈current〉}{〈sentencestl〉}

    \__lipsum_put_sentence_on_tokenlist:nnnw

    #1 : Start number of the range to be selected.#2 : End number of the range to be selected.#3 : the loop counter indicating the current item.#4 : The token list containing the (remaining) sentences.The implementation is quite simple: If 〈sentences tl〉 is empty, gob-ble the remaining list ans stop. Otherwise, test if 〈start〉 > 〈end〉,gobble the remaining list and stop. If 〈current〉 > 〈end〉, gobble theremaining list and stop, otherwise repeat loop with increased loopcounter 〈current〉. Before repeating, test if 〈current〉 >= 〈start〉and put the current sentence to the token list. It seems that thereis no official test for an empty argument (〈sentences tl〉 needs tobe tested), but the internals of \tl_if_blank provide this, moreor less.

    146

    147 \cs_new:Npn148 \__lipsum_put_sentence_on_tokenlist:nnnw149 #1#2#3#4 .150 {151 \int_compare:nNnTF{#1} > {#2}152 { % start > end: leave loop153 \use_none_delimit_by_q_stop:w154 }155 { % start {#2}164 { % Counter > End: Leave loop165 \use_none_delimit_by_q_stop:w166 }167 { % Counter = #1}169 { % Counter >= Start: Put item on list170 \int_compare:nNnT{#3}>{#1}171 { % Counter < Start, insert separator172 \tl_put_right:NV173 \l__lipsum_sentences_tl174 \l__lipsum_sentence_list_itemseparator_tl175 } % End Counter < Start true176 % Put item on list177 \tl_put_right:NV178 \l__lipsum_sentences_tl179 \l__lipsum_sentence_list_itemstart_tl180 \tl_put_right:No181 \l__lipsum_sentences_tl182 { \tl_trim_spaces:n{#4}. }183 \tl_put_right:NV184 \l__lipsum_sentences_tl185 \l__lipsum_sentence_list_itemend_tl186 } % End Counter >= Start: Put item on list187 % Call loop again188 \exp_args:Nnnf189 \__lipsum_put_sentence_on_tokenlist:nnnw190 {#1}191 {#2}192 { \int_eval:n{#3+1} }193 } % End Counter > Start: Proceed194 } % End Not yet list end195 } % End Start > End: Perform loop196 } % End definition

    14

  • Internal command for the user-level \LipsumProtect. Currently, asingle \tex_noexpand:D is sufficient to prevent expansion, but infuture implementations this might change.

    197 \cs_new:Npn \__lipsum_protect:n #1 {\tex_noexpand:D#1}

    \__lipsum_protect:n

    \_set_surrounding_tokens_star:\__lipsum_set_surrounding_tokens_star:

    These commands copy the user-defined tokens to the token listsused by the commands that compose the list of paragraphs orsentences. Here for calls of the starred versions \lipsum* and\unpacklipsum*.

    198 \cs_new:Npn \__lipsum_set_surrounding_tokens_star:199 {200 \tl_set_eq:NN201 \l__lipsum_par_list_start_tl202 \l__lipsum_par_list_start_star_tl203 \tl_set_eq:NN204 \l__lipsum_par_list_end_tl205 \l__lipsum_par_list_end_star_tl206 \tl_set_eq:NN207 \l__lipsum_par_list_itemseparator_tl208 \l__lipsum_par_list_itemseparator_star_tl209 \tl_set_eq:NN210 \l__lipsum_par_list_itemstart_tl211 \l__lipsum_par_list_itemstart_star_tl212 \tl_set_eq:NN213 \l__lipsum_par_list_itemend_tl214 \l__lipsum_par_list_itemend_star_tl215

    216 \tl_set_eq:NN217 \l__lipsum_sentence_list_start_tl218 \l__lipsum_sentence_list_start_star_tl219 \tl_set_eq:NN220 \l__lipsum_sentence_list_end_tl221 \l__lipsum_sentence_list_end_star_tl222 \tl_set_eq:NN223 \l__lipsum_sentence_list_itemseparator_tl224 \l__lipsum_sentence_list_itemseparator_star_tl225 \tl_set_eq:NN226 \l__lipsum_sentence_list_itemstart_tl227 \l__lipsum_sentence_list_itemstart_star_tl228 \tl_set_eq:NN229 \l__lipsum_sentence_list_itemend_tl230 \l__lipsum_sentence_list_itemend_star_tl231 }

    15

  • \__lipsum_set_surrounding_tokens_nostar:\__lipsum_set_surrounding_tokens_nostar:

    As \__lipsum_set_surrounding_tokens_star:, but for callsof the non-starred version of \lipsum and \unpacklipsum.

    232 \cs_new:Npn \__lipsum_set_surrounding_tokens_nostar:233 {234 \tl_set_eq:NN235 \l__lipsum_par_list_start_tl236 \l__lipsum_par_list_start_nostar_tl237 \tl_set_eq:NN238 \l__lipsum_par_list_end_tl239 \l__lipsum_par_list_end_nostar_tl240 \tl_set_eq:NN241 \l__lipsum_par_list_itemseparator_tl242 \l__lipsum_par_list_itemseparator_nostar_tl243 \tl_set_eq:NN244 \l__lipsum_par_list_itemstart_tl245 \l__lipsum_par_list_itemstart_nostar_tl246 \tl_set_eq:NN247 \l__lipsum_par_list_itemend_tl248 \l__lipsum_par_list_itemend_nostar_tl249

    250 \tl_set_eq:NN251 \l__lipsum_sentence_list_start_tl252 \l__lipsum_sentence_list_start_nostar_tl253 \tl_set_eq:NN254 \l__lipsum_sentence_list_end_tl255 \l__lipsum_sentence_list_end_nostar_tl256 \tl_set_eq:NN257 \l__lipsum_sentence_list_itemseparator_tl258 \l__lipsum_sentence_list_itemseparator_nostar_tl259 \tl_set_eq:NN260 \l__lipsum_sentence_list_itemstart_tl261 \l__lipsum_sentence_list_itemstart_nostar_tl262 \tl_set_eq:NN263 \l__lipsum_sentence_list_itemend_tl264 \l__lipsum_sentence_list_itemend_nostar_tl265

    266 }

    \__lipsum_ensure_parsable_output:

    To ensure that the list of paragraphs can be parsed into a list ofsentences, the tokens between the single 〈item〉s have to macth apre-defined pattern. This commands sets the tokens accordingly.

    267 \cs_new:Nn \__lipsum_ensure_parsable_output:268 {269 \tl_set:No270 \l__lipsum_par_list_itemseparator_tl{\space}271 \tl_set:No272 \l__lipsum_par_list_item_start_tl{}273 \tl_set:No274 \l__lipsum_par_list_item_end_tl{}275 \tl_set:No276 \l__lipsum_par_list_start_tl{}277 \tl_set:No278 \l__lipsum_par_list_end_tl{}279 }

    \__lipsum_ensure_parsable_output:

    16

  • 6.5 User- and developer-level commands\NewLipsumPar Developer-Level macro to add a paragraph to the dummy text used

    by \lipsum and related commands. To specify a new dummy text,see section 5.2.

    \NewLipsumPar{〈content〉}

    #1 : The 〈content〉 of the paragraph. In contrast to previous ver-sions, lipsum2.0 does not store a macro that is typeset at theend of the paragraph.

    Implemented as follows:280

    281 \NewDocumentCommand\NewLipsumPar{m}{282 \seq_gput_right:Nn{\g__lipsum_paragraph_seq}{#1}283 }

    (End definition for \NewLipsumPar. This function is documented on page ??.)

    \LipsumPar Macro to typeset a single paragraph of Lorem ipsum. . . Was notofficially available in version prior to 2.0.

    \LipsumPar{〈number〉}

    #1 : Number of the paragraph to typeset.Implemented as follows:

    284 \NewDocumentCommand\LipsumPar{m}{285 \group_begin:286 \lipsum_get_terminated_par:n{#1}287 \group_end:288 }

    (End definition for \LipsumPar. This function is documented on page ??.)

    6.6 Tokens surrounding the Lorem ipsum. . .content

    \SetLipsumParListStart\SetLipsumParListStart*

    \SetLipsumSentenceListStart\SetLipsumSentenceListStart*

    \SetLipsumParListStart{〈tokens〉}\SetLipsumParListStart*{〈tokens〉}\SetLipsumSentenceListStart{〈tokens〉}\SetLipsumSentenceListStart*{〈tokens〉}

    #1 : 〈tokens〉 to be inserted at the beginning of the paragraph orsentence list.

    289 \NewDocumentCommand\SetLipsumParListStart{s+m}{290 \IfBooleanTF{#1}291 {292 \tl_set:No\l__lipsum_par_list_start_star_tl{#2}293 }294 {295 \tl_set:No\l__lipsum_par_list_start_nostar_tl{#2}296 }297 }298 \NewDocumentCommand\SetLipsumSentenceListStart{s+m}{299 \IfBooleanTF{#1}300 {301 \tl_set:No\l__lipsum_sentence_list_start_star_tl{#2}302 }303 {304 \tl_set:No\l__lipsum_sentence_list_start_nostar_tl{#2}305 }306 }

    (End definition for \SetLipsumParListStart and others. These functions aredocumented on page ??.)

    17

  • \SetLispumParListEnd\SetLispumParListEnd*

    \SetLispumSentenceListEnd\SetLispumSentenceListEnd*

    \SetLispumParListEnd{〈tokens〉}\SetLispumParListEnd*{〈tokens〉}\SetLispumSentenceListEnd{〈tokens〉}\SetLispumSentenceListEnd*{〈tokens〉}

    #1 : 〈tokens〉 to be inserted after the paragraph or sentence list.Accepts long arguments.

    307 \NewDocumentCommand\SetLipsumParListEnd{s+m}{308 \IfBooleanTF{#1}309 {310 \tl_set:No\l__lipsum_par_list_end_star_tl{#2}311 }312 {313 \tl_set:No\l__lipsum_par_list_end_nostar_tl{#2}314 }315 }316 \NewDocumentCommand\SetLipsumSentenceListEnd{s+m}{317 \IfBooleanTF{#1}318 {319 \tl_set:No\l__lipsum_sentence_list_end_star_tl{#2}320 }321 {322 \tl_set:No\l__lipsum_sentence_list_end_nostar_tl{#2}323 }324 }

    (End definition for \SetLispumParListEnd and others. These functions aredocumented on page ??.)

    \SetLipsumParListSurrounders\SetLipsumParListSurrounders*

    \SetLipsumSentenceListSurrounders\SetLipsumSentenceListSurrounders*

    These macros are short-hands for setting the start and end tokenssurrounding a paragraph or sentence list.

    \SetLipsumParListSurrounders{〈start〉}{〈end〉}\SetLipsumParListSurrounders*{〈start〉}{〈end〉}\SetLipsumSentenceListSurrounders{〈start〉}{〈end〉}\SetLipsumSentenceListSurrounders*{〈start〉}{〈end〉}

    #1 : 〈start〉-tokens to be inserted at the beginning of the paragraphor sentence list. Can be empty and accepts \long arguments,thus, accepts \par.

    #2 : 〈end〉-tokens to be inserted at the beginning of the paragraphor sentence list. Can be empty and accepts \long arguments,thus, accepts \par.

    325 \NewDocumentCommand\SetLipsumParListSurrounders{s+m+m}{326 \IfBooleanTF{#1}327 {328 \SetLipsumParListStart*{#2}329 \SetLipsumParListEnd*{#3}330 }331 {332 \SetLipsumParListStart{#2}333 \SetLipsumParListEnd{#3}334 }335 }336 \NewDocumentCommand\SetLipsumSentenceListSurrounders{s+m+m}{337 \IfBooleanTF{#1}338 {339 \SetLipsumSentenceListStart*{#2}340 \SetLipsumSentenceListEnd*{#3}341 }342 {343 \SetLipsumSentenceListStart{#2}344 \SetLipsumSentenceListEnd{#3}345 }346 }

    18

  • (End definition for \SetLipsumParListSurrounders and others. These func-tions are documented on page ??.)

    \SetLipsumParListItemStart\SetLipsumParListItemStart*

    \SetLipsumSentenceListItemStart\SetLipsumSentenceListItemStart*

    \SetLipsumParListItemStart{〈tokens〉}\SetLipsumParListItemStart*{〈tokens〉}\SetLipsumSentenceListItemStart{〈tokens〉}\SetLipsumSentenceListItemStart*{〈tokens〉}

    #1 : 〈tokens〉 inserted before every 〈item〉 in the paragraph or sen-tence list. Can be \long.

    347 \NewDocumentCommand\SetLipsumParListItemStart{s+m}{348 \IfBooleanTF{#1}349 {350 \tl_set:No351 \l__lipsum_par_list_itemstart_star_tl{#2}352 }353 {354 \tl_set:No355 \l__lipsum_par_list_itemstart_nostar_tl{#2}356 }357 }358 \NewDocumentCommand\SetLipsumSentenceListItemStart{s+m}{359 \IfBooleanTF{#1}360 {361 \tl_set:No362 \l__lipsum_sentence_list_itemstart_star_tl {#2}363 }364 {365 \tl_set:No366 \l__lipsum_sentence_list_itemstart_nostar_tl{#2}367 }368 }

    (End definition for \SetLipsumParListItemStart and others. These functionsare documented on page ??.)

    \SetLipsumParListItemEnd\SetLipsumParListItemEnd*

    \SetLipsumSentenceListItemEnd\SetLipsumSentenceListItemEnd*

    \SetLipsumParListItemEnd{〈tokens〉}\SetLipsumParListItemEnd*{〈tokens〉}\SetLipsumSentenceListItemEnd{〈tokens〉}\SetLipsumSentenceListItemEnd*{〈tokens〉}

    #1 : 〈tokens〉 inserted after every 〈item〉 in the paragraph or sen-tence list. Can be \long.

    369 \NewDocumentCommand\SetLipsumParListItemEnd{s+m}{370 \IfBooleanTF{#1}371 {372 \tl_set:No373 \l__lipsum_par_list_itemend_star_tl{#2}374 }375 {376 \tl_set:No377 \l__lipsum_par_list_itemend_nostar_tl{#2}378 }379 }380 \NewDocumentCommand\SetLipsumSentenceListItemEnd{s+m}{381 \IfBooleanTF{#1}382 {383 \tl_set:No384 \l__lipsum_sentence_list_itemend_star_tl{#2}385 }386 {387 \tl_set:No388 \l__lipsum_sentence_list_itemend_nostar_tl{#2}389 }390 }

    19

  • (End definition for \SetLipsumParListItemEnd and others. These functionsare documented on page ??.)

    \SetLipsumParListItemSurrounders\SetLipsumParListItemSurrounders*

    \SetLipsumSentenceListItemSurrounders\SetLipsumSentenceListItemSurrounders*

    Short-hands for setting the 〈token〉s surrounding a single list 〈item〉.

    \SetLipsumParListItemSurrounders{〈start〉}{〈end〉}\SetLipsumParListItemSurrounders*{〈start〉}{〈end〉}\SetLipsumSentenceListItemSurrounders{〈start〉}{〈end〉}\SetLipsumSentenceListItemSurrounders*{〈start〉}{〈end〉}

    #1 : 〈start〉-tokens inserted before each list 〈item〉.#2 : 〈end〉-tokens inserted after each list 〈item〉.

    391 \NewDocumentCommand\SetLipsumParListItemSurrounders{s+m+m}{392 \IfBooleanTF{#1}393 {394 \SetLipsumParListItemStart*{#2}395 \SetLipsumParListItemEnd*{#3}396 }397 {398 \SetLipsumParListItemStart{#2}399 \SetLipsumParListItemEnd{#3}400 }401 }402

    403 \NewDocumentCommand\SetLipsumSentenceListItemSurrounders{s+m+m}{404 \IfBooleanTF{#1}405 {406 \SetLipsumSentenceListItemStart*{#2}407 \SetLipsumSentenceListItemEnd*{#3}408 }409 {410 \SetLipsumSentenceListItemStart{#2}411 \SetLipsumSentenceListItemEnd{#3}412 }413 }

    (End definition for \SetLipsumParListItemSurrounders and others. Thesefunctions are documented on page ??.)

    \SetLipsumParListItemSeparator\SetLipsumParListItemSeparator*

    \SetLipsumSentenceListItemSeparator\SetLipsumSentenceListItemSeparator*

    \SetLipsumParListItemSeparator{〈tokens〉}\SetLipsumParListItemSeparator*{〈tokens〉}\SetLipsumSentenceListItemSeparator{〈tokens〉}\SetLipsumSentenceListItemSeparator*{〈tokens〉}

    #1 : 〈tokens〉 to be inserted between two 〈item〉s of a paragraphor sentence list.

    414 \NewDocumentCommand\SetLipsumParListItemSeparator{s+m}{415 \IfBooleanTF{#1}416 {417 \tl_set:No418 \l__lipsum_par_list_itemseparator_star_tl{#2}419 }420 {421 \tl_set:No422 \l__lipsum_par_list_itemseparator_nostar_tl{#2}423 }424 }425 \NewDocumentCommand\SetLipsumSentenceListItemSeparator{s+m}{426 \IfBooleanTF{#1}427 {428 \tl_set:No429 \l__lipsum_sentence_list_itemseparator_star_tl{#2}430 }431 {

    20

  • 432 \tl_set:No433 \l__lipsum_sentence_list_itemseparator_nostar_tl{#2}434 }435 }

    (End definition for \SetLipsumParListItemSeparator and others. These func-tions are documented on page ??.)

    \SetLipsumProtect \LipsumProtect{〈tokens〉}Protects 〈tokens〉 from being expanded when processed by

    \unpacklipsum.436 \NewDocumentCommand\LipsumProtect{m}{}437 \cs_gset_eq:NN438 \LipsumProtect439 \__lipsum_protect:n440

    (End definition for \SetLipsumProtect. This function is documented on page??.)

    \SetLipsumDefault\setlipsumdefault

    Command to change the default range used by \lipsum and friends.Note that the use of \setlipsumdefault is considered deprecatedstarting from lipsum2.0.

    \SetLipsumDefault{〈range〉}

    〈range〉 Range to be used as default.Implemented as:

    441 \NewDocumentCommand\SetLipsumDefault{m}{442 \tl_gset:No\g_lipsum_default_range_tl{#1}443 }

    Implement \setlipsumdefault and mark it deprecated.444 \NewDocumentCommand\setlipsumdefault{m}{%445 \msg_warning:nnnn446 {lipsum}447 {DeprecatedCommand}448 {\setlipsumdefault}449 {\SetLipsumDefault}450 \SetLipsumDefault{#1}451 }

    (End definition for \SetLipsumDefault and \setlipsumdefault. These func-tions are documented on page ??.)The following macros are considered to be user-level commands andthus all lower-case.

    \lipsum\lipsum*

    \lipsum[〈paragraph range〉][〈sentence range〉]\lipsum*[〈paragraph range〉][〈sentence range〉]

    #1 : Range-like string that specifies the number of the paragraphstaken from Lorem ipsum. . . If omitted, the value set by\SetLipsumDefault is used, which defaults to 1-7. this ar-gument can not be empty if the second optional argument isprovided.

    #2 : Sentences to be typeset from the range selected by 〈paragraphrange〉. If sentences outside the number of sentences in〈paragraph range〉 are specified, only existing sentences aretypeset.

    The difference between \lipsum and \lipsum* is the token(s) thatare inserted after each paragraph (only if called without the secondoptional argument).

    452

    453 \NewDocumentCommand454 \lipsum{

    21

  • 455 s456 >{\__lipsum_split_argument_expanded:nne{1}{-}}457 O{\g_lipsum_default_range_tl}458 >{\__lipsum_split_argument_expanded:nne{1}{-}}459 o460 }461 {462 \group_begin:463 \lipsum_store_as_temp_ints:nn #2464 \IfBooleanTF {#1}465 {466 \__lipsum_set_surrounding_tokens_star:467 }468 {469 \__lipsum_set_surrounding_tokens_nostar:470 }471

    472 \IfNoValueTF{#3}473 {474 \lipsum_range_to_tokenlist:VV475 { \l_tmpa_int }{ \l_tmpb_int }476 \tl_use:N \l__lipsum_pars_tl477 }478 {479 \__lipsum_ensure_parsable_output:480 \lipsum_range_to_tokenlist:VV481 { \l_tmpa_int }{ \l_tmpb_int }482 \lipsum_store_as_temp_ints:nn #3483 \cs_gset_nopar:Nx484 \__lipsum_expanded_paragraphs_terminated_with_space:485 {\tl_use:N\l__lipsum_pars_tl}486 \lipsum_sentences_to_tokenlist:VVf487 { \l_tmpa_int }488 { \l_tmpb_int }489 \__lipsum_expanded_paragraphs_terminated_with_space:490 \tl_use:N \l__lipsum_sentences_tl491 }492 \group_end:493 }

    (End definition for \lipsum and \lipsum*. These functions are documentedon page ??.)

    \lipsumexp The following macros store their results in the macro \lipsumexp.I create it first using xparse before it is overwritten. Don’t know ifthis makes sense.

    494 \NewDocumentCommand\lipsumexp{}{}

    (End definition for \lipsumexp. This function is documented on page ??.)

    \unpacklipsum\unpacklipsum*

    These two commands do the same as \lipsum and \lipsum*, butinstead of typesetting the paragraphs or sentences, they store theexpanded content in the macro \lipsumexp. If, for example by us-ing the package option space or by using the \SetLipsum...Listcommands, the corresponding 〈tokens〉 between the single items ofthe list are expandable, they are expanded. If they arenot expand-able, they are—of course—not.

    \unpacklipsum[〈paragraph range〉][〈sentence range〉]\unpacklipsum*[〈paragraph range〉][〈sentence range〉]...\lipsumexp

    22

  • 495 \cs_new:Nn \__lipsum_expanded: {}496 \NewDocumentCommand497 \unpacklipsum498 {499 s500 >{\__lipsum_split_argument_expanded:nne{1}{-}}501 O{\g_lipsum_default_range_tl}502 >{\__lipsum_split_argument_expanded:nne{1}{-}}503 o504 }505 {506

    507 \group_begin:508 \lipsum_store_as_temp_ints:nn #2509 \IfBooleanTF {#1}510 {511 \__lipsum_set_surrounding_tokens_star:512 }513 {514 \__lipsum_set_surrounding_tokens_nostar:515 }516 \IfNoValueTF{#3}517 {518 \lipsum_range_to_tokenlist:VV519 { \l_tmpa_int } { \l_tmpb_int }520 \cs_gset:Nx521 \__lipsum_expanded: {\tl_use:N\l__lipsum_pars_tl}522 \cs_gset_eq:NN523 \lipsumexp \__lipsum_expanded:524 }525 {526 \__lipsum_ensure_parsable_output:527 \lipsum_range_to_tokenlist:VV528 { \l_tmpa_int } { \l_tmpb_int }529 \cs_gset_nopar:Nx530 \__lipsum_expanded_paragraphs_terminated_with_space:531 { \tl_use:N\l__lipsum_pars_tl }532 \lipsum_store_as_temp_ints:nn #3533 \lipsum_sentences_to_tokenlist:VVf534 { \l_tmpa_int }535 { \l_tmpb_int }536 \__lipsum_expanded_paragraphs_terminated_with_space:537 \cs_gset:Nx538 \__lipsum_expanded:539 { \tl_use:N\l__lipsum_sentences_tl }540 \cs_gset_eq:NN541 \lipsumexp \__lipsum_expanded:542 }543 \group_end:544 }

    (End definition for \unpacklipsum and \unpacklipsum*. These functions aredocumented on page ??.)

    \IfLipsumText New conditional to test if a lipsum text definition is currentlyloaded.

    \IfLipsumText{〈text〉}true-codefalse-code

    #1 : Name of a lipsum language definition file#2 : Code expanded if the current text definition is the one given

    in argument #1#3 : Code expanded otherwise.

    23

  • 545 \NewDocumentCommand\IfLipsumText{mmm}{%546 \str_if_eq:VnTF\g__lipsum_text_str{#1}{#2}{#3}547 }

    (End definition for \IfLipsumText. This function is documented on page ??.)

    \SetLipsumText Used to select and load the text output by \lipsum and friends.See the section on loading and defining new outputs for \lipsum(section 5.2). It first checks whether the requested text is alreadyloaded, and if not, it clears \g__lipsum_paragraph_seq and loadsthe corresponding lipsum text definition file.

    548 \NewDocumentCommand\SetLipsumText{m}{%549 \IfLipsumText{#1}{}{550 \seq_gclear:N\g__lipsum_paragraph_seq551 \file_input:n{#1.ltd}552 \str_gset:Nn\g__lipsum_text_str{#1}553 }554 }555

    (End definition for \SetLipsumText. This function is documented on page ??.)

    6.7 Package options and defaults556

    557 \cs_new:Nn \__lipsum_restore_sentence_list: {558 \SetLipsumSentenceListItemSeparator{\space}559 \SetLipsumSentenceListItemSeparator*{\space}560 \SetLipsumSentenceListSurrounders{}{}561 \SetLipsumSentenceListSurrounders*{}{}562 \SetLipsumSentenceListItemSurrounders*{}{}563 \SetLipsumSentenceListItemSurrounders{}{}564 }565 \cs_new:Nn \__lipsum_restore_par_list: {566 \SetLipsumParListItemSeparator{\par}567 \SetLipsumParListItemSeparator*{\space}568 \SetLipsumParListSurrounders{}{}569 \SetLipsumParListSurrounders*{}{}570 \SetLipsumParListItemSurrounders*{}{}571 \SetLipsumParListItemSurrounders{}{}572 }573

    574

    575 \DeclareOption{nopar}{%576 \cs_gset:Nn \__lipsum_restore_sentence_list: {577 \SetLipsumSentenceListItemSeparator{\space}578 \SetLipsumSentenceListItemSeparator*{\space}579 \SetLipsumSentenceListEnd{}580 \SetLipsumSentenceListEnd*{}581 \SetLipsumSentenceListItemSurrounders*{}{}582 \SetLipsumSentenceListItemSurrounders{}{}583 }584 \cs_gset:Nn \__lipsum_restore_par_list: {585 \SetLipsumParListItemSeparator{\space}586 \SetLipsumParListItemSeparator*{\par}587 \SetLipsumParListEnd{}588 \SetLipsumParListEnd*{}589 \SetLipsumParListItemSurrounders*{}{}590 \SetLipsumParListItemSurrounders{}{}591 }592 }593 \ProcessOptions594 \NewDocumentCommand\LipsumRestoreParList{}{}595 \cs_gset_eq:NN

    24

  • 596 \LipsumRestoreParList597 \__lipsum_restore_par_list:598 \NewDocumentCommand\LipsumRestoreSentenceList{}{}599 \cs_gset_eq:NN600 \LipsumRestoreSentenceList601 \__lipsum_restore_sentence_list:602 \NewDocumentCommand\LipsumRestoreAll{}{603 \LipsumRestoreParList604 \LipsumRestoreSentenceList605 }606 \LipsumRestoreAll607 \ExplSyntaxOff608

    609 \SetLipsumDefault{1-7}610 \SetLipsumText{lipsum}

    611 〈/package〉

    25

  • 7 Texts7.1 The Lorem ipsum. . . dummy text

    612 〈*lipsum〉

    613 \NewLipsumPar{%614 Lorem ipsum dolor sit amet, consectetuer615 adipiscing elit. Ut purus elit, vestibulum ut, placerat ac,616 adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu617 libero, nonummy eget, consectetuer id, vulputate a, magna. Donec618 vehicula augue eu neque. Pellentesque habitant morbi tristique619 senectus et netus et malesuada fames ac turpis egestas. Mauris ut620 leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna621 fringilla ultrices. Phasellus eu tellus sit amet tortor gravida622 placerat. Integer sapien est, iaculis in, pretium quis, viverra ac,623 nunc. Praesent eget sem vel leo ultrices bibendum. Aenean faucibus.624 Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla.625 Curabitur auctor semper nulla. Donec varius orci eget risus. Duis626 nibh mi, congue eu, accumsan eleifend, sagittis quis, diam. Duis627 eget orci sit amet orci dignissim rutrum.}628 %{2}629 \NewLipsumPar{Nam dui ligula, fringilla a, euismod sodales,630 sollicitudin vel, wisi. Morbi auctor lorem non justo. Nam lacus631 libero, pretium at, lobortis vitae, ultricies et, tellus. Donec632 aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna,633 vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit634 mollis. Suspendisse ut massa. Cras nec ante. Pellentesque a nulla.635 Cum sociis natoque penatibus et magnis dis parturient montes,636 nascetur ridiculus mus. Aliquam tincidunt urna. Nulla ullamcorper637 vestibulum turpis. Pellentesque cursus luctus mauris.}638 %{3}639 \NewLipsumPar{Nulla malesuada porttitor diam. Donec felis640 erat, congue non, volutpat at, tincidunt tristique, libero. Vivamus641 viverra fermentum felis. Donec nonummy pellentesque ante. Phasellus642 adipiscing semper elit. Proin fermentum massa ac quam. Sed diam643 turpis, molestie vitae, placerat a, molestie nec, leo. Maecenas644 lacinia. Nam ipsum ligula, eleifend at, accumsan nec, suscipit a,645 ipsum. Morbi blandit ligula feugiat magna. Nunc eleifend consequat646 lorem. Sed lacinia nulla vitae enim. Pellentesque tincidunt purus647 vel magna. Integer non enim. Praesent euismod nunc eu purus. Donec648 bibendum quam in tellus. Nullam cursus pulvinar lectus. Donec et mi.649 Nam vulputate metus eu enim. Vestibulum pellentesque felis eu650 massa.}651 %{4}652 \NewLipsumPar{Quisque ullamcorper placerat ipsum. Cras nibh.653 Morbi vel justo vitae lacus tincidunt ultrices. Lorem ipsum dolor654 sit amet, consectetuer adipiscing elit. In hac habitasse platea655 dictumst. Integer tempus convallis augue. Etiam facilisis. Nunc656 elementum fermentum wisi. Aenean placerat. Ut imperdiet, enim sed657 gravida sollicitudin, felis odio placerat quam, ac pulvinar elit658 purus eget enim. Nunc vitae tortor. Proin tempus nibh sit amet nisl.659 Vivamus quis tortor vitae risus porta vehicula.}660 %{5}661 \NewLipsumPar{Fusce mauris. Vestibulum luctus nibh at lectus.662 Sed bibendum, nulla a faucibus semper, leo velit ultricies tellus,663 ac venenatis arcu wisi vel nisl. Vestibulum diam. Aliquam664 pellentesque, augue quis sagittis posuere, turpis lacus congue quam,665 in hendrerit risus eros eget felis. Maecenas eget erat in sapien666 mattis porttitor. Vestibulum porttitor. Nulla facilisi. Sed a turpis667 eu lacus commodo facilisis. Morbi fringilla, wisi in dignissim668 interdum, justo lectus sagittis dui, et vehicula libero dui cursus669 dui. Mauris tempor ligula sed lacus. Duis cursus enim ut augue. Cras670 ac magna. Cras nulla. Nulla egestas. Curabitur a leo. Quisque

    26

  • 671 egestas wisi eget nunc. Nam feugiat lacus vel est. Curabitur672 consectetuer.}673 %{6}674 \NewLipsumPar{Suspendisse vel felis. Ut lorem lorem, interdum675 eu, tincidunt sit amet, laoreet vitae, arcu. Aenean faucibus pede eu676 ante. Praesent enim elit, rutrum at, molestie non, nonummy vel,677 nisl. Ut lectus eros, malesuada sit amet, fermentum eu, sodales678 cursus, magna. Donec eu purus. Quisque vehicula, urna sed ultricies679 auctor, pede lorem egestas dui, et convallis elit erat sed nulla.680 Donec luctus. Curabitur et nunc. Aliquam dolor odio, commodo681 pretium, ultricies non, pharetra in, velit. Integer arcu est,682 nonummy in, fermentum faucibus, egestas vel, odio.}683 %{7}684 \NewLipsumPar{Sed commodo posuere pede. Mauris ut est. Ut685 quis purus. Sed ac odio. Sed vehicula hendrerit sem. Duis non odio.686 Morbi ut dui. Sed accumsan risus eget odio. In hac habitasse platea687 dictumst. Pellentesque non elit. Fusce sed justo eu urna porta688 tincidunt. Mauris felis odio, sollicitudin sed, volutpat a, ornare689 ac, erat. Morbi quis dolor. Donec pellentesque, erat ac sagittis690 semper, nunc dui lobortis purus, quis congue purus metus ultricies691 tellus. Proin et quam. Class aptent taciti sociosqu ad litora692 torquent per conubia nostra, per inceptos hymenaeos. Praesent sapien693 turpis, fermentum vel, eleifend faucibus, vehicula eu, lacus.}694 %{8}695 \NewLipsumPar{Pellentesque habitant morbi tristique senectus696 et netus et malesuada fames ac turpis egestas. Donec odio elit,697 dictum in, hendrerit sit amet, egestas sed, leo. Praesent feugiat698 sapien aliquet odio. Integer vitae justo. Aliquam vestibulum699 fringilla lorem. Sed neque lectus, consectetuer at, consectetuer700 sed, eleifend ac, lectus. Nulla facilisi. Pellentesque eget lectus.701 Proin eu metus. Sed porttitor. In hac habitasse platea dictumst.702 Suspendisse eu lectus. Ut mi mi, lacinia sit amet, placerat et,703 mollis vitae, dui. Sed ante tellus, tristique ut, iaculis eu,704 malesuada ac, dui. Mauris nibh leo, facilisis non, adipiscing quis,705 ultrices a, dui.}706 %{9}707 \NewLipsumPar{Morbi luctus, wisi viverra faucibus pretium,708 nibh est placerat odio, nec commodo wisi enim eget quam. Quisque709 libero justo, consectetuer a, feugiat vitae, porttitor eu, libero.710 Suspendisse sed mauris vitae elit sollicitudin malesuada. Maecenas711 ultricies eros sit amet ante. Ut venenatis velit. Maecenas sed mi712 eget dui varius euismod. Phasellus aliquet volutpat odio. Vestibulum713 ante ipsum primis in faucibus orci luctus et ultrices posuere714 cubilia Curae; Pellentesque sit amet pede ac sem eleifend715 consectetuer. Nullam elementum, urna vel imperdiet sodales, elit716 ipsum pharetra ligula, ac pretium ante justo a nulla. Curabitur717 tristique arcu eu metus. Vestibulum lectus. Proin mauris. Proin eu718 nunc eu urna hendrerit faucibus. Aliquam auctor, pede consequat719 laoreet varius, eros tellus scelerisque quam, pellentesque hendrerit720 ipsum dolor sed augue. Nulla nec lacus.}721 %{10}722 \NewLipsumPar{Suspendisse vitae elit. Aliquam arcu neque,723 ornare in, ullamcorper quis, commodo eu, libero. Fusce sagittis erat724 at erat tristique mollis. Maecenas sapien libero, molestie et,725 lobortis in, sodales eget, dui. Morbi ultrices rutrum lorem. Nam726 elementum ullamcorper leo. Morbi dui. Aliquam sagittis. Nunc727 placerat. Pellentesque tristique sodales est. Maecenas imperdiet728 lacinia velit. Cras non urna. Morbi eros pede, suscipit ac, varius729 vel, egestas non, eros. Praesent malesuada, diam id pretium730 elementum, eros sem dictum tortor, vel consectetuer odio sem sed731 wisi.}732 %{11}733 \NewLipsumPar{Sed feugiat. Cum sociis natoque penatibus et

    27

  • 734 magnis dis parturient montes, nascetur ridiculus mus. Ut735 pellentesque augue sed urna. Vestibulum diam eros, fringilla et,736 consectetuer eu, nonummy id, sapien. Nullam at lectus. In sagittis737 ultrices mauris. Curabitur malesuada erat sit amet massa. Fusce738 blandit. Aliquam erat volutpat. Aliquam euismod. Aenean vel lectus.739 Nunc imperdiet justo nec dolor.}740 %{12}741 \NewLipsumPar{Etiam euismod. Fusce facilisis lacinia dui.742 Suspendisse potenti. In mi erat, cursus id, nonummy sed, ullamcorper743 eget, sapien. Praesent pretium, magna in eleifend egestas, pede pede744 pretium lorem, quis consectetuer tortor sapien facilisis magna.745 Mauris quis magna varius nulla scelerisque imperdiet. Aliquam non746 quam. Aliquam porttitor quam a lacus. Praesent vel arcu ut tortor747 cursus volutpat. In vitae pede quis diam bibendum placerat. Fusce748 elementum convallis neque. Sed dolor orci, scelerisque ac, dapibus749 nec, ultricies ut, mi. Duis nec dui quis leo sagittis commodo.}750 %{13}751 \NewLipsumPar{Aliquam lectus. Vivamus leo. Quisque ornare752 tellus ullamcorper nulla. Mauris porttitor pharetra tortor. Sed753 fringilla justo sed mauris. Mauris tellus. Sed non leo. Nullam754 elementum, magna in cursus sodales, augue est scelerisque sapien,755 venenatis congue nulla arcu et pede. Ut suscipit enim vel sapien.756 Donec congue. Maecenas urna mi, suscipit in, placerat ut, vestibulum757 ut, massa. Fusce ultrices nulla et nisl.}758 %{14}759 \NewLipsumPar{Etiam ac leo a risus tristique nonummy. Donec760 dignissim tincidunt nulla. Vestibulum rhoncus molestie odio. Sed761 lobortis, justo et pretium lobortis, mauris turpis condimentum762 augue, nec ultricies nibh arcu pretium enim. Nunc purus neque,763 placerat id, imperdiet sed, pellentesque nec, nisl. Vestibulum764 imperdiet neque non sem accumsan laoreet. In hac habitasse platea765 dictumst. Etiam condimentum facilisis libero. Suspendisse in elit766 quis nisl aliquam dapibus. Pellentesque auctor sapien. Sed egestas767 sapien nec lectus. Pellentesque vel dui vel neque bibendum viverra.768 Aliquam porttitor nisl nec pede. Proin mattis libero vel turpis.769 Donec rutrum mauris et libero. Proin euismod porta felis. Nam770 lobortis, metus quis elementum commodo, nunc lectus elementum771 mauris, eget vulputate ligula tellus eu neque. Vivamus eu772 dolor.}773 %{15}774 \NewLipsumPar{Nulla in ipsum. Praesent eros nulla, congue775 vitae, euismod ut, commodo a, wisi. Pellentesque habitant morbi776 tristique senectus et netus et malesuada fames ac turpis egestas.777 Aenean nonummy magna non leo. Sed felis erat, ullamcorper in, dictum778 non, ultricies ut, lectus. Proin vel arcu a odio lobortis euismod.779 Vestibulum ante ipsum primis in faucibus orci luctus et ultrices780 posuere cubilia Curae; Proin ut est. Aliquam odio. Pellentesque781 massa turpis, cursus eu, euismod nec, tempor congue, nulla. Duis782 viverra gravida mauris. Cras tincidunt. Curabitur eros ligula,783 varius ut, pulvinar in, cursus faucibus, augue.}784 %{16}785 \NewLipsumPar{Nulla mattis luctus nulla. Duis commodo velit786 at leo. Aliquam vulputate magna et leo. Nam vestibulum ullamcorper787 leo. Vestibulum condimentum rutrum mauris. Donec id mauris. Morbi788 molestie justo et pede. Vivamus eget turpis sed nisl cursus tempor.789 Curabitur mollis sapien condimentum nunc. In wisi nisl, malesuada790 at, dignissim sit amet, lobortis in, odio. Aenean consequat arcu a791 ante. Pellentesque porta elit sit amet orci. Etiam at turpis nec792 elit ultricies imperdiet. Nulla facilisi. In hac habitasse platea793 dictumst. Suspendisse viverra aliquam risus. Nullam pede justo,794 molestie nonummy, scelerisque eu, facilisis vel, arcu.}795 %{17}796 \NewLipsumPar{Curabitur tellus magna, porttitor a, commodo

    28

  • 797 a, commodo in, tortor. Donec interdum. Praesent scelerisque.798 Maecenas posuere sodales odio. Vivamus metus lacus, varius quis,799 imperdiet quis, rhoncus a, turpis. Etiam ligula arcu, elementum a,800 venenatis quis, sollicitudin sed, metus. Donec nunc pede, tincidunt801 in, venenatis vitae, faucibus vel, nibh. Pellentesque wisi. Nullam802 malesuada. Morbi ut tellus ut pede tincidunt porta. Lorem ipsum803 dolor sit amet, consectetuer adipiscing elit. Etiam congue neque id804 dolor.}805 %{18}806 \NewLipsumPar{Donec et nisl at wisi luctus bibendum. Nam807 interdum tellus ac libero. Sed sem justo, laoreet vitae, fringilla808 at, adipiscing ut, nibh. Maecenas non sem quis tortor eleifend809 fermentum. Etiam id tortor ac mauris porta vulputate. Integer porta810 neque vitae massa. Maecenas tempus libero a libero posuere dictum.811 Vestibulum ante ipsum primis in faucibus orci luctus et ultrices812 posuere cubilia Curae; Aenean quis mauris sed elit commodo placerat.813 Class aptent taciti sociosqu ad litora torquent per conubia nostra,814 per inceptos hymenaeos. Vivamus rhoncus tincidunt libero. Etiam815 elementum pretium justo. Vivamus est. Morbi a tellus eget pede816 tristique commodo. Nulla nisl. Vestibulum sed nisl eu sapien cursus817 rutrum.}818 %{19}819 \NewLipsumPar{Nulla non mauris vitae wisi posuere convallis.820 Sed eu nulla nec eros scelerisque pharetra. Nullam varius. Etiam821 dignissim elementum metus. Vestibulum faucibus, metus sit amet822 mattis rhoncus, sapien dui laoreet odio, nec ultricies nibh augue a823 enim. Fusce in ligula. Quisque at magna et nulla commodo consequat.824 Proin accumsan imperdiet sem. Nunc porta. Donec feugiat mi at justo.825 Phasellus facilisis ipsum quis ante. In ac elit eget ipsum pharetra826 faucibus. Maecenas viverra nulla in massa.}827 %{20}828 \NewLipsumPar{Nulla ac nisl. Nullam urna nulla, ullamcorper829 in, interdum sit amet, gravida ut, risus. Aenean ac enim. In luctus.830 Phasellus eu quam vitae turpis viverra pellentesque. Duis feugiat831 felis ut enim. Phasellus pharetra, sem id porttitor sodales, magna832 nunc aliquet nibh, nec blandit nisl mauris at pede. Suspendisse833 risus risus, lobortis eget, semper at, imperdiet sit amet, quam.834 Quisque scelerisque dapibus nibh. Nam enim. Lorem ipsum dolor sit835 amet, consectetuer adipiscing elit. Nunc ut metus. Ut metus justo,836 auctor at, ultrices eu, sagittis ut, purus. Aliquam aliquam.}837 %{21}838 \NewLipsumPar{Etiam pede massa, dapibus vitae, rhoncus in,839 placerat posuere, odio. Vestibulum luctus commodo lacus. Morbi lacus840 dui, tempor sed, euismod eget, condimentum at, tortor. Phasellus841 aliquet odio ac lacus tempor faucibus. Praesent sed sem. Praesent842 iaculis. Cras rhoncus tellus sed justo ullamcorper sagittis. Donec843 quis orci. Sed ut tortor quis tellus euismod tincidunt. Suspendisse844 congue nisl eu elit. Aliquam tortor diam, tempus id, tristique eget,845 sodales vel, nulla. Praesent tellus mi, condimentum sed, viverra at,846 consectetuer quis, lectus. In auctor vehicula orci. Sed pede sapien,847 euismod in, suscipit in, pharetra placerat, metus. Vivamus commodo848 dui non odio. Donec et felis.}849 %{22}850 \NewLipsumPar{Etiam suscipit aliquam arcu. Aliquam sit amet851 est ac purus bibendum congue. Sed in eros. Morbi non orci.852 Pellentesque mattis lacinia elit. Fusce molestie velit in ligula.853 Nullam et orci vitae nibh vulputate auctor. Aliquam eget purus.854 Nulla auctor wisi sed ipsum. Morbi porttitor tellus ac enim. Fusce855 ornare. Proin ipsum enim, tincidunt in, ornare venenatis, molestie856 a, augue. Donec vel pede in lacus sagittis porta. Sed hendrerit857 ipsum quis nisl. Suspendisse quis massa ac nibh pretium cursus. Sed858 sodales. Nam eu neque quis pede dignissim ornare. Maecenas eu purus859 ac urna tincidunt congue.}

    29

  • 860 %{23}861 \NewLipsumPar{Donec et nisl id sapien blandit mattis.862 Aenean dictum odio sit amet risus. Morbi purus. Nulla a est sit amet863 purus venenatis iaculis. Vivamus viverra purus vel magna. Donec in864 justo sed odio malesuada dapibus. Nunc ultrices aliquam nunc.865 Vivamus facilisis pellentesque velit. Nulla nunc velit, vulputate866 dapibus, vulputate id, mattis ac, justo. Nam mattis elit dapibus867 purus. Quisque enim risus, congue non, elementum ut, mattis quis,868 sem. Quisque elit.}869 %{24}870 \NewLipsumPar{Maecenas non massa. Vestibulum pharetra nulla871 at lorem. Duis quis quam id lacus dapibus interdum. Nulla lorem.872 Donec ut ante quis dolor bibendum condimentum. Etiam egestas tortor873 vitae lacus. Praesent cursus. Mauris bibendum pede at elit. Morbi et874 felis a lectus interdum facilisis. Sed suscipit gravida turpis.875 Nulla at lectus. Vestibulum ante ipsum primis in faucibus orci876 luctus et ultrices posuere cubilia Curae; Praesent nonummy luctus877 nibh. Proin turpis nunc, congue eu, egestas ut, fringilla at,878 tellus. In hac habitasse platea dictumst.}879 %{25}880 \NewLipsumPar{Vivamus eu tellus sed tellus consequat881 suscipit. Nam orci orci, malesuada id, gravida nec, ultricies vitae,882 erat. Donec risus turpis, luctus sit amet, interdum quis, porta sed,883 ipsum. Suspendisse condimentum, tortor at egestas posuere, neque884 metus tempor orci, et tincidunt urna nunc a purus. Sed facilisis885 blandit tellus. Nunc risus sem, suscipit nec, eleifend quis, cursus886 quis, libero. Curabitur et dolor. Sed vitae sem. Cum sociis natoque887 penatibus et magnis dis parturient montes, nascetur ridiculus mus.888 Maecenas ante. Duis ullamcorper enim. Donec tristique enim eu leo.889 Nullam molestie elit eu dolor. Nullam bibendum, turpis vitae890 tristique gravida, quam sapien tempor lectus, quis pretium tellus891 purus ac quam. Nulla facilisi.}892 %{26}893 \NewLipsumPar{Duis aliquet dui in est. Donec eget est. Nunc894 lectus odio, varius at, fermentum in, accumsan non, enim. Aliquam895 erat volutpat. Proin sit amet nulla ut eros consectetuer cursus.896 Phasellus dapibus aliquam justo. Nunc laoreet. Donec consequat897 placerat magna. Duis pretium tincidunt justo. Sed sollicitudin898 vestibulum quam. Nam quis ligula. Vivamus at metus. Etiam imperdiet899 imperdiet pede. Aenean turpis. Fusce augue velit, scelerisque900 sollicitudin, dictum vitae, tempor et, pede. Donec wisi sapien,901 feugiat in, fermentum ut, sollicitudin adipiscing, metus.}902 %{27}903 \NewLipsumPar{Donec vel nibh ut felis consectetuer laoreet.904 Donec pede. Sed id quam id wisi laoreet suscipit. Nulla lectus905 dolor, aliquam ac, fringilla eget, mollis ut, orci. In pellentesque906 justo in ligula. Maecenas turpis. Donec eleifend leo at felis907 tincidunt consequat. Aenean turpis metus, malesuada sed, condimentum908 sit amet, auctor a, wisi. Pellentesque sapien elit, bibendum ac,909 posuere et, congue eu, felis. Vestibulum mattis libero quis metus910 scelerisque ultrices. Sed purus.}911 %{28}912 \NewLipsumPar{Donec molestie, magna ut luctus ultrices,913 tellus arcu nonummy velit, sit amet pulvinar elit justo et mauris.914 In pede. Maecenas euismod elit eu erat. Aliquam augue wisi,915 facilisis congue, suscipit in, adipiscing et, ante. In justo. Cras916 lobortis neque ac ipsum. Nunc fermentum massa at ante. Donec orci917 tortor, egestas sit amet, ultrices eget, venenatis eget, mi.918 Maecenas vehicula leo semper est. Mauris vel metus. Aliquam erat919 volutpat. In rhoncus sapien ac tellus. Pellentesque ligula.}920 %{29}921 \NewLipsumPar{Cras dapibus, augue quis scelerisque922 ultricies, felis dolor placerat sem, id porta velit odio eu elit.

    30

  • 923 Aenean interdum nibh sed wisi. Praesent sollicitudin vulputate dui.924 Praesent iaculis viverra augue. Quisque in libero. Aenean gravida925 lorem vitae sem ullamcorper cursus. Nunc adipiscing rutrum ante.926 Nunc ipsum massa, faucibus sit amet, viverra vel, elementum semper,927 orci. Cras eros sem, vulputate et, tincidunt id, ultrices eget,928 magna. Nulla varius ornare odio. Donec accumsan mauris sit amet929 augue. Sed ligula lacus, laoreet non, aliquam sit amet, iaculis930 tempor, lorem. Suspendisse eros. Nam porta, leo sed congue tempor,931 felis est ultrices eros, id mattis velit felis non metus. Curabitur932 vitae elit non mauris varius pretium. Aenean lacus sem, tincidunt933 ut, consequat quis, porta vitae, turpis. Nullam laoreet fermentum934 urna. Proin iaculis lectus.}935 %{30}936 \NewLipsumPar{Sed mattis, erat sit amet gravida malesuada,937 elit augue egestas diam, tempus scelerisque nunc nisl vitae libero.938 Sed consequat feugiat massa. Nunc porta, eros in eleifend varius,939 erat leo rutrum dui, non convallis lectus orci ut nibh. Sed lorem940 massa, nonummy quis, egestas id, condimentum at, nisl. Maecenas at941 nibh. Aliquam et augue at nunc pellentesque ullamcorper. Duis nisl942 nibh, laoreet suscipit, convallis ut, rutrum id, enim. Phasellus943 odio. Nulla nulla elit, molestie non, scelerisque at, vestibulum944 eu, nulla. Ut odio nisl, facilisis id, mollis et, scelerisque nec,945 enim. Aenean sem leo, pellentesque sit amet, scelerisque sit amet,946 vehicula pellentesque, sapien.}947 %{31}948 \NewLipsumPar{Sed consequat tellus et tortor. Ut tempor949 laoreet quam. Nullam id wisi a libero tristique semper. Nullam nisl950 massa, rutrum ut, egestas semper, mollis id, leo. Nulla ac massa eu951 risus blandit mattis. Mauris ut nunc. In hac habitasse platea952 dictumst. Aliquam eget tortor. Quisque dapibus pede in erat. Nunc953 enim. In dui nulla, commodo at, consectetuer nec, malesuada nec,954 elit. Aliquam ornare tellus eu urna. Sed nec metus. Cum sociis955 natoque penatibus et magnis dis parturient montes, nascetur956 ridiculus mus. Pellentesque habitant morbi tristique senectus et957 netus et malesuada fames ac turpis egestas.}958 %{32}959 \NewLipsumPar{Phasellus id magna. Duis malesuada interdum960 arcu. Integer metus. Morbi pulvinar pellentesque mi. Suspendisse961 sed est eu magna molestie egestas. Quisque mi lorem, pulvinar eget,962 egestas quis, luctus at, ante. Proin auctor vehicula purus. Fusce ac963 nisl aliquam ante hendrerit pellentesque. Class aptent taciti964 sociosqu ad litora torquent per conubia nostra, per inceptos965 hymenaeos. Morbi wisi. Etiam arcu mauris, facilisis sed, eleifend966 non, nonummy ut, pede. Cras ut lacus tempor metus mollis placerat.967 Vivamus eu tortor vel metus interdum malesuada.}968 %{33}969 \NewLipsumPar{Sed eleifend, eros sit amet faucibus970 elementum, urna sapien consectetuer mauris, quis egestas leo justo971 non risus. Morbi non felis ac libero vulputate fringilla. Mauris972 libero eros, lacinia non, sodales quis, dapibus porttitor, pede.973 Class aptent taciti sociosqu ad litora torquent per conubia nostra,974 per inceptos hymenaeos. Morbi dapibus mauris condimentum nulla. Cum975 sociis natoque penatibus et magnis dis parturient montes, nascetur976 ridiculus mus. Etiam sit amet erat. Nulla varius. Etiam tincidunt977 dui vitae turpis. Donec leo. Morbi vulputate convallis est. Integer978 aliquet. Pellentesque aliquet sodales urna.}979 %{34}980 \NewLipsumPar{Nullam eleifend justo in nisl. In hac981 habitasse platea dictumst. Morbi nonummy. Aliquam ut felis. In velit982 leo, dictum vitae, posuere id, vulputate nec, ante. Maecenas vitae983 pede nec dui dignissim suscipit. Morbi magna. Vestibulum id purus984 eget velit laoreet laoreet. Praesent sed leo vel nibh convallis985 blandit. Ut rutrum. Donec nibh. Donec interdum. Fusce sed pede sit

    31

  • 986 amet elit rhoncus ultrices. Nullam at enim vitae pede vehicula987 iaculis.}988 %{35}989 \NewLipsumPar{Class aptent taciti sociosqu ad litora990 torquent per conubia nostra, per inceptos hymenaeos. Aenean nonummy991 turpis id odio. Integer euismod imperdiet turpis. Ut nec leo nec992 diam imperdiet lacinia. Etiam eget lacus eget mi ultricies posuere.993 In placerat tristique tortor. Sed porta vestibulum metus. Nulla994 iaculis sollicitudin pede. Fusce luctus tellus in dolor. Curabitur995 auctor velit a sem. Morbi sapien. Class aptent taciti sociosqu ad996 litora torquent per conubia nostra, per inceptos hymenaeos. Donec997 adipiscing urna vehicula nunc. Sed ornare leo in leo. In rhoncus leo998 ut dui. Aenean dolor quam, volutpat nec, fringilla id, consectetuer999 vel, pede.}

    1000 %{36}1001 \NewLipsumPar{Nulla malesuada risus ut urna. Aenean pretium1002 velit sit amet metus. Duis iaculis. In hac habitasse platea1003 dictumst. Nullam molestie turpis eget nisl. Duis a massa id pede1004 dapibus ultricies. Sed eu leo. In at mauris sit amet tortor bibendum1005 varius. Phasellus justo risus, posuere in, sagittis ac, varius vel,1006 tortor. Quisque id enim. Phasellus consequat, libero pretium1007 nonummy fringilla, tortor lacus vestibulum nunc, ut rhoncus ligula1008 neque id justo. Nullam accumsan euismod nunc. Proin vitae ipsum ac1009 metus dictum tempus. Nam ut wisi. Quisque tortor felis, interdum ac,1010 sodales a, semper a, sem. Curabitur in velit sit amet dui tristique1011 sodales. Vivamus mauris pede, lacinia eget, pellentesque quis,1012 scelerisque eu, est. Aliquam risus. Quisque bibendum pede eu1013 dolor.}1014 %{37}1015 \NewLipsumPar{Donec tempus neque vitae est. Aenean egestas1016 odio sed risus ullamcorper ullamcorper. Sed in nulla a tortor1017 tincidunt egestas. Nam sapien tortor, elementum sit amet, aliquam1018 in, porttitor faucibus, enim. Nullam congue suscipit nibh. Quisque1019 convallis. Praesent arcu nibh, vehicula eget, accumsan eu, tincidunt1020 a, nibh. Suspendisse vulputate, tortor quis adipiscing viverra,1021 lacus nibh dignissim tellus, eu suscipit risus ante fringilla diam.1022 Quisque a libero vel pede imperdiet aliquet. Pellentesque nunc nibh,1023 eleifend a, consequat consequat, hendrerit nec, diam. Sed urna.1024 Maecenas laoreet eleifend neque. Vivamus purus odio, eleifend non,1025 iaculis a, ultrices sit amet, urna. Mauris faucibus odio vitae1026 risus. In nisl. Praesent purus. Integer iaculis, sem eu egestas1027 lacinia, lacus pede scelerisque augue, in ullamcorper dolor eros ac1028 lacus. Nunc in libero.}1029 %{38}1030 \NewLipsumPar{Fusce suscipit cursus sem. Vivamus risus1031 mi, egestas ac, imperdiet varius, faucibus quis, leo. Aenean1032 tincidunt. Donec suscipit. Cras id justo quis nibh scelerisque1033 dignissim. Aliquam sagittis elementum dolor. Aenean consectetuer1034 justo in pede. Curabitur ullamcorper ligula nec orci. Aliquam purus1035 turpis, aliquam id, ornare vitae, porttitor non, wisi. Maecenas1036 luctus porta lorem. Donec vitae ligula eu ante pretium varius.1037 Proin tortor metus, convallis et, hendrerit non, scelerisque in,1038 urna. Cras quis libero eu ligula bibendum tempor. Vivamus tellus1039 quam, malesuada eu, tempus sed, tempor sed, velit. Donec lacinia1040 auctor libero.}1041 %{39}1042 \NewLipsumPar{Praesent sed neque id pede mollis rutrum.1043 Vestibulum iaculis risus. Pellentesque lacus. Ut quis nunc sed odio1044 malesuada egestas. Duis a magna sit amet ligula tristique pretium.1045 Ut pharetra. Vestibulum imperdiet magna nec wisi. Mauris convallis.1046 Sed accumsan sollicitudin massa. Sed id enim. Nunc pede enim,1047 lacinia ut, pulvinar quis, suscipit semper, elit. Cras accumsan erat1048 vitae enim. Cras sollicitudin. Vestibulum rutrum blandit massa.}

    32

  • 1049 %{40}1050 \NewLipsumPar{Sed gravida lectus ut purus. Morbi laoreet1051 magna. Pellentesque eu wisi. Proin turpis. Integer sollicitudin1052 augue nec dui. Fusce lectus. Vivamus faucibus nulla nec lacus.1053 Integer diam. Pellentesque sodales, enim feugiat cursus volutpat,1054 sem mauris dignissim mauris, quis consequat sem est fermentum1055 ligula. Nullam justo lectus, condimentum sit amet, posuere a,1056 fringilla mollis, felis. Morbi nulla nibh, pellentesque at, nonummy1057 eu, sollicitudin nec, ipsum. Cras neque. Nunc augue. Nullam vitae1058 quam id quam pulvinar blandit. Nunc sit amet orci. Aliquam erat1059 elit, pharetra nec, aliquet a, gravida in, mi. Quisque urna enim,1060 viverra quis, suscipit quis, tincidunt ut, sapien. Cras placerat1061 consequat sem. Curabitur ac diam. Curabitur diam tortor, mollis et,1062 viverra ac, tempus vel, metus.}1063 %{41}1064 \NewLipsumPar{Curabitur ac lorem. Vivamus non justo in dui1065 mattis posuere. Etiam accumsan ligula id pede. Maecenas tincidunt1066 diam nec velit. Praesent convallis sapien ac est. Aliquam1067 ullamcorper euismod nulla. Integer mollis enim vel tortor. Nulla1068 sodales placerat nunc. Sed tempus rutrum wisi. Duis accumsan1069 gravida purus. Nunc nunc. Etiam facilisis dui eu sem. Vestibulum1070 semper. Praesent eu eros. Vestibulum tellus nisl, dapibus id,1071 vestibulum sit amet, placerat ac, mauris. Maecenas et elit ut erat1072 placerat dictum. Nam feugiat, turpis et sodales volutpat, wisi quam1073 rhoncus neque, vitae aliquam ipsum sapien vel enim. Maecenas1074 suscipit cursus mi.}1075 %{42}1076 \NewLipsumPar{Quisque consectetuer. In suscipit mauris a1077 dolor pellentesque consectetuer. Mauris convallis neque non erat. In1078 lacinia. Pellentesque leo eros, sagittis quis, fermentum quis,1079 tincidunt ut, sapien. Maecenas sem. Curabitur eros odio, interdum1080 eu, feugiat eu, porta ac, nisl. Curabitur nunc. Etiam fermentum1081 convallis velit. Pellentesque laoreet lacus. Quisque sed elit. Nam1082 quis tellus. Aliquam tellus arcu, adipiscing non, tincidunt1083 eleifend, adipiscing quis, augue. Vivamus elementum placerat enim.1084 Suspendisse ut tortor. Integer faucibus adipiscing felis. Aenean1085 consectetuer mattis lectus. Morbi malesuada faucibus dolor. Nam1086 lacus. Etiam arcu libero, malesuada vitae, aliquam vitae, blandit1087 tristique, nisl.}1088 %{43}1089 \NewLipsumPar{Maecenas accumsan dapibus sapien. Duis1090 pretium iaculis arcu. Curabitur ut lacus. Aliquam vulputate.1091 Suspendisse ut purus sed sem tempor rhoncus. Ut quam dui, fringilla1092 at, dictum eget, ultricies quis, quam. Etiam sem est, pharetra non,1093 vulputate in, pretium at, ipsum. Nunc semper sagittis orci. Sed1094 scelerisque suscipit diam. Ut volutpat, dolor at ullamcorper1095 tristique, eros purus mollis quam, sit amet ornare ante nunc et1096 enim.}1097 %{44}1098 \NewLipsumPar{Phasellus fringilla, metus id feugiat1099 consectetuer, lacus wisi ultrices tellus, quis lobortis nibh lorem1100 quis tortor. Donec egestas ornare nulla. Mauris mi tellus, porta1101 faucibus, dictum vel, nonummy in, est. Aliquam erat volutpat. In1102 tellus magna, porttitor lacinia, molestie vitae, pellentesque eu,1103 justo. Class aptent taciti sociosqu ad litora torquent per conubia1104 nostra, per inceptos hymenaeos. Sed orci nibh, scelerisque sit amet,1105 suscipit sed, placerat vel, diam. Vestibulum nonummy vulputate orci.1106 Donec et velit ac arcu interdum semper. Morbi pede orci, cursus ac,1107 elementum non, vehicula ut, lacus. Cras volutpat. Nam vel wisi quis1108 libero venenatis placerat. Aenean sed odio. Quisque posuere purus ac1109 orci. Vivamus odio. Vivamus varius, nulla sit amet semper viverra,1110 odio mauris consequat lacus, at vestibulum neque arcu eu tortor.1111 Donec iaculis tincidunt tellus. Aliquam erat volutpat. Curabitur

    33

  • 1112 magna lorem, dignissim volutpat, viverra et, adipiscing nec, dolor.1113 Praesent lacus mauris, dapibus vitae, sollicitudin sit amet, nonummy1114 eget, ligula.}1115 %{45}1116 \NewLipsumPar{Cras egestas ipsum a nisl. Vivamus varius dolor1117 ut dolor. Fusce vel enim. Pellentesque accumsan ligula et eros. Cras1118 id lacus non tortor facilisis facilisis. Etiam nisl elit, cursus1119 sed, fringilla in, congue nec, urna. Cum sociis natoque penatibus et1120 magnis dis parturient montes, nascetur ridiculus mus. Integer at1121 turpis. Cum sociis natoque penatibus et magnis dis parturient1122 montes, nascetur ridiculus mus. Duis fringilla, ligula sed porta1123 fringilla, ligula wisi commodo felis, ut adipiscing felis dui in1124 enim. Suspendisse malesuada ultrices ante. Pellentesque scelerisque1125 augue sit amet urna. Nulla volutpat aliquet tortor. Cras aliquam,1126 tellus at aliquet pellentesque, justo sapien commodo leo, id rhoncus1127 sapien quam at erat. Nulla commodo, wisi eget sollicitudin pretium,1128 orci orci aliquam orci, ut cursus turpis justo et lacus. Nulla vel1129 tortor. Quisque erat elit, viverra sit amet, sagittis eget, porta1130 sit amet, lacus.}1131 %{46}1132 \NewLipsumPar{In hac habitasse platea dictumst. Proin at1133 est. Curabitur tempus vulputate elit. Pellentesque sem. Praesent eu1134 sapien. Duis elit magna, aliquet at, tempus sed, vehicula non, enim.1135 Morbi viverra arcu nec purus. Vivamus fringilla, enim et commodo1136 malesuada, tortor metus elementum ligula, nec aliquet est sapien ut1137 lectus. Aliquam mi. Ut nec elit. Fusce euismod luctus tellus.1138 Curabitur scelerisque. Nullam purus. Nam ultricies accumsan magna.1139 Morbi pulvinar lorem sit amet ipsum. Donec ut justo vitae nibh1140 mollis congue. Fusce quis diam. Praesent tempus eros ut quam.}1141 %{47}1142 \NewLipsumPar{Donec in nisl. Fusce vitae est. Vivamus ante1143 ante, mattis laoreet, posuere eget, congue vel, nunc. Fusce sem. Nam1144 vel orci eu eros viverra luctus. Pellentesque sit amet augue. Nunc1145 sit amet ipsum et lacus varius nonummy. Integer ru