Take the 2-minute tour ×
Writers Stack Exchange is a question and answer site for authors, editors, reviewers, professional writers, and aspiring writers. It's 100% free, no registration required.

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

share|improve this question
    
Are you able to use CSS to style those elements? I have not tried this, but it seems as if hyphens:manual or hyphens:none would do thee trick. l.dhemery.com/1apHFhT –  Dale Emery Oct 16 '13 at 19:06
    
The end state here is PDF, so I don't think CSS is in play. But I could be wrong; thanks. –  Monica Cellio Oct 16 '13 at 19:13
    
Is LaTeX an option? If so, it is pretty easy to do. See: tex.ac.uk/cgi-bin/texfaq2html?label=wdnohyph –  Ananda Mahto Oct 17 '13 at 4:09
    
No, our extensive documentation is in DocBook and porting to something else is not feasible. Besides, DocBook gives us important features that LaTeX probably lacks. No tool does everything; we chose the one that does most of what we need. –  Monica Cellio Oct 17 '13 at 22:07

2 Answers 2

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

share|improve this answer
up vote 0 down vote accepted

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

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.