9

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.)

Monica Cellio
  • 21,489
  • 3
  • 68
  • 110

2 Answers2

3

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

Monica Cellio
  • 21,489
  • 3
  • 68
  • 110
1

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

Hobbes
  • 955
  • 4
  • 9