Very glad to have found this discussion. Super interesting and helpful.
I use a very simple chunking approach, “logical paragraphs” in MiniLaTex, so that the parser can keeping going and give the user as much rendered output as possible.
A logical paragraph is either an ordinary paragraph (blank lines above and below) or an outer \begin ... \end block in LaTeX. This approach confines parse failures to logical paragraphs, which helps a lot, but is not sufficiently fine-grained. With one exception (below) this means that in most cases at most one paragraph is not properly rendered.
The biggest problem with the logical paragraph approach as it stands is that if the user types \begin{whatever}, the text will generate an unpleasant error until the matching \end{whatever} is typed: all the text after the \begin{whatever} is seriously messed up/missing in the rendered output. I had implemented a solution like the one @klazuka suggested above … have the editing system supply the \end{whatever}. However, it had to put that aside for the time being because of the jumping-cursor problem with text edit fields. Bummer! As soon as I get elm-editor in good enough shape, to integrate with the app, it will be possible to use this fix.
Hope to understand the above discussion to to more fine-grained recovery.