# `Sembr`: Semantic Line Break (SemBr) Paragraph Reflow ```{py:currentmodule} myform.Sembr ``` `Sembr` rewrites already-rendered paragraph text into one-sentence-per-line form ("semantic line breaks"): soft-wrapped lines are joined back into logical sentences, then newlines are re-inserted at sentence boundaries. CommonMark renderers collapse single newlines inside a paragraph, so the rendered output is unchanged -- this is purely a source-legibility transform (sentence-granular diffs and edits). Off by default; opt in via the `sembr` plugin option (`[plugin.myst] sembr = true` in `.mdformat.toml` or `--sembr` on the CLI); `Postprocessor.postprocess_paragraph` is the caller. The splitter is deliberately conservative: a boundary requires sentence-final punctuation, a following sentence opener, and must not sit inside a code span or inline math, after an abbreviation, single-letter initial, or bare number, or where the new line would re-parse as block syntax (ordered-list interrupts). A missed split costs nothing; a wrong split could change the AST (mdformat's validation would then reject the whole reformat). The patterns live in a `my.regex.RegexStore` (wikiparse's idiom): named, composable definitions joined by subroutine invocation, the abbreviation list condensed into a prefix-factored alternation tree, and compilation deferred to first use (lazy load), so importing this module stays cheap. ```{eval-rst} .. automodule:: myform.Sembr :members: ```