bell notificationshomepageloginNewPostedit profiledmBox

Hoots : How can I prevent, or work around, unfortunate hyphenation in critical words? In technical documentation, sometimes the tool's automatic hyphenation makes a bad break in the middle of a term, like the name of an environment - freshhoot.com

10% popularity   0 Reactions

How can I prevent, or work around, unfortunate hyphenation in critical words?
In technical documentation, sometimes the tool's automatic hyphenation makes a bad break in the middle of a term, like the name of an environment variable or function. In these cases I would rather have a short line than hyphenation, though I want hyphenation in the document in general. I can try to "write around" egregious cases to try to avoid the problem term being near the end of a line, but that's fragile. I'm looking for a solution that fixes all of them, without me having to individually handle each case.

I am using DocBook, which we transform to Formatting Objects (FO) and thence to PDF. Ideally I would like to be able to write a style directive that says "don't hyphenate inside these XML elements" and apply it to <classname>, <methodname>, and several others. This FO documentation describes a way to do this at the page-block level, e.g. to turn off hyphenation in a table of contents or a preface, but that's too coarse. This forum post suggests a way to hard-wire them within the text, meaning I would have to put a special directive around each class name, method name, and so on. (Also, it sounds like it didn't work for him.)

How can I most easily prevent bad hyphenation breaks in my code elements, working within the tool chain I have? (I'm not free to change that.)


Load Full (2)

Login to follow hoots

2 Comments

Sorted by latest first Latest Oldest Best

10% popularity   0 Reactions

The post you referenced has the basics: in FO, you can't change the hyphenation property for just part of a block. You may be able to change the hyphenation dictionary (add the words you don't want to be hyphenated), but this depends on the tools you use. Information for FOP


10% popularity   0 Reactions

With help from a coworker I was able to fix this by adding the following to the FO stylesheet:

<xsl:template match="classname">
<fo:inline hyphenate="false">
<xsl:call-template name="inline.monoseq"/>
</fo:inline>
</xsl:template>

And likewise for other elements that should get this treatment, like methodname and literal.

This creates a wrapper around the native style, changing hyphenation only.

Source


Back to top Use Dark theme