3

I need listing package (\usepackage{listing}) to break at punctuation

namespace::subnamespace::class
           ^             ^

at either these two locations

lockstep
  • 250,273
aiao
  • 757

1 Answers1

5

This breaks at ::, but puts it :: in the new line.

\lstset{literate={::}{::}{2\discretionary{}{}{}}}

This leaves a hyphenated :: in the old line, but the spacing is terrible.

\lstset{literate={::}{}{0\discretionary{::}{}{::}}}

This monster fixes the spacing:

\def\colonspace{\hspace{0.2em}}%
\lstset{literate={::}{}{0\discretionary{\mbox{:\colonspace:}}{}{\mbox{\colonspace:\colonspace:\colonspace}}}}

Btw, you can also break in the middle of :: ;-)

\lstset{literate={::}{}{0\discretionary{:}{:}{::}}}