mathpix-markdown-it 2.0.28 → 2.0.29
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 +14 -0
- package/doc/images/latex-lstlisting-env/latex-lstlisting-env-01.png +0 -0
- package/doc/images/latex-lstlisting-env/latex-lstlisting-env-02.png +0 -0
- package/doc/images/latex-lstlisting-env/latex-lstlisting-env-03.png +0 -0
- package/doc/images/latex-lstlisting-env/latex-lstlisting-env-04.png +0 -0
- package/doc/latex-lstlisting-env.md +75 -0
- package/es5/bundle.js +4 -4
- package/es5/index.js +4 -4
- package/lib/copy-to-clipboard/clipboard-copy-styles.js +1 -1
- package/lib/copy-to-clipboard/clipboard-copy-styles.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/markdown/common/consts.d.ts +18 -0
- package/lib/markdown/common/consts.js +27 -2
- package/lib/markdown/common/consts.js.map +1 -1
- package/lib/markdown/common/csv.js +8 -3
- package/lib/markdown/common/csv.js.map +1 -1
- package/lib/markdown/common/mmdRules.js +10 -0
- package/lib/markdown/common/mmdRules.js.map +1 -1
- package/lib/markdown/common/parse-attribures.d.ts +12 -0
- package/lib/markdown/common/parse-attribures.js +45 -0
- package/lib/markdown/common/parse-attribures.js.map +1 -0
- package/lib/markdown/common/render-table-cell-content.js +18 -0
- package/lib/markdown/common/render-table-cell-content.js.map +1 -1
- package/lib/markdown/common/tsv.js +4 -1
- package/lib/markdown/common/tsv.js.map +1 -1
- package/lib/markdown/common.d.ts +1 -0
- package/lib/markdown/common.js +3 -1
- package/lib/markdown/common.js.map +1 -1
- package/lib/markdown/mathpix-markdown-plugins.js +1 -0
- package/lib/markdown/mathpix-markdown-plugins.js.map +1 -1
- package/lib/markdown/md-block-rule/begin-tabular/index.js +18 -4
- package/lib/markdown/md-block-rule/begin-tabular/index.js.map +1 -1
- package/lib/markdown/md-block-rule/begin-tabular/multi-column-row.js +3 -1
- package/lib/markdown/md-block-rule/begin-tabular/multi-column-row.js.map +1 -1
- package/lib/markdown/md-block-rule/begin-tabular/sub-code.d.ts +41 -1
- package/lib/markdown/md-block-rule/begin-tabular/sub-code.js +139 -40
- package/lib/markdown/md-block-rule/begin-tabular/sub-code.js.map +1 -1
- package/lib/markdown/md-block-rule/begin-tabular/sub-math.js +10 -2
- package/lib/markdown/md-block-rule/begin-tabular/sub-math.js.map +1 -1
- package/lib/markdown/md-block-rule/begin-tabular/sub-tabular.js +2 -0
- package/lib/markdown/md-block-rule/begin-tabular/sub-tabular.js.map +1 -1
- package/lib/markdown/md-block-rule/begin-tabular/tabular-td.js +2 -0
- package/lib/markdown/md-block-rule/begin-tabular/tabular-td.js.map +1 -1
- package/lib/markdown/md-block-rule/helper.js +8 -3
- package/lib/markdown/md-block-rule/helper.js.map +1 -1
- package/lib/markdown/md-block-rule/lists/index.js +123 -1
- package/lib/markdown/md-block-rule/lists/index.js.map +1 -1
- package/lib/markdown/md-inline-rule/diagbox-inline.js +4 -15
- package/lib/markdown/md-inline-rule/diagbox-inline.js.map +1 -1
- package/lib/markdown/md-latex-lstlisting-env/index.d.ts +9 -0
- package/lib/markdown/md-latex-lstlisting-env/index.js +23 -0
- package/lib/markdown/md-latex-lstlisting-env/index.js.map +1 -0
- package/lib/markdown/md-latex-lstlisting-env/latex-lstlisting-env-block.d.ts +6 -0
- package/lib/markdown/md-latex-lstlisting-env/latex-lstlisting-env-block.js +71 -0
- package/lib/markdown/md-latex-lstlisting-env/latex-lstlisting-env-block.js.map +1 -0
- package/lib/markdown/md-latex-lstlisting-env/latex-lstlisting-env-inline.d.ts +7 -0
- package/lib/markdown/md-latex-lstlisting-env/latex-lstlisting-env-inline.js +76 -0
- package/lib/markdown/md-latex-lstlisting-env/latex-lstlisting-env-inline.js.map +1 -0
- package/lib/markdown/md-latex-lstlisting-env/lstlisting-options.d.ts +21 -0
- package/lib/markdown/md-latex-lstlisting-env/lstlisting-options.js +96 -0
- package/lib/markdown/md-latex-lstlisting-env/lstlisting-options.js.map +1 -0
- package/lib/markdown/md-latex-lstlisting-env/parse-math-escape-inline.d.ts +21 -0
- package/lib/markdown/md-latex-lstlisting-env/parse-math-escape-inline.js +55 -0
- package/lib/markdown/md-latex-lstlisting-env/parse-math-escape-inline.js.map +1 -0
- package/lib/markdown/md-latex-lstlisting-env/render-latex-lstlisting-env.d.ts +16 -0
- package/lib/markdown/md-latex-lstlisting-env/render-latex-lstlisting-env.js +165 -0
- package/lib/markdown/md-latex-lstlisting-env/render-latex-lstlisting-env.js.map +1 -0
- package/lib/markdown/mdHighlightCodePlugin.js +85 -5
- package/lib/markdown/mdHighlightCodePlugin.js.map +1 -1
- package/lib/markdown/mdPluginConfigured.d.ts +2 -0
- package/lib/markdown/mdPluginConfigured.js +3 -1
- package/lib/markdown/mdPluginConfigured.js.map +1 -1
- package/lib/markdown/mdPluginRaw.d.ts +3 -0
- package/lib/markdown/mdPluginRaw.js +6 -4
- package/lib/markdown/mdPluginRaw.js.map +1 -1
- package/lib/markdown/mdPluginTableTabular.js +2 -0
- package/lib/markdown/mdPluginTableTabular.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.applyLstListingOptionsToToken = void 0;
|
|
4
|
+
var parse_attribures_1 = require("../common/parse-attribures");
|
|
5
|
+
var parse_math_escape_inline_1 = require("./parse-math-escape-inline");
|
|
6
|
+
var consts_1 = require("../common/consts");
|
|
7
|
+
/**
|
|
8
|
+
* Parse a LaTeX listings `language` value into `{ name, dialect }`.
|
|
9
|
+
*
|
|
10
|
+
* Supported forms:
|
|
11
|
+
* - "Ada"
|
|
12
|
+
* - "{Ada}"
|
|
13
|
+
* - "\"Ada\""
|
|
14
|
+
* - "[2005]Ada"
|
|
15
|
+
* - "{[riscv]Assembler}"
|
|
16
|
+
*
|
|
17
|
+
* The function:
|
|
18
|
+
* - Strips surrounding quotes (single/double) if present.
|
|
19
|
+
* - Strips a single pair of outer curly braces `{ ... }` if present.
|
|
20
|
+
* - If the remaining string starts with `[... ]`, the part inside the brackets
|
|
21
|
+
* is treated as the dialect and the rest as the language name.
|
|
22
|
+
*
|
|
23
|
+
* On empty or falsy input returns `{ name: '', dialect: null }`.
|
|
24
|
+
*/
|
|
25
|
+
var parseLstLanguage = function (raw) {
|
|
26
|
+
var _a;
|
|
27
|
+
if (!raw) {
|
|
28
|
+
return { name: '', dialect: null, hlName: '' };
|
|
29
|
+
}
|
|
30
|
+
// 1. Trim whitespace
|
|
31
|
+
var s = raw.trim();
|
|
32
|
+
if (!s) {
|
|
33
|
+
return { name: '', dialect: null, hlName: '' };
|
|
34
|
+
}
|
|
35
|
+
// 2. Strip surrounding quotes, if present
|
|
36
|
+
var firstChar = s[0];
|
|
37
|
+
var lastChar = s[s.length - 1];
|
|
38
|
+
if ((firstChar === '"' && lastChar === '"') ||
|
|
39
|
+
(firstChar === "'" && lastChar === "'")) {
|
|
40
|
+
s = s.slice(1, -1).trim();
|
|
41
|
+
}
|
|
42
|
+
// 3. Strip single outer curly braces { ... }, if present
|
|
43
|
+
if (s.startsWith('{') && s.endsWith('}')) {
|
|
44
|
+
s = s.slice(1, -1).trim();
|
|
45
|
+
}
|
|
46
|
+
var dialect = null;
|
|
47
|
+
var name;
|
|
48
|
+
if (s.startsWith('[')) {
|
|
49
|
+
var closing = s.indexOf(']');
|
|
50
|
+
if (closing > 0) {
|
|
51
|
+
dialect = s.slice(1, closing).trim(); // e.g. "2005"
|
|
52
|
+
name = s.slice(closing + 1).trim(); // e.g. "Ada"
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
// Malformed: "[" without closing "]" → treat whole string as language name
|
|
56
|
+
name = s;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
name = s;
|
|
61
|
+
}
|
|
62
|
+
var hlName = name ? ((_a = consts_1.LST_HLJS_LANGUAGES[name.toLowerCase()]) !== null && _a !== void 0 ? _a : name) : '';
|
|
63
|
+
return { name: name, dialect: dialect, hlName: hlName };
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Apply LaTeX lstlisting-like options to a Markdown-It token.
|
|
67
|
+
*
|
|
68
|
+
* - Parses raw lst options into a structured attributes object.
|
|
69
|
+
* - Parses `language` into `{ name, dialect }` via `parseLstLanguage`.
|
|
70
|
+
* - Stores all attributes under `token.meta.attributes`.
|
|
71
|
+
* - If `mathescape` is enabled, replaces `token.children` with a math-aware
|
|
72
|
+
* inline parse of the code content (no links/emphasis).
|
|
73
|
+
*
|
|
74
|
+
* This function mutates the given token in-place.
|
|
75
|
+
*/
|
|
76
|
+
var applyLstListingOptionsToToken = function (token, content, opts, state) {
|
|
77
|
+
var _a, _b;
|
|
78
|
+
if (!opts)
|
|
79
|
+
return;
|
|
80
|
+
var attributes = (_a = (0, parse_attribures_1.parseAttributes)(opts)) !== null && _a !== void 0 ? _a : {};
|
|
81
|
+
var languageValue = typeof attributes.language === 'string'
|
|
82
|
+
? attributes.language
|
|
83
|
+
: null;
|
|
84
|
+
var parsedLanguage = languageValue
|
|
85
|
+
? parseLstLanguage(languageValue)
|
|
86
|
+
: null;
|
|
87
|
+
var meta = (_b = token.meta) !== null && _b !== void 0 ? _b : (token.meta = {});
|
|
88
|
+
meta.language = parsedLanguage;
|
|
89
|
+
if (attributes.mathescape) {
|
|
90
|
+
// parse only math inside the code (no links/emphasis)
|
|
91
|
+
token.children = (0, parse_math_escape_inline_1.parseMathEscapeInline)(state.md, content, state.env);
|
|
92
|
+
meta.hasMathescape = true;
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
exports.applyLstListingOptionsToToken = applyLstListingOptionsToToken;
|
|
96
|
+
//# sourceMappingURL=lstlisting-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lstlisting-options.js","sourceRoot":"","sources":["../../../src/markdown/md-latex-lstlisting-env/lstlisting-options.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type Token from 'markdown-it/lib/token';
|
|
2
|
+
/**
|
|
3
|
+
* Create (or retrieve from cache) a Markdown-It instance configured to parse ONLY
|
|
4
|
+
* inline math and plain text. This keeps the behavior consistent with `baseMd` options
|
|
5
|
+
* (html, breaks, typographer, etc.), but strips all other inline rules.
|
|
6
|
+
*
|
|
7
|
+
* Order matters:
|
|
8
|
+
* 1) multiMath (handles \[, \(, \begin{...})
|
|
9
|
+
* 2) simpleMath (handles $...$ / $$...$$)
|
|
10
|
+
* 3) text fallback
|
|
11
|
+
*/
|
|
12
|
+
export declare const createMathOnlyInlineParser: (baseMd: MarkdownIt) => MarkdownIt;
|
|
13
|
+
/**
|
|
14
|
+
* Parse a string with ONLY math inline rules enabled.
|
|
15
|
+
*
|
|
16
|
+
* @param baseMd Original Markdown-It instance (its options are reused).
|
|
17
|
+
* @param src Raw source to parse (e.g., the inside of lstlisting with mathescape).
|
|
18
|
+
* @param env Environment object; it will be shallow-cloned and augmented with `mathescape_ctx: true`.
|
|
19
|
+
* @returns Array of tokens containing only text + inline/display math tokens.
|
|
20
|
+
*/
|
|
21
|
+
export declare const parseMathEscapeInline: (baseMd: MarkdownIt, src: string, env?: {}) => Token[];
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseMathEscapeInline = exports.createMathOnlyInlineParser = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var mdPluginRaw_1 = require("../mdPluginRaw");
|
|
6
|
+
/**
|
|
7
|
+
* Cache for math-only inline parsers keyed by the base MarkdownIt instance.
|
|
8
|
+
* Avoids re-allocating a new parser on every call.
|
|
9
|
+
*/
|
|
10
|
+
var MATH_INLINE_CACHE = new WeakMap();
|
|
11
|
+
/**
|
|
12
|
+
* Create (or retrieve from cache) a Markdown-It instance configured to parse ONLY
|
|
13
|
+
* inline math and plain text. This keeps the behavior consistent with `baseMd` options
|
|
14
|
+
* (html, breaks, typographer, etc.), but strips all other inline rules.
|
|
15
|
+
*
|
|
16
|
+
* Order matters:
|
|
17
|
+
* 1) multiMath (handles \[, \(, \begin{...})
|
|
18
|
+
* 2) simpleMath (handles $...$ / $$...$$)
|
|
19
|
+
* 3) text fallback
|
|
20
|
+
*/
|
|
21
|
+
var createMathOnlyInlineParser = function (baseMd) {
|
|
22
|
+
var cached = MATH_INLINE_CACHE.get(baseMd);
|
|
23
|
+
if (cached)
|
|
24
|
+
return cached;
|
|
25
|
+
// Reuse base options, but do not copy plugins/rules — we install only math rules below.
|
|
26
|
+
// This is cleaner than `new (baseMd as any).constructor(...)` and keeps typing intact.
|
|
27
|
+
var BaseMdCtor = baseMd.constructor;
|
|
28
|
+
var mathMd = new BaseMdCtor(baseMd.options);
|
|
29
|
+
// Register math rules right before "text" to ensure correct precedence.
|
|
30
|
+
mathMd.inline.ruler.before('text', 'multiMath', mdPluginRaw_1.multiMath);
|
|
31
|
+
mathMd.inline.ruler.before('text', 'simpleMath', mdPluginRaw_1.simpleMath);
|
|
32
|
+
// Enable only our two math rules + the default "text" rule.
|
|
33
|
+
mathMd.inline.ruler.enableOnly(['multiMath', 'simpleMath', 'text']);
|
|
34
|
+
MATH_INLINE_CACHE.set(baseMd, mathMd);
|
|
35
|
+
return mathMd;
|
|
36
|
+
};
|
|
37
|
+
exports.createMathOnlyInlineParser = createMathOnlyInlineParser;
|
|
38
|
+
/**
|
|
39
|
+
* Parse a string with ONLY math inline rules enabled.
|
|
40
|
+
*
|
|
41
|
+
* @param baseMd Original Markdown-It instance (its options are reused).
|
|
42
|
+
* @param src Raw source to parse (e.g., the inside of lstlisting with mathescape).
|
|
43
|
+
* @param env Environment object; it will be shallow-cloned and augmented with `mathescape_ctx: true`.
|
|
44
|
+
* @returns Array of tokens containing only text + inline/display math tokens.
|
|
45
|
+
*/
|
|
46
|
+
var parseMathEscapeInline = function (baseMd, src, env) {
|
|
47
|
+
if (env === void 0) { env = {}; }
|
|
48
|
+
var mathMd = (0, exports.createMathOnlyInlineParser)(baseMd);
|
|
49
|
+
var tokens = [];
|
|
50
|
+
var envClone = tslib_1.__assign(tslib_1.__assign({}, env), { mathescape_ctx: true });
|
|
51
|
+
mathMd.inline.parse(src, mathMd, envClone, tokens);
|
|
52
|
+
return tokens;
|
|
53
|
+
};
|
|
54
|
+
exports.parseMathEscapeInline = parseMathEscapeInline;
|
|
55
|
+
//# sourceMappingURL=parse-math-escape-inline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-math-escape-inline.js","sourceRoot":"","sources":["../../../src/markdown/md-latex-lstlisting-env/parse-math-escape-inline.ts"],"names":[],"mappings":";;;;AAEA,8CAAuD;AAEvD;;;GAGG;AACH,IAAM,iBAAiB,GAAG,IAAI,OAAO,EAA0B,CAAC;AAIhE;;;;;;;;;GASG;AACI,IAAM,0BAA0B,GAAG,UAAC,MAAkB;IAC3D,IAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,wFAAwF;IACxF,uFAAuF;IACvF,IAAM,UAAU,GAA2B,MAAc,CAAC,WAAoC,CAAC;IAC/F,IAAM,MAAM,GAAe,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1D,wEAAwE;IACxE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,uBAAS,CAAC,CAAC;IAC3D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,wBAAU,CAAC,CAAC;IAC7D,4DAA4D;IAC5D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IACpE,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC;AAChB,CAAC,CAAA;AAdY,QAAA,0BAA0B,8BActC;AAED;;;;;;;GAOG;AACI,IAAM,qBAAqB,GAAG,UACnC,MAAkB,EAClB,GAAW,EACX,GAAQ;IAAR,oBAAA,EAAA,QAAQ;IAER,IAAM,MAAM,GAAe,IAAA,kCAA0B,EAAC,MAAM,CAAC,CAAC;IAC9D,IAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,IAAM,QAAQ,yCAAQ,GAAG,KAAE,cAAc,EAAE,IAAI,GAAE,CAAC;IAClD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAA;AAVY,QAAA,qBAAqB,yBAUjC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Token } from "markdown-it";
|
|
2
|
+
/**
|
|
3
|
+
* Create a Markdown-It renderer for LaTeX `lstlisting` environments.
|
|
4
|
+
*
|
|
5
|
+
* Behavior:
|
|
6
|
+
* - Always delegates rendering of the token content to `renderCodeWithMathHighlighted`
|
|
7
|
+
* (handles both plain code and tokens with math-aware children; also builds TSV/CSV).
|
|
8
|
+
* - If the returned HTML starts with a full `<pre...>` block (e.g. provided by an external highlighter),
|
|
9
|
+
* it is returned as-is with a trailing newline.
|
|
10
|
+
* - Otherwise, the result is wrapped into `<pre><code ...>` and a language class
|
|
11
|
+
* `options.langPrefix + langName` is gently injected by cloning token attrs (the original token is not mutated).
|
|
12
|
+
*
|
|
13
|
+
* @param md Markdown-It instance (used for highlighting and rendering).
|
|
14
|
+
* @returns A renderer function `(tokens, idx, options, env, slf) => string` for `latex_lstlisting_env`.
|
|
15
|
+
*/
|
|
16
|
+
export declare const makeLatexLstlistingEnvRendererWithMd: (md: MarkdownIt) => (tokens: Token[], idx: number, options: Record<string, any>, env: Record<string, any>, slf: Renderer) => string;
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeLatexLstlistingEnvRendererWithMd = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var escapeHtml = require('markdown-it/lib/common/utils').escapeHtml;
|
|
6
|
+
var NEWLINE_RE = /\r?\n/g;
|
|
7
|
+
/**
|
|
8
|
+
* Render a code token (block or inline) with optional syntax highlighting and math-aware children.
|
|
9
|
+
*
|
|
10
|
+
* Behavior:
|
|
11
|
+
* - If the token has `children`, iterates through them:
|
|
12
|
+
* - `text` children are highlighted with `md.options.highlight(langName)` when available,
|
|
13
|
+
* otherwise HTML-escaped.
|
|
14
|
+
* - non-`text` children are rendered via `md.renderer.renderInline` (e.g., math spans),
|
|
15
|
+
* while their plain-text projections are taken from `child.ascii*` fields.
|
|
16
|
+
* - If the token has no `children`, highlights/escapes `token.content` as a single chunk.
|
|
17
|
+
* - Builds plain-text TSV/CSV strings from the rendered pieces (newlines are replaced with spaces)
|
|
18
|
+
* and stores them into `token.tsv` / `token.csv` (arrays with a single string).
|
|
19
|
+
*
|
|
20
|
+
* Notes:
|
|
21
|
+
* - The function mutates `token.tsv` and `token.csv`.
|
|
22
|
+
* - If the highlighter throws or returns a falsy value, the raw text is HTML-escaped.
|
|
23
|
+
*
|
|
24
|
+
* @param token Markdown-It token representing the code fragment.
|
|
25
|
+
* @param md Markdown-It instance (used for highlighting and rendering).
|
|
26
|
+
* @param langName Language name passed to the highlighter (may be empty).
|
|
27
|
+
* @param options Renderer options forwarded to `renderInline` for non-text children.
|
|
28
|
+
* @param env Rendering environment forwarded to `renderInline`.
|
|
29
|
+
* @returns HTML string produced from the token content (children-aware).
|
|
30
|
+
*/
|
|
31
|
+
var renderCodeWithMathHighlighted = function (token, md, langName, options, env) {
|
|
32
|
+
var e_1, _a;
|
|
33
|
+
var _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
34
|
+
if (options === void 0) { options = {}; }
|
|
35
|
+
if (env === void 0) { env = {}; }
|
|
36
|
+
var children = (_b = token.children) !== null && _b !== void 0 ? _b : [];
|
|
37
|
+
var partsHtml = [];
|
|
38
|
+
var partsTsv = [];
|
|
39
|
+
var partsCsv = [];
|
|
40
|
+
if (children.length > 0) {
|
|
41
|
+
try {
|
|
42
|
+
for (var children_1 = tslib_1.__values(children), children_1_1 = children_1.next(); !children_1_1.done; children_1_1 = children_1.next()) {
|
|
43
|
+
var child = children_1_1.value;
|
|
44
|
+
if (child.type === 'text') {
|
|
45
|
+
var raw = (_c = child.content) !== null && _c !== void 0 ? _c : '';
|
|
46
|
+
try {
|
|
47
|
+
var highlighted = (((_d = md.options) === null || _d === void 0 ? void 0 : _d.highlight) && typeof md.options.highlight === 'function')
|
|
48
|
+
? (md.options.highlight(raw, langName) || escapeHtml(raw)) // <-- raw code в highlight
|
|
49
|
+
: escapeHtml(raw);
|
|
50
|
+
partsHtml.push(highlighted);
|
|
51
|
+
}
|
|
52
|
+
catch (_l) {
|
|
53
|
+
partsHtml.push(escapeHtml(raw));
|
|
54
|
+
}
|
|
55
|
+
partsTsv.push(raw);
|
|
56
|
+
partsCsv.push(raw);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
var mathHtml = md.renderer.renderInline([child], options, env);
|
|
60
|
+
if ((options === null || options === void 0 ? void 0 : options.forDocx) && mathHtml) {
|
|
61
|
+
mathHtml = mathHtml
|
|
62
|
+
.split(/\r?\n/)
|
|
63
|
+
.map(function (line) { return line.trim(); })
|
|
64
|
+
.join('');
|
|
65
|
+
}
|
|
66
|
+
partsHtml.push(mathHtml);
|
|
67
|
+
partsTsv.push((_f = (_e = child.ascii_tsv) !== null && _e !== void 0 ? _e : child.ascii) !== null && _f !== void 0 ? _f : '');
|
|
68
|
+
partsCsv.push((_h = (_g = child.ascii_csv) !== null && _g !== void 0 ? _g : child.ascii) !== null && _h !== void 0 ? _h : '');
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
73
|
+
finally {
|
|
74
|
+
try {
|
|
75
|
+
if (children_1_1 && !children_1_1.done && (_a = children_1.return)) _a.call(children_1);
|
|
76
|
+
}
|
|
77
|
+
finally { if (e_1) throw e_1.error; }
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
var raw = (_j = token.content) !== null && _j !== void 0 ? _j : '';
|
|
82
|
+
var highlighted = (((_k = md.options) === null || _k === void 0 ? void 0 : _k.highlight) && typeof md.options.highlight === 'function')
|
|
83
|
+
? (md.options.highlight(raw, langName) || escapeHtml(raw)) // <-- raw code в highlight
|
|
84
|
+
: escapeHtml(raw);
|
|
85
|
+
partsHtml.push(highlighted);
|
|
86
|
+
partsTsv.push(raw);
|
|
87
|
+
partsCsv.push(raw);
|
|
88
|
+
}
|
|
89
|
+
var tsv = partsTsv.join('').replace(NEWLINE_RE, ' ');
|
|
90
|
+
var csv = partsCsv.join('').replace(NEWLINE_RE, ' ');
|
|
91
|
+
token.tsv = [tsv];
|
|
92
|
+
token.csv = [csv];
|
|
93
|
+
var html = partsHtml.join('');
|
|
94
|
+
if (options.forPptx) {
|
|
95
|
+
return html.replace(NEWLINE_RE, '<br><span class="br-break"></span>');
|
|
96
|
+
}
|
|
97
|
+
return html;
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* Create a Markdown-It renderer for LaTeX `lstlisting` environments.
|
|
101
|
+
*
|
|
102
|
+
* Behavior:
|
|
103
|
+
* - Always delegates rendering of the token content to `renderCodeWithMathHighlighted`
|
|
104
|
+
* (handles both plain code and tokens with math-aware children; also builds TSV/CSV).
|
|
105
|
+
* - If the returned HTML starts with a full `<pre...>` block (e.g. provided by an external highlighter),
|
|
106
|
+
* it is returned as-is with a trailing newline.
|
|
107
|
+
* - Otherwise, the result is wrapped into `<pre><code ...>` and a language class
|
|
108
|
+
* `options.langPrefix + langName` is gently injected by cloning token attrs (the original token is not mutated).
|
|
109
|
+
*
|
|
110
|
+
* @param md Markdown-It instance (used for highlighting and rendering).
|
|
111
|
+
* @returns A renderer function `(tokens, idx, options, env, slf) => string` for `latex_lstlisting_env`.
|
|
112
|
+
*/
|
|
113
|
+
var makeLatexLstlistingEnvRendererWithMd = function (md) {
|
|
114
|
+
return function (tokens, idx, options, env, slf) {
|
|
115
|
+
var _a, _b, _c;
|
|
116
|
+
if (options === void 0) { options = {}; }
|
|
117
|
+
if (env === void 0) { env = {}; }
|
|
118
|
+
var token = tokens[idx];
|
|
119
|
+
var langName = (_c = (_b = (_a = token.meta) === null || _a === void 0 ? void 0 : _a.language) === null || _b === void 0 ? void 0 : _b.hlName) !== null && _c !== void 0 ? _c : '';
|
|
120
|
+
var highlighted = renderCodeWithMathHighlighted(token, md, langName, options, env);
|
|
121
|
+
if (highlighted.indexOf('<pre') === 0) {
|
|
122
|
+
return highlighted + '\n';
|
|
123
|
+
}
|
|
124
|
+
var styleValue = 'text-align: left;';
|
|
125
|
+
// If language exists, inject class gently, without modifying original token.
|
|
126
|
+
// May be, one day we will add .clone() for token and simplify this part, but
|
|
127
|
+
// now we prefer to keep things local.
|
|
128
|
+
var classes = ['lstlisting-code'];
|
|
129
|
+
if (langName) {
|
|
130
|
+
classes.push(options.langPrefix + langName);
|
|
131
|
+
}
|
|
132
|
+
var attrs = token.attrs ? token.attrs.map(function (_a) {
|
|
133
|
+
var _b = tslib_1.__read(_a, 2), k = _b[0], v = _b[1];
|
|
134
|
+
return [k, v];
|
|
135
|
+
}) : [];
|
|
136
|
+
// handle `class` attribute
|
|
137
|
+
var classIndex = token.attrIndex('class');
|
|
138
|
+
var className = classes.join(' ');
|
|
139
|
+
if (classIndex < 0) {
|
|
140
|
+
attrs.push(['class', className]);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
attrs[classIndex][1] += ' ' + className;
|
|
144
|
+
}
|
|
145
|
+
// handle `style` attribute (if provided as value)
|
|
146
|
+
if (styleValue) {
|
|
147
|
+
var styleIndex = token.attrIndex('style');
|
|
148
|
+
if (styleIndex < 0) {
|
|
149
|
+
attrs.push(['style', styleValue]);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
attrs[styleIndex][1] += '; ' + styleValue;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// Fake token just to render attributes
|
|
156
|
+
var fakeToken = { attrs: attrs };
|
|
157
|
+
return '<pre class="lstlisting"><code'
|
|
158
|
+
+ slf.renderAttrs(fakeToken)
|
|
159
|
+
+ '>'
|
|
160
|
+
+ highlighted
|
|
161
|
+
+ '</code></pre>\n';
|
|
162
|
+
};
|
|
163
|
+
};
|
|
164
|
+
exports.makeLatexLstlistingEnvRendererWithMd = makeLatexLstlistingEnvRendererWithMd;
|
|
165
|
+
//# sourceMappingURL=render-latex-lstlisting-env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-latex-lstlisting-env.js","sourceRoot":"","sources":["../../../src/markdown/md-latex-lstlisting-env/render-latex-lstlisting-env.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,12 @@ var rules_1 = require("./rules");
|
|
|
6
6
|
var consts_1 = require("./common/consts");
|
|
7
7
|
var clipboard_copy_element_1 = require("../copy-to-clipboard/clipboard-copy-element");
|
|
8
8
|
var separating_span_1 = require("./common/separating-span");
|
|
9
|
+
// Match the first <code ...> opening tag and capture its attributes part.
|
|
10
|
+
var CODE_TAG_RE = /<code([^>]*)>/;
|
|
11
|
+
// Match a class attribute: class="..." | class='...' | class=bare
|
|
12
|
+
var CLASS_ATTR_RE = /\sclass=("([^"]*)"|'([^']*)'|([^\s"'>]+))/;
|
|
13
|
+
// Check if "hljs" is already present as a separate class name.
|
|
14
|
+
var HLJS_CLASS_RE = /\bhljs\b/;
|
|
9
15
|
var maybe = function (f) {
|
|
10
16
|
try {
|
|
11
17
|
return f();
|
|
@@ -33,23 +39,49 @@ var highlightAuto = function (code, lang, originalHighlight) {
|
|
|
33
39
|
// Looks up a language by name or alias.
|
|
34
40
|
// Returns the language object if found, undefined otherwise.
|
|
35
41
|
var langObj = highlight_js_1.default.getLanguage(lang);
|
|
36
|
-
if (langObj === undefined) {
|
|
42
|
+
if (lang && langObj === undefined) {
|
|
37
43
|
return typeof originalHighlight === 'function' ? originalHighlight(code, lang) : '';
|
|
38
44
|
}
|
|
39
|
-
if (lang.toLowerCase() === 'latex')
|
|
45
|
+
if ((lang === null || lang === void 0 ? void 0 : lang.toLowerCase()) === 'latex')
|
|
40
46
|
lang = 'tex';
|
|
41
47
|
return lang
|
|
42
48
|
? highlight(code, lang)
|
|
43
49
|
: maybe(function () { return highlight_js_1.default.highlightAuto(code).value; }) || '';
|
|
44
50
|
};
|
|
51
|
+
/**
|
|
52
|
+
* Ensures that the first <code> tag in the HTML string contains the "hljs" class.
|
|
53
|
+
*
|
|
54
|
+
* - If <code> already has a class attribute → prepend "hljs" unless it is already present.
|
|
55
|
+
* - If <code> has no class attribute → inject class="hljs" while preserving all other attributes.
|
|
56
|
+
* - Works with cases like:
|
|
57
|
+
* <code>, <code class="...">, <code style="...">, <code class="..." style="...">
|
|
58
|
+
*
|
|
59
|
+
* @param html - The HTML string containing a <code> element.
|
|
60
|
+
* @returns Modified HTML string with "hljs" injected into the first <code> tag.
|
|
61
|
+
*/
|
|
62
|
+
var addHljsClass = function (html) {
|
|
63
|
+
return html.replace(CODE_TAG_RE, function (match, attrs) {
|
|
64
|
+
var classMatch = attrs.match(CLASS_ATTR_RE);
|
|
65
|
+
if (classMatch) {
|
|
66
|
+
var full = classMatch[0];
|
|
67
|
+
var value = classMatch[2] || classMatch[3] || classMatch[4] || '';
|
|
68
|
+
if (HLJS_CLASS_RE.test(value)) {
|
|
69
|
+
return match;
|
|
70
|
+
}
|
|
71
|
+
var newValue = value ? "hljs ".concat(value) : 'hljs';
|
|
72
|
+
var newClassAttr = " class=\"".concat(newValue, "\"");
|
|
73
|
+
var newAttrs = attrs.replace(full, newClassAttr);
|
|
74
|
+
return "<code".concat(newAttrs, ">");
|
|
75
|
+
}
|
|
76
|
+
return "<code class=\"hljs\"".concat(attrs, ">");
|
|
77
|
+
});
|
|
78
|
+
};
|
|
45
79
|
// Wrap a render function to add `hljs` class to code blocks.
|
|
46
80
|
// const wrap = render => (...args) => {
|
|
47
81
|
var wrapFence = function (render) { return function (tokens, idx, options, env, slf) {
|
|
48
82
|
var _a;
|
|
49
83
|
var html = render.apply(render, [tokens, idx, options, env, slf]);
|
|
50
|
-
html = html
|
|
51
|
-
.replace('<code class="', '<code class="hljs ')
|
|
52
|
-
.replace('<code>', '<code class="hljs">');
|
|
84
|
+
html = addHljsClass(html);
|
|
53
85
|
var htmlMol = '';
|
|
54
86
|
if (tokens[idx].info === "mol" && ((_a = options === null || options === void 0 ? void 0 : options.outMath) === null || _a === void 0 ? void 0 : _a.include_mol)) {
|
|
55
87
|
htmlMol = '<mol style="display: none;">' + tokens[idx].content + '</mol>';
|
|
@@ -98,6 +130,53 @@ var wrapFence = function (render) { return function (tokens, idx, options, env,
|
|
|
98
130
|
}
|
|
99
131
|
return html;
|
|
100
132
|
}; };
|
|
133
|
+
// Wrap a render function to add `hljs` class to code blocks.
|
|
134
|
+
// const wrap = render => (...args) => {
|
|
135
|
+
var wrapLatexCodeEnv = function (render) { return function (tokens, idx, options, env, slf) {
|
|
136
|
+
var html = render.apply(render, [tokens, idx, options, env, slf]);
|
|
137
|
+
html = addHljsClass(html);
|
|
138
|
+
if (options === null || options === void 0 ? void 0 : options.lineNumbering) {
|
|
139
|
+
var line = void 0, endLine = void 0, listLine = void 0;
|
|
140
|
+
if (tokens[idx].map && tokens[idx].level === 0) {
|
|
141
|
+
line = options.startLine + tokens[idx].map[0];
|
|
142
|
+
endLine = options.startLine + tokens[idx].map[1];
|
|
143
|
+
listLine = [];
|
|
144
|
+
for (var i = line; i < endLine; i++) {
|
|
145
|
+
listLine.push(i);
|
|
146
|
+
}
|
|
147
|
+
tokens[idx].attrJoin("class", rules_1.PREVIEW_PARAGRAPH_PREFIX + String(line)
|
|
148
|
+
+ ' ' + rules_1.PREVIEW_LINE_CLASS + ' ' + listLine.join(' '));
|
|
149
|
+
tokens[idx].attrJoin("data_line_start", "".concat(String(line)));
|
|
150
|
+
tokens[idx].attrJoin("data_line_end", "".concat(String(endLine - 1)));
|
|
151
|
+
tokens[idx].attrJoin("data_line", "".concat(String([line, endLine])));
|
|
152
|
+
tokens[idx].attrJoin("count_line", "".concat(String(endLine - line)));
|
|
153
|
+
if (options.copyToClipboard) {
|
|
154
|
+
tokens[idx].attrJoin("style", "overflow: auto; position: relative;");
|
|
155
|
+
var htmlClipboardCopy = (0, clipboard_copy_element_1.clipboardCopyElement)(tokens[idx].content);
|
|
156
|
+
html = '<div ' + slf.renderAttrs(tokens[idx]) + '>' + html + htmlClipboardCopy + '</div>';
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
html = html.replace('<pre>', '<pre' + slf.renderAttrs(tokens[idx]) + '>');
|
|
160
|
+
}
|
|
161
|
+
return html;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
if (options.copyToClipboard || options.previewUuid) {
|
|
165
|
+
tokens[idx].attrJoin("style", "overflow: auto; position: relative;");
|
|
166
|
+
var htmlClipboardCopy = options.copyToClipboard
|
|
167
|
+
? (0, clipboard_copy_element_1.clipboardCopyElement)(tokens[idx].content)
|
|
168
|
+
: "";
|
|
169
|
+
var htmlSeparatingSpan = options.previewUuid && tokens[idx].contentSpan
|
|
170
|
+
? (0, separating_span_1.getHtmlSeparatingSpanContainer)(tokens[idx].contentSpan)
|
|
171
|
+
: "";
|
|
172
|
+
html = '<div ' + slf.renderAttrs(tokens[idx]) + '>'
|
|
173
|
+
+ html
|
|
174
|
+
+ htmlSeparatingSpan
|
|
175
|
+
+ htmlClipboardCopy
|
|
176
|
+
+ '</div>';
|
|
177
|
+
}
|
|
178
|
+
return html;
|
|
179
|
+
}; };
|
|
101
180
|
var highlight_code_block = function (tokens, idx, options, env, slf) {
|
|
102
181
|
var token = tokens[idx];
|
|
103
182
|
var _a = options.codeHighlight, codeHighlight = _a === void 0 ? {} : _a;
|
|
@@ -121,6 +200,7 @@ var highlightjs = function (md, opts) {
|
|
|
121
200
|
? highlightAuto(code, lang, originalHighlight)
|
|
122
201
|
: highlight(code, lang, originalHighlight); };
|
|
123
202
|
md.renderer.rules.fence = wrapFence(md.renderer.rules.fence);
|
|
203
|
+
md.renderer.rules.latex_lstlisting_env = wrapLatexCodeEnv(md.renderer.rules.latex_lstlisting_env);
|
|
124
204
|
if (opts.code) {
|
|
125
205
|
md.renderer.rules.code_block = ((_a = md.options) === null || _a === void 0 ? void 0 : _a.lineNumbering)
|
|
126
206
|
? wrap(rules_1.code_block_injectLineNumbers)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mdHighlightCodePlugin.js","sourceRoot":"","sources":["../../src/markdown/mdHighlightCodePlugin.ts"],"names":[],"mappings":";;AAAA,6CAAgC;AAChC,IAAM,UAAU,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC,UAAU,CAAC;AACtE,iCAAqG;AACrG,0CAAmD;AACnD,sFAAmF;AACnF,4DAA0E;AAE1E,IAAM,KAAK,GAAG,UAAA,CAAC;IACb,IAAI;QACF,OAAO,CAAC,EAAE,CAAA;KACX;IAAC,OAAO,CAAC,EAAE;QACV,OAAO,KAAK,CAAA;KACb;AACH,CAAC,CAAC;AAEF,iCAAiC;AACjC,IAAM,SAAS,GAAG,UAAC,IAAY,EAAE,IAAY,EAAE,iBAAkB;IAC/D,wCAAwC;IACxC,6DAA6D;IAC7D,IAAI,OAAO,GAAG,sBAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,OAAO,KAAK,SAAS,EAAE;QACzB,OAAO,OAAO,iBAAiB,KAAK,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACrF;IACD,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO;QAAE,IAAI,GAAG,KAAK,CAAC;IACjD,OAAO,KAAK,CAAC,cAAM,OAAA,sBAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAC,CAAC,CAAC,KAAK,EAAlE,CAAkE,CAAC,IAAI,EAAE,CAAA;AAC9F,CAAC,CAAC;AAEF,kDAAkD;AAClD,IAAM,aAAa,GAAG,UAAC,IAAY,EAAE,IAAY,EAAE,iBAAkB;IACnE,wCAAwC;IACxC,6DAA6D;IAC7D,IAAI,OAAO,GAAG,sBAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,OAAO,KAAK,SAAS,EAAE;
|
|
1
|
+
{"version":3,"file":"mdHighlightCodePlugin.js","sourceRoot":"","sources":["../../src/markdown/mdHighlightCodePlugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import pluginLatexCodeEnvs from "./md-latex-lstlisting-env";
|
|
1
2
|
/**
|
|
2
3
|
* configured custom mathjax plugin
|
|
3
4
|
*/
|
|
@@ -21,3 +22,4 @@ export declare const mdPluginSvgToBase64: (md: MarkdownIt, options: any) => void
|
|
|
21
22
|
export declare const mdPluginCollapsible: (md: any) => void;
|
|
22
23
|
export declare const mdSetPositionsAndHighlight: (md: MarkdownIt, options: any) => void;
|
|
23
24
|
export declare const mdLatexFootnotes: (md: MarkdownIt, options: any) => void;
|
|
25
|
+
export declare const mdPluginLatexCodeEnvs: typeof pluginLatexCodeEnvs;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.mdLatexFootnotes = exports.mdSetPositionsAndHighlight = exports.mdPluginCollapsible = exports.mdPluginSvgToBase64 = exports.mdPluginChemistry = exports.mdPluginList = exports.mdPluginTableTabular = exports.mdPluginAnchor = exports.mdPluginTOC = exports.mdPluginHighlightCode = exports.mdPluginText = exports.mdPluginMathJax = void 0;
|
|
3
|
+
exports.mdPluginLatexCodeEnvs = exports.mdLatexFootnotes = exports.mdSetPositionsAndHighlight = exports.mdPluginCollapsible = exports.mdPluginSvgToBase64 = exports.mdPluginChemistry = exports.mdPluginList = exports.mdPluginTableTabular = exports.mdPluginAnchor = exports.mdPluginTOC = exports.mdPluginHighlightCode = exports.mdPluginText = exports.mdPluginMathJax = void 0;
|
|
4
4
|
var mdPluginRaw_1 = require("./mdPluginRaw");
|
|
5
5
|
var mdPluginText_1 = require("./mdPluginText");
|
|
6
6
|
var mdHighlightCodePlugin_1 = require("./mdHighlightCodePlugin");
|
|
@@ -13,6 +13,7 @@ var md_chemistry_1 = require("./md-chemistry");
|
|
|
13
13
|
var md_svg_to_base64_1 = require("./md-svg-to-base64");
|
|
14
14
|
var mdSetPositionsAndHighlight_1 = require("./mdSetPositionsAndHighlight");
|
|
15
15
|
var md_latex_footnotes_1 = require("./md-latex-footnotes");
|
|
16
|
+
var md_latex_lstlisting_env_1 = require("./md-latex-lstlisting-env");
|
|
16
17
|
/**
|
|
17
18
|
* configured custom mathjax plugin
|
|
18
19
|
*/
|
|
@@ -31,4 +32,5 @@ exports.mdPluginSvgToBase64 = md_svg_to_base64_1.default;
|
|
|
31
32
|
exports.mdPluginCollapsible = mdPluginCollapsible_1.default;
|
|
32
33
|
exports.mdSetPositionsAndHighlight = mdSetPositionsAndHighlight_1.default;
|
|
33
34
|
exports.mdLatexFootnotes = md_latex_footnotes_1.default;
|
|
35
|
+
exports.mdPluginLatexCodeEnvs = md_latex_lstlisting_env_1.default;
|
|
34
36
|
//# sourceMappingURL=mdPluginConfigured.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mdPluginConfigured.js","sourceRoot":"","sources":["../../src/markdown/mdPluginConfigured.ts"],"names":[],"mappings":";;;AAAA,6CAA0C;AAC1C,+CAAwC;AACxC,iEAAsD;AACtD,6CAAsC;AACtC,mDAA4C;AAC5C,+DAAwD;AACxD,iDAA0C;AAC1C,6DAAsD;AACtD,+CAA6C;AAC7C,uDAAmD;AACnD,2EAA0E;AAC1E,2DAA6D;
|
|
1
|
+
{"version":3,"file":"mdPluginConfigured.js","sourceRoot":"","sources":["../../src/markdown/mdPluginConfigured.ts"],"names":[],"mappings":";;;AAAA,6CAA0C;AAC1C,+CAAwC;AACxC,iEAAsD;AACtD,6CAAsC;AACtC,mDAA4C;AAC5C,+DAAwD;AACxD,iDAA0C;AAC1C,6DAAsD;AACtD,+CAA6C;AAC7C,uDAAmD;AACnD,2EAA0E;AAC1E,2DAA6D;AAC7D,qEAA4D;AAE5D;;GAEG;AACU,QAAA,eAAe,GAAG,qBAAa,CAAC;AAE7C;;GAEG;AACU,QAAA,YAAY,GAAG,sBAAU,CAAC;AAC1B,QAAA,qBAAqB,GAAG,+BAAe,CAAC;AACxC,QAAA,WAAW,GAAG,qBAAS,CAAC;AACxB,QAAA,cAAc,GAAG,wBAAY,CAAC;AAC9B,QAAA,oBAAoB,GAAG,8BAAkB,CAAC;AAC1C,QAAA,YAAY,GAAG,uBAAW,CAAC;AAC3B,QAAA,iBAAiB,GAAG,sBAAe,CAAC;AACpC,QAAA,mBAAmB,GAAG,0BAAiB,CAAC;AAExC,QAAA,mBAAmB,GAAG,6BAAiB,CAAC;AACxC,QAAA,0BAA0B,GAAG,oCAA8B,CAAC;AAC5D,QAAA,gBAAgB,GAAG,4BAAyB,CAAC;AAC7C,QAAA,qBAAqB,GAAG,iCAAmB,CAAC"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { RuleInline } from 'markdown-it';
|
|
2
|
+
export declare const multiMath: RuleInline;
|
|
1
3
|
export declare const findEndMarkerPos: (str: string, endMarker: string, i: number) => number;
|
|
4
|
+
export declare const simpleMath: RuleInline;
|
|
2
5
|
declare const _default: (options: any) => (md: any) => void;
|
|
3
6
|
export default _default;
|