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.

______________________

--
Bruce Byfield (nanday)

White Paper
Linux Management with Red Hat Satellite: Measuring Business Impact and ROI

Linux has become a key foundation for supporting today's rapidly growing IT environments. Linux is being used to deploy business applications and databases, trading on its reputation as a low-cost operating environment. For many IT organizations, Linux is a mainstay for deploying Web servers and has evolved from handling basic file, print, and utility workloads to running mission-critical applications and databases, physically, virtually, and in the cloud. As Linux grows in importance in terms of value to the business, managing Linux environments to high standards of service quality — availability, security, and performance — becomes an essential requirement for business success.

Learn More

Sponsored by Red Hat

White Paper
Private PaaS for the Agile Enterprise

If you already use virtualized infrastructure, you are well on your way to leveraging the power of the cloud. Virtualization offers the promise of limitless resources, but how do you manage that scalability when your DevOps team doesn’t scale? In today’s hypercompetitive markets, fast results can make a difference between leading the pack vs. obsolescence. Organizations need more benefits from cloud computing than just raw resources. They need agility, flexibility, convenience, ROI, and control.

Stackato private Platform-as-a-Service technology from ActiveState extends your private cloud infrastructure by creating a private PaaS to provide on-demand availability, flexibility, control, and ultimately, faster time-to-market for your enterprise.

Learn More

Sponsored by ActiveState