mathpix-markdown-it 2.0.29 → 2.0.30
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/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/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,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":"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"}
|
|
@@ -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;
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.listSetCounterInline = exports.listItemInline = exports.listBeginInline = exports.listCloseInline = void 0;
|
|
4
|
+
var tslib_1 = require("tslib");
|
|
5
|
+
var utils_1 = require("../utils");
|
|
6
|
+
var list_state_1 = require("./list-state");
|
|
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
|
+
* Inline rule that parses LaTeX list environment closing commands:
|
|
12
|
+
*
|
|
13
|
+
* \end{itemize}
|
|
14
|
+
* \end{enumerate}
|
|
15
|
+
*
|
|
16
|
+
* It:
|
|
17
|
+
* - checks that we are in block/list context,
|
|
18
|
+
* - closes any still-open list item (`latex_list_item_close`),
|
|
19
|
+
* - emits `itemize_list_close` or `enumerate_list_close`,
|
|
20
|
+
* - updates `state.level` and `state.prentLevel`,
|
|
21
|
+
* - updates internal list-level state via `leaveListLevel`,
|
|
22
|
+
* - advances `state.pos` to the end of the `\end{...}` command.
|
|
23
|
+
*/
|
|
24
|
+
var listCloseInline = function (state, silent) {
|
|
25
|
+
var _a;
|
|
26
|
+
var startPos = state.pos;
|
|
27
|
+
// Only handle in block/list context
|
|
28
|
+
if (!state.env.isBlock) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
// Must start with backslash
|
|
32
|
+
if (state.src.charCodeAt(startPos) !== 0x5c /* '\' */) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
var match = state.src
|
|
36
|
+
.slice(startPos)
|
|
37
|
+
.match(consts_1.END_LIST_ENV_RE);
|
|
38
|
+
if (!match) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
var rawType = match[1].trim();
|
|
42
|
+
if (!(0, latex_list_types_1.isListType)(rawType)) {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
if (!silent) {
|
|
46
|
+
var listType = rawType;
|
|
47
|
+
(0, latex_list_common_1.closeOpenListItemIfNeeded)(state);
|
|
48
|
+
var _b = (0, latex_list_common_1.getListTokenTypes)(listType), closeType = _b.closeType, htmlTag = _b.htmlTag;
|
|
49
|
+
// itemize_list_close or enumerate_list_close
|
|
50
|
+
var token = state.push(closeType, htmlTag, -1);
|
|
51
|
+
(0, latex_list_common_1.applyListCloseState)(state, token);
|
|
52
|
+
}
|
|
53
|
+
state.pos = startPos + ((_a = match.index) !== null && _a !== void 0 ? _a : 0) + match[0].length;
|
|
54
|
+
return true;
|
|
55
|
+
};
|
|
56
|
+
exports.listCloseInline = listCloseInline;
|
|
57
|
+
/**
|
|
58
|
+
* Inline rule that parses LaTeX list environment openings:
|
|
59
|
+
*
|
|
60
|
+
* \begin{itemize}
|
|
61
|
+
* \begin{enumerate}
|
|
62
|
+
*
|
|
63
|
+
* It:
|
|
64
|
+
* - validates that we are in block/list context,
|
|
65
|
+
* - emits an `itemize_list_open` or `enumerate_list_open` token,
|
|
66
|
+
* - updates `state.prentLevel`, `state.parentType` and `state.types`,
|
|
67
|
+
* - advances `state.pos` to the end of the \begin{...} command,
|
|
68
|
+
* - registers the new list level in the list-level state.
|
|
69
|
+
*/
|
|
70
|
+
var listBeginInline = function (state, silent) {
|
|
71
|
+
var _a;
|
|
72
|
+
var startPos = state.pos;
|
|
73
|
+
// Only inside block/list context
|
|
74
|
+
if (!state.env.isBlock) {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
// Must start with backslash
|
|
78
|
+
if (state.src.charCodeAt(startPos) !== 0x5c /* '\' */) {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
var match = state.src
|
|
82
|
+
.slice(startPos)
|
|
83
|
+
.match(consts_1.BEGIN_LIST_ENV_RE);
|
|
84
|
+
if (!match) {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
var rawType = match[1].trim();
|
|
88
|
+
if (!(0, latex_list_types_1.isListType)(rawType)) {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
if (!silent) {
|
|
92
|
+
var listType = rawType;
|
|
93
|
+
var _b = (0, latex_list_common_1.getListTokenTypes)(listType), openType = _b.openType, htmlTag = _b.htmlTag;
|
|
94
|
+
// itemize_list_open or enumerate_list_open
|
|
95
|
+
var token = state.push(openType, htmlTag, 1);
|
|
96
|
+
(0, latex_list_common_1.applyListOpenState)(state, listType, token);
|
|
97
|
+
}
|
|
98
|
+
state.pos = startPos + ((_a = match.index) !== null && _a !== void 0 ? _a : 0) + match[0].length;
|
|
99
|
+
return true;
|
|
100
|
+
};
|
|
101
|
+
exports.listBeginInline = listBeginInline;
|
|
102
|
+
/**
|
|
103
|
+
* Inline rule that parses a single LaTeX list item:
|
|
104
|
+
* \item[marker] content...
|
|
105
|
+
*
|
|
106
|
+
* It:
|
|
107
|
+
* - closes a previously open list item if necessary,
|
|
108
|
+
* - opens a new `latex_list_item_open` token,
|
|
109
|
+
* - parses the optional marker into `markerTokens`,
|
|
110
|
+
* - creates an `inline` token with the item content,
|
|
111
|
+
* - updates `state.pos` to the end of the current item.
|
|
112
|
+
*/
|
|
113
|
+
var listItemInline = function (state, silent) {
|
|
114
|
+
var startPos = state.pos;
|
|
115
|
+
// Must start with backslash
|
|
116
|
+
if (state.src.charCodeAt(startPos) !== 0x5c /* '\' */) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
// Try to match \item[...] command right after '\'
|
|
120
|
+
var itemMatch = state.src
|
|
121
|
+
.slice(startPos)
|
|
122
|
+
.match(consts_1.LATEX_ITEM_COMMAND_RE);
|
|
123
|
+
if (!itemMatch) {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
// Find where this item ends: next \item or begin/end list env
|
|
127
|
+
var boundaryMatch = state.src
|
|
128
|
+
.slice(startPos + itemMatch.index + itemMatch[0].length)
|
|
129
|
+
.match(consts_1.LATEX_LIST_BOUNDARY_INLINE_RE);
|
|
130
|
+
var content = boundaryMatch && boundaryMatch.index > 0
|
|
131
|
+
? state.src.slice(startPos + itemMatch.index + itemMatch[0].length, startPos + itemMatch.index + itemMatch[0].length + boundaryMatch.index)
|
|
132
|
+
: state.src.slice(startPos + itemMatch.index + itemMatch[0].length);
|
|
133
|
+
if (!silent) {
|
|
134
|
+
// Close previous <li> if needed
|
|
135
|
+
(0, latex_list_common_1.closeOpenListItemIfNeeded)(state);
|
|
136
|
+
// Open new list item
|
|
137
|
+
var token = state.push("latex_list_item_open", "li", 1);
|
|
138
|
+
(0, list_state_1.incrementItemCount)();
|
|
139
|
+
token.parentType = state.parentType;
|
|
140
|
+
token.inlinePos = {
|
|
141
|
+
start_content: startPos + itemMatch.index + itemMatch[0].length,
|
|
142
|
+
};
|
|
143
|
+
// Skip leading spaces in content for accurate inline range
|
|
144
|
+
token.inlinePos.start_content += (0, utils_1.getSpacesFromLeft)(content);
|
|
145
|
+
token.inlinePos.end_content = token.inlinePos.start_content + content.length;
|
|
146
|
+
// Optional marker: \item[<marker>]
|
|
147
|
+
if (itemMatch[1] !== undefined) {
|
|
148
|
+
token.marker = itemMatch[1] ? itemMatch[1].trim() : "";
|
|
149
|
+
var children = [];
|
|
150
|
+
var beforeOptions = tslib_1.__assign({}, state.md.options);
|
|
151
|
+
if (state.md.options.forDocx) {
|
|
152
|
+
state.md.options = tslib_1.__assign(tslib_1.__assign({}, state.md.options), { outMath: {
|
|
153
|
+
include_svg: true,
|
|
154
|
+
include_mathml_word: false,
|
|
155
|
+
} });
|
|
156
|
+
}
|
|
157
|
+
state.md.inline.parse(itemMatch[1], state.md, state.env, children);
|
|
158
|
+
state.md.options = beforeOptions;
|
|
159
|
+
token.markerTokens = children;
|
|
160
|
+
}
|
|
161
|
+
// Inline content inside the list item
|
|
162
|
+
token = state.push("inline", "", 0);
|
|
163
|
+
token.content = content.trim();
|
|
164
|
+
token.children = [];
|
|
165
|
+
}
|
|
166
|
+
// Advance parser position to after this item
|
|
167
|
+
state.pos = startPos + itemMatch.index + itemMatch[0].length + content.length;
|
|
168
|
+
return true;
|
|
169
|
+
};
|
|
170
|
+
exports.listItemInline = listItemInline;
|
|
171
|
+
/**
|
|
172
|
+
* Inline rule that parses LaTeX \setcounter commands inside list environments:
|
|
173
|
+
*
|
|
174
|
+
* \setcounter{enumi}{3}
|
|
175
|
+
*
|
|
176
|
+
* It:
|
|
177
|
+
* - validates that we are in block/list context (state.env.isBlock),
|
|
178
|
+
* - parses the numeric value,
|
|
179
|
+
* - converts N to N+1 (so the next list item starts from that value),
|
|
180
|
+
* - emits a `setcounter` token with `content = "<nextNumber>"`,
|
|
181
|
+
* - optionally attaches the original LaTeX source in `token.latex`
|
|
182
|
+
* when `md.options.forLatex` is enabled.
|
|
183
|
+
*
|
|
184
|
+
* Example:
|
|
185
|
+
* \setcounter{enumi}{3} → token.type = "setcounter", token.content = "4"
|
|
186
|
+
*/
|
|
187
|
+
var listSetCounterInline = function (state, silent) {
|
|
188
|
+
var _a, _b, _c, _d;
|
|
189
|
+
// Only handle in block/list context (not in pure inline text)
|
|
190
|
+
if (!state.env.isBlock) {
|
|
191
|
+
return false;
|
|
192
|
+
}
|
|
193
|
+
var startPos = state.pos;
|
|
194
|
+
// Must start with backslash
|
|
195
|
+
if (state.src.charCodeAt(startPos) !== 0x5c /* '\' */) {
|
|
196
|
+
return false;
|
|
197
|
+
}
|
|
198
|
+
var match = state.src
|
|
199
|
+
.slice(startPos)
|
|
200
|
+
.match(consts_1.reSetCounter);
|
|
201
|
+
if (!match) {
|
|
202
|
+
return false;
|
|
203
|
+
}
|
|
204
|
+
if (!silent) {
|
|
205
|
+
var startNumber = (0, latex_list_common_1.parseSetCounterNumber)(match);
|
|
206
|
+
var content = startNumber.toString();
|
|
207
|
+
var token = state.push("setcounter", "", 0);
|
|
208
|
+
token.content = content;
|
|
209
|
+
if ((_b = (_a = state.md) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.forLatex) {
|
|
210
|
+
var absoluteEnd = startPos + ((_c = match.index) !== null && _c !== void 0 ? _c : 0) + match[0].length;
|
|
211
|
+
token.latex = state.src.slice(state.pos, absoluteEnd);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
// Advance parser position to just after the \setcounter call
|
|
215
|
+
state.pos = startPos + ((_d = match.index) !== null && _d !== void 0 ? _d : 0) + match[0].length;
|
|
216
|
+
return true;
|
|
217
|
+
};
|
|
218
|
+
exports.listSetCounterInline = listSetCounterInline;
|
|
219
|
+
//# sourceMappingURL=latex-list-env-inline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"latex-list-env-inline.js","sourceRoot":"","sources":["../../../src/markdown/md-latex-lists-env/latex-list-env-inline.ts"],"names":[],"mappings":"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"}
|