summaryrefslogtreecommitdiff
path: root/source/luametatex/source/tex/texlinebreak.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/luametatex/source/tex/texlinebreak.c')
-rw-r--r--source/luametatex/source/tex/texlinebreak.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/source/luametatex/source/tex/texlinebreak.c b/source/luametatex/source/tex/texlinebreak.c
index 7c9e6b768..52e7f25d3 100644
--- a/source/luametatex/source/tex/texlinebreak.c
+++ b/source/luametatex/source/tex/texlinebreak.c
@@ -144,6 +144,12 @@ void tex_line_break_prepare(
{
/* too much testing of next */
if (node_type(par) == par_node) {
+ if (tracing_linebreak_lists) {
+ tex_begin_diagnostic();
+ tex_print_format("[linebreak: prepare, before]");
+ tex_show_box(par);
+ tex_end_diagnostic();
+ }
*tail = *tail ? *tail : tex_tail_of_node_list(par);
*final_penalty = tex_new_penalty_node(infinite_penalty, line_penalty_subtype);
*parfill_left_skip_glue = tex_new_glue_node(tex_get_par_par(par, par_par_fill_left_skip_code), par_fill_left_skip_glue);
@@ -164,7 +170,11 @@ void tex_line_break_prepare(
tex_try_couple_nodes(*parfill_left_skip_glue, *parfill_right_skip_glue);
*tail = *parfill_right_skip_glue;
if (node_next(par)) {
+ halfword p = par;
halfword n = node_next(par);
+ while (node_next(p) && node_type(node_next(p)) == dir_node) {
+ p = node_next(p);
+ }
while (n) {
if (node_type(n) == glue_node && node_subtype(n) == indent_skip_glue) {
*parinit_left_skip_glue = tex_new_glue_node(tex_get_par_par(par, par_par_init_left_skip_code), par_init_left_skip_glue);
@@ -173,13 +183,20 @@ void tex_line_break_prepare(
tex_attach_attribute_list_copy(*parinit_right_skip_glue, par);
tex_try_couple_nodes(*parinit_right_skip_glue, n);
tex_try_couple_nodes(*parinit_left_skip_glue, *parinit_right_skip_glue);
- tex_try_couple_nodes(par, *parinit_left_skip_glue);
+ // tex_try_couple_nodes(par, *parinit_left_skip_glue);
+ tex_try_couple_nodes(p, *parinit_left_skip_glue);
break;
} else {
- n = node_next(n);
+ n = node_next(n); /* sort of weird and tricky */
}
}
}
+ if (tracing_linebreak_lists) {
+ tex_begin_diagnostic();
+ tex_print_format("[linebreak: prepare, after]");
+ tex_show_box(par);
+ tex_end_diagnostic();
+ }
}
}