postext-epub 0.8.3 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/README.md +1 -1
  2. package/dist/__tests__/sampleBook.d.ts +6 -0
  3. package/dist/__tests__/sampleBook.d.ts.map +1 -1
  4. package/dist/__tests__/sampleBook.js +76 -1
  5. package/dist/__tests__/sampleBook.js.map +1 -1
  6. package/dist/epubcheck.test.js +7 -1
  7. package/dist/epubcheck.test.js.map +1 -1
  8. package/dist/reflowable/booktabs.test.d.ts +2 -0
  9. package/dist/reflowable/booktabs.test.d.ts.map +1 -0
  10. package/dist/reflowable/booktabs.test.js +53 -0
  11. package/dist/reflowable/booktabs.test.js.map +1 -0
  12. package/dist/reflowable/css.d.ts +12 -0
  13. package/dist/reflowable/css.d.ts.map +1 -1
  14. package/dist/reflowable/css.js +193 -21
  15. package/dist/reflowable/css.js.map +1 -1
  16. package/dist/reflowable/index.js +1 -1
  17. package/dist/reflowable/index.js.map +1 -1
  18. package/dist/reflowable/inline.d.ts.map +1 -1
  19. package/dist/reflowable/inline.js +21 -1
  20. package/dist/reflowable/inline.js.map +1 -1
  21. package/dist/reflowable/japanese.test.js +2 -2
  22. package/dist/reflowable/japanese.test.js.map +1 -1
  23. package/dist/reflowable/model.d.ts +81 -2
  24. package/dist/reflowable/model.d.ts.map +1 -1
  25. package/dist/reflowable/reflowable.test.js +182 -2
  26. package/dist/reflowable/reflowable.test.js.map +1 -1
  27. package/dist/reflowable/walk.d.ts +13 -0
  28. package/dist/reflowable/walk.d.ts.map +1 -1
  29. package/dist/reflowable/walk.js +170 -2
  30. package/dist/reflowable/walk.js.map +1 -1
  31. package/dist/reflowable/xhtml.d.ts.map +1 -1
  32. package/dist/reflowable/xhtml.js +135 -7
  33. package/dist/reflowable/xhtml.js.map +1 -1
  34. package/package.json +3 -3
package/README.md CHANGED
@@ -159,7 +159,7 @@ Reads an EPUB back for a viewer, without `DOMParser`: the layout, the metadata,
159
159
  - Figures and tables follow the text that cites them, with their numbered captions and alt text. Tables are real tables with header rows and merged cells. Lists nest, boxes become `<aside>` with their titles, heading levels never skip, and formulas are SVG labelled with their TeX.
160
160
  - Footnotes link to the notes at the end of the chapter and back. Cross-references, citations and web links work. The printed contents link to the headings, and the index's page numbers link to page markers.
161
161
  - Each printed page leaves a page-break marker where its text starts, so the page list gives the print page numbers.
162
- - A stylesheet is derived from the configuration: sizes relative to the body text, the book's colours, justification with automatic hyphenation, indents, and styles for headings, boxes, tables, captions, lists and notes. Vertical Chinese and Japanese keep vertical writing, and the package names it (`primary-writing-mode`); Arabic documents are `dir="rtl"`.
162
+ - A stylesheet is derived from the configuration: sizes relative to the body text, the book's colours, justification with automatic hyphenation, indents, and styles for headings, boxes, tables (booktabs rules included, and each named table style as a `pt-table-<id>` class), captions, lists and notes. Vertical Chinese and Japanese keep vertical writing, and the package names it (`primary-writing-mode`); Arabic documents are `dir="rtl"`.
163
163
  - Japanese text keeps what the print sets: the kinsoku level as `line-break` (`ja-very-strict` → `strict`, `ja-strict` → `normal`, `ja-loose` → `loose`), burasagari as `hanging-punctuation: allow-end`, the emphasis marks as configured (`text-emphasis` sesame over the text, right of vertical text), short numbers and `!?` pairs in vertical lines as `text-combine-upright`, the space after ? and ! as an ideographic space, and the bases of one jukugo reading in one `<ruby>`. The navigation and landmarks are named in Japanese.
164
164
  - Paragraphs set in a paragraph style (`:::paragraphs{style=…}`, a `:::verse` fence's style) carry its class, inside boxes too, and index entries are classed by their level, both as the layout names them (`VDTBlock.paragraphStyleId`, `VDTBlock.indexLevel`). Documents laid out by an older engine fall back to telling them from the face and the indent.
165
165
  - The stylesheet follows the first chapter's configuration. A chapter configured otherwise (its own heading styles, say), and every document of a part whose `palette` recolours the book, links a second stylesheet after it (`styles/book-2.css`…) with only the rules that change; documents that change the same share it.
@@ -6,6 +6,12 @@ export declare function sampleBook(): VDTDocument[];
6
6
  /** Lay out chapters as a book with the sample page and a config of the
7
7
  * caller's on top. */
8
8
  export declare function layOutBook(chapters: string[], overrides?: PostextConfig): VDTDocument[];
9
+ /** Text wrap (#627): a figure with text running beside it on the right,
10
+ * a box on the left, in one column. */
11
+ export declare function wrapSampleBook(): VDTDocument[];
12
+ /** Journal tables (#625): the document's style and a named one set with
13
+ * booktabs rules, a head over two columns and group rules. */
14
+ export declare function booktabsSampleBook(): VDTDocument[];
9
15
  /** Amiri (OFL), the subset the PDF backend's Arabic tests embed. */
10
16
  export declare const AMIRI: Uint8Array<ArrayBuffer>;
11
17
  /** A right-to-left book (#402): Arabic chapters, right-bound, with Latin
@@ -1 +1 @@
1
- {"version":3,"file":"sampleBook.d.ts","sourceRoot":"","sources":["../../src/__tests__/sampleBook.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAA+D,WAAW,EAAE,MAAM,SAAS,CAAC;AAwBvH,eAAO,MAAM,IAAI,yBAAkH,CAAC;AAEpI,eAAO,MAAM,GAAG,yBAA6I,CAAC;AA2B9J,eAAO,MAAM,eAAe,UAG3B,CAAC;AAEF,wBAAgB,UAAU,IAAI,WAAW,EAAE,CAE1C;AAED;uBACuB;AACvB,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,SAAS,GAAE,aAAkB,GAAG,WAAW,EAAE,CAE3F;AAED,oEAAoE;AACpE,eAAO,MAAM,KAAK,yBAAmI,CAAC;AAEtJ;;;qBAGqB;AACrB,eAAO,MAAM,eAAe,UAoB3B,CAAC;AAEF,wBAAgB,gBAAgB,IAAI,WAAW,EAAE,CAWhD;AAED,uEAAuE;AACvE,eAAO,MAAM,GAAG,yBAGd,CAAC;AAyBH;;qBAEqB;AACrB,wBAAgB,eAAe,CAAC,SAAS,GAAE,aAAkB,GAAG,WAAW,EAAE,CAG5E;AAED;;;oEAGoE;AACpE,eAAO,MAAM,iBAAiB,UAa7B,CAAC;AAEF,wBAAgB,kBAAkB,IAAI,WAAW,EAAE,CAUlD;AAED;;;;yBAIyB;AACzB,wBAAgB,eAAe,CAAC,SAAS,GAAE,KAAK,GAAG,KAAa,GAAG,WAAW,EAAE,CAyB/E;AAsBD;0EAC0E;AAC1E,wBAAgB,qBAAqB,IAAI,WAAW,EAAE,CAoCrD;AAED;0CAC0C;AAC1C,wBAAgB,sBAAsB,IAAI,WAAW,EAAE,CAsBtD"}
1
+ {"version":3,"file":"sampleBook.d.ts","sourceRoot":"","sources":["../../src/__tests__/sampleBook.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAA+D,WAAW,EAAE,MAAM,SAAS,CAAC;AAwBvH,eAAO,MAAM,IAAI,yBAAkH,CAAC;AAEpI,eAAO,MAAM,GAAG,yBAA6I,CAAC;AA0D9J,eAAO,MAAM,eAAe,UAI3B,CAAC;AAEF,wBAAgB,UAAU,IAAI,WAAW,EAAE,CAE1C;AAED;uBACuB;AACvB,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,SAAS,GAAE,aAAkB,GAAG,WAAW,EAAE,CAE3F;AAED;wCACwC;AACxC,wBAAgB,cAAc,IAAI,WAAW,EAAE,CAO9C;AAED;+DAC+D;AAC/D,wBAAgB,kBAAkB,IAAI,WAAW,EAAE,CAiClD;AAED,oEAAoE;AACpE,eAAO,MAAM,KAAK,yBAAmI,CAAC;AAEtJ;;;qBAGqB;AACrB,eAAO,MAAM,eAAe,UAoB3B,CAAC;AAEF,wBAAgB,gBAAgB,IAAI,WAAW,EAAE,CAWhD;AAED,uEAAuE;AACvE,eAAO,MAAM,GAAG,yBAGd,CAAC;AAyBH;;qBAEqB;AACrB,wBAAgB,eAAe,CAAC,SAAS,GAAE,aAAkB,GAAG,WAAW,EAAE,CAG5E;AAED;;;oEAGoE;AACpE,eAAO,MAAM,iBAAiB,UAa7B,CAAC;AAEF,wBAAgB,kBAAkB,IAAI,WAAW,EAAE,CAUlD;AAED;;;;yBAIyB;AACzB,wBAAgB,eAAe,CAAC,SAAS,GAAE,KAAK,GAAG,KAAa,GAAG,WAAW,EAAE,CAyB/E;AAsBD;0EAC0E;AAC1E,wBAAgB,qBAAqB,IAAI,WAAW,EAAE,CAoCrD;AAED;0CAC0C;AAC1C,wBAAgB,sBAAsB,IAAI,WAAW,EAAE,CAsBtD"}
@@ -31,6 +31,8 @@ const pt = (value) => ({ value, unit: 'pt' });
31
31
  const config = {
32
32
  page: { width: pt(360), height: pt(480), margins: { top: pt(24), bottom: pt(24), left: pt(24), right: pt(24) } },
33
33
  locale: 'en-us',
34
+ // The poem's every second line numbered (#621), in both renditions.
35
+ lineNumbers: { enabled: true, interval: 2 },
34
36
  footer: {
35
37
  elements: [{
36
38
  kind: 'text', id: 'pn', content: '{pageNumber}', fontSize: pt(8), overflow: 'ellipsis-end',
@@ -49,9 +51,36 @@ const resources = [{
49
51
  bitmap: { fileId: 'f1.png', format: 'png', width: 400, height: 300 },
50
52
  }];
51
53
  const para = 'Body text that runs on for a while so the page fills and the paragraph wraps over several lines. ';
54
+ /** A poem set line by line (#620): two stanzas, an indent, a turnover. */
55
+ const SAMPLE_POEM = [
56
+ ':::verse',
57
+ 'Whose woods these are I think I know.',
58
+ ' His house is in the village though; this line runs on past the measure and turns over.',
59
+ '',
60
+ 'He will not see me stopping here',
61
+ ' To watch his woods fill up with snow.',
62
+ ':::',
63
+ ];
64
+ /** Tab stops (#622): a dot leader to a price flush right, and a rule to
65
+ * the end of the line. */
66
+ const SAMPLE_TABS = [
67
+ 'Soup of the day :tab{at=end align=end leader="."} 8.50',
68
+ '',
69
+ 'Signed: :tab{at=end leader=rule}',
70
+ ];
71
+ /** A code listing (#624): a language, a title, numbered lines, a
72
+ * highlighted one, a tab. */
73
+ const SAMPLE_CODE = [
74
+ '```js {title="count.js" lineNumbers highlight="2"}',
75
+ 'for (let i = 0; i < 3; i++) {',
76
+ '\tconsole.log(`line ${i}`); // print',
77
+ '}',
78
+ '```',
79
+ ];
52
80
  export const SAMPLE_CHAPTERS = [
53
81
  ['---', 'title: Sample book', 'author: Ada Lovelace', '---', '', '# Opening chapter {#opening}', '', `See :ref{id=f1} and the [closing words](#closing). ${para.repeat(3)}`, '', '::resource{id=f1}', '', '## A section', '', para.repeat(12)].join('\n'),
54
- ['# Second chapter', '', `Back to the [opening](#opening). ${para.repeat(6)}`, '', '## Closing words {#closing}', '', para.repeat(4)].join('\n'),
82
+ // The chapter opens with a drop cap (#623).
83
+ ['# Second chapter {dropcap}', '', `Back to the [opening](#opening). ${para.repeat(6)}`, '', '## Closing words {#closing}', '', para.repeat(4), '', ...SAMPLE_POEM, '', ...SAMPLE_TABS, '', ...SAMPLE_CODE].join('\n'),
55
84
  ];
56
85
  export function sampleBook() {
57
86
  return buildBundle({ chapters: SAMPLE_CHAPTERS.map((markdown) => ({ markdown })), config, resources });
@@ -61,6 +90,52 @@ export function sampleBook() {
61
90
  export function layOutBook(chapters, overrides = {}) {
62
91
  return buildBundle({ chapters: chapters.map((markdown) => ({ markdown })), config: { ...config, ...overrides } });
63
92
  }
93
+ /** Text wrap (#627): a figure with text running beside it on the right,
94
+ * a box on the left, in one column. */
95
+ export function wrapSampleBook() {
96
+ const figure = resources.find((r) => r.id === 'f1');
97
+ return buildBundle({
98
+ chapters: [{ markdown: ['# Beds', '', para.repeat(2), '', '::resource{id=f1}', '', para.repeat(6), '', ':::callout{wrap="left" width=0.4}', 'Sow thinly.', ':::', '', para.repeat(6), '', '## Later', '', para.repeat(2)].join('\n') }],
99
+ config: { ...config, layout: { layoutType: 'single' } },
100
+ resources: [{ ...figure, placement: { position: 'here', wrap: 'right', width: 0.4 } }],
101
+ });
102
+ }
103
+ /** Journal tables (#625): the document's style and a named one set with
104
+ * booktabs rules, a head over two columns and group rules. */
105
+ export function booktabsSampleBook() {
106
+ const cell = (content, extra = {}) => ({ content, ...extra });
107
+ const table = (id, styleId) => ({
108
+ id,
109
+ typeId: 'table',
110
+ kind: 'table',
111
+ caption: `Results ${id}.`,
112
+ createdAt: 0,
113
+ updatedAt: 0,
114
+ table: {
115
+ ...(styleId ? { styleId } : {}),
116
+ model: {
117
+ headerRowCount: 2,
118
+ rows: [
119
+ [cell('Model', { isHeader: true, rowSpan: 2 }), cell('Accuracy', { isHeader: true, colSpan: 2 }), cell('', { hiddenBy: { row: 0, col: 1 } })],
120
+ [cell('', { hiddenBy: { row: 0, col: 0 } }), cell('Train', { isHeader: true }), cell('Test', { isHeader: true })],
121
+ [cell('Baselines', { colSpan: 3 }), cell('', { hiddenBy: { row: 2, col: 0 } }), cell('', { hiddenBy: { row: 2, col: 0 } })],
122
+ [cell('Linear'), cell('81.2'), cell('79.9')],
123
+ [cell('Ours', { colSpan: 3 }), cell('', { hiddenBy: { row: 4, col: 0 } }), cell('', { hiddenBy: { row: 4, col: 0 } })],
124
+ [cell('Deep'), cell('94.0'), cell('91.3')],
125
+ ],
126
+ },
127
+ },
128
+ });
129
+ return buildBundle({
130
+ chapters: [{ markdown: ['# Results', '', `See :ref{id=t1} and :ref{id=t2}. ${para.repeat(3)}`, '', '::resource{id=t1}', '', para.repeat(2), '', '::resource{id=t2}'].join('\n') }],
131
+ config: {
132
+ ...config,
133
+ tableStyle: { rules: 'booktabs', headerBackgroundEnabled: false, groupRules: true },
134
+ tableStyles: [{ id: 'grid', rules: 'grid', headerBackgroundEnabled: true }],
135
+ },
136
+ resources: [table('t1'), table('t2', 'grid')],
137
+ });
138
+ }
64
139
  /** Amiri (OFL), the subset the PDF backend's Arabic tests embed. */
65
140
  export const AMIRI = new Uint8Array(fs.readFileSync(new URL('../../../postext-pdf/src/__tests__/fixtures/arabic/amiri-subset.ttf', import.meta.url)));
66
141
  /** A right-to-left book (#402): Arabic chapters, right-bound, with Latin
@@ -1 +1 @@
1
- {"version":3,"file":"sampleBook.js","sourceRoot":"","sources":["../../src/__tests__/sampleBook.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sampleBook.js","sourceRoot":"","sources":["../../src/__tests__/sampleBook.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ import fs from 'node:fs';
8
8
  import os from 'node:os';
9
9
  import path from 'node:path';
10
10
  import { renderToEpub } from './index';
11
- import { AMIRI, LORA, MP4, PNG, arabicSampleBook, comicSampleBook, sampleBook, stripCaptionSampleBook, stripSpreadSampleBook, videoSampleBook, japaneseSampleBook } from './__tests__/sampleBook';
11
+ import { AMIRI, LORA, MP4, PNG, arabicSampleBook, booktabsSampleBook, wrapSampleBook, comicSampleBook, sampleBook, stripCaptionSampleBook, stripSpreadSampleBook, videoSampleBook, japaneseSampleBook } from './__tests__/sampleBook';
12
12
  const available = process.env.EPUBCHECK === '1' && spawnSync('epubcheck', ['--version'], { encoding: 'utf8' }).status === 0;
13
13
  function epubcheck(file) {
14
14
  const out = spawnSync('epubcheck', ['--json', '-', file], { encoding: 'utf8', maxBuffer: 64 * 1024 * 1024 });
@@ -74,6 +74,12 @@ const samples = [
74
74
  // Captioned strips, one numbered and named by a :ref (#590).
75
75
  { name: 'strip-caption-fixed', options: base('fixed'), book: stripCaptionSampleBook },
76
76
  { name: 'strip-caption-reflowable', options: base('reflowable'), book: stripCaptionSampleBook },
77
+ // Booktabs tables and a named table style (#625).
78
+ { name: 'booktabs-fixed', options: base('fixed'), book: booktabsSampleBook },
79
+ { name: 'booktabs-reflowable', options: base('reflowable'), book: booktabsSampleBook },
80
+ // A figure and a box text wraps round (#627).
81
+ { name: 'wrap-fixed', options: base('fixed'), book: wrapSampleBook },
82
+ { name: 'wrap-reflowable', options: base('reflowable'), book: wrapSampleBook },
77
83
  ];
78
84
  describe.skipIf(!available)('EPUBCheck', () => {
79
85
  const dir = process.env.EPUBCHECK_OUT ?? fs.mkdtempSync(path.join(os.tmpdir(), 'postext-epub-'));
@@ -1 +1 @@
1
- {"version":3,"file":"epubcheck.test.js","sourceRoot":"","sources":["../src/epubcheck.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"epubcheck.test.js","sourceRoot":"","sources":["../src/epubcheck.test.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,2EAA2E;AAC3E,2EAA2E;AAC3E,aAAa;AAEb,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEtO,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,GAAG,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AAS5H,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;IAC7G,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAqC,CAAC;IAC1E,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;AACrH,CAAC;AAED,MAAM,IAAI,GAAG,CAAC,MAAqC,EAAuB,EAAE,CAAC,CAAC;IAC5E,MAAM;IACN,QAAQ,EAAE;QACR,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,2BAA2B;QACrC,QAAQ,EAAE,CAAC,cAAc,CAAC;QAC1B,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE,SAAS;QACpB,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KACzC;IACD,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACrF,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS;CACpG,CAAC,CAAC;AAEH,kDAAkD;AAClD,MAAM,MAAM,GAAG,CAAC,MAAqC,EAAuB,EAAE,CAAC,CAAC;IAC9E,MAAM;IACN,QAAQ,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;IAClH,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IACvF,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE;CAClE,CAAC,CAAC;AAEH;uEACuE;AACvE,MAAM,KAAK,GAAG,CAAC,MAAqC,EAAuB,EAAE,CAAC,CAAC;IAC7E,GAAG,IAAI,CAAC,MAAM,CAAC;IACf,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,QAAQ;QAC5C,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE;QACxC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS;CAC/E,CAAC,CAAC;AAEH,2CAA2C;AAC3C,MAAM,QAAQ,GAAG,CAAC,MAAqC,EAAuB,EAAE,CAAC,CAAC;IAChF,MAAM;IACN,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;IACxG,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE;CACzD,CAAC,CAAC;AAEH,MAAM,OAAO,GAAiG;IAC5G,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;IACzC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE;IAC1H,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE;IACnD,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE;IACpI,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE;IAC1E,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE;IACpF,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE;IACvE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,KAAK,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE;IACjF,oEAAoE;IACpE,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE;IACzI,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE;IAChF,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE;IAC1F,qEAAqE;IACrE,8DAA8D;IAC9D,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE;IACtE,EAAE,IAAI,EAAE,wBAAwB,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;IAC5H,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE;IAChF,0DAA0D;IAC1D,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE;IACjH,EAAE,IAAI,EAAE,yBAAyB,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE;IAC7F,6DAA6D;IAC7D,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE;IACrF,EAAE,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE;IAC/F,kDAAkD;IAClD,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE;IAC5E,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE;IACtF,8CAA8C;IAC9C,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE;IACpE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE;CAC/E,CAAC;AAEF,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE;IAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;IACjG,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEvC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,wBAAwB,EAAE,KAAK,IAAI,EAAE;YACpD,IAAI,KAAiB,CAAC;YACtB,IAAI,CAAC;gBACH,KAAK,GAAG,MAAM,YAAY,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YAC5E,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,sDAAsD;gBACtD,IAAI,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO;gBAC9C,MAAM,CAAC,CAAC;YACV,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,OAAO,CAAC,CAAC;YACnD,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC9B,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC5I,CAAC,EAAE,OAAO,CAAC,CAAC;IACd,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=booktabs.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"booktabs.test.d.ts","sourceRoot":"","sources":["../../src/reflowable/booktabs.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,53 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { renderToEpub } from '..';
3
+ import { buildReflowablePublication } from '.';
4
+ import { booktabsSampleBook } from '../__tests__/sampleBook';
5
+ // Journal tables (#625): booktabs rules in the reflowable stylesheet, a
6
+ // named table style as a class.
7
+ describe('booktabs tables in a reflowable book', async () => {
8
+ const pub = await buildReflowablePublication(booktabsSampleBook(), {
9
+ layout: 'reflowable',
10
+ metadata: { title: 'Tables', language: 'en-US', modified: new Date(Date.UTC(2026, 9, 9)) },
11
+ });
12
+ const css = pub.items.filter((i) => i.mediaType === 'text/css').map((i) => String(i.data)).join('\n');
13
+ const xhtml = pub.items.filter((i) => i.mediaType === 'application/xhtml+xml').map((i) => String(i.data)).join('\n');
14
+ const block = (selector) => {
15
+ const at = css.indexOf(`\n${selector} {`);
16
+ return at < 0 ? undefined : css.slice(at + 1, css.indexOf('}', at));
17
+ };
18
+ it('rules the table above and under, the header under, and no cell borders', () => {
19
+ const table = block('table');
20
+ expect(table).toMatch(/border-top: [\d.]+px solid #/);
21
+ expect(table).toMatch(/border-bottom: [\d.]+px solid #/);
22
+ expect(table).not.toMatch(/border: /);
23
+ expect(block('th, td')).not.toMatch(/border/);
24
+ expect(block('thead')).toMatch(/border-bottom: [\d.]+px solid #/);
25
+ });
26
+ it('trims the rule under a spanning head with a background line', () => {
27
+ const span = block('thead > tr:not(:last-child) > th[colspan]');
28
+ expect(span).toContain('background-image: linear-gradient(');
29
+ expect(span).toMatch(/background-size: calc\(100% - 1em\) [\d.]+px/);
30
+ });
31
+ it('rules the group heads above, except the first body row', () => {
32
+ expect(block('tbody > tr.pt-group:not(:first-child) > *')).toMatch(/border-top: [\d.]+px solid #/);
33
+ expect(xhtml).toMatch(/<tr class="pt-group"><td colspan="3"[^>]*>Baselines<\/td><\/tr>/);
34
+ expect(xhtml).toMatch(/<tr class="pt-group"><td colspan="3"[^>]*>Ours<\/td><\/tr>/);
35
+ });
36
+ it('sets a named table style as a class that undoes the booktabs rules', () => {
37
+ expect(xhtml).toContain('<table id="res-t2" class="pt-table-grid">');
38
+ expect(xhtml).toMatch(/<table id="res-t1">/);
39
+ expect(block('table.pt-table-grid')).toMatch(/border: [\d.]+px solid #/);
40
+ expect(block('table.pt-table-grid th, table.pt-table-grid td')).toMatch(/border: [\d.]+px solid #/);
41
+ expect(block('table.pt-table-grid thead')).toContain('border-bottom: none');
42
+ expect(block('table.pt-table-grid thead > tr:not(:last-child) > th[colspan]')).toContain('background-image: none');
43
+ expect(block('table.pt-table-grid th')).toMatch(/background-color: #/);
44
+ // The grid table's group heads are not marked.
45
+ const t2 = xhtml.slice(xhtml.indexOf('<table id="res-t2"'));
46
+ expect(t2.slice(0, t2.indexOf('</table>'))).not.toContain('pt-group');
47
+ });
48
+ it('renders a whole book', async () => {
49
+ const bytes = await renderToEpub(booktabsSampleBook(), { layout: 'reflowable', metadata: { title: 'Tables', language: 'en-US' } });
50
+ expect(bytes.length).toBeGreaterThan(1000);
51
+ });
52
+ });
53
+ //# sourceMappingURL=booktabs.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"booktabs.test.js","sourceRoot":"","sources":["../../src/reflowable/booktabs.test.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,18 @@ export interface StylesheetOptions {
5
5
  vertical: boolean;
6
6
  /** The book sets a `:::verse` poem (its rules are written only then). */
7
7
  verse?: boolean;
8
+ /** The book sets a poem line by line (#620): the stanza rules. */
9
+ stanzas?: boolean;
10
+ /** Lines of verse carry their numbers (#621): the margin they stand in. */
11
+ lineNumbers?: boolean;
12
+ /** A line holds a tab at its stop (#622): the tab rows. */
13
+ tabs?: boolean;
14
+ /** The book sets a code listing (#624): the listing's box and lines. */
15
+ code?: boolean;
16
+ /** The drop caps the paragraphs open with (#623), as `lines-sink`. */
17
+ dropCaps?: readonly string[];
18
+ /** A figure or a box text wraps round (#627): the float rules. */
19
+ wraps?: boolean;
8
20
  /** Classes of emphasis marks the text uses beyond `pt-dots` (the
9
21
  * filled dot on the default side): their rules are written only then
10
22
  * (`inline.ts` `dotsClasses`, #428). */
@@ -1 +1 @@
1
- {"version":3,"file":"css.d.ts","sourceRoot":"","sources":["../../src/reflowable/css.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAyB,cAAc,EAAE,MAAM,SAAS,CAAC;AAIrE,qEAAqE;AACrE,MAAM,WAAW,iBAAiB;IAChC,yEAAyE;IACzE,QAAQ,EAAE,OAAO,CAAC;IAClB,yEAAyE;IACzE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;6CAEyC;IACzC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AA0CD,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED;cACc;AACd,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEjD;AAID;2BAC2B;AAC3B,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAaD;oEACoE;AACpE,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,UAAU,CAmchH;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,EAAE,OAAO,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,CA2BjG;AAED;;;mEAGmE;AACnE,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,GAAG,cAAc,CAqB3H"}
1
+ {"version":3,"file":"css.d.ts","sourceRoot":"","sources":["../../src/reflowable/css.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAyB,cAAc,EAA4B,MAAM,SAAS,CAAC;AAI/F,qEAAqE;AACrE,MAAM,WAAW,iBAAiB;IAChC,yEAAyE;IACzE,QAAQ,EAAE,OAAO,CAAC;IAClB,yEAAyE;IACzE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kEAAkE;IAClE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2DAA2D;IAC3D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,wEAAwE;IACxE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,sEAAsE;IACtE,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,kEAAkE;IAClE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;6CAEyC;IACzC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AA0CD,2EAA2E;AAC3E,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED;cACc;AACd,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEjD;AAID;2BAC2B;AAC3B,MAAM,WAAW,OAAO;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAaD;oEACoE;AACpE,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,UAAU,CAumBhH;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,EAAE,OAAO,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,CA2BjG;AAED;;;mEAGmE;AACnE,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,GAAG,cAAc,CAqB3H"}
@@ -3,7 +3,7 @@
3
3
  // override. Sizes are in ems of the body text (the reader's chosen size),
4
4
  // line heights are ratios, colours come from the resolved palette, and no
5
5
  // rule sets a width the screen would have to honour.
6
- import { dimensionToPx, primaryFontFamily } from 'postext';
6
+ import { dimensionToPx, primaryFontFamily, resolvedCodeStyle } from 'postext';
7
7
  import { idOf, round } from './inline';
8
8
  /** CSS `line-break` for a Japanese kinsoku level (`cjk.lineBreak`, #417):
9
9
  * JLReq's strictest rules are CSS `strict` (no small kana, ー or 々 at a
@@ -267,10 +267,85 @@ export function bookStylesheet(config, fontFaces, options) {
267
267
  out.push(rule('figcaption .pt-note', ['display: block', `margin-block-start: ${em(note.gap, px(cap.fontSize))}`]));
268
268
  out.push(rule('.pt-missing', ['border: 1px dashed currentColor', 'padding: 1em', 'font-style: italic']));
269
269
  const ts = config.tableStyle;
270
+ /** A rule `widthPx` (at the page dpi) wide, in CSS px. */
271
+ const line = (widthPx, c) => `${round(Math.max(0.5, widthPx * (96 / dpi)))}px solid ${c.hex}`;
272
+ /** What a table style decides, by element: on `table` for the document's
273
+ * style; on `table.pt-table-<id>` for a named one (#625), which then
274
+ * also undoes what the document's style (`reset`) sets and it does not. */
275
+ const tableStyleDecls = (st, reset) => {
276
+ const cellPx = px(st.bodyFontSize);
277
+ const booktabs = st.borders && st.rules === 'booktabs';
278
+ const border = st.borders && st.rules !== 'none' && !booktabs && px(st.borderWidth) > 0
279
+ ? line(px(st.borderWidth), st.borderColor)
280
+ : undefined;
281
+ const tableBorder = border !== undefined && (st.rules === 'outer' || st.rules === 'grid');
282
+ // Booktabs: a heavy rule above and under the table, a light one under
283
+ // the header and, under a head spanning columns above the last header
284
+ // row, a span rule, trimmed at both ends by a background line (a CSS
285
+ // border cannot be).
286
+ const width = (d) => {
287
+ const v = px(d, cellPx);
288
+ return booktabs && v > 0 ? Math.max(0.25, v) : 0;
289
+ };
290
+ const heavy = width(st.heavyRuleWidth);
291
+ const light = width(st.lightRuleWidth);
292
+ const span = st.spanRules !== 'none' ? width(st.spanRuleWidth) : 0;
293
+ const wasBooktabs = reset?.borders === true && reset.rules === 'booktabs';
294
+ const extra = [];
295
+ if (light > 0)
296
+ extra.push(['thead', [`border-bottom: ${line(light, st.borderColor)}`]]);
297
+ else if (wasBooktabs)
298
+ extra.push(['thead', ['border-bottom: none']]);
299
+ const spanSel = 'thead > tr:not(:last-child) > th[colspan]';
300
+ if (span > 0 && st.spanRules === 'trimmed') {
301
+ extra.push([spanSel, [
302
+ `background-image: linear-gradient(${st.borderColor.hex}, ${st.borderColor.hex})`,
303
+ 'background-repeat: no-repeat',
304
+ 'background-position: center bottom',
305
+ `background-size: calc(100% - ${round(2 * (px(st.spanRuleTrim, cellPx) / cellPx))}em) ${round(Math.max(0.5, span * (96 / dpi)))}px`,
306
+ ]]);
307
+ }
308
+ else {
309
+ if (span > 0)
310
+ extra.push([spanSel, [`border-bottom: ${line(span, st.borderColor)}`]]);
311
+ if (wasBooktabs && reset.spanRules === 'trimmed')
312
+ extra.push([spanSel, ['background-image: none']]);
313
+ }
314
+ if (st.groupRules && light > 0) {
315
+ extra.push(['tbody > tr.pt-group:not(:first-child) > *', [`border-top: ${line(light, st.borderColor)}`]]);
316
+ }
317
+ return {
318
+ table: [
319
+ reset && fam(st.bodyFontFamily),
320
+ reset && `font-size: ${round(cellPx / bodyPx)}em`,
321
+ reset && color(st.bodyColor),
322
+ tableBorder ? `border: ${border}` : reset && 'border: none',
323
+ heavy > 0 && `border-top: ${line(heavy, st.borderColor)}`,
324
+ heavy > 0 && `border-bottom: ${line(heavy, st.borderColor)}`,
325
+ ],
326
+ cells: [
327
+ reset && `padding: ${round(px(st.cellPadding, cellPx) / cellPx)}em`,
328
+ border && st.rules === 'grid' ? `border: ${border}` : undefined,
329
+ border && st.rules === 'horizontal' ? `border-block: ${border}` : undefined,
330
+ reset && !(border && (st.rules === 'grid' || st.rules === 'horizontal')) && 'border: none',
331
+ ],
332
+ td: [st.bodyBackgroundEnabled ? color(st.bodyBackground, 'background-color') : reset && 'background-color: transparent'],
333
+ alt: st.bodyAlternateBackgroundEnabled ? [color(st.bodyAlternateBackground, 'background-color')] : undefined,
334
+ th: [
335
+ fam(st.headerFontFamily),
336
+ `font-size: ${round(px(st.headerFontSize) / cellPx)}em`,
337
+ color(st.headerColor),
338
+ `font-weight: ${st.headerBold ? 'bold' : 'normal'}`,
339
+ st.headerItalic ? 'font-style: italic' : reset && 'font-style: normal',
340
+ st.headerTextTransform === 'uppercase' ? 'text-transform: uppercase' : reset && 'text-transform: none',
341
+ st.headerLetterSpacing.value !== 0 ? `letter-spacing: ${round(px(st.headerLetterSpacing, cellPx) / cellPx)}em` : reset && 'letter-spacing: normal',
342
+ st.headerBackgroundEnabled ? color(st.headerBackground, 'background-color') : reset && 'background-color: transparent',
343
+ ],
344
+ extra,
345
+ };
346
+ };
270
347
  const bodyCellPx = px(ts.bodyFontSize);
271
- const border = ts.borders && ts.rules !== 'none' && px(ts.borderWidth) > 0
272
- ? `${round(Math.max(0.5, px(ts.borderWidth) * (96 / dpi)))}px solid ${ts.borderColor.hex}`
273
- : undefined;
348
+ const base = tableStyleDecls(ts, undefined);
274
349
  out.push(rule('.pt-table', ['margin: 1em 0', 'overflow-x: auto']));
275
350
  out.push(rule('table', [
276
351
  'border-collapse: collapse',
@@ -281,28 +356,33 @@ export function bookStylesheet(config, fontFaces, options) {
281
356
  color(ts.bodyColor),
282
357
  'text-indent: 0',
283
358
  'hyphens: manual',
284
- border && (ts.rules === 'outer' || ts.rules === 'grid') ? `border: ${border}` : undefined,
359
+ ...base.table,
285
360
  ]));
286
361
  out.push(rule('th, td', [
287
362
  `padding: ${round(px(ts.cellPadding, bodyCellPx) / bodyCellPx)}em`,
288
363
  'vertical-align: top',
289
364
  'text-align: start',
290
- border && ts.rules === 'grid' ? `border: ${border}` : undefined,
291
- border && ts.rules === 'horizontal' ? `border-block: ${border}` : undefined,
292
- ]));
293
- out.push(rule('td', [ts.bodyBackgroundEnabled && color(ts.bodyBackground, 'background-color')]));
294
- if (ts.bodyAlternateBackgroundEnabled)
295
- out.push(rule('td.pt-alt', [color(ts.bodyAlternateBackground, 'background-color')]));
296
- out.push(rule('th', [
297
- fam(ts.headerFontFamily),
298
- `font-size: ${round(px(ts.headerFontSize) / bodyCellPx)}em`,
299
- color(ts.headerColor),
300
- `font-weight: ${ts.headerBold ? 'bold' : 'normal'}`,
301
- ts.headerItalic && 'font-style: italic',
302
- ts.headerTextTransform === 'uppercase' && 'text-transform: uppercase',
303
- ts.headerLetterSpacing.value !== 0 && `letter-spacing: ${round(px(ts.headerLetterSpacing, bodyCellPx) / bodyCellPx)}em`,
304
- ts.headerBackgroundEnabled && color(ts.headerBackground, 'background-color'),
365
+ ...base.cells,
305
366
  ]));
367
+ out.push(rule('td', base.td));
368
+ if (base.alt)
369
+ out.push(rule('td.pt-alt', base.alt));
370
+ out.push(rule('th', base.th));
371
+ for (const [sel, decls] of base.extra)
372
+ out.push(rule(sel, decls));
373
+ for (const st of config.tableStyles ?? []) {
374
+ const table = `table.${idOf('pt-table-', st.id)}`;
375
+ const sub = (sel) => sel.split(', ').map((x) => `${table} ${x}`).join(', ');
376
+ const d = tableStyleDecls(st, ts);
377
+ out.push(rule(table, d.table));
378
+ out.push(rule(sub('th, td'), d.cells));
379
+ out.push(rule(sub('td'), d.td));
380
+ if (d.alt)
381
+ out.push(rule(sub('td.pt-alt'), d.alt));
382
+ out.push(rule(sub('th'), d.th));
383
+ for (const [sel, decls] of d.extra)
384
+ out.push(rule(sub(sel), decls));
385
+ }
306
386
  out.push(rule('td img, th img', ['max-width: 100%', 'height: auto', 'display: block', 'margin: 0 auto']));
307
387
  // --- callouts ------------------------------------------------------------
308
388
  out.push(rule('aside.pt-callout', ['margin: 1em 0', 'padding: 0.75em 1em', 'page-break-inside: avoid']));
@@ -354,7 +434,7 @@ export function bookStylesheet(config, fontFaces, options) {
354
434
  for (const s of config.paragraphStyles) {
355
435
  const sPx = px(s.fontSize);
356
436
  const cls = idOf('ps-', s.id);
357
- out.push(rule(`p.${cls}, div.pt-verse.${cls}`, [
437
+ out.push(rule(`p.${cls}, div.pt-verse.${cls}, div.pt-stanza.${cls}`, [
358
438
  fam(s.fontFamily),
359
439
  `font-size: ${round(sPx / bodyPx)}em`,
360
440
  lh(s.lineHeight, sPx),
@@ -374,6 +454,14 @@ export function bookStylesheet(config, fontFaces, options) {
374
454
  px(s.marginTop, sPx) > 0 && `margin-block-start: ${round(px(s.marginTop, sPx) / sPx)}em`,
375
455
  px(s.marginBottom, sPx) > 0 && `margin-block-end: ${round(px(s.marginBottom, sPx) / sPx)}em`,
376
456
  ]));
457
+ // A hanging indent: the paragraph's turnovers padded in, its first line
458
+ // taken back to its own indent (the style's, when it sets one, #620).
459
+ // A poem's lines hang on their own (`.pt-verse-line`).
460
+ const hang = px(s.hangingIndent, sPx);
461
+ if (hang > 0) {
462
+ const first = s.ownFirstLineIndent ? px(s.firstLineIndent, sPx) : 0;
463
+ out.push(rule(`p.${cls}`, [`padding-inline-start: ${round(hang / sPx)}em`, `text-indent: ${round((first - hang) / sPx)}em`]));
464
+ }
377
465
  }
378
466
  // --- notes, contents, bibliography, index -------------------------------
379
467
  const fn = config.footnotes;
@@ -483,6 +571,90 @@ export function bookStylesheet(config, fontFaces, options) {
483
571
  // with the end side, so the rhymes stand in one column as in print. On
484
572
  // a narrow screen the two halves stagger, the ʿajuz on its own line
485
573
  // flush with the end, as the print does when they do not fit.
574
+ // A stanza set line by line (#620): its lines of verse, a blank line
575
+ // between stanzas, never hyphenated; each line's hang is on its own
576
+ // element.
577
+ if (options.stanzas) {
578
+ out.push(rule('.pt-stanza', ['margin: 0 0 1em', 'text-indent: 0', 'text-align: start', 'hyphens: manual']));
579
+ out.push(rule('.pt-verse-line', ['display: block']));
580
+ }
581
+ // Line numbers (#621): a poem's every Nth line carries its number in a
582
+ // margin on the start side of the stanza, out of the reading order.
583
+ if (options.stanzas && options.lineNumbers) {
584
+ out.push(rule('.pt-stanza', ['padding-left: 3em']));
585
+ out.push(rule('.pt-verse-line', ['position: relative']));
586
+ out.push(rule('.pt-line-number', [
587
+ 'position: absolute', 'right: 100%', 'margin-right: 0.8em', 'text-indent: 0', 'font-size: 0.8em',
588
+ 'white-space: nowrap', '-webkit-user-select: none', 'user-select: none',
589
+ ]));
590
+ out.push(rule('[dir="rtl"] .pt-stanza, .pt-stanza[dir="rtl"]', ['padding-left: 0', 'padding-right: 3em']));
591
+ out.push(rule('[dir="rtl"] .pt-line-number, .pt-stanza[dir="rtl"] .pt-line-number', ['right: auto', 'left: 100%', 'margin-right: 0', 'margin-left: 0.8em']));
592
+ }
593
+ // Tab stops (#622): a line holding tabs is a row of its parts; a filler
594
+ // (with its leader as a border on the baseline) pushes the part after it
595
+ // to the row's end, a start stop's part keeps its printed width.
596
+ if (options.tabs) {
597
+ out.push(rule('.pt-tab-row', ['display: flex', 'align-items: baseline', 'text-indent: 0']));
598
+ out.push(rule('.pt-tab-part', ['flex: 0 1 auto']));
599
+ out.push(rule('.pt-tab-rest', ['flex: 1 1 0']));
600
+ out.push(rule('.pt-tab-fill', ['flex: 1 1 auto', 'min-width: 1em', 'margin: 0 0.5em']));
601
+ out.push(rule('.pt-tab-gap', ['flex: 0 0 0.5em']));
602
+ out.push(rule('.pt-leader-dots', ['border-bottom: 0.12em dotted currentColor']));
603
+ out.push(rule('.pt-leader-rule', ['border-bottom: 0.06em solid currentColor']));
604
+ }
605
+ // Code listings (#624): the box of `codeStyle` around `<pre><code>`, the
606
+ // lines as written in the code face, turned over by the reading system
607
+ // when the screen is narrow (`pre-wrap`); numbers and wrap left out of a
608
+ // selection; the highlighted lines tinted.
609
+ if (options.code) {
610
+ const cs = resolvedCodeStyle(config);
611
+ const codePx = dimensionToPx(cs.fontSize, dpi, bodyPx);
612
+ const bodyLead = body.lineHeight.unit === 'em' || body.lineHeight.unit === 'rem' ? body.lineHeight.value * bodyPx : px(body.lineHeight);
613
+ const codeLead = cs.lineHeight ? lh(cs.lineHeight, codePx) : `line-height: ${round(bodyLead / codePx)}`;
614
+ const len = (d) => em(d, codePx);
615
+ out.push(rule('.pt-code-box', [
616
+ 'display: block',
617
+ `margin: ${em(cs.marginTop, codePx)} 0 ${em(cs.marginBottom, codePx)}`,
618
+ `font-size: ${round(codePx / bodyPx)}em`,
619
+ cs.backgroundEnabled && color(cs.background, 'background-color'),
620
+ cs.border.enabled && `border: ${round(px(cs.border.width) / codePx)}em solid ${cs.border.color.hex}`,
621
+ px(cs.borderRadius, codePx) > 0 && `border-radius: ${len(cs.borderRadius)}`,
622
+ `padding: ${len(cs.padding.top)} ${len(cs.padding.right)} ${len(cs.padding.bottom)} ${len(cs.padding.left)}`,
623
+ 'text-indent: 0',
624
+ ]));
625
+ out.push(rule('.pt-code-title', [fam(cs.titleStyle?.fontFamily ?? cs.fontFamily), 'font-weight: bold', 'margin: 0 0 0.4em', 'text-indent: 0']));
626
+ out.push(rule('pre.pt-code', [
627
+ fam(cs.fontFamily), 'font-size: 1em', codeLead, 'margin: 0', color(cs.color),
628
+ 'white-space: pre-wrap', 'overflow-wrap: anywhere', `tab-size: ${cs.tabSize}`, `-moz-tab-size: ${cs.tabSize}`,
629
+ 'text-align: left', 'hyphens: none',
630
+ ]));
631
+ out.push(rule('pre.pt-code code', ['font: inherit', 'background: none']));
632
+ out.push(rule('.pt-code-num', [color(cs.lineNumberColor), 'margin-right: 1em', '-webkit-user-select: none', 'user-select: none']));
633
+ out.push(rule('mark.pt-code-hl', [color(cs.highlightBackground, 'background-color'), 'color: inherit']));
634
+ }
635
+ // Drop caps (#623): CSS initial letters, `lines` tall, sunk `sink`
636
+ // lines; a reading system without `initial-letter` floats the letter,
637
+ // about as tall, on the start side.
638
+ if (options.dropCaps && options.dropCaps.length > 0) {
639
+ out.push(rule('.pt-has-dropcap', ['text-indent: 0']));
640
+ out.push(rule('.pt-dropcap', ['float: left', 'line-height: 0.85', 'margin: 0.05em 0.08em 0 0', 'text-indent: 0']));
641
+ out.push(rule('[dir="rtl"] .pt-dropcap, p[dir="rtl"] .pt-dropcap', ['float: right', 'margin: 0.05em 0 0 0.08em']));
642
+ for (const shape of options.dropCaps) {
643
+ const [lines, sink] = shape.split('-').map(Number);
644
+ out.push(rule(`.pt-dropcap-${shape}`, [`font-size: ${round(lines * 1.25)}em`]));
645
+ out.push(`@supports (initial-letter: 1) or (-webkit-initial-letter: 1) {\n .pt-dropcap-${shape} { float: none; margin: 0 0.08em 0 0; font-size: 1em; line-height: inherit; -webkit-initial-letter: ${lines} ${sink}; initial-letter: ${lines} ${sink}; }\n}\n`);
646
+ }
647
+ }
648
+ // Text wrap (#627): a figure or a box floated to its side; what cannot
649
+ // run beside it in print (headings, other figures, tables, boxes,
650
+ // formulas, poems) clears it.
651
+ if (options.wraps) {
652
+ out.push(rule('.pt-wrap', ['margin-top: 0', 'margin-bottom: 1em']));
653
+ out.push(rule('.pt-wrap-left', ['float: left', 'clear: left']));
654
+ out.push(rule('.pt-wrap-right', ['float: right', 'clear: right']));
655
+ out.push(rule('.pt-wrap img', ['max-width: 100%', 'height: auto']));
656
+ out.push(rule('h1, h2, h3, h4, h5, h6, figure:not(.pt-wrap), table, aside:not(.pt-wrap), .pt-math-display, .pt-stanza, .pt-verse', ['clear: both']));
657
+ }
486
658
  if (options.verse) {
487
659
  // The poem as wide as its widest bayt, centred: its hemistichs share
488
660
  // one width, as in print, instead of drifting to the screen's edges.