jekyll-latex-block 0.11.0 → 0.11.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -3
- data/lib/jekyll/latex_block/version.rb +1 -1
- data/lib/jekyll/tags/latex_block.rb +9 -14
- data/lib/js/katex.js +114 -107
- metadata +34 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 864f2c5b589dae87ed1e9669a8271dd57f28357114f9b4d0c0a00e0b20c45587
|
4
|
+
data.tar.gz: 2cb7b0270ac9b38c570c35457e07bca0f4e551c607fb97943e8fbf72323bc9df
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: df232908415fb2f88769ae0b673191d5d2fd071bd418370124018b264676387f039c72e18e820158c11f8ecd37686bf2e3aaaf4db7a34864acbfb7498bcadd2c
|
7
|
+
data.tar.gz: 6e0f6be658ff2229270b8d1bf2bbaf11621e947470fab226365b3484a10c00230f40d6f6275ba247286eb99486998bd2ae45b382335591bcbd31d0ca922ebf81
|
data/README.md
CHANGED
@@ -13,11 +13,11 @@ Ensure that your build environment has a JavaScript interpreter supported by
|
|
13
13
|
|
14
14
|
## Installation
|
15
15
|
|
16
|
-
Add this gem to your project's `
|
16
|
+
Add this gem to your project's `Gemfile`:
|
17
17
|
|
18
18
|
```ruby
|
19
19
|
group :jekyll_plugins do
|
20
|
-
gem "jekyll-latex-block", "~> 0.11.
|
20
|
+
gem "jekyll-latex-block", "~> 0.11.1"
|
21
21
|
end
|
22
22
|
```
|
23
23
|
|
@@ -55,7 +55,7 @@ client-side JavaScript.
|
|
55
55
|
Place the following stylesheet inside your `<head>` tag:
|
56
56
|
|
57
57
|
```html
|
58
|
-
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.
|
58
|
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min.css" integrity="sha256-V8SV2MO1FUb63Bwht5Wx9x6PVHNa02gv8BgH/uH3ung=" crossorigin="anonymous" />
|
59
59
|
```
|
60
60
|
|
61
61
|
### Hard-mode CSS & Fonts Integration :warning:
|
@@ -7,24 +7,19 @@ module Jekyll
|
|
7
7
|
module Tags
|
8
8
|
# LaTeX tag, HTML rendering via KaTeX
|
9
9
|
class LatexBlock < Liquid::Block
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
10
|
+
KATEX_PATH = File.expand_path(
|
11
|
+
'../../js/katex.js', File.dirname(__FILE__)
|
12
|
+
).freeze
|
13
|
+
KATEX_JS = ExecJS.compile(File.read(KATEX_PATH)).freeze
|
14
14
|
|
15
|
-
def
|
16
|
-
|
17
|
-
|
18
|
-
# rubocop:enable Style/ClassVars
|
19
|
-
end
|
20
|
-
|
21
|
-
def katex_path
|
22
|
-
File.expand_path('../../js/katex.js', File.dirname(__FILE__))
|
15
|
+
def initialize(_tag_name, markup, _options)
|
16
|
+
@parsed_options = Parser.new(markup).args
|
17
|
+
super
|
23
18
|
end
|
24
19
|
|
25
|
-
def render(
|
20
|
+
def render(_context)
|
26
21
|
latex_source = super
|
27
|
-
|
22
|
+
KATEX_JS.call('katex.renderToString', latex_source, @parsed_options)
|
28
23
|
end
|
29
24
|
end
|
30
25
|
end
|
data/lib/js/katex.js
CHANGED
@@ -6323,7 +6323,6 @@ function defineFunction(_ref) {
|
|
6323
6323
|
allowedInMath: props.allowedInMath === undefined ? true : props.allowedInMath,
|
6324
6324
|
numOptionalArgs: props.numOptionalArgs || 0,
|
6325
6325
|
infix: !!props.infix,
|
6326
|
-
consumeMode: props.consumeMode,
|
6327
6326
|
handler: handler
|
6328
6327
|
};
|
6329
6328
|
|
@@ -7705,7 +7704,11 @@ var accent_htmlBuilder = function htmlBuilder(grp, options) {
|
|
7705
7704
|
accent = buildCommon.staticSvg("vec", options);
|
7706
7705
|
width = buildCommon.svgData.vec[1];
|
7707
7706
|
} else {
|
7708
|
-
accent = buildCommon.
|
7707
|
+
accent = buildCommon.makeOrd({
|
7708
|
+
mode: group.mode,
|
7709
|
+
text: group.label
|
7710
|
+
}, options, "textord");
|
7711
|
+
accent = assertSymbolDomNode(accent); // Remove the italic correction of the accent, because it only serves to
|
7709
7712
|
// shift the accent over to a place we don't want.
|
7710
7713
|
|
7711
7714
|
accent.italic = 0;
|
@@ -9564,13 +9567,13 @@ function getHLines(parser) {
|
|
9564
9567
|
// Each element in the array tells if the line is dashed.
|
9565
9568
|
var hlineInfo = [];
|
9566
9569
|
parser.consumeSpaces();
|
9567
|
-
var nxt = parser.
|
9570
|
+
var nxt = parser.fetch().text;
|
9568
9571
|
|
9569
9572
|
while (nxt === "\\hline" || nxt === "\\hdashline") {
|
9570
9573
|
parser.consume();
|
9571
9574
|
hlineInfo.push(nxt === "\\hdashline");
|
9572
9575
|
parser.consumeSpaces();
|
9573
|
-
nxt = parser.
|
9576
|
+
nxt = parser.fetch().text;
|
9574
9577
|
}
|
9575
9578
|
|
9576
9579
|
return hlineInfo;
|
@@ -9639,7 +9642,7 @@ function parseArray(parser, _ref, style) {
|
|
9639
9642
|
}
|
9640
9643
|
|
9641
9644
|
row.push(cell);
|
9642
|
-
var next = parser.
|
9645
|
+
var next = parser.fetch().text;
|
9643
9646
|
|
9644
9647
|
if (next === "&") {
|
9645
9648
|
parser.consume();
|
@@ -11836,8 +11839,7 @@ defineFunction({
|
|
11836
11839
|
props: {
|
11837
11840
|
numArgs: 0,
|
11838
11841
|
allowedInText: true,
|
11839
|
-
allowedInMath: false
|
11840
|
-
consumeMode: "math"
|
11842
|
+
allowedInMath: false
|
11841
11843
|
},
|
11842
11844
|
handler: function handler(_ref, args) {
|
11843
11845
|
var funcName = _ref.funcName,
|
@@ -11845,12 +11847,9 @@ defineFunction({
|
|
11845
11847
|
var outerMode = parser.mode;
|
11846
11848
|
parser.switchMode("math");
|
11847
11849
|
var close = funcName === "\\(" ? "\\)" : "$";
|
11848
|
-
var body = parser.parseExpression(false, close);
|
11849
|
-
|
11850
|
-
|
11851
|
-
parser.expect(close, false);
|
11850
|
+
var body = parser.parseExpression(false, close);
|
11851
|
+
parser.expect(close);
|
11852
11852
|
parser.switchMode(outerMode);
|
11853
|
-
parser.consume();
|
11854
11853
|
return {
|
11855
11854
|
type: "styling",
|
11856
11855
|
mode: parser.mode,
|
@@ -13662,8 +13661,7 @@ defineFunction({
|
|
13662
13661
|
numArgs: 1,
|
13663
13662
|
argTypes: ["text"],
|
13664
13663
|
greediness: 2,
|
13665
|
-
allowedInText: true
|
13666
|
-
consumeMode: "text"
|
13664
|
+
allowedInText: true
|
13667
13665
|
},
|
13668
13666
|
handler: function handler(_ref, args) {
|
13669
13667
|
var parser = _ref.parser,
|
@@ -14937,7 +14935,7 @@ defineMacro("\\orange", "\\textcolor{##ffa500}{#1}");
|
|
14937
14935
|
defineMacro("\\pink", "\\textcolor{##ff00af}{#1}");
|
14938
14936
|
defineMacro("\\red", "\\textcolor{##df0030}{#1}");
|
14939
14937
|
defineMacro("\\green", "\\textcolor{##28ae7b}{#1}");
|
14940
|
-
defineMacro("\\gray", "\\textcolor{gray}{
|
14938
|
+
defineMacro("\\gray", "\\textcolor{gray}{#1}");
|
14941
14939
|
defineMacro("\\purple", "\\textcolor{##9d38bd}{#1}");
|
14942
14940
|
defineMacro("\\blueA", "\\textcolor{##ccfaff}{#1}");
|
14943
14941
|
defineMacro("\\blueB", "\\textcolor{##80f6ff}{#1}");
|
@@ -16154,8 +16152,8 @@ function () {
|
|
16154
16152
|
consume = true;
|
16155
16153
|
}
|
16156
16154
|
|
16157
|
-
if (this.
|
16158
|
-
throw new src_ParseError("Expected '" + text + "', got '" + this.
|
16155
|
+
if (this.fetch().text !== text) {
|
16156
|
+
throw new src_ParseError("Expected '" + text + "', got '" + this.fetch().text + "'", this.fetch());
|
16159
16157
|
}
|
16160
16158
|
|
16161
16159
|
if (consume) {
|
@@ -16163,13 +16161,26 @@ function () {
|
|
16163
16161
|
}
|
16164
16162
|
}
|
16165
16163
|
/**
|
16166
|
-
*
|
16167
|
-
* and fetches the one after that as the new look ahead.
|
16164
|
+
* Discards the current lookahead token, considering it consumed.
|
16168
16165
|
*/
|
16169
16166
|
;
|
16170
16167
|
|
16171
16168
|
_proto.consume = function consume() {
|
16172
|
-
this.nextToken =
|
16169
|
+
this.nextToken = null;
|
16170
|
+
}
|
16171
|
+
/**
|
16172
|
+
* Return the current lookahead token, or if there isn't one (at the
|
16173
|
+
* beginning, or if the previous lookahead token was consume()d),
|
16174
|
+
* fetch the next token as the new lookahead token and return it.
|
16175
|
+
*/
|
16176
|
+
;
|
16177
|
+
|
16178
|
+
_proto.fetch = function fetch() {
|
16179
|
+
if (this.nextToken == null) {
|
16180
|
+
this.nextToken = this.gullet.expandNextToken();
|
16181
|
+
}
|
16182
|
+
|
16183
|
+
return this.nextToken;
|
16173
16184
|
}
|
16174
16185
|
/**
|
16175
16186
|
* Switches between "text" and "math" modes.
|
@@ -16197,10 +16208,9 @@ function () {
|
|
16197
16208
|
} // Try to parse the input
|
16198
16209
|
|
16199
16210
|
|
16200
|
-
this.consume();
|
16201
16211
|
var parse = this.parseExpression(false); // If we succeeded, make sure there's an EOF at the end
|
16202
16212
|
|
16203
|
-
this.expect("EOF"
|
16213
|
+
this.expect("EOF"); // End the group namespace for the expression
|
16204
16214
|
|
16205
16215
|
this.gullet.endGroup();
|
16206
16216
|
return parse;
|
@@ -16216,7 +16226,7 @@ function () {
|
|
16216
16226
|
this.consumeSpaces();
|
16217
16227
|
}
|
16218
16228
|
|
16219
|
-
var lex = this.
|
16229
|
+
var lex = this.fetch();
|
16220
16230
|
|
16221
16231
|
if (Parser.endOfExpression.indexOf(lex.text) !== -1) {
|
16222
16232
|
break;
|
@@ -16316,12 +16326,10 @@ function () {
|
|
16316
16326
|
* Handle a subscript or superscript with nice errors.
|
16317
16327
|
*/
|
16318
16328
|
_proto.handleSupSubscript = function handleSupSubscript(name) {
|
16319
|
-
var symbolToken = this.
|
16329
|
+
var symbolToken = this.fetch();
|
16320
16330
|
var symbol = symbolToken.text;
|
16321
16331
|
this.consume();
|
16322
|
-
this.
|
16323
|
-
|
16324
|
-
var group = this.parseGroup(name, false, Parser.SUPSUB_GREEDINESS);
|
16332
|
+
var group = this.parseGroup(name, false, Parser.SUPSUB_GREEDINESS, undefined, undefined, true); // ignore spaces before sup/subscript argument
|
16325
16333
|
|
16326
16334
|
if (!group) {
|
16327
16335
|
throw new src_ParseError("Expected group after '" + symbol + "'", symbolToken);
|
@@ -16381,7 +16389,7 @@ function () {
|
|
16381
16389
|
// Guaranteed in math mode, so eat any spaces first.
|
16382
16390
|
this.consumeSpaces(); // Lex the first token
|
16383
16391
|
|
16384
|
-
var lex = this.
|
16392
|
+
var lex = this.fetch();
|
16385
16393
|
|
16386
16394
|
if (lex.text === "\\limits" || lex.text === "\\nolimits") {
|
16387
16395
|
// We got a limit control
|
@@ -16433,7 +16441,7 @@ function () {
|
|
16433
16441
|
var primes = [prime];
|
16434
16442
|
this.consume(); // Keep lexing tokens until we get something that's not a prime
|
16435
16443
|
|
16436
|
-
while (this.
|
16444
|
+
while (this.fetch().text === "'") {
|
16437
16445
|
// For each one, add another prime to the list
|
16438
16446
|
primes.push(prime);
|
16439
16447
|
this.consume();
|
@@ -16441,7 +16449,7 @@ function () {
|
|
16441
16449
|
// superscript in with the primes.
|
16442
16450
|
|
16443
16451
|
|
16444
|
-
if (this.
|
16452
|
+
if (this.fetch().text === "^") {
|
16445
16453
|
primes.push(this.handleSupSubscript("superscript"));
|
16446
16454
|
} // Put everything into an ordgroup as the superscript
|
16447
16455
|
|
@@ -16480,7 +16488,7 @@ function () {
|
|
16480
16488
|
|
16481
16489
|
_proto.parseFunction = function parseFunction(breakOnTokenText, name, // For error reporting.
|
16482
16490
|
greediness) {
|
16483
|
-
var token = this.
|
16491
|
+
var token = this.fetch();
|
16484
16492
|
var func = token.text;
|
16485
16493
|
var funcData = src_functions[func];
|
16486
16494
|
|
@@ -16488,29 +16496,14 @@ function () {
|
|
16488
16496
|
return null;
|
16489
16497
|
}
|
16490
16498
|
|
16499
|
+
this.consume(); // consume command token
|
16500
|
+
|
16491
16501
|
if (greediness != null && funcData.greediness <= greediness) {
|
16492
16502
|
throw new src_ParseError("Got function '" + func + "' with no arguments" + (name ? " as " + name : ""), token);
|
16493
16503
|
} else if (this.mode === "text" && !funcData.allowedInText) {
|
16494
16504
|
throw new src_ParseError("Can't use function '" + func + "' in text mode", token);
|
16495
16505
|
} else if (this.mode === "math" && funcData.allowedInMath === false) {
|
16496
16506
|
throw new src_ParseError("Can't use function '" + func + "' in math mode", token);
|
16497
|
-
} // hyperref package sets the catcode of % as an active character
|
16498
|
-
|
16499
|
-
|
16500
|
-
if (funcData.argTypes && funcData.argTypes[0] === "url") {
|
16501
|
-
this.gullet.lexer.setCatcode("%", 13);
|
16502
|
-
} // Consume the command token after possibly switching to the
|
16503
|
-
// mode specified by the function (for instant mode switching),
|
16504
|
-
// and then immediately switch back.
|
16505
|
-
|
16506
|
-
|
16507
|
-
if (funcData.consumeMode) {
|
16508
|
-
var oldMode = this.mode;
|
16509
|
-
this.switchMode(funcData.consumeMode);
|
16510
|
-
this.consume();
|
16511
|
-
this.switchMode(oldMode);
|
16512
|
-
} else {
|
16513
|
-
this.consume();
|
16514
16507
|
}
|
16515
16508
|
|
16516
16509
|
var _this$parseArguments = this.parseArguments(func, funcData),
|
@@ -16566,22 +16559,14 @@ function () {
|
|
16566
16559
|
// put spaces between the arguments (e.g., ‘\row x n’), because
|
16567
16560
|
// TeX doesn’t use single spaces as undelimited arguments."
|
16568
16561
|
|
16569
|
-
|
16570
|
-
this.consumeSpaces();
|
16571
|
-
} // Also consume leading spaces in math mode, as parseSymbol
|
16562
|
+
var consumeSpaces = i > 0 && !isOptional || // Also consume leading spaces in math mode, as parseSymbol
|
16572
16563
|
// won't know what to do with them. This can only happen with
|
16573
16564
|
// macros, e.g. \frac\foo\foo where \foo expands to a space symbol.
|
16574
|
-
// In LaTeX, the \foo's get treated as (blank) arguments
|
16565
|
+
// In LaTeX, the \foo's get treated as (blank) arguments.
|
16575
16566
|
// In KaTeX, for now, both spaces will get consumed.
|
16576
16567
|
// TODO(edemaine)
|
16577
|
-
|
16578
|
-
|
16579
|
-
if (i === 0 && !isOptional && this.mode === "math") {
|
16580
|
-
this.consumeSpaces();
|
16581
|
-
}
|
16582
|
-
|
16583
|
-
var nextToken = this.nextToken;
|
16584
|
-
var arg = this.parseGroupOfType("argument to '" + func + "'", argType, isOptional, baseGreediness);
|
16568
|
+
i === 0 && !isOptional && this.mode === "math";
|
16569
|
+
var arg = this.parseGroupOfType("argument to '" + func + "'", argType, isOptional, baseGreediness, consumeSpaces);
|
16585
16570
|
|
16586
16571
|
if (!arg) {
|
16587
16572
|
if (isOptional) {
|
@@ -16589,7 +16574,7 @@ function () {
|
|
16589
16574
|
continue;
|
16590
16575
|
}
|
16591
16576
|
|
16592
|
-
throw new src_ParseError("Expected group after '" + func + "'",
|
16577
|
+
throw new src_ParseError("Expected group after '" + func + "'", this.fetch());
|
16593
16578
|
}
|
16594
16579
|
|
16595
16580
|
(isOptional ? optArgs : args).push(arg);
|
@@ -16605,26 +16590,34 @@ function () {
|
|
16605
16590
|
*/
|
16606
16591
|
;
|
16607
16592
|
|
16608
|
-
_proto.parseGroupOfType = function parseGroupOfType(name, type, optional, greediness) {
|
16593
|
+
_proto.parseGroupOfType = function parseGroupOfType(name, type, optional, greediness, consumeSpaces) {
|
16609
16594
|
switch (type) {
|
16610
16595
|
case "color":
|
16596
|
+
if (consumeSpaces) {
|
16597
|
+
this.consumeSpaces();
|
16598
|
+
}
|
16599
|
+
|
16611
16600
|
return this.parseColorGroup(optional);
|
16612
16601
|
|
16613
16602
|
case "size":
|
16603
|
+
if (consumeSpaces) {
|
16604
|
+
this.consumeSpaces();
|
16605
|
+
}
|
16606
|
+
|
16614
16607
|
return this.parseSizeGroup(optional);
|
16615
16608
|
|
16616
16609
|
case "url":
|
16617
|
-
return this.parseUrlGroup(optional);
|
16610
|
+
return this.parseUrlGroup(optional, consumeSpaces);
|
16618
16611
|
|
16619
16612
|
case "math":
|
16620
16613
|
case "text":
|
16621
|
-
return this.parseGroup(name, optional, greediness, undefined, type);
|
16614
|
+
return this.parseGroup(name, optional, greediness, undefined, type, consumeSpaces);
|
16622
16615
|
|
16623
16616
|
case "hbox":
|
16624
16617
|
{
|
16625
16618
|
// hbox argument type wraps the argument in the equivalent of
|
16626
16619
|
// \hbox, which is like \text but switching to \textstyle size.
|
16627
|
-
var group = this.parseGroup(name, optional, greediness, undefined, "text");
|
16620
|
+
var group = this.parseGroup(name, optional, greediness, undefined, "text", consumeSpaces);
|
16628
16621
|
|
16629
16622
|
if (!group) {
|
16630
16623
|
return group;
|
@@ -16642,7 +16635,11 @@ function () {
|
|
16642
16635
|
|
16643
16636
|
case "raw":
|
16644
16637
|
{
|
16645
|
-
if (
|
16638
|
+
if (consumeSpaces) {
|
16639
|
+
this.consumeSpaces();
|
16640
|
+
}
|
16641
|
+
|
16642
|
+
if (optional && this.fetch().text === "{") {
|
16646
16643
|
return null;
|
16647
16644
|
}
|
16648
16645
|
|
@@ -16655,22 +16652,26 @@ function () {
|
|
16655
16652
|
string: token.text
|
16656
16653
|
};
|
16657
16654
|
} else {
|
16658
|
-
throw new src_ParseError("Expected raw group", this.
|
16655
|
+
throw new src_ParseError("Expected raw group", this.fetch());
|
16659
16656
|
}
|
16660
16657
|
}
|
16661
16658
|
|
16662
16659
|
case "original":
|
16663
16660
|
case null:
|
16664
16661
|
case undefined:
|
16665
|
-
return this.parseGroup(name, optional, greediness);
|
16662
|
+
return this.parseGroup(name, optional, greediness, undefined, undefined, consumeSpaces);
|
16666
16663
|
|
16667
16664
|
default:
|
16668
|
-
throw new src_ParseError("Unknown group type as " + name, this.
|
16665
|
+
throw new src_ParseError("Unknown group type as " + name, this.fetch());
|
16669
16666
|
}
|
16670
|
-
}
|
16667
|
+
}
|
16668
|
+
/**
|
16669
|
+
* Discard any space tokens, fetching the next non-space token.
|
16670
|
+
*/
|
16671
|
+
;
|
16671
16672
|
|
16672
16673
|
_proto.consumeSpaces = function consumeSpaces() {
|
16673
|
-
while (this.
|
16674
|
+
while (this.fetch().text === " ") {
|
16674
16675
|
this.consume();
|
16675
16676
|
}
|
16676
16677
|
}
|
@@ -16684,17 +16685,14 @@ function () {
|
|
16684
16685
|
optional, raw) {
|
16685
16686
|
var groupBegin = optional ? "[" : "{";
|
16686
16687
|
var groupEnd = optional ? "]" : "}";
|
16687
|
-
var
|
16688
|
+
var beginToken = this.fetch();
|
16688
16689
|
|
16689
|
-
if (
|
16690
|
+
if (beginToken.text !== groupBegin) {
|
16690
16691
|
if (optional) {
|
16691
16692
|
return null;
|
16692
|
-
} else if (raw &&
|
16693
|
-
// allow a single character in raw string group
|
16694
|
-
this.gullet.lexer.setCatcode("%", 14); // reset the catcode of %
|
16695
|
-
|
16693
|
+
} else if (raw && beginToken.text !== "EOF" && /[^{}[\]]/.test(beginToken.text)) {
|
16696
16694
|
this.consume();
|
16697
|
-
return
|
16695
|
+
return beginToken;
|
16698
16696
|
}
|
16699
16697
|
}
|
16700
16698
|
|
@@ -16702,13 +16700,14 @@ function () {
|
|
16702
16700
|
this.mode = "text";
|
16703
16701
|
this.expect(groupBegin);
|
16704
16702
|
var str = "";
|
16705
|
-
var firstToken = this.
|
16703
|
+
var firstToken = this.fetch();
|
16706
16704
|
var nested = 0; // allow nested braces in raw string group
|
16707
16705
|
|
16708
16706
|
var lastToken = firstToken;
|
16707
|
+
var nextToken;
|
16709
16708
|
|
16710
|
-
while (
|
16711
|
-
switch (
|
16709
|
+
while ((nextToken = this.fetch()).text !== groupEnd || raw && nested > 0) {
|
16710
|
+
switch (nextToken.text) {
|
16712
16711
|
case "EOF":
|
16713
16712
|
throw new src_ParseError("Unexpected end of input in " + modeName, firstToken.range(lastToken, str));
|
16714
16713
|
|
@@ -16721,15 +16720,13 @@ function () {
|
|
16721
16720
|
break;
|
16722
16721
|
}
|
16723
16722
|
|
16724
|
-
lastToken =
|
16723
|
+
lastToken = nextToken;
|
16725
16724
|
str += lastToken.text;
|
16726
16725
|
this.consume();
|
16727
16726
|
}
|
16728
16727
|
|
16729
|
-
this.mode = outerMode;
|
16730
|
-
this.gullet.lexer.setCatcode("%", 14); // reset the catcode of %
|
16731
|
-
|
16732
16728
|
this.expect(groupEnd);
|
16729
|
+
this.mode = outerMode;
|
16733
16730
|
return firstToken.range(lastToken, str);
|
16734
16731
|
}
|
16735
16732
|
/**
|
@@ -16742,12 +16739,13 @@ function () {
|
|
16742
16739
|
_proto.parseRegexGroup = function parseRegexGroup(regex, modeName) {
|
16743
16740
|
var outerMode = this.mode;
|
16744
16741
|
this.mode = "text";
|
16745
|
-
var firstToken = this.
|
16742
|
+
var firstToken = this.fetch();
|
16746
16743
|
var lastToken = firstToken;
|
16747
16744
|
var str = "";
|
16745
|
+
var nextToken;
|
16748
16746
|
|
16749
|
-
while (this.
|
16750
|
-
lastToken =
|
16747
|
+
while ((nextToken = this.fetch()).text !== "EOF" && regex.test(str + nextToken.text)) {
|
16748
|
+
lastToken = nextToken;
|
16751
16749
|
str += lastToken.text;
|
16752
16750
|
this.consume();
|
16753
16751
|
}
|
@@ -16801,7 +16799,7 @@ function () {
|
|
16801
16799
|
var res;
|
16802
16800
|
var isBlank = false;
|
16803
16801
|
|
16804
|
-
if (!optional && this.
|
16802
|
+
if (!optional && this.fetch().text !== "{") {
|
16805
16803
|
res = this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2} *$/, "size");
|
16806
16804
|
} else {
|
16807
16805
|
res = this.parseStringGroup("size", optional);
|
@@ -16844,13 +16842,18 @@ function () {
|
|
16844
16842
|
};
|
16845
16843
|
}
|
16846
16844
|
/**
|
16847
|
-
* Parses an URL, checking escaped letters and allowed protocols
|
16845
|
+
* Parses an URL, checking escaped letters and allowed protocols,
|
16846
|
+
* and setting the catcode of % as an active character (as in \hyperref).
|
16848
16847
|
*/
|
16849
16848
|
;
|
16850
16849
|
|
16851
|
-
_proto.parseUrlGroup = function parseUrlGroup(optional) {
|
16850
|
+
_proto.parseUrlGroup = function parseUrlGroup(optional, consumeSpaces) {
|
16851
|
+
this.gullet.lexer.setCatcode("%", 13); // active character
|
16852
|
+
|
16852
16853
|
var res = this.parseStringGroup("url", optional, true); // get raw string
|
16853
16854
|
|
16855
|
+
this.gullet.lexer.setCatcode("%", 14); // comment character
|
16856
|
+
|
16854
16857
|
if (!res) {
|
16855
16858
|
return null;
|
16856
16859
|
} // hyperref package allows backslashes alone in href, but doesn't
|
@@ -16881,26 +16884,35 @@ function () {
|
|
16881
16884
|
;
|
16882
16885
|
|
16883
16886
|
_proto.parseGroup = function parseGroup(name, // For error reporting.
|
16884
|
-
optional, greediness, breakOnTokenText, mode) {
|
16887
|
+
optional, greediness, breakOnTokenText, mode, consumeSpaces) {
|
16888
|
+
// Switch to specified mode
|
16885
16889
|
var outerMode = this.mode;
|
16886
|
-
var firstToken = this.nextToken;
|
16887
|
-
var text = firstToken.text; // Switch to specified mode
|
16888
16890
|
|
16889
16891
|
if (mode) {
|
16890
16892
|
this.switchMode(mode);
|
16891
|
-
}
|
16893
|
+
} // Consume spaces if requested, crucially *after* we switch modes,
|
16894
|
+
// so that the next non-space token is parsed in the correct mode.
|
16895
|
+
|
16896
|
+
|
16897
|
+
if (consumeSpaces) {
|
16898
|
+
this.consumeSpaces();
|
16899
|
+
} // Get first token
|
16892
16900
|
|
16893
|
-
|
16901
|
+
|
16902
|
+
var firstToken = this.fetch();
|
16903
|
+
var text = firstToken.text;
|
16894
16904
|
var result; // Try to parse an open brace or \begingroup
|
16895
16905
|
|
16896
16906
|
if (optional ? text === "[" : text === "{" || text === "\\begingroup") {
|
16897
|
-
|
16907
|
+
this.consume();
|
16908
|
+
var groupEnd = Parser.endOfGroup[text]; // Start a new group namespace
|
16898
16909
|
|
16899
16910
|
this.gullet.beginGroup(); // If we get a brace, parse an expression
|
16900
16911
|
|
16901
|
-
this.consume();
|
16902
16912
|
var expression = this.parseExpression(false, groupEnd);
|
16903
|
-
var lastToken = this.
|
16913
|
+
var lastToken = this.fetch(); // Check that we got a matching closing brace
|
16914
|
+
|
16915
|
+
this.expect(groupEnd); // End group namespace
|
16904
16916
|
|
16905
16917
|
this.gullet.endGroup();
|
16906
16918
|
result = {
|
@@ -16935,11 +16947,6 @@ function () {
|
|
16935
16947
|
|
16936
16948
|
if (mode) {
|
16937
16949
|
this.switchMode(outerMode);
|
16938
|
-
} // Make sure we got a close brace
|
16939
|
-
|
16940
|
-
|
16941
|
-
if (groupEnd) {
|
16942
|
-
this.expect(groupEnd);
|
16943
16950
|
}
|
16944
16951
|
|
16945
16952
|
return result;
|
@@ -16995,12 +17002,12 @@ function () {
|
|
16995
17002
|
}
|
16996
17003
|
/**
|
16997
17004
|
* Parse a single symbol out of the string. Here, we handle single character
|
16998
|
-
* symbols and special functions like
|
17005
|
+
* symbols and special functions like \verb.
|
16999
17006
|
*/
|
17000
17007
|
;
|
17001
17008
|
|
17002
17009
|
_proto.parseSymbol = function parseSymbol() {
|
17003
|
-
var nucleus = this.
|
17010
|
+
var nucleus = this.fetch();
|
17004
17011
|
var text = nucleus.text;
|
17005
17012
|
|
17006
17013
|
if (/^\\verb[^a-zA-Z]/.test(text)) {
|
@@ -17319,7 +17326,7 @@ var katex_renderToHTMLTree = function renderToHTMLTree(expression, options) {
|
|
17319
17326
|
/**
|
17320
17327
|
* Current KaTeX version
|
17321
17328
|
*/
|
17322
|
-
version: "0.11.
|
17329
|
+
version: "0.11.1",
|
17323
17330
|
|
17324
17331
|
/**
|
17325
17332
|
* Renders the given LaTeX into an HTML+MathML combination, and adds
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jekyll-latex-block
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.11.
|
4
|
+
version: 0.11.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tom Richards
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-05-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: codecov
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.1'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.1'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: irb
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -39,47 +53,47 @@ dependencies:
|
|
39
53
|
- !ruby/object:Gem::Version
|
40
54
|
version: '1.0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
56
|
+
name: mutant-rspec
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
59
|
- - "~>"
|
46
60
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
61
|
+
version: '0.9'
|
48
62
|
type: :development
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
66
|
- - "~>"
|
53
67
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
68
|
+
version: '0.9'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
70
|
+
name: rake
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
73
|
- - "~>"
|
60
74
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
75
|
+
version: '13.0'
|
62
76
|
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
80
|
- - "~>"
|
67
81
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
82
|
+
version: '13.0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
84
|
+
name: rspec
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
87
|
- - "~>"
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
89
|
+
version: '3.9'
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
94
|
- - "~>"
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
96
|
+
version: '3.9'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: rubocop
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -146,16 +160,22 @@ dependencies:
|
|
146
160
|
name: liquid-tag-parser
|
147
161
|
requirement: !ruby/object:Gem::Requirement
|
148
162
|
requirements:
|
149
|
-
- - "
|
163
|
+
- - ">="
|
150
164
|
- !ruby/object:Gem::Version
|
151
165
|
version: '1.9'
|
166
|
+
- - "<"
|
167
|
+
- !ruby/object:Gem::Version
|
168
|
+
version: '3.0'
|
152
169
|
type: :runtime
|
153
170
|
prerelease: false
|
154
171
|
version_requirements: !ruby/object:Gem::Requirement
|
155
172
|
requirements:
|
156
|
-
- - "
|
173
|
+
- - ">="
|
157
174
|
- !ruby/object:Gem::Version
|
158
175
|
version: '1.9'
|
176
|
+
- - "<"
|
177
|
+
- !ruby/object:Gem::Version
|
178
|
+
version: '3.0'
|
159
179
|
description: Renders LaTeX formulas to your site via KaTeX
|
160
180
|
email:
|
161
181
|
- tom@tomrichards.net
|
@@ -190,7 +210,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
190
210
|
- !ruby/object:Gem::Version
|
191
211
|
version: '0'
|
192
212
|
requirements: []
|
193
|
-
rubygems_version: 3.
|
213
|
+
rubygems_version: 3.1.2
|
194
214
|
signing_key:
|
195
215
|
specification_version: 4
|
196
216
|
summary: LaTeX integration for Jekyll
|