@pretextbook/pretext-html 0.16.0 → 0.17.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 (60) hide show
  1. package/README.md +77 -3
  2. package/assets/preview-html.xsl +56 -0
  3. package/assets/upstream.json +2 -2
  4. package/assets/xsl/entities.ent +14 -1
  5. package/assets/xsl/latex/pretext-latex-texstyle.xsl +5 -2
  6. package/assets/xsl/localizations/README.md +1 -1
  7. package/assets/xsl/localizations/af-ZA.xml +5 -6
  8. package/assets/xsl/localizations/bg-BG.xml +5 -6
  9. package/assets/xsl/localizations/ca-ES.xml +5 -6
  10. package/assets/xsl/localizations/cs-CZ.xml +5 -6
  11. package/assets/xsl/localizations/de-DE.xml +108 -108
  12. package/assets/xsl/localizations/en-US.xml +18 -17
  13. package/assets/xsl/localizations/es-ES.xml +5 -6
  14. package/assets/xsl/localizations/fi-FI.xml +5 -6
  15. package/assets/xsl/localizations/fr-CA.xml +5 -6
  16. package/assets/xsl/localizations/fr-FR.xml +5 -6
  17. package/assets/xsl/localizations/hu-HU.xml +5 -6
  18. package/assets/xsl/localizations/it-IT.xml +7 -7
  19. package/assets/xsl/localizations/ku-CKB.xml +5 -6
  20. package/assets/xsl/localizations/nl-NL.xml +5 -6
  21. package/assets/xsl/localizations/pt-BR.xml +4 -5
  22. package/assets/xsl/localizations/pt-PT.xml +4 -5
  23. package/assets/xsl/localizations/zh-HANS.xml +5 -6
  24. package/assets/xsl/pretext-assembly.xsl +154 -29
  25. package/assets/xsl/pretext-beamer.xsl +112 -10
  26. package/assets/xsl/pretext-braille-preprint.xsl +22 -3
  27. package/assets/xsl/pretext-common.xsl +117 -42
  28. package/assets/xsl/pretext-epub.xsl +74 -87
  29. package/assets/xsl/pretext-fo.xsl +115 -41
  30. package/assets/xsl/pretext-html.xsl +333 -102
  31. package/assets/xsl/pretext-latex-classic.xsl +48 -35
  32. package/assets/xsl/pretext-latex-common.xsl +160 -98
  33. package/assets/xsl/pretext-latex.xsl +12 -10
  34. package/assets/xsl/pretext-markdown.xsl +5 -3
  35. package/assets/xsl/pretext-numbers.xsl +28 -2
  36. package/assets/xsl/pretext-revealjs.xsl +44 -2
  37. package/assets/xsl/pretext-runestone-static.xsl +27 -4
  38. package/assets/xsl/pretext-runestone.xsl +112 -0
  39. package/assets/xsl/pretext-text.xsl +21 -14
  40. package/assets/xsl/publisher-variables.xsl +187 -47
  41. package/assets/xsl/support/extract-math.xsl +22 -2
  42. package/assets/xsl/support/package-math.xsl +9 -8
  43. package/assets/xsl/utilities/report-publisher-variables.xsl +4 -0
  44. package/assets/xsl-bundle.json +1 -1
  45. package/dist/cli-C0JwLhuv.js +1456 -0
  46. package/dist/cli.js +3 -3
  47. package/dist/html-static.d.ts +2 -2
  48. package/dist/index.browser.d.ts +9 -4
  49. package/dist/index.browser.js +1151 -841
  50. package/dist/index.d.ts +9 -3
  51. package/dist/index.js +50 -46
  52. package/dist/publication.d.ts +21 -0
  53. package/dist/renderer.d.ts +134 -13
  54. package/dist/skeleton.d.ts +68 -7
  55. package/dist/source-cache.d.ts +36 -0
  56. package/dist/sourcemap.d.ts +11 -1
  57. package/dist/subtree.d.ts +79 -0
  58. package/dist/xinclude.d.ts +40 -3
  59. package/package.json +1 -1
  60. package/dist/cli-ox-z2TCZ.js +0 -1145
package/README.md CHANGED
@@ -91,6 +91,77 @@ const { html } = await renderHtml({
91
91
  alone. Pass `openKnowls: false` (`--no-open-knowls` on the CLI) for the
92
92
  collapsed reading experience of a real `pretext build`.
93
93
 
94
+ ### Previewing one division of a large document
95
+
96
+ A render costs what PreTeXt's assembly costs, and that tracks the number of
97
+ elements in the document: a few hundred milliseconds for a chapter, tens of
98
+ seconds for a whole book. A live preview of a large document therefore should
99
+ not render the whole document, and need not: the `subtree` option renders one
100
+ division of it, numbered and cross-referenced exactly as the whole document
101
+ would number it, by pruning the rest to a skeleton (see `src/skeleton.ts`).
102
+
103
+ ```js
104
+ const { html, size, subtree } = await renderHtml({
105
+ sourcePath: "source/main.ptx",
106
+ subtree: {
107
+ line: cursorLine, // the division around the author's cursor...
108
+ file: cursorFile, // ...in this file (defaults to sourcePath)
109
+ level: 2, // chunk level: sections of a book are pages of their own
110
+ wholeDocumentUpTo: 3000, // but a small document previews whole
111
+ },
112
+ });
113
+ ```
114
+
115
+ - `line`/`file` select the innermost division containing a source line; `id`
116
+ selects by `xml:id` instead (an element inside a division selects that
117
+ division). The division need not carry an `xml:id` of its own — the one
118
+ PreTeXt would stamp on it is injected, so the page's HTML ids are unchanged.
119
+ - A division that contains divisions is previewed as a **summary page**: its
120
+ own content (introduction, conclusion, loose paragraphs) rendered in place,
121
+ then links to the divisions inside it, as the chapter page of a chunked
122
+ build summarizes its sections. Only leaf divisions render in full, so a
123
+ cursor at the top of a book shows the book's front matter and a table of
124
+ its chapters, never the book. The summary links are inert on a one-page
125
+ preview but carry `data-ptx-division` (and `data-ptx-id` for a link to an
126
+ element), so a host can make them re-render with `subtree: { id }`.
127
+ - `level` has PreTeXt's chunk-level meaning, for a host that wants whole
128
+ pages at some depth: the preview is the page that would hold the selection
129
+ in a build chunked at that level. A selection deeper than `level` previews
130
+ its ancestor at `level`, whole; one at `level` is shown whole; one shallower
131
+ is the summary page above. Omit it to treat every division as a page of its
132
+ own.
133
+ - `wholeDocumentUpTo` renders the whole document instead when it has no more
134
+ than that many elements — a small document previews whole as fast as any
135
+ division of it would.
136
+ - Every result carries `size` (`elements`, `bytes`, and the `files` the
137
+ document spans, to watch for changes), and `subtree` (`id`, `level`,
138
+ `collapsed`) when one division was emitted rather than the whole document.
139
+ `measureDocument(options)` reports the same `size` without rendering, for a
140
+ host deciding how much to preview before each render.
141
+ - With `fragment: true` and a context document, `subtree` narrows the preview
142
+ within the placed fragment — a cursor line in a chapter file previews the
143
+ section it is in.
144
+
145
+ What a division preview still has to do on every render is read and parse the
146
+ whole document, to prune it. Two options keep that cheap:
147
+
148
+ - `readSource(path)` (or `files`, a map from absolute path to content) supplies
149
+ the document's files from memory — the xi:include targets, the context
150
+ document, the publication file — for a host that already holds its project
151
+ in memory (a browser editor) or has unsaved buffers (an editor). A reader
152
+ that returns `undefined` for a path falls through to the platform's own read.
153
+ - A per-file parse cache, on by default, reuses the parse of every file whose
154
+ content has not changed since the last render. It is keyed by file, not by
155
+ the assembled document, so it does not matter how the project is split into
156
+ files: a keystroke re-parses the file being edited and nothing else. Pass a
157
+ `SourceCache` of your own as `cache` to scope it (and `invalidate()` it), or
158
+ `cache: false` to parse afresh each time.
159
+
160
+ On a synthetic 12-chapter book of 28,000 elements split into 157 files, a
161
+ section or subsection preview takes well under a second warm (0.3–0.8s
162
+ measured, most of it the division itself), and a chapter's summary page about
163
+ the same, against 20–40 seconds for the whole book.
164
+
94
165
  ### API (browser)
95
166
 
96
167
  The same renderer runs in a browser — no server, no Python. Bundlers pick it up
@@ -117,9 +188,12 @@ filesystem:
117
188
 
118
189
  - **`sourceContent` is required.** `sourcePath` still anchors relative
119
190
  `xi:include`s and the output's URLs, but nothing is read from it.
120
- - **`xi:include`s are not resolved from disk.** Pre-merge them, or pass the
121
- already-merged document as `sourceContent`. An unresolvable include uses its
122
- `<xi:fallback>` if it has one, and otherwise throws.
191
+ - **`xi:include`s are not resolved from disk.** Supply the project's files
192
+ through `readSource` or `files` (see above) and they are resolved from
193
+ there, with the per-file parse cache working as it does under Node; or
194
+ pre-merge them and pass the merged document as `sourceContent`. An
195
+ unresolvable include uses its `<xi:fallback>` if it has one, and otherwise
196
+ throws.
123
197
  - **`publicationPath` / `docinfoSourcePath` need absolute URLs**, since those
124
198
  are the only readable locations. Prefer `docinfo` (a string) over
125
199
  `docinfoSourcePath`.
@@ -226,6 +226,62 @@
226
226
  </xsl:choose>
227
227
  </xsl:variable>
228
228
 
229
+ <!-- A subtree root one level above the chunk level is a summary page: its own -->
230
+ <!-- content, then links to the divisions inside it. Only that page is emitted; -->
231
+ <!-- the chunker is kept from also producing a page per child division. -->
232
+ <!-- See SUMMARY_PAGE_OVERRIDE in refresh-xsl.mjs. -->
233
+ <xsl:template match="*" mode="chunking">
234
+ <xsl:choose>
235
+ <xsl:when test="$b-subsetting and not(generate-id(.) = generate-id(id($subtree)))"/>
236
+ <xsl:otherwise>
237
+ <xsl:apply-imports/>
238
+ </xsl:otherwise>
239
+ </xsl:choose>
240
+ </xsl:template>
241
+
242
+ <xsl:template match="*" mode="intermediate">
243
+ <xsl:apply-templates select="." mode="file-wrap">
244
+ <xsl:with-param name="content">
245
+ <xsl:apply-templates select="." mode="debug-location"/>
246
+ <section class="{local-name(.)}">
247
+ <xsl:apply-templates select="." mode="html-id-attribute"/>
248
+ <xsl:apply-templates select="." mode="section-heading">
249
+ <xsl:with-param name="heading-level" select="$chunk-heading-level"/>
250
+ </xsl:apply-templates>
251
+ <xsl:apply-templates select="." mode="author-byline"/>
252
+ <xsl:if test="self::frontmatter[not(titlepage)]">
253
+ <xsl:call-template name="frontmatter-title"/>
254
+ </xsl:if>
255
+ <!-- The division's own content, in place -->
256
+ <xsl:for-each select="*">
257
+ <xsl:variable name="structural">
258
+ <xsl:apply-templates select="." mode="is-structural"/>
259
+ </xsl:variable>
260
+ <xsl:if test="not($structural = 'true')">
261
+ <xsl:apply-templates select=".">
262
+ <xsl:with-param name="heading-level" select="$chunk-heading-level + 1"/>
263
+ </xsl:apply-templates>
264
+ </xsl:if>
265
+ </xsl:for-each>
266
+ <!-- Then the divisions inside it, as upstream's summary links -->
267
+ <nav class="summary-links">
268
+ <ul>
269
+ <xsl:for-each select="*">
270
+ <xsl:variable name="structural">
271
+ <xsl:apply-templates select="." mode="is-structural"/>
272
+ </xsl:variable>
273
+ <xsl:if test="$structural = 'true'">
274
+ <xsl:apply-templates select="." mode="summary-nav"/>
275
+ </xsl:if>
276
+ </xsl:for-each>
277
+ </ul>
278
+ </nav>
279
+ <xsl:apply-templates select="." mode="permalink"/>
280
+ </section>
281
+ </xsl:with-param>
282
+ </xsl:apply-templates>
283
+ </xsl:template>
284
+
229
285
  <!-- Show the print-preview button on printouts, but inert: the page it would -->
230
286
  <!-- reload with "?printpreview=<id>" does not exist for an in-memory render, -->
231
287
  <!-- and a host that resolves that query against its own URL sends the reader -->
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "source": {
3
3
  "repository": "PreTeXtBook/pretext",
4
- "ref": "master"
4
+ "ref": "ee0a7e135e3346f0b0c6192822d6942424cb4af0"
5
5
  },
6
- "refreshed": "2026-08-31T02:38:18.809Z"
6
+ "refreshed": "2026-10-01T06:28:22.049Z"
7
7
  }
@@ -154,7 +154,7 @@
154
154
  <!-- "top" figure-like is a captioned display that earns a number (a -->
155
155
  <!-- panel inside a captioned side-by-side earns a letter instead). -->
156
156
  <!ENTITY FUNDAMENTAL-BLOCK-FILTER "(&DEFINITION-FILTER;) or (&THEOREM-FILTER;) or (&AXIOM-FILTER;) or (&REMARK-FILTER;) or (&COMPUTATION-FILTER;) or (&EXAMPLE-FILTER;)">
157
- <!ENTITY TOP-FIGURE-FILTER "(&FIGURE-FILTER;) and not(parent::sidebyside/parent::figure or parent::sidebyside/parent::sbsgroup/parent::figure)">
157
+ <!ENTITY TOP-FIGURE-FILTER "(&FIGURE-FILTER;) and not(parent::sidebyside/parent::figure or parent::sidebyside/parent::sbsgroup/parent::figure or self::figure[parent::stack/parent::figure])">
158
158
 
159
159
  <!-- Panels of a "sidebyside", and content of a "stack" panel. The -->
160
160
  <!-- lists mirror the schema, plus grandfathered items the code still -->
@@ -166,6 +166,19 @@
166
166
  <!ENTITY SBSPANEL "p|pre|ol|ul|dl|program|console|poem|audio|video|interactive|slate|exercise|image|figure|table|listing|list|tabular|stack">
167
167
  <!ENTITY STACKABLE "tabular|image|p|pre|ol|ul|dl|audio|video|interactive|slate|program|console">
168
168
 
169
+ <!-- A panel of a "sidebyside" is a child of the "sidebyside", or a -->
170
+ <!-- child of a "stack" in the "sidebyside". The layout of the -->
171
+ <!-- "sidebyside" sizes its panels (and the content of a "figure" -->
172
+ <!-- panel). An object nested more deeply, such as an "image" in an -->
173
+ <!-- "exercise" panel or in a list item, is sized by its own attributes -->
174
+ <!-- relative to the available width where it sits. -->
175
+ <!ENTITY SBS-PANEL-FILTER "parent::sidebyside or parent::stack/parent::sidebyside">
176
+
177
+ <!-- An object sized by the layout of the "sidebyside": a panel, or the -->
178
+ <!-- content of a "figure" panel. Anything nested more deeply is sized -->
179
+ <!-- by its own attributes. -->
180
+ <!ENTITY SBS-LAYOUT-FILTER "(&SBS-PANEL-FILTER;) or parent::figure[&SBS-PANEL-FILTER;]">
181
+
169
182
  <!-- appendages of examples, exercises, tasks -->
170
183
  <!ENTITY SOLUTION-LIKE "hint|answer|solution">
171
184
  <!ENTITY SOLUTION-FILTER "self::hint or self::answer or self::solution">
@@ -189,7 +189,6 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
189
189
  <!-- Here we build the "standard" (classic) latex preamble, -->
190
190
  <!-- with some minor modifications suggested by the texstyle file -->
191
191
  <xsl:template match="texstyle/ptx-preamble">
192
- <xsl:call-template name="frontmatter-helpers"/>
193
192
  <xsl:call-template name="preamble-early"/>
194
193
  <xsl:call-template name="cleardoublepage"/>
195
194
  <xsl:call-template name="standard-packages"/>
@@ -208,6 +207,7 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
208
207
  <xsl:call-template name="latex-engine-support"/>
209
208
  <xsl:call-template name="font-support"/>
210
209
  <xsl:call-template name="math-packages"/>
210
+ <xsl:call-template name="text-symbols"/>
211
211
  <xsl:call-template name="pdfpages-package"/>
212
212
  <xsl:call-template name="semantic-macros"/>
213
213
  <xsl:call-template name="chapter-start-number"/>
@@ -756,8 +756,11 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
756
756
  </xsl:template>
757
757
 
758
758
 
759
+ <!-- A journal's bibliography is formatted by PreTeXt, not by BibTeX: -->
760
+ <!-- in the journal's CSL style, when references have been generated -->
761
+ <!-- and replaced during assembly, else in PreTeXt's own way. So the -->
762
+ <!-- texstyle file only says *where* the list belongs. -->
759
763
  <xsl:template match="texstyle/bibliography">
760
- <xsl:message>PTX:WARNING: Bibliographies are not implemented correctly yet.</xsl:message>
761
764
  <xsl:apply-templates select="$document-root/references|$document-root/backmatter/references"/>
762
765
  </xsl:template>
763
766
 
@@ -41,7 +41,7 @@ Current (partially) implemented language codes and contributors
41
41
  * bg-BG, Bulgarian (Bulgaria), Boyko Bantchev
42
42
  * ca-ES, Catalan (Spain), Jordi Saludes
43
43
  * cs-CZ, Czech (Czechia), Jiří Lebl
44
- * de-DE, German (Germany), Karl-Dieter Crisman
44
+ * de-DE, German (Germany), Karl-Dieter Crisman, Klaus Krtschil
45
45
  * es-ES, Spanish (Spain), Juan José Torrens
46
46
  * en-US, English (United States), Robert A. Beezer
47
47
  * fi-FI, Finnish (Finland), Lasse M. Manninen
@@ -144,10 +144,10 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
144
144
  <localization string-id='fragment'>Fragment</localization>
145
145
  <!-- Parts of an exercise and its solution -->
146
146
  <!-- See the en-US file for a detailed explanation of the words for exercises -->
147
- <localization string-id='divisionalexercise'>Oefening</localization>
148
- <localization string-id='inlineexercise'>Kontrolepunt</localization>
149
- <localization string-id='worksheetexercise'>Werkbladoefening</localization>
150
- <localization string-id='readingquestion'>Leesvraag</localization>
147
+ <localization string-id='exercise-divisional'>Oefening</localization>
148
+ <localization string-id='exercise-inline'>Kontrolepunt</localization>
149
+ <localization string-id='exercise-worksheet'>Werkbladoefening</localization>
150
+ <localization string-id='exercise-reading'>Leesvraag</localization>
151
151
  <localization string-id='webwork'>WeBWorK</localization>
152
152
  <localization string-id='hint'>Wenk</localization>
153
153
  <localization string-id='answer'>Antwoord</localization>
@@ -236,7 +236,6 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
236
236
  <localization string-id='permalink-tooltip'>Copy heading and permalink for</localization>
237
237
  <!-- <localization string-id='calculator'>Calculator</localization> -->
238
238
  <localization string-id='evaluate'>Evalueer</localization>
239
- <!-- <localization string-id='code'>Code</localization> -->
240
239
  <!-- <localization string-id='instructions'>Instructions</localization> -->
241
240
  <!-- <localization string-id='correct'>Correct</localization> -->
242
241
  <!-- <localization string-id='incorrect'>Incorrect</localization> -->
@@ -249,7 +248,7 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
249
248
  <!-- <localization string-id='reset'>Reset</localization> -->
250
249
  <!-- <localization string-id='array'>array</localization> -->
251
250
  <!-- <localization string-id="papersize">Paper size</localization> -->
252
- <!-- <localization string-id="printing-options">Additional printing options</localization> -->
251
+ <!-- <localization string-id="printing-options">Printing options</localization> -->
253
252
  <!-- <localization string-id="hide-hints">Hide hints</localization> -->
254
253
  <!-- <localization string-id="hide-answers">Hide answers</localization> -->
255
254
  <!-- <localization string-id="hide-solutions">Hide solutions</localization> -->
@@ -144,10 +144,10 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
144
144
  <!-- <localization string-id='fragment'>Fragment</localization> -->
145
145
  <!-- Parts of an exercise and its solution -->
146
146
  <!-- See the en-US file for a detailed explanation of the words for exercises -->
147
- <localization string-id='divisionalexercise'>Упражнение</localization>
148
- <localization string-id='inlineexercise'>Checkpoint</localization>
149
- <localization string-id='worksheetexercise'>Worksheet Exercise</localization>
150
- <localization string-id='readingquestion'>Reading Question</localization>
147
+ <localization string-id='exercise-divisional'>Упражнение</localization>
148
+ <localization string-id='exercise-inline'>Checkpoint</localization>
149
+ <localization string-id='exercise-worksheet'>Worksheet Exercise</localization>
150
+ <localization string-id='exercise-reading'>Reading Question</localization>
151
151
  <localization string-id='webwork'>WeBWorK</localization>
152
152
  <localization string-id='hint'>Подсказка</localization>
153
153
  <localization string-id='answer'>Отговор</localization>
@@ -236,7 +236,6 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
236
236
  <localization string-id='permalink-tooltip'>Copy heading and permalink for</localization>
237
237
  <!-- <localization string-id='calculator'>Calculator</localization> -->
238
238
  <localization string-id='evaluate'>Evaluate</localization>
239
- <!-- <localization string-id='code'>Code</localization> -->
240
239
  <!-- <localization string-id='instructions'>Instructions</localization> -->
241
240
  <!-- <localization string-id='correct'>Correct</localization> -->
242
241
  <!-- <localization string-id='incorrect'>Incorrect</localization> -->
@@ -249,7 +248,7 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
249
248
  <!-- <localization string-id='reset'>Reset</localization> -->
250
249
  <!-- <localization string-id='array'>array</localization> -->
251
250
  <!-- <localization string-id="papersize">Paper size</localization> -->
252
- <!-- <localization string-id="printing-options">Additional printing options</localization> -->
251
+ <!-- <localization string-id="printing-options">Printing options</localization> -->
253
252
  <!-- <localization string-id="hide-hints">Hide hints</localization> -->
254
253
  <!-- <localization string-id="hide-answers">Hide answers</localization> -->
255
254
  <!-- <localization string-id="hide-solutions">Hide solutions</localization> -->
@@ -147,12 +147,12 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
147
147
  <localization string-id='fragment'>Fragment</localization>
148
148
  <!-- Parts of an exercise and its solution -->
149
149
  <!-- See the en-US file for a detailed explanation of the words for exercises -->
150
- <localization string-id='divisionalexercise'>Exercici</localization>
150
+ <localization string-id='exercise-divisional'>Exercici</localization>
151
151
  <!-- Translation needed for Spain Spanish -->
152
152
  <!-- See en-US file for distinctions here, do not repeat previous translation -->
153
- <localization string-id='inlineexercise'>Punt de control</localization>
154
- <!-- <localization string-id='worksheetexercise'>Worksheet Exercise</localization> -->
155
- <!-- <localization string-id='readingquestion'>Reading Question</localization> -->
153
+ <localization string-id='exercise-inline'>Punt de control</localization>
154
+ <!-- <localization string-id='exercise-worksheet'>Worksheet Exercise</localization> -->
155
+ <!-- <localization string-id='exercise-reading'>Reading Question</localization> -->
156
156
  <localization string-id='webwork'>WeBWorK</localization>
157
157
  <localization string-id='hint'>Pista</localization>
158
158
  <localization string-id='answer'>Resposta</localization>
@@ -245,7 +245,6 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
245
245
  <!-- This needs to be defined to *something* (English) -->
246
246
  <!-- Translate at first opportunity, please -->
247
247
  <localization string-id='evaluate'>Avaluar</localization>
248
- <!-- <localization string-id='code'>Code</localization> -->
249
248
  <!-- <localization string-id='instructions'>Instructions</localization> -->
250
249
  <!-- <localization string-id='correct'>Correct</localization> -->
251
250
  <!-- <localization string-id='incorrect'>Incorrect</localization> -->
@@ -258,7 +257,7 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
258
257
  <!-- <localization string-id='reset'>Reset</localization> -->
259
258
  <!-- <localization string-id='array'>array</localization> -->
260
259
  <!-- <localization string-id="papersize">Paper size</localization> -->
261
- <!-- <localization string-id="printing-options">Additional printing options</localization> -->
260
+ <!-- <localization string-id="printing-options">Printing options</localization> -->
262
261
  <!-- <localization string-id="hide-hints">Hide hints</localization> -->
263
262
  <!-- <localization string-id="hide-answers">Hide answers</localization> -->
264
263
  <!-- <localization string-id="hide-solutions">Hide solutions</localization> -->
@@ -144,12 +144,12 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
144
144
  <localization string-id='fragment'>Fragment</localization>
145
145
  <!-- Parts of an exercise and its solution -->
146
146
  <!-- See the en-US file for a detailed explanation of the words for exercises -->
147
- <localization string-id='divisionalexercise'>Cvičení</localization>
147
+ <localization string-id='exercise-divisional'>Cvičení</localization>
148
148
  <!-- Translation needed for Czech Czech -->
149
149
  <!-- See en-US file for distinctions here, do not repeat previous translation -->
150
- <localization string-id='inlineexercise'>Zkouška</localization>
151
- <localization string-id='worksheetexercise'>Cvičení pracovního listu</localization>
152
- <localization string-id='readingquestion'>Otázka ze čtení</localization>
150
+ <localization string-id='exercise-inline'>Zkouška</localization>
151
+ <localization string-id='exercise-worksheet'>Cvičení pracovního listu</localization>
152
+ <localization string-id='exercise-reading'>Otázka ze čtení</localization>
153
153
  <localization string-id='webwork'>WeBWorK</localization>
154
154
  <localization string-id='hint'>Nápověda</localization>
155
155
  <localization string-id='answer'>Odpověď</localization>
@@ -240,7 +240,6 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
240
240
  <!-- This needs to be defined to *something* (English) -->
241
241
  <!-- Translate at first opportunity, please -->
242
242
  <localization string-id='evaluate'>Ohodnotit</localization>
243
- <!-- <localization string-id='code'>Code</localization> -->
244
243
  <localization string-id='instructions'>Instrukce</localization>
245
244
  <localization string-id='correct'>Správně</localization>
246
245
  <localization string-id='incorrect'>Nesprávně</localization>
@@ -253,7 +252,7 @@ along with PreTeXt. If not, see <http://www.gnu.org/licenses/>.
253
252
  <localization string-id='reset'>Reset</localization>
254
253
  <localization string-id='array'>pole</localization>
255
254
  <localization string-id="papersize">Velikost papíru</localization>
256
- <localization string-id="printing-options">Další možnosti tisku</localization>
255
+ <localization string-id="printing-options">Možnosti tisku</localization>
257
256
  <localization string-id="hide-hints">Zakrýt nápovědu</localization>
258
257
  <localization string-id="hide-answers">Zakrýt odpovědi</localization>
259
258
  <localization string-id="hide-solutions">Zakrýt řešení</localization>