Making Lists in Scribus

You might as well know from the start: Making bulleted or numbered lists in Scribus isn't as easy as in the average word processor. In fact, compared to LibreOffice, Scribus as installed is downright primitive in the way it handles lists. You can pull a script off the Internet to automate to an extent, but chances are you'll have to tweak it before it does exactly what you want.

Creating a list manually is straightforward, but tedious. You want numbers? Insert them one at a time, and repeat whenever you need to renumber. You want bullet points? Go to Insert -> Character -> Bullet, or, if you want a character other than a plain bullet, to Insert -> Glyph -> Hide/Show Enhanced Palette, and copy and paste as necessary. Then, in both cases press Tab and start typing.

In both cases, you should create a list paragraph style to control the indentations in the list. Go to Edit -> Styles -> New -> Paragraph Style -> Tabulators and Indentation, and adjust the First Line Indent and Left Indent fields, using both positive and negative numbers, until you have the spacing you want. Usually, you want a negative indent for the first line, so that the number or bullet is indented from the margin, and a positive number for the left indent. The trickiest part is adjusting the left indent so that the subsequent lines align with the first -- a matter of trial and error that varies with the font.

Introducing Bullet.py

You can remove much of the drudgery of manual list creation by using José Antonio Meira da Rocha's Bullet.py script available on the Scribus site. Scroll down the page to the script, and copy and paste it to a text file, saving it with a .py extension, since it's a Python script.

Before installing it, you will almost certainly want to make some changes. For one thing, the script references the Dingbat and Wingding fonts for creating bullets, which your GNU/Linux installation is unlikely to have. More importantly, the Unicode glyph the script refers to is a checkbox with a shadow, which is almost certainly not what you want for a bullet.

Search for the variable bulletedListCharFont and replace it with a font on your system, such as the Symbol font used by LibreOffice. Similarly, search for the variable bullet string, and replace the default glyph with t

he one of your choice. You can browse the available glyphs by highlighting a selection in Insert ->Glyph -> Hide/Show Enhanced Palette dialog, and adding the last four characters of its code to the script. After some experimentation, you may want to replace the default 0 in the variable bulletedListCharSize as well.

I also recommend searching for the indent field and altering the default value of 22 points. That's nearly a third of an inch, which is far more than you are likely to need unless you are deliberately mimicing the look of a typewriter's output.

If you want a selection of bullets, you can make several copies of the script, each suitably named so you can find it quickly.

After you have finished your hacking, log in as root and transfer it to /usr/share/scribus/scripts. You might also want to save a copy of the script elsewhere, since the script's page warns that updates might remove it from the scripts directory.

Using the Bullet.py Script

To use the script, either select the paragraphs you want in the script, or else place the mouse cursor anywhere within a text frame to add all its paragraphs to the list. Then run the script by selecting it from Script -> Scribus Scripts.

Calling the script opens a small dialog window with an input screen on the bottom. Select * (asterisk) to add a bulleted list, a starting number, or an upper or lower case letter, optionally followed by a character such as a period or parenthesis, and press the OK button to create the list.

Reapplying the script with a different input will update the text frame. Alternatively, inputting a forward slash (/) will remove any bullets, numbers, or letters.

Selecting any of the list options that the script offers will create a corresponding paragraph style if one does not already exist in the document. Just as with manual list creation, you can adjust the indentations in this style to your liking.

Once you have tweaked everything to your liking, save the current document as a template, and you will never have to worry about making these adjustments again.

Limitations of the script

I consider Bullet.py a basic necessity for any regular user of Scribus. However, it is not a complete solution for anyone used to the convenience of creating a list in a word processor.

For one thing, the script doesn't support Roman numerals, although from a quick scan of the script, you could probably add the support relatively easy by using existing sections of the script as an example, even if your knowledge of Python is as limited as mine. I mean to explore the possibility, but haven't got around to it yet.

For another, the script still leaves you with no way of automatically updating ordered lists if you decide to insert a new list item between existing ones. Instead, you have to select the list and run the script again.

Nor is there any support for a list within a list, although you could create a paragraph style with the extra indentation for the second level list.

Yet, despite thse shortcomings, Bullet.py is considerably better than nothing. Still, if anyone gets around to improving it before I do, let me know, and I'll mention your improvements after I try them.

Load Disqus comments