diff options
Diffstat (limited to 'src/roff/troff/env.cc')
-rw-r--r-- | src/roff/troff/env.cc | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/roff/troff/env.cc b/src/roff/troff/env.cc index 56f357c9..ca4881c2 100644 --- a/src/roff/troff/env.cc +++ b/src/roff/troff/env.cc @@ -2135,7 +2135,7 @@ void environment::add_html_tag_tabs() } } -void environment::do_break() +void environment::do_break(int spread) { if (curdiv == topdiv && topdiv->before_first_page) { topdiv->begin_page(); @@ -2146,7 +2146,7 @@ void environment::do_break() if (line) { line = new space_node(H0, line); // this is so that hyphenation works space_total++; - possibly_break_line(); + possibly_break_line(0, spread); } while (line != 0 && line->discardable()) { width_total -= line->width(); @@ -2185,17 +2185,27 @@ int environment::is_empty() return !current_tab && line == 0 && pending_lines == 0; } -void break_request() +void do_break_request(int spread) { while (!tok.newline() && !tok.eof()) tok.next(); if (break_flag) { - curenv->do_break(); + curenv->do_break(spread); curenv->add_html_tag(".br"); } tok.next(); } +void break_request() +{ + do_break_request(0); +} + +void break_spread_request() +{ + do_break_request(1); +} + void title() { if (curdiv == topdiv && topdiv->before_first_page) { @@ -3014,6 +3024,7 @@ void init_env_requests() init_request("cc", control_char); init_request("c2", no_break_control_char); init_request("br", break_request); + init_request("brp", break_spread_request); init_request("tl", title); init_request("ta", set_tabs); init_request("linetabs", line_tabs_request); |