md2x 0.1.0 → 0.2.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 (64) hide show
  1. package/dist/index.mjs +54 -4
  2. package/dist/md2x.mjs +54 -4
  3. package/dist/vendor/katex/fonts/KaTeX_AMS-Regular.ttf +0 -0
  4. package/dist/vendor/katex/fonts/KaTeX_AMS-Regular.woff +0 -0
  5. package/dist/vendor/katex/fonts/KaTeX_AMS-Regular.woff2 +0 -0
  6. package/dist/vendor/katex/fonts/KaTeX_Caligraphic-Bold.ttf +0 -0
  7. package/dist/vendor/katex/fonts/KaTeX_Caligraphic-Bold.woff +0 -0
  8. package/dist/vendor/katex/fonts/KaTeX_Caligraphic-Bold.woff2 +0 -0
  9. package/dist/vendor/katex/fonts/KaTeX_Caligraphic-Regular.ttf +0 -0
  10. package/dist/vendor/katex/fonts/KaTeX_Caligraphic-Regular.woff +0 -0
  11. package/dist/vendor/katex/fonts/KaTeX_Caligraphic-Regular.woff2 +0 -0
  12. package/dist/vendor/katex/fonts/KaTeX_Fraktur-Bold.ttf +0 -0
  13. package/dist/vendor/katex/fonts/KaTeX_Fraktur-Bold.woff +0 -0
  14. package/dist/vendor/katex/fonts/KaTeX_Fraktur-Bold.woff2 +0 -0
  15. package/dist/vendor/katex/fonts/KaTeX_Fraktur-Regular.ttf +0 -0
  16. package/dist/vendor/katex/fonts/KaTeX_Fraktur-Regular.woff +0 -0
  17. package/dist/vendor/katex/fonts/KaTeX_Fraktur-Regular.woff2 +0 -0
  18. package/dist/vendor/katex/fonts/KaTeX_Main-Bold.ttf +0 -0
  19. package/dist/vendor/katex/fonts/KaTeX_Main-Bold.woff +0 -0
  20. package/dist/vendor/katex/fonts/KaTeX_Main-Bold.woff2 +0 -0
  21. package/dist/vendor/katex/fonts/KaTeX_Main-BoldItalic.ttf +0 -0
  22. package/dist/vendor/katex/fonts/KaTeX_Main-BoldItalic.woff +0 -0
  23. package/dist/vendor/katex/fonts/KaTeX_Main-BoldItalic.woff2 +0 -0
  24. package/dist/vendor/katex/fonts/KaTeX_Main-Italic.ttf +0 -0
  25. package/dist/vendor/katex/fonts/KaTeX_Main-Italic.woff +0 -0
  26. package/dist/vendor/katex/fonts/KaTeX_Main-Italic.woff2 +0 -0
  27. package/dist/vendor/katex/fonts/KaTeX_Main-Regular.ttf +0 -0
  28. package/dist/vendor/katex/fonts/KaTeX_Main-Regular.woff +0 -0
  29. package/dist/vendor/katex/fonts/KaTeX_Main-Regular.woff2 +0 -0
  30. package/dist/vendor/katex/fonts/KaTeX_Math-BoldItalic.ttf +0 -0
  31. package/dist/vendor/katex/fonts/KaTeX_Math-BoldItalic.woff +0 -0
  32. package/dist/vendor/katex/fonts/KaTeX_Math-BoldItalic.woff2 +0 -0
  33. package/dist/vendor/katex/fonts/KaTeX_Math-Italic.ttf +0 -0
  34. package/dist/vendor/katex/fonts/KaTeX_Math-Italic.woff +0 -0
  35. package/dist/vendor/katex/fonts/KaTeX_Math-Italic.woff2 +0 -0
  36. package/dist/vendor/katex/fonts/KaTeX_SansSerif-Bold.ttf +0 -0
  37. package/dist/vendor/katex/fonts/KaTeX_SansSerif-Bold.woff +0 -0
  38. package/dist/vendor/katex/fonts/KaTeX_SansSerif-Bold.woff2 +0 -0
  39. package/dist/vendor/katex/fonts/KaTeX_SansSerif-Italic.ttf +0 -0
  40. package/dist/vendor/katex/fonts/KaTeX_SansSerif-Italic.woff +0 -0
  41. package/dist/vendor/katex/fonts/KaTeX_SansSerif-Italic.woff2 +0 -0
  42. package/dist/vendor/katex/fonts/KaTeX_SansSerif-Regular.ttf +0 -0
  43. package/dist/vendor/katex/fonts/KaTeX_SansSerif-Regular.woff +0 -0
  44. package/dist/vendor/katex/fonts/KaTeX_SansSerif-Regular.woff2 +0 -0
  45. package/dist/vendor/katex/fonts/KaTeX_Script-Regular.ttf +0 -0
  46. package/dist/vendor/katex/fonts/KaTeX_Script-Regular.woff +0 -0
  47. package/dist/vendor/katex/fonts/KaTeX_Script-Regular.woff2 +0 -0
  48. package/dist/vendor/katex/fonts/KaTeX_Size1-Regular.ttf +0 -0
  49. package/dist/vendor/katex/fonts/KaTeX_Size1-Regular.woff +0 -0
  50. package/dist/vendor/katex/fonts/KaTeX_Size1-Regular.woff2 +0 -0
  51. package/dist/vendor/katex/fonts/KaTeX_Size2-Regular.ttf +0 -0
  52. package/dist/vendor/katex/fonts/KaTeX_Size2-Regular.woff +0 -0
  53. package/dist/vendor/katex/fonts/KaTeX_Size2-Regular.woff2 +0 -0
  54. package/dist/vendor/katex/fonts/KaTeX_Size3-Regular.ttf +0 -0
  55. package/dist/vendor/katex/fonts/KaTeX_Size3-Regular.woff +0 -0
  56. package/dist/vendor/katex/fonts/KaTeX_Size3-Regular.woff2 +0 -0
  57. package/dist/vendor/katex/fonts/KaTeX_Size4-Regular.ttf +0 -0
  58. package/dist/vendor/katex/fonts/KaTeX_Size4-Regular.woff +0 -0
  59. package/dist/vendor/katex/fonts/KaTeX_Size4-Regular.woff2 +0 -0
  60. package/dist/vendor/katex/fonts/KaTeX_Typewriter-Regular.ttf +0 -0
  61. package/dist/vendor/katex/fonts/KaTeX_Typewriter-Regular.woff +0 -0
  62. package/dist/vendor/katex/fonts/KaTeX_Typewriter-Regular.woff2 +0 -0
  63. package/dist/vendor/katex/katex.min.css +1 -0
  64. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -126835,6 +126835,20 @@ Original error: ${message}${tail}`);
126835
126835
  } else {
126836
126836
  await pdfPage.setContent(fullHtml, { waitUntil: "networkidle0" });
126837
126837
  }
126838
+ await pdfPage.evaluate(() => {
126839
+ const container = document.getElementById("markdown-content");
126840
+ if (!container) return;
126841
+ const wideDivs = container.querySelectorAll(':scope > div[style*="width"]');
126842
+ wideDivs.forEach((div) => {
126843
+ const el = div;
126844
+ const widthMatch = el.style.width?.match(/^(\d+)px$/);
126845
+ if (widthMatch) {
126846
+ el.style.width = "100%";
126847
+ el.style.maxWidth = "100%";
126848
+ el.style.boxSizing = "border-box";
126849
+ }
126850
+ });
126851
+ });
126838
126852
  const pdfBuffer = await pdfPage.pdf({
126839
126853
  format: options.format || "A4",
126840
126854
  landscape: options.landscape || false,
@@ -127411,6 +127425,7 @@ __export(node_exporter_exports, {
127411
127425
  });
127412
127426
  import * as fs3 from "fs";
127413
127427
  import * as path5 from "path";
127428
+ import { createRequire } from "module";
127414
127429
  import { fileURLToPath as fileURLToPath3, pathToFileURL as pathToFileURL3 } from "url";
127415
127430
  function ensureBase64Globals() {
127416
127431
  if (typeof globalThis.atob !== "function") {
@@ -127500,6 +127515,14 @@ body {
127500
127515
  padding: 20px;
127501
127516
  }
127502
127517
 
127518
+ /* Wide content auto-scaling for PDF */
127519
+ /* Use transform scale to fit wide content within page width */
127520
+ /* The actual scale value will be set dynamically via JavaScript */
127521
+ #markdown-content > div[style*="width"] {
127522
+ transform-origin: top left;
127523
+ page-break-inside: avoid;
127524
+ }
127525
+
127503
127526
  /* Headings */
127504
127527
  h1, h2, h3, h4, h5, h6 {
127505
127528
  margin-top: 24px;
@@ -127740,6 +127763,20 @@ img.block-image {
127740
127763
  ${hrStyles}
127741
127764
  `;
127742
127765
  }
127766
+ function loadKatexCss() {
127767
+ const moduleDir = path5.dirname(fileURLToPath3(import.meta.url));
127768
+ const bundledKatexCssPath = path5.join(moduleDir, "vendor", "katex", "katex.min.css");
127769
+ let katexCssPath = bundledKatexCssPath;
127770
+ if (!fs3.existsSync(bundledKatexCssPath)) {
127771
+ const require2 = createRequire(import.meta.url);
127772
+ katexCssPath = require2.resolve("katex/dist/katex.min.css");
127773
+ }
127774
+ const katexDistDir = path5.dirname(katexCssPath);
127775
+ const katexFontsHref = pathToFileURL3(path5.join(katexDistDir, "fonts") + path5.sep).href;
127776
+ let css2 = fs3.readFileSync(katexCssPath, "utf-8");
127777
+ css2 = css2.replace(/url\((['"]?)(?:\.\/)?fonts\//g, `url($1${katexFontsHref}`);
127778
+ return css2;
127779
+ }
127743
127780
  var NodeDocxExporter, NodePdfExporter, node_exporter_default;
127744
127781
  var init_node_exporter = __esm({
127745
127782
  "src/host/node-exporter.ts"() {
@@ -127747,6 +127784,7 @@ var init_node_exporter = __esm({
127747
127784
  init_docx_exporter();
127748
127785
  init_browser_renderer();
127749
127786
  init_node_platform();
127787
+ init_plugins();
127750
127788
  NodeDocxExporter = class {
127751
127789
  /**
127752
127790
  * Export markdown to DOCX buffer
@@ -127865,6 +127903,12 @@ var init_node_exporter = __esm({
127865
127903
  await browserRenderer.initialize();
127866
127904
  const themeConfig = await loadRendererThemeConfig(themeId);
127867
127905
  const html7 = await this.processMarkdownToHtml(markdown2, browserRenderer, basePath, themeConfig);
127906
+ let katexCss = "";
127907
+ try {
127908
+ katexCss = loadKatexCss();
127909
+ } catch (e) {
127910
+ console.warn("Failed to load KaTeX CSS for PDF export:", e);
127911
+ }
127868
127912
  const baseCss = await loadBaseCss(options.pdfHrAsPageBreak ?? true);
127869
127913
  let themeCss = "";
127870
127914
  try {
@@ -127872,7 +127916,7 @@ var init_node_exporter = __esm({
127872
127916
  } catch (e) {
127873
127917
  console.warn("Failed to load theme CSS, using base styles only:", e);
127874
127918
  }
127875
- const css2 = baseCss + "\n" + themeCss;
127919
+ const css2 = katexCss + "\n" + baseCss + "\n" + themeCss;
127876
127920
  return await browserRenderer.exportToPdf(html7, css2, options.pdf, basePath);
127877
127921
  } finally {
127878
127922
  try {
@@ -127957,14 +128001,20 @@ var init_node_exporter = __esm({
127957
128001
  * Process diagram code blocks and replace with rendered images
127958
128002
  */
127959
128003
  async processDiagrams(html7, browserRenderer, basePath, themeConfig) {
127960
- const codeBlockRegex = /<pre><code class="(?:hljs )?language-(mermaid|graphviz|dot|vega|vega-lite|infographic)">([\s\S]*?)<\/code><\/pre>/gi;
128004
+ const pluginLangs = plugins.filter((p3) => p3.nodeSelector.includes("code")).map((p3) => p3.language).filter((lang) => lang !== null);
128005
+ const aliases = ["graphviz", "gv", "vegalite"];
128006
+ const supportedLangs = [...pluginLangs, ...aliases].join("|");
128007
+ const codeBlockRegex = new RegExp(
128008
+ `<pre><code class="(?:hljs )?language-(${supportedLangs})">([\\s\\S]*?)<\\/code><\\/pre>`,
128009
+ "gi"
128010
+ );
127961
128011
  const matches = [...html7.matchAll(codeBlockRegex)];
127962
128012
  for (const match of matches) {
127963
128013
  const [fullMatch, lang, code4] = match;
127964
128014
  const decodedCode = this.decodeHtmlEntities(code4);
127965
128015
  let renderType = lang.toLowerCase();
127966
- if (renderType === "graphviz") renderType = "dot";
127967
- if (renderType === "vega") renderType = "vega-lite";
128016
+ if (renderType === "graphviz" || renderType === "gv") renderType = "dot";
128017
+ if (renderType === "vegalite") renderType = "vega-lite";
127968
128018
  try {
127969
128019
  const result = await browserRenderer.render(renderType, decodedCode, basePath, themeConfig);
127970
128020
  if (result && result.base64) {
package/dist/md2x.mjs CHANGED
@@ -126836,6 +126836,20 @@ Original error: ${message}${tail}`);
126836
126836
  } else {
126837
126837
  await pdfPage.setContent(fullHtml, { waitUntil: "networkidle0" });
126838
126838
  }
126839
+ await pdfPage.evaluate(() => {
126840
+ const container = document.getElementById("markdown-content");
126841
+ if (!container) return;
126842
+ const wideDivs = container.querySelectorAll(':scope > div[style*="width"]');
126843
+ wideDivs.forEach((div) => {
126844
+ const el = div;
126845
+ const widthMatch = el.style.width?.match(/^(\d+)px$/);
126846
+ if (widthMatch) {
126847
+ el.style.width = "100%";
126848
+ el.style.maxWidth = "100%";
126849
+ el.style.boxSizing = "border-box";
126850
+ }
126851
+ });
126852
+ });
126839
126853
  const pdfBuffer = await pdfPage.pdf({
126840
126854
  format: options.format || "A4",
126841
126855
  landscape: options.landscape || false,
@@ -127412,6 +127426,7 @@ __export(node_exporter_exports, {
127412
127426
  });
127413
127427
  import * as fs3 from "fs";
127414
127428
  import * as path5 from "path";
127429
+ import { createRequire } from "module";
127415
127430
  import { fileURLToPath as fileURLToPath3, pathToFileURL as pathToFileURL3 } from "url";
127416
127431
  function ensureBase64Globals() {
127417
127432
  if (typeof globalThis.atob !== "function") {
@@ -127501,6 +127516,14 @@ body {
127501
127516
  padding: 20px;
127502
127517
  }
127503
127518
 
127519
+ /* Wide content auto-scaling for PDF */
127520
+ /* Use transform scale to fit wide content within page width */
127521
+ /* The actual scale value will be set dynamically via JavaScript */
127522
+ #markdown-content > div[style*="width"] {
127523
+ transform-origin: top left;
127524
+ page-break-inside: avoid;
127525
+ }
127526
+
127504
127527
  /* Headings */
127505
127528
  h1, h2, h3, h4, h5, h6 {
127506
127529
  margin-top: 24px;
@@ -127741,6 +127764,20 @@ img.block-image {
127741
127764
  ${hrStyles}
127742
127765
  `;
127743
127766
  }
127767
+ function loadKatexCss() {
127768
+ const moduleDir = path5.dirname(fileURLToPath3(import.meta.url));
127769
+ const bundledKatexCssPath = path5.join(moduleDir, "vendor", "katex", "katex.min.css");
127770
+ let katexCssPath = bundledKatexCssPath;
127771
+ if (!fs3.existsSync(bundledKatexCssPath)) {
127772
+ const require2 = createRequire(import.meta.url);
127773
+ katexCssPath = require2.resolve("katex/dist/katex.min.css");
127774
+ }
127775
+ const katexDistDir = path5.dirname(katexCssPath);
127776
+ const katexFontsHref = pathToFileURL3(path5.join(katexDistDir, "fonts") + path5.sep).href;
127777
+ let css2 = fs3.readFileSync(katexCssPath, "utf-8");
127778
+ css2 = css2.replace(/url\((['"]?)(?:\.\/)?fonts\//g, `url($1${katexFontsHref}`);
127779
+ return css2;
127780
+ }
127744
127781
  var NodeDocxExporter, NodePdfExporter, node_exporter_default;
127745
127782
  var init_node_exporter = __esm({
127746
127783
  "src/host/node-exporter.ts"() {
@@ -127748,6 +127785,7 @@ var init_node_exporter = __esm({
127748
127785
  init_docx_exporter();
127749
127786
  init_browser_renderer();
127750
127787
  init_node_platform();
127788
+ init_plugins();
127751
127789
  NodeDocxExporter = class {
127752
127790
  /**
127753
127791
  * Export markdown to DOCX buffer
@@ -127866,6 +127904,12 @@ var init_node_exporter = __esm({
127866
127904
  await browserRenderer.initialize();
127867
127905
  const themeConfig = await loadRendererThemeConfig(themeId);
127868
127906
  const html7 = await this.processMarkdownToHtml(markdown2, browserRenderer, basePath, themeConfig);
127907
+ let katexCss = "";
127908
+ try {
127909
+ katexCss = loadKatexCss();
127910
+ } catch (e) {
127911
+ console.warn("Failed to load KaTeX CSS for PDF export:", e);
127912
+ }
127869
127913
  const baseCss = await loadBaseCss(options.pdfHrAsPageBreak ?? true);
127870
127914
  let themeCss = "";
127871
127915
  try {
@@ -127873,7 +127917,7 @@ var init_node_exporter = __esm({
127873
127917
  } catch (e) {
127874
127918
  console.warn("Failed to load theme CSS, using base styles only:", e);
127875
127919
  }
127876
- const css2 = baseCss + "\n" + themeCss;
127920
+ const css2 = katexCss + "\n" + baseCss + "\n" + themeCss;
127877
127921
  return await browserRenderer.exportToPdf(html7, css2, options.pdf, basePath);
127878
127922
  } finally {
127879
127923
  try {
@@ -127958,14 +128002,20 @@ var init_node_exporter = __esm({
127958
128002
  * Process diagram code blocks and replace with rendered images
127959
128003
  */
127960
128004
  async processDiagrams(html7, browserRenderer, basePath, themeConfig) {
127961
- const codeBlockRegex = /<pre><code class="(?:hljs )?language-(mermaid|graphviz|dot|vega|vega-lite|infographic)">([\s\S]*?)<\/code><\/pre>/gi;
128005
+ const pluginLangs = plugins.filter((p3) => p3.nodeSelector.includes("code")).map((p3) => p3.language).filter((lang) => lang !== null);
128006
+ const aliases = ["graphviz", "gv", "vegalite"];
128007
+ const supportedLangs = [...pluginLangs, ...aliases].join("|");
128008
+ const codeBlockRegex = new RegExp(
128009
+ `<pre><code class="(?:hljs )?language-(${supportedLangs})">([\\s\\S]*?)<\\/code><\\/pre>`,
128010
+ "gi"
128011
+ );
127962
128012
  const matches = [...html7.matchAll(codeBlockRegex)];
127963
128013
  for (const match of matches) {
127964
128014
  const [fullMatch, lang, code4] = match;
127965
128015
  const decodedCode = this.decodeHtmlEntities(code4);
127966
128016
  let renderType = lang.toLowerCase();
127967
- if (renderType === "graphviz") renderType = "dot";
127968
- if (renderType === "vega") renderType = "vega-lite";
128017
+ if (renderType === "graphviz" || renderType === "gv") renderType = "dot";
128018
+ if (renderType === "vegalite") renderType = "vega-lite";
127969
128019
  try {
127970
128020
  const result = await browserRenderer.render(renderType, decodedCode, basePath, themeConfig);
127971
128021
  if (result && result.base64) {
@@ -0,0 +1 @@
1
+ @font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(fonts/KaTeX_AMS-Regular.woff2) format("woff2"),url(fonts/KaTeX_AMS-Regular.woff) format("woff"),url(fonts/KaTeX_AMS-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Bold.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Bold.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2"),url(fonts/KaTeX_Caligraphic-Regular.woff) format("woff"),url(fonts/KaTeX_Caligraphic-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Fraktur-Bold.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Bold.woff) format("woff"),url(fonts/KaTeX_Fraktur-Bold.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Fraktur-Regular.woff2) format("woff2"),url(fonts/KaTeX_Fraktur-Regular.woff) format("woff"),url(fonts/KaTeX_Fraktur-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(fonts/KaTeX_Main-Bold.woff2) format("woff2"),url(fonts/KaTeX_Main-Bold.woff) format("woff"),url(fonts/KaTeX_Main-Bold.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Main-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Main-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Main-BoldItalic.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Main-Italic.woff2) format("woff2"),url(fonts/KaTeX_Main-Italic.woff) format("woff"),url(fonts/KaTeX_Main-Italic.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Main-Regular.woff2) format("woff2"),url(fonts/KaTeX_Main-Regular.woff) format("woff"),url(fonts/KaTeX_Main-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(fonts/KaTeX_Math-BoldItalic.woff2) format("woff2"),url(fonts/KaTeX_Math-BoldItalic.woff) format("woff"),url(fonts/KaTeX_Math-BoldItalic.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(fonts/KaTeX_Math-Italic.woff2) format("woff2"),url(fonts/KaTeX_Math-Italic.woff) format("woff"),url(fonts/KaTeX_Math-Italic.ttf) format("truetype")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(fonts/KaTeX_SansSerif-Bold.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Bold.woff) format("woff"),url(fonts/KaTeX_SansSerif-Bold.ttf) format("truetype")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(fonts/KaTeX_SansSerif-Italic.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Italic.woff) format("woff"),url(fonts/KaTeX_SansSerif-Italic.ttf) format("truetype")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(fonts/KaTeX_SansSerif-Regular.woff2) format("woff2"),url(fonts/KaTeX_SansSerif-Regular.woff) format("woff"),url(fonts/KaTeX_SansSerif-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Script-Regular.woff2) format("woff2"),url(fonts/KaTeX_Script-Regular.woff) format("woff"),url(fonts/KaTeX_Script-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size1-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size1-Regular.woff) format("woff"),url(fonts/KaTeX_Size1-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size2-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size2-Regular.woff) format("woff"),url(fonts/KaTeX_Size2-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size3-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size3-Regular.woff) format("woff"),url(fonts/KaTeX_Size3-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Size4-Regular.woff2) format("woff2"),url(fonts/KaTeX_Size4-Regular.woff) format("woff"),url(fonts/KaTeX_Size4-Regular.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(fonts/KaTeX_Typewriter-Regular.woff2) format("woff2"),url(fonts/KaTeX_Typewriter-Regular.woff) format("woff"),url(fonts/KaTeX_Typewriter-Regular.ttf) format("truetype")}.katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.27"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "md2x",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Markdown → PDF/DOCX converter (local, no server). Supports Mermaid/Graphviz/Vega/HTML/SVG rendering, math, and code highlighting.",
5
5
  "type": "module",
6
6
  "private": false,