Andre Poenitz wrote: > Maybe we must settle at a 'round trip' definition. There are several > possibilities: > > 1. round trip in the weak sense: > .lyx -> .tex -> .dvi == .lyx -> .tex -> .lyx -> .tex -> .dvi > > 2. round trip in the realistic sense: > > .lyx == .lyx -> .tex -> .lyx (mod irrelevant whitespace) > > 3. round trip in the strong sense: > > .lyx == .lyx -> .tex -> .lyx > .tex == .tex -> .lyx -> .tex > > [...] > > I'd be more than happy to have 2. and I'd rather not add too much code > to make the whitespace behave nicely as long as 1. is satisfied.
Ok. If the goal is 2., the test in the check_space function becomes: if (next.cat() == catSpace || (next.cat() == catNewline && next.cs().size() == 1) || (next.cs() == "end" && context.layout->free_spacing && curr.cat() == catNewline)) The check for catSpace and catNewline is necessary, because a space followed by a newline may only produce one space in the output (and vice versa). Multiple spaces are handled by the tokenizer. Georg