mathpix-markdown-it 2.0.29 → 2.0.31
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/es5/bundle.js +2 -2
- package/es5/index.js +2 -2
- package/lib/markdown/common/consts.d.ts +28 -0
- package/lib/markdown/common/consts.js +46 -2
- package/lib/markdown/common/consts.js.map +1 -1
- package/lib/markdown/md-block-rule/begin-tabular/parse-tabular.d.ts +5 -1
- package/lib/markdown/md-block-rule/begin-tabular/parse-tabular.js +15 -5
- package/lib/markdown/md-block-rule/begin-tabular/parse-tabular.js.map +1 -1
- package/lib/markdown/md-block-rule/helper.d.ts +16 -1
- package/lib/markdown/md-block-rule/helper.js +93 -16
- package/lib/markdown/md-block-rule/helper.js.map +1 -1
- package/lib/markdown/md-block-rule/renewcommand.js +1 -1
- package/lib/markdown/md-block-rule/renewcommand.js.map +1 -1
- package/lib/markdown/md-inline-rule/setcounter-section.js +1 -2
- package/lib/markdown/md-inline-rule/setcounter-section.js.map +1 -1
- package/lib/markdown/md-latex-lists-env/index.d.ts +16 -0
- package/lib/markdown/md-latex-lists-env/index.js +55 -0
- package/lib/markdown/md-latex-lists-env/index.js.map +1 -0
- package/lib/markdown/md-latex-lists-env/latex-list-common.d.ts +31 -0
- package/lib/markdown/md-latex-lists-env/latex-list-common.js +78 -0
- package/lib/markdown/md-latex-lists-env/latex-list-common.js.map +1 -0
- package/lib/markdown/md-latex-lists-env/latex-list-env-block.d.ts +13 -0
- package/lib/markdown/md-latex-lists-env/latex-list-env-block.js +295 -0
- package/lib/markdown/md-latex-lists-env/latex-list-env-block.js.map +1 -0
- package/lib/markdown/md-latex-lists-env/latex-list-env-inline.d.ts +59 -0
- package/lib/markdown/md-latex-lists-env/latex-list-env-inline.js +219 -0
- package/lib/markdown/md-latex-lists-env/latex-list-env-inline.js.map +1 -0
- package/lib/markdown/md-latex-lists-env/latex-list-items.d.ts +75 -0
- package/lib/markdown/md-latex-lists-env/latex-list-items.js +235 -0
- package/lib/markdown/md-latex-lists-env/latex-list-items.js.map +1 -0
- package/lib/markdown/md-latex-lists-env/latex-list-tokens.d.ts +74 -0
- package/lib/markdown/md-latex-lists-env/latex-list-tokens.js +290 -0
- package/lib/markdown/md-latex-lists-env/latex-list-tokens.js.map +1 -0
- package/lib/markdown/md-latex-lists-env/latex-list-types.d.ts +52 -0
- package/lib/markdown/md-latex-lists-env/latex-list-types.js +13 -0
- package/lib/markdown/md-latex-lists-env/latex-list-types.js.map +1 -0
- package/lib/markdown/md-latex-lists-env/list-state.d.ts +48 -0
- package/lib/markdown/md-latex-lists-env/list-state.js +86 -0
- package/lib/markdown/md-latex-lists-env/list-state.js.map +1 -0
- package/lib/markdown/md-latex-lists-env/re-level.d.ts +62 -0
- package/lib/markdown/md-latex-lists-env/re-level.js +172 -0
- package/lib/markdown/md-latex-lists-env/re-level.js.map +1 -0
- package/lib/markdown/md-latex-lists-env/render-latex-list-env.d.ts +55 -0
- package/lib/markdown/md-latex-lists-env/render-latex-list-env.js +556 -0
- package/lib/markdown/md-latex-lists-env/render-latex-list-env.js.map +1 -0
- package/lib/markdown/md-theorem/block-rule.js +11 -1
- package/lib/markdown/md-theorem/block-rule.js.map +1 -1
- package/lib/markdown/md-theorem/inline-rule.js +1 -2
- package/lib/markdown/md-theorem/inline-rule.js.map +1 -1
- package/lib/markdown/mdPluginConfigured.d.ts +2 -1
- package/lib/markdown/mdPluginConfigured.js +2 -2
- package/lib/markdown/mdPluginConfigured.js.map +1 -1
- package/lib/markdown/mdPluginText.js +2 -0
- package/lib/markdown/mdPluginText.js.map +1 -1
- package/lib/markdown/utils.d.ts +7 -0
- package/lib/markdown/utils.js +15 -1
- package/lib/markdown/utils.js.map +1 -1
- package/lib/styles/styles-lists.d.ts +1 -1
- package/lib/styles/styles-lists.js +1 -1
- package/lib/styles/styles-lists.js.map +1 -1
- package/package.json +1 -1
- package/lib/markdown/md-block-rule/lists/index.d.ts +0 -9
- package/lib/markdown/md-block-rule/lists/index.js +0 -637
- package/lib/markdown/md-block-rule/lists/index.js.map +0 -1
- package/lib/markdown/md-block-rule/lists/re-level.d.ts +0 -30
- package/lib/markdown/md-block-rule/lists/re-level.js +0 -162
- package/lib/markdown/md-block-rule/lists/re-level.js.map +0 -1
- package/lib/markdown/md-inline-rule/lists.d.ts +0 -5
- package/lib/markdown/md-inline-rule/lists.js +0 -174
- package/lib/markdown/md-inline-rule/lists.js.map +0 -1
- package/lib/markdown/md-renderer-rules/render-lists.d.ts +0 -7
- package/lib/markdown/md-renderer-rules/render-lists.js +0 -339
- package/lib/markdown/md-renderer-rules/render-lists.js.map +0 -1
- package/lib/markdown/mdPluginLists.js +0 -60
- package/lib/markdown/mdPluginLists.js.map +0 -1
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseSetCounterNumber = exports.closeOpenListItemIfNeeded = exports.applyListCloseState = exports.applyListOpenState = exports.getListTokenTypes = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var latex_list_types_1 = require("./latex-list-types");
|
|
6
|
+
var list_state_1 = require("./list-state");
|
|
7
|
+
var consts_1 = require("../common/consts");
|
|
8
|
+
/**
|
|
9
|
+
* Compute token types and HTML tag for a given LaTeX list type.
|
|
10
|
+
*/
|
|
11
|
+
var getListTokenTypes = function (listType) {
|
|
12
|
+
var isItemize = listType === latex_list_types_1.ListType.itemize;
|
|
13
|
+
return {
|
|
14
|
+
isItemize: isItemize,
|
|
15
|
+
openType: isItemize ? "itemize_list_open" : "enumerate_list_open",
|
|
16
|
+
closeType: isItemize ? "itemize_list_close" : "enumerate_list_close",
|
|
17
|
+
htmlTag: isItemize ? "ul" : "ol",
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
exports.getListTokenTypes = getListTokenTypes;
|
|
21
|
+
/**
|
|
22
|
+
* Apply state changes when opening a list environment.
|
|
23
|
+
*/
|
|
24
|
+
var applyListOpenState = function (state, listType, token) {
|
|
25
|
+
var _a;
|
|
26
|
+
var isTopLevel = state.parentType !== "itemize" && state.parentType !== "enumerate";
|
|
27
|
+
state.prentLevel = isTopLevel ? 0 : state.prentLevel + 1;
|
|
28
|
+
state.parentType = listType;
|
|
29
|
+
state.types = ((_a = state.types) === null || _a === void 0 ? void 0 : _a.length)
|
|
30
|
+
? tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(state.types), false), [listType], false) : [listType];
|
|
31
|
+
token.prentLevel = state.prentLevel;
|
|
32
|
+
// Register new list depth in internal list-level tracker
|
|
33
|
+
(0, list_state_1.enterListLevel)();
|
|
34
|
+
};
|
|
35
|
+
exports.applyListOpenState = applyListOpenState;
|
|
36
|
+
/**
|
|
37
|
+
* Apply state changes when closing a list environment.
|
|
38
|
+
*/
|
|
39
|
+
var applyListCloseState = function (state, token) {
|
|
40
|
+
if (typeof token.level === "number") {
|
|
41
|
+
token.level = Math.max(0, token.level - 1);
|
|
42
|
+
}
|
|
43
|
+
if (typeof state.level === "number") {
|
|
44
|
+
state.level = Math.max(0, state.level - 1);
|
|
45
|
+
}
|
|
46
|
+
state.prentLevel = Math.max(0, state.prentLevel - 1);
|
|
47
|
+
token.prentLevel = state.prentLevel;
|
|
48
|
+
// Update list-level nesting state
|
|
49
|
+
(0, list_state_1.leaveListLevel)();
|
|
50
|
+
};
|
|
51
|
+
exports.applyListCloseState = applyListCloseState;
|
|
52
|
+
/**
|
|
53
|
+
* Close an open <li> if the current list level reports open items.
|
|
54
|
+
*/
|
|
55
|
+
var closeOpenListItemIfNeeded = function (state) {
|
|
56
|
+
var listData = (0, list_state_1.getCurrentListLevelState)();
|
|
57
|
+
if ((listData === null || listData === void 0 ? void 0 : listData.openItems) && listData.openItems > 0) {
|
|
58
|
+
state.push("latex_list_item_close", "li", -1);
|
|
59
|
+
listData.openItems -= 1;
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
exports.closeOpenListItemIfNeeded = closeOpenListItemIfNeeded;
|
|
63
|
+
/**
|
|
64
|
+
* Parse a \setcounter match and return the "next" number (N+1),
|
|
65
|
+
* or null if the number is invalid.
|
|
66
|
+
*
|
|
67
|
+
* Assumes match[2] is the numeric argument of \setcounter.
|
|
68
|
+
*/
|
|
69
|
+
var parseSetCounterNumber = function (match) {
|
|
70
|
+
var _a, _b;
|
|
71
|
+
var raw = (_b = (_a = match[2]) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _b !== void 0 ? _b : "";
|
|
72
|
+
if (!raw || !consts_1.reNumber.test(raw)) {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
return Number(raw) + 1;
|
|
76
|
+
};
|
|
77
|
+
exports.parseSetCounterNumber = parseSetCounterNumber;
|
|
78
|
+
//# sourceMappingURL=latex-list-common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"latex-list-common.js","sourceRoot":"","sources":["../../../src/markdown/md-latex-lists-env/latex-list-common.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { RuleBlock } from 'markdown-it/lib/parser_block';
|
|
2
|
+
/**
|
|
3
|
+
* Block rule that parses LaTeX list environments:
|
|
4
|
+
* \begin{itemize} ... \end{itemize}
|
|
5
|
+
* \begin{enumerate} ... \end{enumerate}
|
|
6
|
+
*
|
|
7
|
+
* It:
|
|
8
|
+
* - detects list begin/end commands,
|
|
9
|
+
* - collects and splits \item content into logical items,
|
|
10
|
+
* - handles \setcounter and nested lists on the same line,
|
|
11
|
+
* - emits corresponding *_list_open, *_list_close, and list item tokens.
|
|
12
|
+
*/
|
|
13
|
+
export declare const Lists: RuleBlock;
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Lists = void 0;
|
|
4
|
+
var latex_list_tokens_1 = require("./latex-list-tokens");
|
|
5
|
+
var latex_list_items_1 = require("./latex-list-items");
|
|
6
|
+
var re_level_1 = require("./re-level");
|
|
7
|
+
var latex_list_types_1 = require("./latex-list-types");
|
|
8
|
+
var latex_list_common_1 = require("./latex-list-common");
|
|
9
|
+
var consts_1 = require("../common/consts");
|
|
10
|
+
/**
|
|
11
|
+
* Try to handle an inline `\begin{lstlisting}` on the given line.
|
|
12
|
+
*
|
|
13
|
+
* Behavior:
|
|
14
|
+
* - If already inside a lstlisting environment (`envDepth > 0`), does nothing.
|
|
15
|
+
* - If a `\begin{lstlisting}` is found:
|
|
16
|
+
* - Text before the begin is appended either as a new list item (when it matches `itemTag`)
|
|
17
|
+
* or concatenated to the previous item.
|
|
18
|
+
* - Sets `envDepth` to 1 (entered lstlisting).
|
|
19
|
+
* - Appends the substring starting at `\begin{lstlisting}` to the end of the line
|
|
20
|
+
* as code content in the current item.
|
|
21
|
+
*
|
|
22
|
+
* The function does not mutate inputs; it returns the updated state.
|
|
23
|
+
*
|
|
24
|
+
* @param lineText The full text of the current line.
|
|
25
|
+
* @param envDepth Current lstlisting nesting depth.
|
|
26
|
+
* @param items Collected items so far (list builder state).
|
|
27
|
+
* @param nextLine The current (next) line index used for item position metadata.
|
|
28
|
+
* @param dStart Document start line offset to compute absolute positions.
|
|
29
|
+
* @param itemTag RegExp to detect list item prefixes (e.g., `^\s*\\item`).
|
|
30
|
+
* @returns Updated handling result with flags, depth, items, and original line text.
|
|
31
|
+
*/
|
|
32
|
+
var handleLstBeginInline = function (lineText, envDepth, items, nextLine, dStart, itemTag) {
|
|
33
|
+
// If already inside lstlisting, do nothing.
|
|
34
|
+
if (envDepth > 0) {
|
|
35
|
+
return { handled: false, envDepth: envDepth, items: items, lineText: lineText };
|
|
36
|
+
}
|
|
37
|
+
var mb = consts_1.BEGIN_LST_INLINE_RE.exec(lineText);
|
|
38
|
+
if (!mb) {
|
|
39
|
+
return { handled: false, envDepth: envDepth, items: items, lineText: lineText };
|
|
40
|
+
}
|
|
41
|
+
var beginIndex = mb.index;
|
|
42
|
+
// Is there text BEFORE \begin{lstlisting} ?
|
|
43
|
+
var before = lineText.slice(0, beginIndex).trimEnd();
|
|
44
|
+
var afterBegin = lineText.slice(beginIndex); // start from \begin...
|
|
45
|
+
// If there was something before begin, it was regular text/part of \item:
|
|
46
|
+
if (before.length > 0) {
|
|
47
|
+
if (itemTag.test(before)) {
|
|
48
|
+
items = (0, latex_list_items_1.ItemsListPush)(items, before, nextLine + dStart, nextLine + dStart);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
items = (0, latex_list_items_1.ItemsAddToPrev)(items, before, nextLine);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
envDepth = 1; //entered lstlisting
|
|
55
|
+
items = (0, latex_list_items_1.ItemsAddToPrev)(items, afterBegin, nextLine); //The part from \begin{lstlisting} to the end of the line is considered a code string.
|
|
56
|
+
return { handled: true, envDepth: envDepth, items: items, lineText: lineText };
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Try to handle an inline `\end{lstlisting}` on the current line.
|
|
60
|
+
*
|
|
61
|
+
* Behavior:
|
|
62
|
+
* - If not inside an lstlisting environment (`envDepth === 0`), does nothing.
|
|
63
|
+
* - If no end marker is found on this line, appends the full line (with original leading whitespace)
|
|
64
|
+
* to the current item and reports `handled: true` (still inside the env).
|
|
65
|
+
* - If an end marker is present:
|
|
66
|
+
* - Appends everything up to `\end{...}` (plus the end token itself) to the current item.
|
|
67
|
+
* - Resets `envDepth` to 0 (leaves lstlisting).
|
|
68
|
+
* - If there is trailing text after the end token, returns it in `lineText` so the caller
|
|
69
|
+
* can continue processing the remainder of the line; otherwise returns an empty `lineText`.
|
|
70
|
+
*
|
|
71
|
+
* The function does not mutate inputs; it returns the updated state.
|
|
72
|
+
*
|
|
73
|
+
* @param lineText Current line text (may contain `\end{lstlisting}`).
|
|
74
|
+
* @param envDepth Current lstlisting nesting depth (0 if outside).
|
|
75
|
+
* @param items Accumulated items list (list builder state).
|
|
76
|
+
* @param nextLine Line index used for item position metadata.
|
|
77
|
+
* @param state Markdown-It state (used to read the original line with indentation).
|
|
78
|
+
* @returns Updated result with flags, depth, items, and remaining line text (if any).
|
|
79
|
+
*/
|
|
80
|
+
var handleLstEndInline = function (lineText, envDepth, items, nextLine, state) {
|
|
81
|
+
var _a;
|
|
82
|
+
// If we are not inside lstlisting, we exit
|
|
83
|
+
if (envDepth === 0) {
|
|
84
|
+
return { handled: false, envDepth: envDepth, items: items, lineText: lineText };
|
|
85
|
+
}
|
|
86
|
+
var me = consts_1.END_LST_INLINE_RE.exec(lineText);
|
|
87
|
+
if (!me) {
|
|
88
|
+
// There is no end of environment - just add the line as is
|
|
89
|
+
lineText = state.src.slice(state.bMarks[nextLine], state.eMarks[nextLine]); // It is important to take into account the leading whitespace characters.
|
|
90
|
+
items = (0, latex_list_items_1.ItemsAddToPrev)(items, lineText, nextLine);
|
|
91
|
+
return { handled: true, envDepth: envDepth, items: items, lineText: lineText };
|
|
92
|
+
}
|
|
93
|
+
// There is an end of environment in this line
|
|
94
|
+
var endIndex = me.index;
|
|
95
|
+
var endToken = lineText.slice(endIndex, endIndex + me[0].length);
|
|
96
|
+
var beforeEnd = lineText.slice(0, endIndex);
|
|
97
|
+
var afterEnd = lineText.slice(endIndex + me[0].length);
|
|
98
|
+
// Everything up to \end{...} is a continuation of the code
|
|
99
|
+
if (beforeEnd.length > 0) {
|
|
100
|
+
items = (0, latex_list_items_1.ItemsAddToPrev)(items, beforeEnd + '\n' + endToken, nextLine);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
items = (0, latex_list_items_1.ItemsAddToPrev)(items, endToken, nextLine);
|
|
104
|
+
}
|
|
105
|
+
envDepth = 0; // Exit lstlisting
|
|
106
|
+
if (!((_a = afterEnd === null || afterEnd === void 0 ? void 0 : afterEnd.trim()) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
107
|
+
return { handled: true, envDepth: envDepth, items: items, lineText: '' };
|
|
108
|
+
}
|
|
109
|
+
return { handled: false, envDepth: envDepth, items: items, lineText: afterEnd };
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* Block rule that parses LaTeX list environments:
|
|
113
|
+
* \begin{itemize} ... \end{itemize}
|
|
114
|
+
* \begin{enumerate} ... \end{enumerate}
|
|
115
|
+
*
|
|
116
|
+
* It:
|
|
117
|
+
* - detects list begin/end commands,
|
|
118
|
+
* - collects and splits \item content into logical items,
|
|
119
|
+
* - handles \setcounter and nested lists on the same line,
|
|
120
|
+
* - emits corresponding *_list_open, *_list_close, and list item tokens.
|
|
121
|
+
*/
|
|
122
|
+
var Lists = function (state, startLine, endLine, silent) {
|
|
123
|
+
var _a, _b;
|
|
124
|
+
var _c, _d, _e;
|
|
125
|
+
var pos = state.bMarks[startLine] + state.tShift[startLine];
|
|
126
|
+
var max = state.eMarks[startLine];
|
|
127
|
+
var lineText = state.src.slice(pos, max);
|
|
128
|
+
// Must start with backslash to be LaTeX command
|
|
129
|
+
if (lineText.charCodeAt(0) !== 0x5c /* '\' */) {
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
var match = lineText.match(consts_1.BEGIN_LIST_ENV_RE);
|
|
133
|
+
if (!match) {
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
var typeList = match[1].trim();
|
|
137
|
+
if (!(0, latex_list_types_1.isListType)(typeList)) {
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
// In silent mode: only report that this block can start; do not modify state or emit tokens.
|
|
141
|
+
if (silent) {
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
var renderStart = state.md.options.renderElement && state.md.options.renderElement.startLine
|
|
145
|
+
? Number(state.md.options.renderElement.startLine)
|
|
146
|
+
: 0;
|
|
147
|
+
var oldParentType = state.parentType;
|
|
148
|
+
var enumerateLevelTypes = (0, re_level_1.GetEnumerateLevel)();
|
|
149
|
+
var dataMarkers = (0, re_level_1.GetItemizeLevelTokensByState)(state);
|
|
150
|
+
var itemizeLevelTokens = dataMarkers.tokens;
|
|
151
|
+
var itemizeLevelContents = dataMarkers.contents;
|
|
152
|
+
var nextLine = startLine;
|
|
153
|
+
var li = null;
|
|
154
|
+
var openData = (0, latex_list_tokens_1.ListOpen)(state, startLine + renderStart, lineText, itemizeLevelTokens, enumerateLevelTypes, itemizeLevelContents);
|
|
155
|
+
var _f = openData.iOpen, iOpen = _f === void 0 ? 0 : _f, _g = openData.tokenStart, tokenStart = _g === void 0 ? null : _g;
|
|
156
|
+
li = (_c = openData.li) !== null && _c !== void 0 ? _c : null;
|
|
157
|
+
if (iOpen === 0) {
|
|
158
|
+
nextLine += 1;
|
|
159
|
+
state.line = nextLine;
|
|
160
|
+
state.startLine = startLine;
|
|
161
|
+
state.parentType = oldParentType;
|
|
162
|
+
state.level = state.prentLevel < 0 ? 0 : state.prentLevel;
|
|
163
|
+
return true;
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
nextLine += 1;
|
|
167
|
+
}
|
|
168
|
+
var items = [];
|
|
169
|
+
var haveClose = false;
|
|
170
|
+
var envDepth = 0; // >0 — inside lstlisting environment
|
|
171
|
+
for (; nextLine < endLine; nextLine++) {
|
|
172
|
+
pos = state.bMarks[nextLine] + state.tShift[nextLine];
|
|
173
|
+
max = state.eMarks[nextLine];
|
|
174
|
+
lineText = state.src.slice(pos, max);
|
|
175
|
+
// 1) If you are NOT currently inside lstlisting, first search for \begin{lstlisting}
|
|
176
|
+
if (envDepth === 0) {
|
|
177
|
+
var beginRes = handleLstBeginInline(lineText, envDepth, items, nextLine, renderStart, consts_1.LATEX_ITEM_COMMAND_INLINE_RE);
|
|
178
|
+
envDepth = beginRes.envDepth;
|
|
179
|
+
if (beginRes.handled) {
|
|
180
|
+
continue; // this line is already fully processed
|
|
181
|
+
}
|
|
182
|
+
lineText = beginRes.lineText;
|
|
183
|
+
}
|
|
184
|
+
// 2) If inside lstlisting, look for \end{lstlisting}
|
|
185
|
+
if (envDepth > 0) {
|
|
186
|
+
var endRes = handleLstEndInline(lineText, envDepth, items, nextLine, state);
|
|
187
|
+
envDepth = endRes.envDepth;
|
|
188
|
+
items = endRes.items;
|
|
189
|
+
if (endRes.handled) {
|
|
190
|
+
continue;
|
|
191
|
+
}
|
|
192
|
+
lineText = endRes.lineText;
|
|
193
|
+
}
|
|
194
|
+
// Handle \setcounter lines
|
|
195
|
+
if (consts_1.reSetCounter.test(lineText)) {
|
|
196
|
+
match = lineText.match(consts_1.reSetCounter);
|
|
197
|
+
if (match && ((_d = state.md.options) === null || _d === void 0 ? void 0 : _d.forLatex)) {
|
|
198
|
+
var token = state.push("setcounter", "", 0);
|
|
199
|
+
token.latex = match[0].trim();
|
|
200
|
+
}
|
|
201
|
+
if (match && match[2]) {
|
|
202
|
+
var sE = match.index + match[0].length < lineText.length
|
|
203
|
+
? lineText.slice(match.index + match[0].length)
|
|
204
|
+
: "";
|
|
205
|
+
sE = sE.trim();
|
|
206
|
+
var startNumber = (_e = (0, latex_list_common_1.parseSetCounterNumber)(match)) !== null && _e !== void 0 ? _e : 1;
|
|
207
|
+
li = { value: startNumber };
|
|
208
|
+
if (sE.length > 0) {
|
|
209
|
+
items = (0, latex_list_items_1.ItemsAddToPrev)(items, sE, nextLine);
|
|
210
|
+
}
|
|
211
|
+
continue;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
// Handle inline \end{itemize}/\end{enumerate}
|
|
215
|
+
if (consts_1.END_LIST_ENV_INLINE_RE.test(lineText)) {
|
|
216
|
+
var endMatch = lineText.match(consts_1.END_LIST_ENV_INLINE_RE);
|
|
217
|
+
if (endMatch) {
|
|
218
|
+
var raw = endMatch[1].trim();
|
|
219
|
+
if (!(0, latex_list_types_1.isListType)(raw)) {
|
|
220
|
+
return false;
|
|
221
|
+
}
|
|
222
|
+
var _h = (0, latex_list_items_1.splitInlineListEnv)(lineText, endMatch), sB = _h.sB, sE = _h.sE, isBacktickEscapedPair = _h.isBacktickEscapedPair;
|
|
223
|
+
if (isBacktickEscapedPair) {
|
|
224
|
+
items = (0, latex_list_items_1.ItemsListPush)(items, lineText, nextLine, nextLine);
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
227
|
+
if (sB.length > 0) {
|
|
228
|
+
items = (0, latex_list_items_1.ItemsAddToPrev)(items, sB, nextLine);
|
|
229
|
+
}
|
|
230
|
+
(_a = (0, latex_list_items_1.finalizeListItems)(state, items, itemizeLevelTokens, enumerateLevelTypes, li, iOpen, itemizeLevelContents, tokenStart), iOpen = _a.iOpen, items = _a.items, li = _a.li);
|
|
231
|
+
(0, latex_list_tokens_1.setTokenCloseList)(state, startLine + renderStart, nextLine + renderStart);
|
|
232
|
+
if (sE.length > 0) {
|
|
233
|
+
items = (0, latex_list_items_1.ItemsAddToPrev)(items, sE, nextLine);
|
|
234
|
+
}
|
|
235
|
+
iOpen--;
|
|
236
|
+
if (iOpen <= 0) {
|
|
237
|
+
haveClose = true;
|
|
238
|
+
nextLine += 1;
|
|
239
|
+
break;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
continue;
|
|
243
|
+
}
|
|
244
|
+
// Handle inline \begin{itemize}/\begin{enumerate}
|
|
245
|
+
if (consts_1.BEGIN_LIST_ENV_INLINE_RE.test(lineText)) {
|
|
246
|
+
var beginMatch = lineText.match(consts_1.BEGIN_LIST_ENV_INLINE_RE);
|
|
247
|
+
if (beginMatch) {
|
|
248
|
+
var raw = beginMatch[1].trim();
|
|
249
|
+
if (!(0, latex_list_types_1.isListType)(raw)) {
|
|
250
|
+
return false;
|
|
251
|
+
}
|
|
252
|
+
var beginType = raw;
|
|
253
|
+
var _j = (0, latex_list_items_1.splitInlineListEnv)(lineText, beginMatch), sB = _j.sB, sE = _j.sE, isBacktickEscapedPair = _j.isBacktickEscapedPair;
|
|
254
|
+
if (isBacktickEscapedPair) {
|
|
255
|
+
items = (0, latex_list_items_1.ItemsListPush)(items, lineText, nextLine, nextLine);
|
|
256
|
+
continue;
|
|
257
|
+
}
|
|
258
|
+
if (sB.length > 0) {
|
|
259
|
+
items = (0, latex_list_items_1.ItemsAddToPrev)(items, sB, nextLine);
|
|
260
|
+
}
|
|
261
|
+
(_b = (0, latex_list_items_1.finalizeListItems)(state, items, itemizeLevelTokens, enumerateLevelTypes, li, iOpen, itemizeLevelContents, tokenStart), iOpen = _b.iOpen, items = _b.items, li = _b.li);
|
|
262
|
+
(0, latex_list_tokens_1.setTokenOpenList)(state, -1, -1, beginType, itemizeLevelTokens, enumerateLevelTypes, itemizeLevelContents);
|
|
263
|
+
if (sE.length > 0) {
|
|
264
|
+
items = (0, latex_list_items_1.ItemsAddToPrev)(items, sE, nextLine);
|
|
265
|
+
}
|
|
266
|
+
iOpen++;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
// Regular line inside list: either a new \item or continuation
|
|
271
|
+
if (consts_1.LATEX_ITEM_COMMAND_INLINE_RE.test(lineText)) {
|
|
272
|
+
items = (0, latex_list_items_1.ItemsListPush)(items, lineText, nextLine + renderStart, nextLine + renderStart);
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
items = (0, latex_list_items_1.ItemsAddToPrev)(items, lineText, nextLine);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
if (!haveClose) {
|
|
280
|
+
// No explicit \end{itemize}/\end{enumerate} found — flush remaining items
|
|
281
|
+
console.log("NOT CLOSE TAG.");
|
|
282
|
+
(0, latex_list_items_1.ListItemsBlock)(state, items);
|
|
283
|
+
li = null;
|
|
284
|
+
}
|
|
285
|
+
state.line = nextLine;
|
|
286
|
+
state.startLine = startLine;
|
|
287
|
+
state.parentType = oldParentType;
|
|
288
|
+
state.level = state.prentLevel < 0 ? 0 : state.prentLevel;
|
|
289
|
+
if (tokenStart) {
|
|
290
|
+
tokenStart.map[1] = nextLine + renderStart;
|
|
291
|
+
}
|
|
292
|
+
return true;
|
|
293
|
+
};
|
|
294
|
+
exports.Lists = Lists;
|
|
295
|
+
//# sourceMappingURL=latex-list-env-block.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"latex-list-env-block.js","sourceRoot":"","sources":["../../../src/markdown/md-latex-lists-env/latex-list-env-block.ts"],"names":[],"mappings":";;;AAGA,yDAAoF;AACpF,uDAA0H;AAC1H,uCAAsG;AACtG,uDAM4B;AAC5B,yDAA4D;AAC5D,2CAQ0B;AAE1B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,IAAM,oBAAoB,GAAG,UAC3B,QAAgB,EAChB,QAAgB,EAChB,KAAY,EACZ,QAAgB,EAChB,MAAc,EACd,OAAe;IAEf,4CAA4C;IAC5C,IAAI,QAAQ,GAAG,CAAC,EAAE;QAChB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,UAAA,EAAE,KAAK,OAAA,EAAE,QAAQ,UAAA,EAAE,CAAC;KACtD;IACD,IAAM,EAAE,GAAqB,4BAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChE,IAAI,CAAC,EAAE,EAAE;QACP,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,UAAA,EAAE,KAAK,OAAA,EAAE,QAAQ,UAAA,EAAE,CAAC;KACtD;IACD,IAAM,UAAU,GAAW,EAAE,CAAC,KAAK,CAAC;IACpC,4CAA4C;IAC5C,IAAM,MAAM,GAAW,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;IAC/D,IAAM,UAAU,GAAW,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,uBAAuB;IAC9E,0EAA0E;IAC1E,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;QACrB,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACxB,KAAK,GAAG,IAAA,gCAAa,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAG,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC;SAC5E;aAAM;YACL,KAAK,GAAG,IAAA,iCAAc,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;SACjD;KACF;IACD,QAAQ,GAAG,CAAC,CAAC,CAAC,oBAAoB;IAClC,KAAK,GAAG,IAAA,iCAAc,EAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAA,sFAAsF;IAC1I,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,UAAA,EAAE,KAAK,OAAA,EAAE,QAAQ,UAAA,EAAE,CAAC;AACtD,CAAC,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,IAAM,kBAAkB,GAAG,UACzB,QAAgB,EAChB,QAAgB,EAChB,KAAY,EACZ,QAAgB,EAChB,KAAK;;IAEL,2CAA2C;IAC3C,IAAI,QAAQ,KAAK,CAAC,EAAE;QAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,UAAA,EAAE,KAAK,OAAA,EAAE,QAAQ,UAAA,EAAE,CAAC;KACtD;IACD,IAAM,EAAE,GAAqB,0BAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9D,IAAI,CAAC,EAAE,EAAE;QACP,2DAA2D;QAC3D,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,0EAA0E;QACtJ,KAAK,GAAG,IAAA,iCAAc,EAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAClD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,UAAA,EAAE,KAAK,OAAA,EAAE,QAAQ,UAAA,EAAE,CAAC;KACrD;IACD,8CAA8C;IAC9C,IAAM,QAAQ,GAAW,EAAE,CAAC,KAAK,CAAC;IAClC,IAAM,QAAQ,GAAW,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC3E,IAAM,SAAS,GAAW,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IACtD,IAAM,QAAQ,GAAW,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACjE,2DAA2D;IAC3D,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;QACxB,KAAK,GAAG,IAAA,iCAAc,EAAC,KAAK,EAAE,SAAS,GAAG,IAAI,GAAG,QAAQ,EAAE,QAAQ,CAAC,CAAC;KACtE;SAAM;QACL,KAAK,GAAG,IAAA,iCAAc,EAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;KACnD;IACD,QAAQ,GAAG,CAAC,CAAC,CAAC,kBAAkB;IAChC,IAAI,CAAC,CAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,EAAE,0CAAE,MAAM,CAAA,EAAE;QAC7B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,UAAA,EAAE,KAAK,OAAA,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;KACzD;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,UAAA,EAAE,KAAK,OAAA,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACjE,CAAC,CAAA;AAED;;;;;;;;;;GAUG;AACI,IAAM,KAAK,GAAc,UAC9B,KAAiB,EACjB,SAAiB,EACjB,OAAe,EACf,MAAe;;;IAEf,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC5D,IAAI,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClC,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACzC,gDAAgD;IAChD,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE;QAC7C,OAAO,KAAK,CAAC;KACd;IACD,IAAI,KAAK,GAA4B,QAAQ,CAAC,KAAK,CAAC,0BAAiB,CAAC,CAAC;IACvE,IAAI,CAAC,KAAK,EAAE;QACV,OAAO,KAAK,CAAC;KACd;IACD,IAAM,QAAQ,GAAW,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,IAAI,CAAC,IAAA,6BAAU,EAAC,QAAQ,CAAC,EAAE;QACzB,OAAO,KAAK,CAAC;KACd;IACD,6FAA6F;IAC7F,IAAI,MAAM,EAAE;QACV,OAAO,IAAI,CAAC;KACb;IACD,IAAM,WAAW,GAAW,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS;QAClG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC;QAClD,CAAC,CAAC,CAAC,CAAC;IACR,IAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC;IACvC,IAAM,mBAAmB,GAAa,IAAA,4BAAiB,GAAE,CAAC;IAC1D,IAAM,WAAW,GAA4B,IAAA,uCAA4B,EAAC,KAAK,CAAC,CAAC;IACjF,IAAM,kBAAkB,GAAc,WAAW,CAAC,MAAM,CAAC;IACzD,IAAM,oBAAoB,GAAa,WAAW,CAAC,QAAQ,CAAC;IAC5D,IAAI,QAAQ,GAAW,SAAS,CAAC;IACjC,IAAI,EAAE,GAA6B,IAAI,CAAC;IACxC,IAAM,QAAQ,GAAmB,IAAA,4BAAQ,EAAC,KAAK,EAAE,SAAS,GAAG,WAAW,EAAE,QAAQ,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;IAC7I,IAAA,KAAiC,QAAQ,MAAhC,EAAT,KAAK,mBAAG,CAAC,KAAA,EAAE,KAAsB,QAAQ,WAAb,EAAjB,UAAU,mBAAG,IAAI,KAAA,CAAc;IAChD,EAAE,GAAG,MAAA,QAAQ,CAAC,EAAE,mCAAI,IAAI,CAAC;IACzB,IAAI,KAAK,KAAK,CAAC,EAAE;QACf,QAAQ,IAAI,CAAC,CAAC;QACd,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;QACtB,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;QAC5B,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC;QACjC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;QAC1D,OAAO,IAAI,CAAC;KACb;SAAM;QACL,QAAQ,IAAI,CAAC,CAAC;KACf;IACD,IAAI,KAAK,GAAqB,EAAE,CAAC;IACjC,IAAI,SAAS,GAAY,KAAK,CAAC;IAC/B,IAAI,QAAQ,GAAW,CAAC,CAAC,CAAC,qCAAqC;IAC/D,OAAO,QAAQ,GAAG,OAAO,EAAE,QAAQ,EAAE,EAAE;QACrC,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACtD,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7B,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACrC,qFAAqF;QACrF,IAAI,QAAQ,KAAK,CAAC,EAAE;YAClB,IAAM,QAAQ,GAAiB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,qCAA4B,CAAC,CAAC;YACpI,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;YAC7B,IAAI,QAAQ,CAAC,OAAO,EAAE;gBACpB,SAAS,CAAC,uCAAuC;aAClD;YACD,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;SAC9B;QACD,qDAAqD;QACrD,IAAI,QAAQ,GAAG,CAAC,EAAE;YAChB,IAAM,MAAM,GAAiB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC5F,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC3B,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YACrB,IAAI,MAAM,CAAC,OAAO,EAAE;gBAClB,SAAS;aACV;YACD,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;SAC5B;QACD,2BAA2B;QAC3B,IAAI,qBAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC/B,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,qBAAY,CAAC,CAAC;YACrC,IAAI,KAAK,KAAI,MAAA,KAAK,CAAC,EAAE,CAAC,OAAO,0CAAE,QAAQ,CAAA,EAAE;gBACvC,IAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC,CAAQ,CAAC;gBACrD,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAC/B;YACD,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;gBACrB,IAAI,EAAE,GAAW,KAAK,CAAC,KAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM;oBAC7D,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;oBAChD,CAAC,CAAC,EAAE,CAAC;gBACT,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;gBACf,IAAM,WAAW,GAAG,MAAA,IAAA,yCAAqB,EAAC,KAAK,CAAC,mCAAI,CAAC,CAAC;gBACtD,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;gBAC5B,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;oBACjB,KAAK,GAAG,IAAA,iCAAc,EAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;iBAC7C;gBACD,SAAS;aACV;SACF;QACD,8CAA8C;QAC9C,IAAI,+BAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YACzC,IAAM,QAAQ,GAAqB,QAAQ,CAAC,KAAK,CAAC,+BAAsB,CAAC,CAAC;YAC1E,IAAI,QAAQ,EAAE;gBACZ,IAAM,GAAG,GAAW,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACvC,IAAI,CAAC,IAAA,6BAAU,EAAC,GAAG,CAAC,EAAE;oBACpB,OAAO,KAAK,CAAC;iBACd;gBACG,IAAA,KAAoC,IAAA,qCAAkB,EAAC,QAAQ,EAAE,QAAQ,CAAC,EAAxE,EAAE,QAAA,EAAE,EAAE,QAAA,EAAE,qBAAqB,2BAA2C,CAAC;gBAC/E,IAAI,qBAAqB,EAAE;oBACzB,KAAK,GAAG,IAAA,gCAAa,EAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;oBAC3D,SAAS;iBACV;gBACD,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;oBACjB,KAAK,GAAG,IAAA,iCAAc,EAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;iBAC7C;gBACD,CAAC,KAAuB,IAAA,oCAAiB,EACvC,KAAK,EACL,KAAK,EACL,kBAAkB,EAClB,mBAAmB,EACnB,EAAE,EACF,KAAK,EACL,oBAAoB,EACpB,UAAU,CACX,EATE,KAAK,WAAA,EAAE,KAAK,WAAA,EAAE,EAAE,QAAA,CASjB,CAAC;gBACH,IAAA,qCAAiB,EAAC,KAAK,EAAE,SAAS,GAAG,WAAW,EAAE,QAAQ,GAAG,WAAW,CAAC,CAAC;gBAC1E,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;oBACjB,KAAK,GAAG,IAAA,iCAAc,EAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;iBAC7C;gBACD,KAAK,EAAE,CAAC;gBACR,IAAI,KAAK,IAAI,CAAC,EAAE;oBACd,SAAS,GAAG,IAAI,CAAC;oBACjB,QAAQ,IAAI,CAAC,CAAC;oBACd,MAAM;iBACP;aACF;YACD,SAAS;SACV;QACD,kDAAkD;QAClD,IAAI,iCAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC3C,IAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,iCAAwB,CAAC,CAAC;YAC5D,IAAI,UAAU,EAAE;gBACd,IAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACjC,IAAI,CAAC,IAAA,6BAAU,EAAC,GAAG,CAAC,EAAE;oBACpB,OAAO,KAAK,CAAC;iBACd;gBACD,IAAM,SAAS,GAAa,GAAG,CAAC;gBAE5B,IAAA,KAAoC,IAAA,qCAAkB,EAAC,QAAQ,EAAE,UAAU,CAAC,EAA1E,EAAE,QAAA,EAAE,EAAE,QAAA,EAAE,qBAAqB,2BAA6C,CAAC;gBACjF,IAAI,qBAAqB,EAAE;oBACzB,KAAK,GAAG,IAAA,gCAAa,EAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;oBAC3D,SAAS;iBACV;gBACD,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;oBACjB,KAAK,GAAG,IAAA,iCAAc,EAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;iBAC7C;gBACD,CAAC,KAAuB,IAAA,oCAAiB,EACvC,KAAK,EACL,KAAK,EACL,kBAAkB,EAClB,mBAAmB,EACnB,EAAE,EACF,KAAK,EACL,oBAAoB,EACpB,UAAU,CACX,EATE,KAAK,WAAA,EAAE,KAAK,WAAA,EAAE,EAAE,QAAA,CASjB,CAAC;gBACH,IAAA,oCAAgB,EAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,oBAAoB,CAAC,CAAC;gBAC1G,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;oBACjB,KAAK,GAAG,IAAA,iCAAc,EAAC,KAAK,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;iBAC7C;gBACD,KAAK,EAAE,CAAC;aACT;SACF;aAAM;YACL,+DAA+D;YAC/D,IAAI,qCAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAC/C,KAAK,GAAG,IAAA,gCAAa,EAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,WAAW,EAAE,QAAQ,GAAG,WAAW,CAAC,CAAC;aACxF;iBAAM;gBACL,KAAK,GAAG,IAAA,iCAAc,EAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;aACnD;SACF;KACF;IAED,IAAI,CAAC,SAAS,EAAE;QACd,0EAA0E;QAC1E,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9B,IAAA,iCAAc,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC7B,EAAE,GAAG,IAAI,CAAC;KACX;IAED,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;IACtB,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC;IACjC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;IAC1D,IAAI,UAAU,EAAE;QACd,UAAU,CAAC,GAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,WAAW,CAAC;KAC7C;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAhMW,QAAA,KAAK,SAgMhB"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { RuleInline } from 'markdown-it';
|
|
2
|
+
/**
|
|
3
|
+
* Inline rule that parses LaTeX list environment closing commands:
|
|
4
|
+
*
|
|
5
|
+
* \end{itemize}
|
|
6
|
+
* \end{enumerate}
|
|
7
|
+
*
|
|
8
|
+
* It:
|
|
9
|
+
* - checks that we are in block/list context,
|
|
10
|
+
* - closes any still-open list item (`latex_list_item_close`),
|
|
11
|
+
* - emits `itemize_list_close` or `enumerate_list_close`,
|
|
12
|
+
* - updates `state.level` and `state.prentLevel`,
|
|
13
|
+
* - updates internal list-level state via `leaveListLevel`,
|
|
14
|
+
* - advances `state.pos` to the end of the `\end{...}` command.
|
|
15
|
+
*/
|
|
16
|
+
export declare const listCloseInline: RuleInline;
|
|
17
|
+
/**
|
|
18
|
+
* Inline rule that parses LaTeX list environment openings:
|
|
19
|
+
*
|
|
20
|
+
* \begin{itemize}
|
|
21
|
+
* \begin{enumerate}
|
|
22
|
+
*
|
|
23
|
+
* It:
|
|
24
|
+
* - validates that we are in block/list context,
|
|
25
|
+
* - emits an `itemize_list_open` or `enumerate_list_open` token,
|
|
26
|
+
* - updates `state.prentLevel`, `state.parentType` and `state.types`,
|
|
27
|
+
* - advances `state.pos` to the end of the \begin{...} command,
|
|
28
|
+
* - registers the new list level in the list-level state.
|
|
29
|
+
*/
|
|
30
|
+
export declare const listBeginInline: RuleInline;
|
|
31
|
+
/**
|
|
32
|
+
* Inline rule that parses a single LaTeX list item:
|
|
33
|
+
* \item[marker] content...
|
|
34
|
+
*
|
|
35
|
+
* It:
|
|
36
|
+
* - closes a previously open list item if necessary,
|
|
37
|
+
* - opens a new `latex_list_item_open` token,
|
|
38
|
+
* - parses the optional marker into `markerTokens`,
|
|
39
|
+
* - creates an `inline` token with the item content,
|
|
40
|
+
* - updates `state.pos` to the end of the current item.
|
|
41
|
+
*/
|
|
42
|
+
export declare const listItemInline: RuleInline;
|
|
43
|
+
/**
|
|
44
|
+
* Inline rule that parses LaTeX \setcounter commands inside list environments:
|
|
45
|
+
*
|
|
46
|
+
* \setcounter{enumi}{3}
|
|
47
|
+
*
|
|
48
|
+
* It:
|
|
49
|
+
* - validates that we are in block/list context (state.env.isBlock),
|
|
50
|
+
* - parses the numeric value,
|
|
51
|
+
* - converts N to N+1 (so the next list item starts from that value),
|
|
52
|
+
* - emits a `setcounter` token with `content = "<nextNumber>"`,
|
|
53
|
+
* - optionally attaches the original LaTeX source in `token.latex`
|
|
54
|
+
* when `md.options.forLatex` is enabled.
|
|
55
|
+
*
|
|
56
|
+
* Example:
|
|
57
|
+
* \setcounter{enumi}{3} → token.type = "setcounter", token.content = "4"
|
|
58
|
+
*/
|
|
59
|
+
export declare const listSetCounterInline: RuleInline;
|