Summary
Two-column layouts built with tab stops — a left tab plus a right-aligned tab — render with incorrect wrapping/column positioning compared to Word and Word Online. This is the standard Word technique for signature blocks in contracts, so it shows up frequently in real legal documents.
Version: @extend-ai/react-docx@0.8.0
Repro
Minimal .docx (isolates the structure): https://github.com/jmcopeland/react-docx/raw/repro/tab-stop-column-wrap/repros/tab-stop-column-wrap.docx
Each paragraph declares two tab stops and jumps between them with <w:tab/> runs:
<w:tabs>
<w:tab w:val="left" w:pos="5760"/> <!-- 4.0" left column -->
<w:tab w:val="right" w:pos="9240"/> <!-- ~6.4" (right margin), RIGHT-aligned -->
</w:tabs>
The header paragraph run sequence:
"Client A" [TAB] "Company B Legal Name LLC United States " "On behalf of itself and its affiliates" [TAB] "On behalf of itself and its affiliates"
…followed by an underline-rule row ("____" [TAB] "____") and a "Name:" [TAB] "Name:" row using the same tab stops.
Steps
- Open the
.docx in Word / Word Online.
- Open the same
.docx in the extend viewer (DocxEditorViewer, read-only).
- Compare the signature block layout.
Expected (Word)
The tab stops form two columns: the left party at the page's left margin, the right party's text in the column beginning at the 4" left tab and wrapping within that column, with the final tabbed segment right-aligned at the right tab (~right margin). The underline rule and Name: row align to the same two columns.
Actual (extend)
The tabbed content wraps/positions incorrectly — the right column's text breaks at the wrong width and the columns don't line up with Word's layout. (Observed in a real, sanitized McKinsey-form contract: Word Online renders the signature block correctly; the extend renderer wraps it wrongly. The minimal .docx above reproduces the same tab-stop structure.)
Notes
Summary
Two-column layouts built with tab stops — a
lefttab plus aright-aligned tab — render with incorrect wrapping/column positioning compared to Word and Word Online. This is the standard Word technique for signature blocks in contracts, so it shows up frequently in real legal documents.Version:
@extend-ai/react-docx@0.8.0Repro
Minimal
.docx(isolates the structure): https://github.com/jmcopeland/react-docx/raw/repro/tab-stop-column-wrap/repros/tab-stop-column-wrap.docxEach paragraph declares two tab stops and jumps between them with
<w:tab/>runs:The header paragraph run sequence:
…followed by an underline-rule row (
"____" [TAB] "____") and a"Name:" [TAB] "Name:"row using the same tab stops.Steps
.docxin Word / Word Online..docxin the extend viewer (DocxEditorViewer, read-only).Expected (Word)
The tab stops form two columns: the left party at the page's left margin, the right party's text in the column beginning at the 4" left tab and wrapping within that column, with the final tabbed segment right-aligned at the right tab (~right margin). The underline rule and
Name:row align to the same two columns.Actual (extend)
The tabbed content wraps/positions incorrectly — the right column's text breaks at the wrong width and the columns don't line up with Word's layout. (Observed in a real, sanitized McKinsey-form contract: Word Online renders the signature block correctly; the extend renderer wraps it wrongly. The minimal
.docxabove reproduces the same tab-stop structure.)Notes
w:val="right"(right-aligned) tab stop and wrapping of over-long tabbed content.renderToStaticMarkupregression test if useful.