Build a table from column meaning and row values, not from the appearance of borders. To create tables in text editor for EPUB, inspect three layers in order: source notation, the generated XHTML table, and the semantic order of cells. The fixed STUDIO-362 EPUB contains one generated table. Its package structure was measured, while table width, wrapping, and borders in a named graphical preview remain unobserved.
Freeze a Two-by-Two Source Matrix
The retained specimen is a two-column, two-row matrix. The first row contains 見出し and 見出し; the second contains 内容 and 内容. Do not add descriptive fields to make the example more realistic. These four exact cells are the common expectation for the source and generated XHTML, so a missing row, added column, or reordered value has an unambiguous verdict.
Count columns and rows before export. A single row with an extra delimiter may remain readable as source while shifting values into the wrong generated cells. If a literal vertical bar belongs inside a cell, test the applicable escaping rule on a small specimen before adding a complex production table.
Put One Table in chapter-01.md
The fixed input contains four chapters. Only chapter-01.md carries the table notation; the other three chapters do not. That distribution creates a useful expected count. Zero generated tables indicates a missed conversion, while two indicates duplication. No image source was provided, so image_source_count=0.
The generation plan reported fileCount=4, chapterCount=4, and valid=true. All four chapters remained eligible for navigation. A table test must not accept a package that silently drops another chapter just because the target XHTML contains a table.
Save the EPUB and Reopen It as a Package
The output EPUB has SHA-256 a62df3922743e14011758abd1869b69ced8b6a84cf6821efeeeda74650adc5cb. Reopening it returned entry_count=12. The seven spine items were the title page, navigation document, p001 through p004, and colophon. NAV and NCX each described the four chapters.
Structure inspection returned table_count=1. Continue past that count: locate the table in p001, read its header cells and body cells in document order, and compare them with the source matrix. Also search for literal notation leakage. A valid container and one table element do not by themselves prove that every value stayed in the intended column.
Record Any Departure from Two Columns
A useful failure adds one delimiter to the second row and creates three cells, or removes its right-hand 内容 and leaves one cell. Borders may still appear, but the two-by-two contract is broken. Record the failure as row=2, expected_cells=2, actual_cells=3. That description identifies the defect much better than “the table looks wrong.”
Repair chapter-01.md, not the packaged XHTML. Preserve the failed EPUB under its digest and generate a new file. Recheck all four spine destinations and both navigation forms, then compare every table cell again. A narrow source edit can still affect unrelated output, so previously accepted package checks must run on the recovered digest.
Read Cell Order as Structure
A narrow viewport can wrap a cell without corrupting structure. In extracted p001, the first row must contain two th elements and the second must contain two td elements. The expected extracted array is [["見出し","見出し"],["内容","内容"]]. Accept the conversion only when left-to-right and top-to-bottom order matches that exact matrix.
Settle the four cell values and element types before sending width and wrapping to a separate visual check. This prevents a reader-specific layout difference from being mislabeled as an export failure and prevents attractive borders from hiding a malformed row.
Leave Preview Appearance Unmeasured
The retained evidence covers four source chapters, the generated EPUB, one table element in p001, and package consistency. It does not record Rune Studio preview borders, column widths, wrapping, or horizontal scrolling. The CLI value table_count=1 cannot establish those visual properties.
A later interface test should record application build, viewport width, theme, zoom, displayed p001, and wrapping in every column. Bind the screenshot or interaction log to the same EPUB digest. The reverse boundary also matters: a screen that looks correct does not prove that the saved package contains equivalent table markup.
Keep Data as a Table Instead of an Image
Converting a table to a picture can freeze its appearance but weakens search, copy, reading order, and adaptation to smaller screens. This specimen has zero image references and retains the information as an XHTML table. Decorative illustrations and data relationships should not share one acceptance rule.
If merged cells or complex headers are necessary, create another specimen. Test header association and the named target readers rather than extrapolating from this simple two-column table.
Hand Off One Table Inside a Complete Four-Chapter Book
The acceptance card identifies the four inputs, chapter-01.md, output EPUB digest, p001, and table_count=1. It then records two 見出し cells, two 内容 cells, two columns, two rows, and zero leaked notation. The other three chapters must remain in spine and navigation.
The structure check passes when another operator reopens the same digest and finds one semantically ordered table in p001 without losing any chapter. Preview borders and widths remain open fields. When visual behavior matters, add a named environment test instead of promoting the structural count into an unobserved display claim.
Archive the extracted p001 together with the package digest. A later exporter may generate another file with the same name, so the path alone is not evidence identity. Reviewers should compare the retained XHTML bytes and the source matrix before attributing a table result to a particular run.