@publisle/template-sdk 0.1.1 → 0.1.3

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.
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  Publisle Research profile package.
4
4
 
5
5
  Requires Node.js 24 or later. Framework adapters also require their declared peer dependencies.
6
- This package is part of Publisle, independently versioned at `0.1.1` and published under the npm `beta` tag.
6
+ This package is part of Publisle, independently versioned at `0.1.3` and published under the npm `latest` tag.
7
7
  Frozen contract version integers are independent of npm package versions.
8
8
 
9
9
  - [Core standard](https://github.com/VoidReg/publisle/blob/main/docs/standards/README.md)
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAgC,qBAAqB;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,mBAAmB;AAI9E,MAAM,WAAW,YAAY;IAC3B,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACnC,QAAQ,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAC9C,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAC1C,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAClB,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,KAC5B,MAAM,CAAC;IACZ,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,CAChB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,KAC5B,MAAM,CAAC;IACZ,QAAQ,CAAC,WAAW,CAAC,EAAE,CACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,KAC5B,MAAM,CAAC;CACb;AACD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,YAAY,GACpB,aAAa,CAuVf"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAgC,qBAAqB;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,mBAAmB;AAI9E,MAAM,WAAW,YAAY;IAC3B,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IACnC,QAAQ,CAAC,aAAa,CAAC,EAAE,WAAW,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAC9C,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAC1C,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAClB,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,KAC5B,MAAM,CAAC;IACZ,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5C,QAAQ,CAAC,MAAM,CAAC,EAAE,CAChB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,KAC5B,MAAM,CAAC;IACZ,QAAQ,CAAC,WAAW,CAAC,EAAE,CACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,KAC5B,MAAM,CAAC;CACb;AACD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,YAAY,GACpB,aAAa,CA0Xf"}
package/dist/render.js CHANGED
@@ -20,6 +20,18 @@ export function renderLatexArticle(article, context, profile) {
20
20
  cjk: context.fonts?.["cjk"] ?? "FandolSong",
21
21
  math: context.fonts?.["math"] ?? "TeX Gyre Termes Math",
22
22
  };
23
+ // Loading an unused CJK family materializes large font tables in LuaTeX.
24
+ // Include generated citation text as well as authored content in this check.
25
+ const scriptText = JSON.stringify([
26
+ article,
27
+ context.bibliography,
28
+ context.citations,
29
+ ]);
30
+ const needsColor = /\\(?:textcolor|color|colorbox|fcolorbox)\b/u.test(scriptText);
31
+ const needsCjk = /[\p{Script=Han}\u3000-\u303f\uff00-\uffef]/u.test(scriptText);
32
+ const needsArabic = profile.direction === "rtl" ||
33
+ /\p{Script=Arabic}/u.test(scriptText) ||
34
+ scriptText.includes('"direction":"rtl"');
23
35
  for (const font of Object.values(fonts))
24
36
  if (!/^[\p{L}\p{N} .-]+$/u.test(font))
25
37
  throw new Error("Font names must contain letters, digits, spaces, dots or hyphens.");
@@ -143,12 +155,20 @@ export function renderLatexArticle(article, context, profile) {
143
155
  .join("");
144
156
  const abstract = [];
145
157
  const body = [];
158
+ const firstHeadingLevel = Math.min(...article.blocks.flatMap((block) => block.kind === "heading" && !block.abstract ? [block.level] : []));
146
159
  for (const block of article.blocks) {
147
- const target = "abstract" in block && block.abstract ? abstract : body;
160
+ // Floating environments never join the abstract: a [!t] float inside the
161
+ // abstract would be hoisted above it on the first page.
162
+ const target = "abstract" in block &&
163
+ block.abstract &&
164
+ block.kind !== "figure" &&
165
+ block.kind !== "table"
166
+ ? abstract
167
+ : body;
148
168
  const label = block.label ? `\\label{${latexKey(block.label)}}` : "";
149
169
  if (block.kind === "heading") {
150
170
  if (!block.abstract)
151
- target.push(`\\${block.level <= 1 ? "section" : block.level === 2 ? "subsection" : "subsubsection"}{${take(block.inlines)}}${label}`);
171
+ target.push(`\\${block.level <= firstHeadingLevel ? "section" : block.level === firstHeadingLevel + 1 ? "subsection" : "subsubsection"}{${take(block.inlines)}}${label}`);
152
172
  }
153
173
  else if (block.kind === "paragraph")
154
174
  target.push(take(block.inlines));
@@ -168,7 +188,7 @@ export function renderLatexArticle(article, context, profile) {
168
188
  throw new Error(`Unsupported figure asset (use PDF, PNG or JPEG): ${block.src}`);
169
189
  const destination = `assets/figure-${String(assets.length + 1)}.${extension}`;
170
190
  assets.push({ source: block.src, destination });
171
- target.push(`\\begin{figure}[!t]\n\\centering\n\\includegraphics[width=\\columnwidth${pdfStandard ? `,alt={${latexText(block.alt)}}` : ""}]{${destination}}\n\\caption{${take(block.caption)}}${label}\n\\end{figure}`);
191
+ target.push(`\\begin{figure}[!tb]\n\\centering\n\\includegraphics[width=\\columnwidth${pdfStandard ? `,alt={${latexText(block.alt)}}` : ""}]{${destination}}\n\\caption{${take(block.caption)}}${label}\n\\end{figure}`);
172
192
  }
173
193
  else if (block.kind === "table") {
174
194
  const width = block.rows[0]?.length ?? 0;
@@ -186,7 +206,7 @@ export function renderLatexArticle(article, context, profile) {
186
206
  : take(cell))
187
207
  .join(" & ") + " \\\\")
188
208
  .join("\n");
189
- target.push(`\\begin{table}[!t]\n\\caption{${take(block.caption ?? [])}}${label}\n\\centering\n${pdfStandard ? `\\tagpdfsetup{table/header-rows={${Array.from({ length: block.headerRows ?? 0 }, (_, index) => String(index + 1)).join(",")}}}\n` : ""}\\begin{tabularx}{\\columnwidth}{${"X".repeat(width)}}\n\\hline\n${rows}\n\\hline\n\\end{tabularx}\n\\end{table}`);
209
+ target.push(`\\begin{table}[!tb]\n\\caption{${take(block.caption ?? [])}}${label}\n\\centering\n${pdfStandard ? `\\tagpdfsetup{table/header-rows={${Array.from({ length: block.headerRows ?? 0 }, (_, index) => String(index + 1)).join(",")}}}\n` : ""}\\begin{tabularx}{\\columnwidth}{${"X".repeat(width)}}\n\\hline\n${rows}\n\\hline\n\\end{tabularx}\n\\end{table}`);
190
210
  }
191
211
  else if (block.kind === "list")
192
212
  target.push(`\\begin{${block.ordered ? "enumerate" : "itemize"}}\n${block.items.map((item) => `\\item ${take(item)}`).join("\n")}\n\\end{${block.ordered ? "enumerate" : "itemize"}}`);
@@ -205,10 +225,10 @@ export function renderLatexArticle(article, context, profile) {
205
225
  \\setmainfont{${fonts.latin}}
206
226
  \\usepackage{unicode-math}
207
227
  \\setmathfont{${fonts.math}}
208
- \\usepackage[bidi=basic]{babel}
209
- ${profile.direction === "rtl" ? "\\babelprovide[import]{english}\n\\babelprovide[import,main]{arabic}" : "\\babelprovide[import,main]{english}\n\\babelprovide[import]{arabic}"}
210
- \\babelfont[arabic]{rm}{${fonts.arabic}}
211
- \\newfontfamily\\cjkfont{${fonts.cjk}}
228
+ \\usepackage${needsArabic ? "[bidi=basic]" : "[english]"}{babel}
229
+ ${needsArabic ? (profile.direction === "rtl" ? "\\babelprovide[import]{english}\n\\babelprovide[import,main]{arabic}" : "\\babelprovide[import,main]{english}\n\\babelprovide[import]{arabic}") : ""}
230
+ ${needsArabic ? `\\babelfont[arabic]{rm}{${fonts.arabic}}` : ""}
231
+ ${needsCjk ? `\\newfontfamily\\cjkfont{${fonts.cjk}}` : ""}
212
232
  `
213
233
  : "\\usepackage[utf8]{inputenc}\n\\usepackage[T1]{fontenc}\n";
214
234
  const authors = article.authors.map((name) => text(name)).join(", ");
@@ -237,8 +257,11 @@ ${profile.direction === "rtl" ? "\\babelprovide[import]{english}\n\\babelprovide
237
257
  .map(([key, value]) => [key, text(String(value))])),
238
258
  };
239
259
  });
240
- const manuscript = `${pdfStandard ? `\\DocumentMetadata{lang=${language},pdfstandard=${pdfStandard},${pdfStandard === "ua-1" ? "pdfversion=1.7," : ""}tagging=on,tagging-setup={math/setup={mathml-AF${pdfStandard === "ua-2" ? ",mathml-SE" : ""}}}}\n` : ""}\\documentclass${profile.classOptions ? `[${profile.classOptions}]` : ""}{${profile.className}}
241
- ${unicodePreamble}\\usepackage{amsmath,${engine === "pdflatex" && profile.pdfSymbols === true ? "amssymb," : ""}graphicx,tabularx${profile.numericCitationPackage ? ",cite" : ""}}
260
+ const manuscript = `${needsColor ? "\\PassOptionsToPackage{dvipsnames,svgnames}{xcolor}\n" : ""}${pdfStandard ? `\\DocumentMetadata{lang=${language},pdfstandard=${pdfStandard},${pdfStandard === "ua-1" ? "pdfversion=1.7," : ""}tagging=on,tagging-setup={math/setup={mathml-AF${pdfStandard === "ua-2" ? ",mathml-SE" : ""}}}}\n` : ""}\\documentclass${profile.classOptions ? `[${profile.classOptions}]` : ""}{${profile.className}}
261
+ ${unicodePreamble}${needsColor ? "\\usepackage{xcolor}\n" : ""}\\usepackage{amsmath,${engine === "pdflatex" && profile.pdfSymbols === true ? "amssymb," : ""}graphicx,tabularx${profile.numericCitationPackage ? ",cite" : ""}}
262
+ % flafter keeps floats at or after their source position, so a figure can
263
+ % never be hoisted above the abstract region on the first page.
264
+ \\usepackage{flafter}
242
265
  \\usepackage[normalem]{ulem}
243
266
  \\usepackage{hyperref}
244
267
  \\hypersetup{hidelinks}
@@ -246,10 +269,10 @@ ${unicodePreamble}\\usepackage{amsmath,${engine === "pdflatex" && profile.pdfSym
246
269
  ${profile.author ? profile.author(article, text) : `\\title{${text(article.title ?? "Untitled")}}\n\\author{${authors}${affiliations}}`}
247
270
  ${profile.preamble ?? ""}
248
271
  \\begin{document}
249
- ${profile.frontmatter ? profile.frontmatter(abstract.join("\n\n"), article, text) : `\\maketitle\n\\begin{abstract}\n${abstract.join("\n\n")}\n\\end{abstract}`}
272
+ ${profile.frontmatter ? profile.frontmatter(abstract.join("\n\n"), article, text) : `\\maketitle${abstract.join("\n\n").trim() ? `\n\\begin{abstract}\n${abstract.join("\n\n")}\n\\end{abstract}` : ""}`}
250
273
  ${profile.keywords?.(article.subjects ?? [], text) ?? ""}
251
274
  ${body.join("\n\n")}
252
- ${profile.bibliographyStyle ? `${profile.automaticBibliographyStyle ? "" : `\\bibliographystyle{${profile.bibliographyStyle}}\n`}\\bibliography{references}` : `\\section*{${profile.direction === "rtl" ? text("المراجع") : "References"}}\n${context.bibliography.map((item) => text(item.text)).join("\n\n")}`}
275
+ ${profile.bibliographyStyle ? (context.bibliography.length ? `${profile.automaticBibliographyStyle ? "" : `\\bibliographystyle{${profile.bibliographyStyle}}\n`}\\bibliography{references}` : "") : `\\section*{${profile.direction === "rtl" ? text("المراجع") : "References"}}\n${context.bibliography.map((item) => text(item.text)).join("\n\n")}`}
253
276
  \\end{document}
254
277
  `;
255
278
  return {
@@ -260,6 +283,8 @@ ${profile.bibliographyStyle ? `${profile.automaticBibliographyStyle ? "" : `\\bi
260
283
  ...(pdfStandard ? { pdfStandard } : {}),
261
284
  requirements: [
262
285
  "amsmath.sty",
286
+ ...(needsColor ? ["xcolor.sty"] : []),
287
+ "flafter.sty",
263
288
  "graphicx.sty",
264
289
  "tabularx.sty",
265
290
  "ulem.sty",
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AA+BlD,MAAM,UAAU,kBAAkB,CAChC,OAAgB,EAChB,OAAwB,EACxB,OAAqB;IAErB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,aAAa,IAAI,UAAU,CAAC;IACrE,MAAM,SAAS,GACb,OAAO,CAAC,KAAK;QACb,CAAC,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;YACnD,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;YACvB,CAAC,CAAC,MAAM,CAAC,CAAC;IACd,IAAI,SAAS,KAAK,KAAK,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,MAAM;QACrE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,MAAM,WAAW,GACf,OAAO,CAAC,OAAO,IAAI,MAAM,KAAK,UAAU,IAAI,SAAS,KAAK,KAAK;QAC7D,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,QAAQ,GACZ,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAClE,IAAI,WAAW,IAAI,CAAC,wCAAwC,CAAC,IAAI,CAAC,QAAQ,CAAC;QACzE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG;QACZ,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,iBAAiB;QACpD,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,IAAI,qBAAqB;QAC1D,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,IAAI,YAAY;QAC3C,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,sBAAsB;KACxD,CAAC;IACF,yEAAyE;IACzE,6EAA6E;IAC7E,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,OAAO;QACP,OAAO,CAAC,YAAY;QACpB,OAAO,CAAC,SAAS;KAClB,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,6CAA6C,CAAC,IAAI,CACnE,UAAU,CACX,CAAC;IACF,MAAM,QAAQ,GAAG,6CAA6C,CAAC,IAAI,CACjE,UAAU,CACX,CAAC;IACF,MAAM,WAAW,GACf,OAAO,CAAC,SAAS,KAAK,KAAK;QAC3B,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC;QACrC,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QACrC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;IACN,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,SAA4B,EAAU,EAAE;QACnE,IAAI,MAAM,KAAK,UAAU,IAAI,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC;YAChE,MAAM,IAAI,KAAK,CACb,yFAAyF,CAC1F,CAAC;QACJ,4EAA4E;QAC5E,MAAM,OAAO,GAAG,KAAK;aAClB,KAAK,CACJ,kJAAkJ,CACnJ;aACA,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACX,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAC5B,IACE,MAAM,KAAK,UAAU;gBACrB,wCAAwC,CAAC,IAAI,CAAC,GAAG,CAAC;gBAElD,OAAO,6BAA6B,IAAI,GAAG,CAAC;YAC9C,IACE,MAAM,KAAK,UAAU;gBACrB,6CAA6C,CAAC,IAAI,CAAC,GAAG,CAAC;gBAEvD,OAAO,cAAc,IAAI,GAAG,CAAC;YAC/B,MAAM,OAAO,GAAqC;gBAChD,CAAC,EAAE,SAAS;gBACZ,CAAC,EAAE,QAAQ;gBACX,CAAC,EAAE,SAAS;gBACZ,CAAC,EAAE,SAAS;gBACZ,CAAC,EAAE,MAAM;gBACT,GAAG,EAAE,OAAO;gBACZ,GAAG,EAAE,SAAS;gBACd,GAAG,EAAE,OAAO;gBACZ,GAAG,EAAE,OAAO;gBACZ,GAAG,EAAE,MAAM;gBACX,GAAG,EAAE,MAAM;gBACX,GAAG,EAAE,OAAO;gBACZ,GAAG,EAAE,QAAQ;aACd,CAAC;YACF,OAAO,IAAI,CAAC,OAAO,CACjB,iBAAiB,EACjB,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,CACjD,CAAC;QACJ,CAAC,CAAC;aACD,IAAI,CAAC,EAAE,CAAC,CAAC;QACZ,OAAO,SAAS,KAAK,KAAK,IAAI,MAAM,KAAK,UAAU;YACjD,CAAC,CAAC,6BAA6B,OAAO,GAAG;YACzC,CAAC,CAAC,OAAO,CAAC;IACd,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAiD,CAAC;IAC3E,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAClD,MAAM,MAAM,GAA8C,EAAE,CAAC;IAC7D,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,oBAAoB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YACrD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC9B,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YACrD,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,MAAM,IAAI,GAAG,CAAC,OAAiC,EAAU,EAAE,CACzD,OAAO;SACJ,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACd,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,GAAG,CAAC;QACxC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,MAAM,MAAM,CAAC,KAAK,KAAK,CAAC;QAC3D,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,SAAS,GACb,OAAO,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC;gBACtC,OAAO,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;gBAClC,EAAE,CAAC;YACL,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;gBAC/B,IAAI,OAAO,CAAC,YAAY,KAAK,MAAM,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;oBAC9D,YAAY,EAAE,CAAC;oBACf,OAAO,cAAc,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;gBAC1C,CAAC;gBACD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;YACzB,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAC1C,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CACrC,CAAC;YACF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;gBACrB,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;YACJ,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC;gBAC1D,MAAM,IAAI,KAAK,CACb,qEAAqE,CACtE,CAAC;YACJ,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC5B,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,eAAe,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,IAAI,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;QAChR,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;YACxB,OAAO,UAAU,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;QACnE,IAAI,MAAM,CAAC,SAAS,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;gBACtC,MAAM,IAAI,KAAK,CACb,+BAA+B,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,CACzD,CAAC;YACJ,OAAO,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,SAAS,CAAC,MAAM;gBAC7C,CAAC,CAAC,SAAS,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG;gBAC/C,CAAC,CAAC,cAAc,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;QAChF,CAAC;QACD,IAAI,MAAM,CAAC,SAAS,EAAE,IAAI,KAAK,UAAU,EAAE,CAAC;YAC1C,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;YACnC,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrC,IAAI,CAAC,UAAU;gBAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;YAC/D,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;YACtE,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACvC,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO,kBAAkB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;YACrE,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;YACxC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACpB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7C,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACvB,OAAO,cAAc,KAAK,GAAG,CAAC;QAChC,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,OAAO,GACX,MAAM,CAAC,IAAI,KAAK,QAAQ;YACtB,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU;gBAC1B,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM;oBACtB,CAAC,CAAC,QAAQ;oBACV,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ;wBACxB,CAAC,CAAC,MAAM;wBACR,CAAC,CAAC,SAAS,CAAC;QACtB,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IACpD,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;IACd,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAChC,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAClC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CACjE,CACF,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnC,yEAAyE;QACzE,wDAAwD;QACxD,MAAM,MAAM,GACV,UAAU,IAAI,KAAK;YACnB,KAAK,CAAC,QAAQ;YACd,KAAK,CAAC,IAAI,KAAK,QAAQ;YACvB,KAAK,CAAC,IAAI,KAAK,OAAO;YACpB,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,IAAI,CAAC;QACX,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,QAAQ;gBACjB,MAAM,CAAC,IAAI,CACT,KAAK,KAAK,CAAC,KAAK,IAAI,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,EAAE,CAC7J,CAAC;QACN,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;aACnE,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAC5B,MAAM,CAAC,IAAI,CACT,KAAK,CAAC,OAAO;gBACX,CAAC,CAAC,oBAAoB,KAAK,CAAC,KAAK,GAAG,KAAK,iBAAiB;gBAC1D,CAAC,CAAC,MAAM,KAAK,CAAC,KAAK,KAAK,CAC3B,CAAC;aACC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACjC,IAAI,WAAW,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE;gBAClC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAClE,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;gBACvC,MAAM,IAAI,KAAK,CAAC,yCAAyC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YACxE,MAAM,SAAS,GAAG,sBAAsB;iBACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBACrB,EAAE,WAAW,EAAE,CAAC;YAClB,IAAI,CAAC,SAAS;gBACZ,MAAM,IAAI,KAAK,CACb,oDAAoD,KAAK,CAAC,GAAG,EAAE,CAChE,CAAC;YACJ,MAAM,WAAW,GAAG,iBAAiB,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC;YAC9E,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;YAChD,MAAM,CAAC,IAAI,CACT,2EAA2E,WAAW,CAAC,CAAC,CAAC,SAAS,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,WAAW,gBAAgB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,iBAAiB,CAC5M,CAAC;QACJ,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAClC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;YACzC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC;gBAC/D,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;YACtE,IACE,WAAW;gBACX,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC;oBAClC,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC;oBAC3B,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;gBAE9C,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;YACjE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI;iBACpB,GAAG,CACF,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CACb,GAAG;iBACA,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ,KAAK,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC;gBAC7B,CAAC,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,GAAG;gBAC3B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACf;iBACA,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,CAC3B;iBACA,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,MAAM,CAAC,IAAI,CACT,kCAAkC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,IAAI,KAAK,kBAAkB,WAAW,CAAC,CAAC,CAAC,oCAAoC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,oCAAoC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,IAAI,0CAA0C,CAC9V,CAAC;QACJ,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAC9B,MAAM,CAAC,IAAI,CACT,WAAW,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,GAAG,CAC1K,CAAC;aACC,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;YAC7B,MAAM,CAAC,IAAI,CACT,iBAAiB,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CACvE,CAAC;aACC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC/B,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBACzC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAC1D,IAAI,MAAM,KAAK,UAAU,IAAI,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;gBACtE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,sBAAsB,KAAK,CAAC,KAAK,mBAAmB,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IACD,MAAM,eAAe,GACnB,MAAM,KAAK,UAAU;QACnB,CAAC,CAAC;gBACQ,KAAK,CAAC,KAAK;;gBAEX,KAAK,CAAC,IAAI;cACZ,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW;EACtD,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,sEAAsE,CAAC,CAAC,CAAC,sEAAsE,CAAC,CAAC,CAAC,CAAC,EAAE;EAClM,WAAW,CAAC,CAAC,CAAC,2BAA2B,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE;EAC7D,QAAQ,CAAC,CAAC,CAAC,4BAA4B,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE;CACzD;QACK,CAAC,CAAC,2DAA2D,CAAC;IAClE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrE,MAAM,YAAY,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;SAC/C,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC;SACtC,GAAG,CACF,CAAC,MAAM,EAAE,EAAE,CACT,YAAY,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC,IAAI,CAC9E;SACA,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,+EAA+E;IAC/E,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5C,MAAM,MAAM,GAAkB;YAC5B,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACrD,CAAC;QACF,OAAO;YACL,GAAG,MAAM;YACT,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;YACzD,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM;gBACrE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBAC5B,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,MAAM,CAAC,WAAW,CACnB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;iBAClB,MAAM,CACL,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CACf,GAAG,KAAK,IAAI;gBACZ,GAAG,KAAK,SAAS;gBACjB,GAAG,KAAK,MAAM;gBACd,GAAG,KAAK,KAAK;gBACb,OAAO,KAAK,KAAK,QAAQ,CAC5B;iBACA,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CACrD;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,uDAAuD,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,2BAA2B,QAAQ,gBAAgB,WAAW,IAAI,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,kDAAkD,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,kBAAkB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,CAAC,SAAS;EACva,eAAe,GAAG,UAAU,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,wBAAwB,MAAM,KAAK,UAAU,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,oBAAoB,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;;;;;;;yBAOpM,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,gBAAgB,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EAClH,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,eAAe,OAAO,GAAG,YAAY,GAAG;EACrI,OAAO,CAAC,QAAQ,IAAI,EAAE;;EAEtB,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,wBAAwB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,EAAE;EACtM,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE;EACtD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;EACjB,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB,OAAO,CAAC,iBAAiB,KAAK,4BAA4B,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,OAAO,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,MAAM,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;;CAErV,CAAC;IACA,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,EAAE;QACpB,eAAe,EAAE,OAAO,CAAC,OAAO;QAChC,MAAM,EAAE,OAAO;QACf,MAAM;QACN,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,YAAY,EAAE;YACZ,aAAa;YACb,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACrC,aAAa;YACb,cAAc;YACd,cAAc;YACd,UAAU;YACV,cAAc;YACd,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACpD,GAAG,CAAC,MAAM,KAAK,UAAU;gBACvB,CAAC,CAAC,CAAC,cAAc,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,WAAW,CAAC;gBACxE,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,OAAO,CAAC,SAAS,MAAM;YAC1B,GAAG,CAAC,OAAO,CAAC,iBAAiB;gBAC3B,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,iBAAiB,MAAM,CAAC;gBACtC,CAAC,CAAC,EAAE,CAAC;SACR;QACD,KAAK,EAAE,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QACzC,KAAK,EAAE;YACL,gBAAgB,EAAE,UAAU;YAC5B,gBAAgB,EAAE,QAAQ,CAAC,OAAO,CAAC;YACnC,UAAU,EAAE,kCAAkC,MAAM,SAAS,OAAO,CAAC,SAAS,IAAI,WAAW,CAAC,CAAC,CAAC,+CAA+C,WAAW,qDAAqD,CAAC,CAAC,CAAC,EAAE,qBAAqB,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,kFAAkF;SACtW;QACD,MAAM;QACN,WAAW,EAAE;YACX,GAAG,OAAO,CAAC,MAAM;YACjB,GAAG,CAAC,WAAW;gBACb,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC;oBACE;wBACE,IAAI,EAAE,oBAAoB;wBAC1B,OAAO,EACL,SAAS,KAAK,KAAK;4BACjB,CAAC,CAAC,qFAAqF;4BACvF,CAAC,CAAC,qCAAqC,OAAO,CAAC,EAAE,SAAS,MAAM,oCAAoC;qBACzG;iBACF,CAAC;SACP;KACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,14 @@
1
1
  {
2
2
  "name": "@publisle/template-sdk",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "license": "MIT",
5
+ "keywords": [
6
+ "latex",
7
+ "publisle",
8
+ "template-sdk",
9
+ "pdf-ua",
10
+ "publishing"
11
+ ],
5
12
  "type": "module",
6
13
  "sideEffects": false,
7
14
  "exports": {
@@ -12,7 +19,7 @@
12
19
  }
13
20
  },
14
21
  "dependencies": {
15
- "@publisle/schema": "^0.1.0"
22
+ "@publisle/schema": "^0.1.1"
16
23
  },
17
24
  "publishConfig": {
18
25
  "access": "public"
package/src/render.ts CHANGED
@@ -59,6 +59,23 @@ export function renderLatexArticle(
59
59
  cjk: context.fonts?.["cjk"] ?? "FandolSong",
60
60
  math: context.fonts?.["math"] ?? "TeX Gyre Termes Math",
61
61
  };
62
+ // Loading an unused CJK family materializes large font tables in LuaTeX.
63
+ // Include generated citation text as well as authored content in this check.
64
+ const scriptText = JSON.stringify([
65
+ article,
66
+ context.bibliography,
67
+ context.citations,
68
+ ]);
69
+ const needsColor = /\\(?:textcolor|color|colorbox|fcolorbox)\b/u.test(
70
+ scriptText,
71
+ );
72
+ const needsCjk = /[\p{Script=Han}\u3000-\u303f\uff00-\uffef]/u.test(
73
+ scriptText,
74
+ );
75
+ const needsArabic =
76
+ profile.direction === "rtl" ||
77
+ /\p{Script=Arabic}/u.test(scriptText) ||
78
+ scriptText.includes('"direction":"rtl"');
62
79
  for (const font of Object.values(fonts))
63
80
  if (!/^[\p{L}\p{N} .-]+$/u.test(font))
64
81
  throw new Error(
@@ -201,13 +218,26 @@ export function renderLatexArticle(
201
218
  .join("");
202
219
  const abstract: string[] = [];
203
220
  const body: string[] = [];
221
+ const firstHeadingLevel = Math.min(
222
+ ...article.blocks.flatMap((block) =>
223
+ block.kind === "heading" && !block.abstract ? [block.level] : [],
224
+ ),
225
+ );
204
226
  for (const block of article.blocks) {
205
- const target = "abstract" in block && block.abstract ? abstract : body;
227
+ // Floating environments never join the abstract: a [!t] float inside the
228
+ // abstract would be hoisted above it on the first page.
229
+ const target =
230
+ "abstract" in block &&
231
+ block.abstract &&
232
+ block.kind !== "figure" &&
233
+ block.kind !== "table"
234
+ ? abstract
235
+ : body;
206
236
  const label = block.label ? `\\label{${latexKey(block.label)}}` : "";
207
237
  if (block.kind === "heading") {
208
238
  if (!block.abstract)
209
239
  target.push(
210
- `\\${block.level <= 1 ? "section" : block.level === 2 ? "subsection" : "subsubsection"}{${take(block.inlines)}}${label}`,
240
+ `\\${block.level <= firstHeadingLevel ? "section" : block.level === firstHeadingLevel + 1 ? "subsection" : "subsubsection"}{${take(block.inlines)}}${label}`,
211
241
  );
212
242
  } else if (block.kind === "paragraph") target.push(take(block.inlines));
213
243
  else if (block.kind === "math")
@@ -231,7 +261,7 @@ export function renderLatexArticle(
231
261
  const destination = `assets/figure-${String(assets.length + 1)}.${extension}`;
232
262
  assets.push({ source: block.src, destination });
233
263
  target.push(
234
- `\\begin{figure}[!t]\n\\centering\n\\includegraphics[width=\\columnwidth${pdfStandard ? `,alt={${latexText(block.alt)}}` : ""}]{${destination}}\n\\caption{${take(block.caption)}}${label}\n\\end{figure}`,
264
+ `\\begin{figure}[!tb]\n\\centering\n\\includegraphics[width=\\columnwidth${pdfStandard ? `,alt={${latexText(block.alt)}}` : ""}]{${destination}}\n\\caption{${take(block.caption)}}${label}\n\\end{figure}`,
235
265
  );
236
266
  } else if (block.kind === "table") {
237
267
  const width = block.rows[0]?.length ?? 0;
@@ -257,7 +287,7 @@ export function renderLatexArticle(
257
287
  )
258
288
  .join("\n");
259
289
  target.push(
260
- `\\begin{table}[!t]\n\\caption{${take(block.caption ?? [])}}${label}\n\\centering\n${pdfStandard ? `\\tagpdfsetup{table/header-rows={${Array.from({ length: block.headerRows ?? 0 }, (_, index) => String(index + 1)).join(",")}}}\n` : ""}\\begin{tabularx}{\\columnwidth}{${"X".repeat(width)}}\n\\hline\n${rows}\n\\hline\n\\end{tabularx}\n\\end{table}`,
290
+ `\\begin{table}[!tb]\n\\caption{${take(block.caption ?? [])}}${label}\n\\centering\n${pdfStandard ? `\\tagpdfsetup{table/header-rows={${Array.from({ length: block.headerRows ?? 0 }, (_, index) => String(index + 1)).join(",")}}}\n` : ""}\\begin{tabularx}{\\columnwidth}{${"X".repeat(width)}}\n\\hline\n${rows}\n\\hline\n\\end{tabularx}\n\\end{table}`,
261
291
  );
262
292
  } else if (block.kind === "list")
263
293
  target.push(
@@ -281,10 +311,10 @@ export function renderLatexArticle(
281
311
  \\setmainfont{${fonts.latin}}
282
312
  \\usepackage{unicode-math}
283
313
  \\setmathfont{${fonts.math}}
284
- \\usepackage[bidi=basic]{babel}
285
- ${profile.direction === "rtl" ? "\\babelprovide[import]{english}\n\\babelprovide[import,main]{arabic}" : "\\babelprovide[import,main]{english}\n\\babelprovide[import]{arabic}"}
286
- \\babelfont[arabic]{rm}{${fonts.arabic}}
287
- \\newfontfamily\\cjkfont{${fonts.cjk}}
314
+ \\usepackage${needsArabic ? "[bidi=basic]" : "[english]"}{babel}
315
+ ${needsArabic ? (profile.direction === "rtl" ? "\\babelprovide[import]{english}\n\\babelprovide[import,main]{arabic}" : "\\babelprovide[import,main]{english}\n\\babelprovide[import]{arabic}") : ""}
316
+ ${needsArabic ? `\\babelfont[arabic]{rm}{${fonts.arabic}}` : ""}
317
+ ${needsCjk ? `\\newfontfamily\\cjkfont{${fonts.cjk}}` : ""}
288
318
  `
289
319
  : "\\usepackage[utf8]{inputenc}\n\\usepackage[T1]{fontenc}\n";
290
320
  const authors = article.authors.map((name) => text(name)).join(", ");
@@ -321,8 +351,11 @@ ${profile.direction === "rtl" ? "\\babelprovide[import]{english}\n\\babelprovide
321
351
  ),
322
352
  };
323
353
  });
324
- const manuscript = `${pdfStandard ? `\\DocumentMetadata{lang=${language},pdfstandard=${pdfStandard},${pdfStandard === "ua-1" ? "pdfversion=1.7," : ""}tagging=on,tagging-setup={math/setup={mathml-AF${pdfStandard === "ua-2" ? ",mathml-SE" : ""}}}}\n` : ""}\\documentclass${profile.classOptions ? `[${profile.classOptions}]` : ""}{${profile.className}}
325
- ${unicodePreamble}\\usepackage{amsmath,${engine === "pdflatex" && profile.pdfSymbols === true ? "amssymb," : ""}graphicx,tabularx${profile.numericCitationPackage ? ",cite" : ""}}
354
+ const manuscript = `${needsColor ? "\\PassOptionsToPackage{dvipsnames,svgnames}{xcolor}\n" : ""}${pdfStandard ? `\\DocumentMetadata{lang=${language},pdfstandard=${pdfStandard},${pdfStandard === "ua-1" ? "pdfversion=1.7," : ""}tagging=on,tagging-setup={math/setup={mathml-AF${pdfStandard === "ua-2" ? ",mathml-SE" : ""}}}}\n` : ""}\\documentclass${profile.classOptions ? `[${profile.classOptions}]` : ""}{${profile.className}}
355
+ ${unicodePreamble}${needsColor ? "\\usepackage{xcolor}\n" : ""}\\usepackage{amsmath,${engine === "pdflatex" && profile.pdfSymbols === true ? "amssymb," : ""}graphicx,tabularx${profile.numericCitationPackage ? ",cite" : ""}}
356
+ % flafter keeps floats at or after their source position, so a figure can
357
+ % never be hoisted above the abstract region on the first page.
358
+ \\usepackage{flafter}
326
359
  \\usepackage[normalem]{ulem}
327
360
  \\usepackage{hyperref}
328
361
  \\hypersetup{hidelinks}
@@ -330,10 +363,10 @@ ${unicodePreamble}\\usepackage{amsmath,${engine === "pdflatex" && profile.pdfSym
330
363
  ${profile.author ? profile.author(article, text) : `\\title{${text(article.title ?? "Untitled")}}\n\\author{${authors}${affiliations}}`}
331
364
  ${profile.preamble ?? ""}
332
365
  \\begin{document}
333
- ${profile.frontmatter ? profile.frontmatter(abstract.join("\n\n"), article, text) : `\\maketitle\n\\begin{abstract}\n${abstract.join("\n\n")}\n\\end{abstract}`}
366
+ ${profile.frontmatter ? profile.frontmatter(abstract.join("\n\n"), article, text) : `\\maketitle${abstract.join("\n\n").trim() ? `\n\\begin{abstract}\n${abstract.join("\n\n")}\n\\end{abstract}` : ""}`}
334
367
  ${profile.keywords?.(article.subjects ?? [], text) ?? ""}
335
368
  ${body.join("\n\n")}
336
- ${profile.bibliographyStyle ? `${profile.automaticBibliographyStyle ? "" : `\\bibliographystyle{${profile.bibliographyStyle}}\n`}\\bibliography{references}` : `\\section*{${profile.direction === "rtl" ? text("المراجع") : "References"}}\n${context.bibliography.map((item) => text(item.text)).join("\n\n")}`}
369
+ ${profile.bibliographyStyle ? (context.bibliography.length ? `${profile.automaticBibliographyStyle ? "" : `\\bibliographystyle{${profile.bibliographyStyle}}\n`}\\bibliography{references}` : "") : `\\section*{${profile.direction === "rtl" ? text("المراجع") : "References"}}\n${context.bibliography.map((item) => text(item.text)).join("\n\n")}`}
337
370
  \\end{document}
338
371
  `;
339
372
  return {
@@ -344,6 +377,8 @@ ${profile.bibliographyStyle ? `${profile.automaticBibliographyStyle ? "" : `\\bi
344
377
  ...(pdfStandard ? { pdfStandard } : {}),
345
378
  requirements: [
346
379
  "amsmath.sty",
380
+ ...(needsColor ? ["xcolor.sty"] : []),
381
+ "flafter.sty",
347
382
  "graphicx.sty",
348
383
  "tabularx.sty",
349
384
  "ulem.sty",