zotica 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,68 @@
1
+ //
2
+
3
+
4
+ class TreeModifier extends Modifier {
5
+
6
+ modify(element) {
7
+ let antecendentContainerElement = this.findChild(element, "math-ant");
8
+ let firstAntecedentElement = antecendentContainerElement.children[0];
9
+ let lastAntecedentElement = antecendentContainerElement.children[antecendentContainerElement.children.length - 1];
10
+ let firstContentElement = this.calcContentElement(firstAntecedentElement);
11
+ let lastContentElement = this.calcContentElement(lastAntecedentElement);
12
+ let leftLabelElement = element.previousElementSibling;
13
+ let rightLabelElement = element.nextElementSibling;
14
+ let consequentWrapperElement = this.findChild(element, "math-conwrap");
15
+ let lineElement = this.findChild(consequentWrapperElement, "math-line");
16
+ let consequentElement = this.findChild(consequentWrapperElement, "math-con");
17
+ let contentElement = this.findChild(consequentElement, "math-cont");
18
+ let fontRatio = this.getFontSize(element) / this.getFontSize(leftLabelElement);
19
+ let leftLabelWidth = this.getWidth(leftLabelElement, element);
20
+ let rightLabelWidth = this.getWidth(rightLabelElement, element);
21
+ let contentWidth = this.getWidth(contentElement);
22
+ let wholeWidth = this.getWidth(element);
23
+ let leftExtrusion = 0;
24
+ let rightExtrusion = 0;
25
+ if (firstContentElement && firstContentElement.localName != "math-axiom") {
26
+ leftExtrusion = this.getOffsetLeft(firstContentElement);
27
+ }
28
+ if (lastContentElement && lastContentElement.localName != "math-axiom") {
29
+ rightExtrusion = this.getOffsetRight(lastContentElement);
30
+ }
31
+ let lineWidth = wholeWidth - leftExtrusion - rightExtrusion;
32
+ let leftMargin = (lineWidth - contentWidth) / 2 + leftExtrusion;
33
+ consequentElement.style.setProperty("margin-left", "" + leftMargin + "em");
34
+ if (leftExtrusion > this.getOffsetLeft(contentElement) - leftLabelWidth) {
35
+ leftExtrusion = this.getOffsetLeft(contentElement) - leftLabelWidth;
36
+ }
37
+ if (rightExtrusion > this.getOffsetRight(contentElement) - rightLabelWidth) {
38
+ rightExtrusion = this.getOffsetRight(contentElement) - rightLabelWidth;
39
+ }
40
+ lineWidth = wholeWidth - leftExtrusion - rightExtrusion;
41
+ lineElement.style.setProperty("width", "" + lineWidth + "em", "important");
42
+ lineElement.style.setProperty("margin-left", "" + leftExtrusion + "em", "important");
43
+ element.style.setProperty("margin-right", "" + (-rightExtrusion) + "em", "important");
44
+ if (rightLabelWidth < rightExtrusion) {
45
+ rightLabelElement.style.setProperty("margin-right", "" + ((rightExtrusion - rightLabelWidth) * fontRatio) + "em", "important");
46
+ }
47
+ element.style.setProperty("margin-left", "" + (-leftExtrusion) + "em", "important");
48
+ if (leftLabelWidth < leftExtrusion) {
49
+ leftLabelElement.style.setProperty("margin-left", "" + ((leftExtrusion - leftLabelWidth) * fontRatio) + "em", "important");
50
+ }
51
+ }
52
+
53
+ calcContentElement(antecedentElement) {
54
+ let contentElement = null;
55
+ if (antecedentElement) {
56
+ if (antecedentElement.localName == "math-axiom") {
57
+ contentElement = antecedentElement;
58
+ } else {
59
+ let stepElement = this.findChild(antecedentElement, "math-step");
60
+ let consequenceWrapperElement = this.findChild(stepElement, "math-conwrap");
61
+ let consequentElement = this.findChild(consequenceWrapperElement, "math-con");
62
+ contentElement = this.findChild(consequentElement, "math-cont");
63
+ }
64
+ }
65
+ return contentElement;
66
+ }
67
+
68
+ }
@@ -0,0 +1,9 @@
1
+ //
2
+
3
+
4
+ class UnderoverModifier extends Modifier {
5
+
6
+ modify(element) {
7
+ }
8
+
9
+ }
@@ -0,0 +1,121 @@
1
+ //
2
+
3
+
4
+ class WideModifier extends Modifier {
5
+
6
+ modify(element) {
7
+ let baseWrapperElement = this.findChild(element, "math-basewrap");
8
+ let overElement = this.findChild(element, "math-over");
9
+ let contentElement = baseWrapperElement.children[0];
10
+ let parentElements = [baseWrapperElement.children[1], overElement];
11
+ let kind = this.calcKind(element);
12
+ for (let position of [0, 1]) {
13
+ let parentElement = parentElements[position];
14
+ if (parentElement) {
15
+ let stretchLevel = this.calcStretchLevel(contentElement, kind, position);
16
+ if (stretchLevel != null) {
17
+ this.modifyStretch(contentElement, parentElement, kind, stretchLevel, position);
18
+ } else {
19
+ this.appendStretch(contentElement, parentElement, kind, position);
20
+ }
21
+ }
22
+ }
23
+ }
24
+
25
+ modifyStretch(contentElement, parentElement, kind, stretchLevel, position) {
26
+ let symbolElement = parentElement.children[0];
27
+ symbolElement.textContent = DATA["wide"][kind][position][stretchLevel];
28
+ }
29
+
30
+ appendStretch(contentElement, parentElement, kind, position) {
31
+ let stretchElement = document.createElement("math-hstretch");
32
+ let hasStart = !!DATA["wide"][kind][position]["start"];
33
+ let hasEnd = !!DATA["wide"][kind][position]["end"];
34
+ let hasMiddle = !!DATA["wide"][kind][position]["middle"];
35
+ let startElement = null;
36
+ let endElement = null;
37
+ let middleElement = null;
38
+ if (hasStart) {
39
+ startElement = document.createElement("math-start");
40
+ startElement.textContent = DATA["wide"][kind][position]["start"];
41
+ stretchElement.append(startElement);
42
+ }
43
+ if (hasMiddle) {
44
+ middleElement = document.createElement("math-middle");
45
+ middleElement.textContent = DATA["wide"][kind][position]["middle"];
46
+ stretchElement.append(middleElement);
47
+ }
48
+ if (hasEnd) {
49
+ endElement = document.createElement("math-end");
50
+ endElement.textContent = DATA["wide"][kind][position]["end"];
51
+ stretchElement.append(endElement);
52
+ }
53
+ parentElement.removeChild(parentElement.children[0]);
54
+ parentElement.appendChild(stretchElement);
55
+ let barSize = (hasMiddle) ? 2 : 1;
56
+ let barWidth = this.calcBarWidth(contentElement, startElement, endElement, middleElement);
57
+ for (let i = 0 ; i < barSize ; i ++) {
58
+ let barWrapperElement = document.createElement("math-barwrap");
59
+ let barElement = document.createElement("math-bar");
60
+ barElement.textContent = DATA["wide"][kind][position]["bar"];
61
+ barWrapperElement.style.width = "" + barWidth + "em";
62
+ barWrapperElement.append(barElement);
63
+ if (i == 0) {
64
+ stretchElement.insertBefore(barWrapperElement, stretchElement.children[(hasStart) ? 1 : 0]);
65
+ } else {
66
+ stretchElement.insertBefore(barWrapperElement, stretchElement.children[(hasStart) ? 3 : 2]);
67
+ }
68
+ }
69
+ }
70
+
71
+ calcKind(element) {
72
+ let kind = "widetilde";
73
+ if (element.getAttribute("data-kind")) {
74
+ kind = element.getAttribute("data-kind");
75
+ }
76
+ return kind;
77
+ }
78
+
79
+ calcMaxStretchLevel(kind, position) {
80
+ let keys = Object.keys(DATA["wide"][kind][position]);
81
+ let maxStretchLevel = -1;
82
+ for (let key of keys) {
83
+ if (key.match(/^\d+$/) && DATA["wide"][kind][position][key] && parseInt(key) > maxStretchLevel) {
84
+ maxStretchLevel = parseInt(key);
85
+ }
86
+ }
87
+ return maxStretchLevel;
88
+ }
89
+
90
+ calcStretchLevel(element, kind, position) {
91
+ let widthAbs = this.getWidth(element) * 1000;
92
+ let maxStretchLevel = this.calcMaxStretchLevel(kind, position);
93
+ let stretchLevel = null;
94
+ for (let i = 0 ; i <= maxStretchLevel ; i ++) {
95
+ if (widthAbs <= DATA["wide"][kind][position]["width"][i]) {
96
+ stretchLevel = i;
97
+ break;
98
+ }
99
+ }
100
+ if (stretchLevel == null && !DATA["wide"][kind][position]["bar"]) {
101
+ stretchLevel = maxStretchLevel;
102
+ }
103
+ return stretchLevel;
104
+ }
105
+
106
+ calcBarWidth(element, startElement, endElement, middleElement) {
107
+ let wholeWidth = this.getWidth(element);
108
+ let startWidth = (startElement) ? this.getWidth(startElement) : 0;
109
+ let endWidth = (endElement) ? this.getWidth(endElement) : 0;
110
+ let middleWidth = (middleElement) ? this.getWidth(middleElement) : 0;
111
+ let width = wholeWidth - startWidth - endWidth - middleWidth;
112
+ if (middleElement) {
113
+ width = width / 2;
114
+ }
115
+ if (width < 0) {
116
+ width = 0;
117
+ }
118
+ return width;
119
+ }
120
+
121
+ }
@@ -0,0 +1,680 @@
1
+ @charset "utf-8";
2
+
3
+
4
+ @function spacing($value) {
5
+ $spacing-const: 1em / 18;
6
+ @return $value * $spacing-const;
7
+ }
8
+
9
+
10
+ @mixin math-font {
11
+ margin-top: 0.12em;
12
+ margin-bottom: 0em;
13
+ line-height: 0.9;
14
+ font-family: "Math";
15
+ }
16
+
17
+ @mixin normal-font {
18
+ margin-top: 0em;
19
+ margin-bottom: 0em;
20
+ font-family: inherit;
21
+ }
22
+
23
+
24
+ math-n {
25
+ margin: 0em spacing(0);
26
+ line-height: 1;
27
+ }
28
+
29
+
30
+ math-i {
31
+ padding-right: spacing(1);
32
+ line-height: 1;
33
+ font-style: italic;
34
+
35
+ &.rm {
36
+ padding-right: spacing(0);
37
+ font-style: normal;
38
+ }
39
+
40
+ &.bf {
41
+ font-weight: bold;
42
+ }
43
+
44
+ &.tt {
45
+ font-family: "Consolas";
46
+ font-style: normal;
47
+ }
48
+
49
+ &.alt {
50
+ @include math-font;
51
+ padding-right: spacing(0);
52
+ font-style: normal;
53
+ }
54
+
55
+ }
56
+
57
+
58
+ math-o {
59
+ @include math-font;
60
+
61
+ &.txt {
62
+ @include normal-font;
63
+ }
64
+
65
+ &.sml {
66
+ @include normal-font;
67
+ font-variant: all-small-caps;
68
+ }
69
+
70
+ &.int {
71
+ margin-top: 0.65em;
72
+ margin-bottom: 0.7em;
73
+ }
74
+
75
+ &.int.inl {
76
+ margin-top: 0em;
77
+ margin-bottom: 0.05em;
78
+ }
79
+
80
+ &.sum {
81
+ margin-top: 0.24em;
82
+ margin-bottom: 0.24em;
83
+ }
84
+
85
+ &.sum.inl {
86
+ margin-top: 0.1em;
87
+ margin-bottom: 0.05em;
88
+ }
89
+
90
+ &.acc {
91
+ margin-top: 0em;
92
+ margin-bottom: 0em;
93
+ }
94
+
95
+ math-over >&.acc {
96
+ margin-top: -0.05em;
97
+ }
98
+
99
+ math-over >&.acc.it {
100
+ margin-right: -0.15em !important;
101
+ }
102
+
103
+ math-under >&.acc {
104
+ margin-bottom: -0.05em;
105
+ }
106
+
107
+ math-under >&.acc.it {
108
+ margin-left: -0.1em !important;
109
+ }
110
+
111
+ math-over >&.wid {
112
+ margin-top: 0.1em;
113
+ margin-bottom: 0em;
114
+ }
115
+
116
+ math-under >&.wid {
117
+ margin-top: 0em;
118
+ margin-bottom: 0.1em;
119
+ }
120
+
121
+ *:not(.lpres) >&:first-child,
122
+ *:not(.lpres) >math-strut +& {
123
+ margin-left: spacing(0);
124
+ margin-right: spacing(0);
125
+ }
126
+
127
+ }
128
+
129
+
130
+ math-frac {
131
+ margin: 0em spacing(2) !important;
132
+ vertical-align: -0.01em;
133
+
134
+ >math-num {
135
+ margin-bottom: -0.1em;
136
+ text-align: center;
137
+ display: block;
138
+ }
139
+
140
+ >math-denwrap {
141
+ margin: 0.2em 0em 0em 0em;
142
+ width: 100%;
143
+ display: inline-table;
144
+ text-align: center;
145
+ }
146
+
147
+ >math-denwrap >math-line {
148
+ margin: 0em spacing(-2) 0.18em spacing(-2) !important;
149
+ padding: 0em spacing(2) !important;
150
+ width: 100%;
151
+ height: 0.06em;
152
+ border-top: 0.06em solid;
153
+ box-sizing: content-box;
154
+ }
155
+
156
+ >math-denwrap >math-den {
157
+ margin: 0em 0em;
158
+ text-align: center;
159
+ display: block;
160
+ }
161
+
162
+ }
163
+
164
+
165
+ math-step {
166
+ margin: 0em !important;
167
+ vertical-align: -0.01em;
168
+
169
+ >math-ant {
170
+ margin-bottom: -0.1em;
171
+ text-align: center;
172
+ display: block;
173
+ }
174
+
175
+ >math-ant >* {
176
+ margin-left: spacing(24);
177
+ }
178
+
179
+ >math-ant >*:first-child {
180
+ margin-left: spacing(0);
181
+ }
182
+
183
+ >math-conwrap {
184
+ margin: 0.2em 0em 0em 0em;
185
+ width: 100%;
186
+ display: inline-table;
187
+ text-align: left;
188
+ }
189
+
190
+ >math-conwrap >math-line {
191
+ margin: 0em 0em 0.18em 0em !important;
192
+ padding: 0em 0em !important;
193
+ width: 0em;
194
+ height: 0.06em;
195
+ border-top: 0.06em solid;
196
+ box-sizing: content-box;
197
+ }
198
+
199
+ >math-conwrap >math-con {
200
+ margin: 0em 0em;
201
+ text-align: left;
202
+ display: block;
203
+ }
204
+
205
+ }
206
+
207
+
208
+ math-rad {
209
+
210
+ >math-sqrt {
211
+ margin-top: 0em;
212
+ }
213
+
214
+ >math-sqrt >math-surd {
215
+ margin-top: 0.21em;
216
+ vertical-align: top;
217
+ }
218
+
219
+ >math-sqrt >math-surd >math-o {
220
+ margin-top: 0em;
221
+ margin-bottom: 0em;
222
+ }
223
+
224
+ >math-sqrt >math-cont {
225
+ margin: 0em spacing(1) 0em spacing(0);
226
+ padding-top: 0.25em;
227
+ border-top: 0.06em solid;
228
+ }
229
+
230
+ >math-index {
231
+ vertical-align: 0.9em;
232
+ font-size: 64%;
233
+ }
234
+
235
+ >math-index +math-sqrt {
236
+ margin-left: -0.5em;
237
+ }
238
+
239
+ }
240
+
241
+
242
+ math-subsup {
243
+
244
+ >math-base {
245
+ margin: 0em spacing(0);
246
+ }
247
+
248
+ >math-sub,
249
+ >math-lsub {
250
+ margin-bottom: -0em;
251
+ vertical-align: -0.2969em;
252
+ font-size: 80%;
253
+ text-align: left;
254
+ }
255
+
256
+ >math-lsub {
257
+ text-align: right;
258
+ }
259
+
260
+ >math-sup,
261
+ >math-lsup {
262
+ margin-top: -0em;
263
+ vertical-align: 0.3906em;
264
+ font-size: 80%;
265
+ text-align: left;
266
+ }
267
+
268
+ >math-lsup {
269
+ text-align: right;
270
+ }
271
+
272
+ &.int {
273
+ margin: 0em spacing(0);
274
+ }
275
+
276
+ }
277
+
278
+
279
+ math-underover {
280
+
281
+ >math-over {
282
+ margin-bottom: spacing(4);
283
+ margin-top: -0em;
284
+ font-size: 80%;
285
+ text-align: center;
286
+ display: block;
287
+ }
288
+
289
+ &.acc >math-over {
290
+ margin-bottom: -0.55em;
291
+ font-size: 100%;
292
+ }
293
+
294
+ &.wid >math-over {
295
+ margin-bottom: -0.6em;
296
+ font-size: 100%;
297
+ }
298
+
299
+ &.wid[data-kind="overbrace"] >math-over {
300
+ margin-bottom: -0.6em;
301
+ margin-top: 0.05em;
302
+ }
303
+
304
+ &.wid[data-kind="overline"] >math-over {
305
+ margin-top: -0.1em;
306
+ }
307
+
308
+ &.wid[data-kind="overrarr"] >math-over,
309
+ &.wid[data-kind="overlarr"] >math-over {
310
+ margin-top: -0.05em;
311
+ }
312
+
313
+ >math-basewrap {
314
+ margin: 0em 0em;
315
+ width: 100%;
316
+ display: inline-table;
317
+ }
318
+
319
+ >math-basewrap >math-base {
320
+ margin: 0em 0em;
321
+ text-align: center;
322
+ display: block;
323
+ }
324
+
325
+ >math-basewrap >math-under {
326
+ margin-top: spacing(4);
327
+ margin-bottom: -0em;
328
+ font-size: 80%;
329
+ text-align: center;
330
+ display: block;
331
+ }
332
+
333
+ &.acc >math-basewrap >math-under {
334
+ margin-top: -0.6em;
335
+ font-size: 100%;
336
+ }
337
+
338
+ &.wid >math-basewrap >math-under {
339
+ margin-top: -0.7em;
340
+ font-size: 100%;
341
+ }
342
+
343
+ &.wid[data-kind="underbrace"] >math-basewrap >math-under {
344
+ margin-top: -0.6em;
345
+ margin-bottom: 0.05em;
346
+ }
347
+
348
+ &.wid[data-kind="underline"] >math-basewrap >math-under {
349
+ margin-bottom: -0.15em;
350
+ }
351
+
352
+ &.wid[data-kind="underrarr"] >math-basewrap >math-under,
353
+ &.wid[data-kind="underlarr"] >math-basewrap >math-under {
354
+ margin-bottom: -0.1em;
355
+ }
356
+
357
+ }
358
+
359
+
360
+ math-vstretch {
361
+ display: inline-flex !important;
362
+ flex-direction: column;
363
+
364
+ >math-start,
365
+ >math-barwrap >math-bar,
366
+ >math-middle,
367
+ >math-end {
368
+ height: 1.25em;
369
+ line-height: 2em;
370
+ font-family: "Math";
371
+ display: block;
372
+ }
373
+
374
+ >math-middle {
375
+ height: 1.9em;
376
+ line-height: 3.4em;
377
+ }
378
+
379
+ >math-barwrap {
380
+ overflow: hidden;
381
+ }
382
+
383
+ >math-barwrap >math-bar {
384
+ transform: scale(1, 100);
385
+ }
386
+
387
+ }
388
+
389
+
390
+ math-hstretch {
391
+
392
+ >math-start,
393
+ >math-barwrap >math-bar,
394
+ >math-middle,
395
+ >math-end {
396
+ font-family: "Math";
397
+ line-height: 0.8em;
398
+ }
399
+
400
+ math-over >& >math-start,
401
+ math-over >& >math-barwrap,
402
+ math-over >& >math-middle,
403
+ math-over >& >math-end {
404
+ padding-top: 0.2em;
405
+ vertical-align: top;
406
+ }
407
+
408
+ math-under >& >math-start,
409
+ math-under >& >math-barwrap,
410
+ math-under >& >math-middle,
411
+ math-under >& >math-end {
412
+ padding-bottom: 0.2em;
413
+ vertical-align: bottom;
414
+ }
415
+
416
+ >math-barwrap {
417
+ overflow: hidden;
418
+ }
419
+
420
+ >math-barwrap >math-bar {
421
+ transform: scale(100, 1);
422
+ }
423
+
424
+ }
425
+
426
+
427
+ math-table {
428
+ vertical-align: middle;
429
+ display: inline-grid !important;
430
+ align-items: baseline;
431
+
432
+ &.std {
433
+ gap: spacing(10) spacing(0);
434
+ }
435
+
436
+ &.stk {
437
+ gap: spacing(3) spacing(0);
438
+ }
439
+
440
+ &.mat {
441
+ gap: spacing(6) spacing(15);
442
+ }
443
+
444
+ &.cas {
445
+ gap: spacing(6) spacing(24);
446
+ }
447
+
448
+ >math-cell {
449
+ text-align: center;
450
+ }
451
+
452
+ }
453
+
454
+
455
+ math-diagram {
456
+ row-gap: spacing(54);
457
+ column-gap: spacing(72);
458
+ vertical-align: middle;
459
+ display: inline-grid !important;
460
+ align-items: baseline;
461
+ position: relative;
462
+
463
+ $row-gaps: (non: 0, sthn: 9, vthn: 18, thn: 36, med: 54, thk: 72, vthk: 90, sthk: 108, uthk: 126);
464
+ $column-gaps: (non: 0, sthn: 12, vthn: 24, thn: 48, med: 72, thk: 96, vthk: 120, sthk: 144, uthk: 168);
465
+
466
+ @each $name, $gap in $row-gaps {
467
+ &.v#{$name} {
468
+ row-gap: spacing($gap);
469
+ }
470
+ }
471
+
472
+ @each $name, $gap in $column-gaps {
473
+ &.h#{$name} {
474
+ column-gap: spacing($gap);
475
+ }
476
+ }
477
+
478
+ >math-cellwrap {
479
+ text-align: center;
480
+ }
481
+
482
+ @each $name, $gap in $row-gaps {
483
+ >math-cellwrap.v#{$name} {
484
+ margin-top: spacing($gap);
485
+ }
486
+ }
487
+
488
+ @each $name, $gap in $column-gaps {
489
+ >math-cellwrap.h#{$name} {
490
+ margin-left: spacing($gap);
491
+ }
492
+ }
493
+
494
+ >math-arrow {
495
+ font-size: 80%;
496
+ position: absolute;
497
+ }
498
+
499
+ >svg {
500
+ width: 100%;
501
+ height: 100%;
502
+ position: absolute;
503
+ top: 0px;
504
+ left: 0px;
505
+ overflow: visible;
506
+ pointer-events: none;
507
+ }
508
+
509
+ >svg path {
510
+ stroke-width: 0.06;
511
+ stroke: currentcolor;
512
+ fill: none;
513
+ }
514
+
515
+ >svg path.double.base {
516
+ stroke-width: 0.24;
517
+ }
518
+
519
+ >svg path.double.cover {
520
+ stroke-width: 0.12;
521
+ }
522
+
523
+ >svg path.triple.base {
524
+ stroke-width: 0.42;
525
+ }
526
+
527
+ >svg path.triple.cover {
528
+ stroke-width: 0.3;
529
+ }
530
+
531
+ >svg path.triple.front {
532
+ stroke-width: 0.06;
533
+ }
534
+
535
+ >svg path.dashed {
536
+ stroke-dasharray: 0.2 0.2;
537
+ }
538
+
539
+ >svg marker {
540
+ overflow: visible;
541
+ }
542
+
543
+ }
544
+
545
+
546
+ math-tree {
547
+ vertical-align: middle;
548
+
549
+ math-infer {
550
+ vertical-align: bottom;
551
+ position: relative;
552
+ }
553
+
554
+ math-infer >math-label {
555
+ font-size: 80%;
556
+ }
557
+
558
+ math-infer >math-label:first-child {
559
+ padding-right: spacing(3);
560
+ }
561
+
562
+ math-infer >math-label:last-child {
563
+ padding-left: spacing(3);
564
+ }
565
+
566
+ math-infer >math-label.non {
567
+ padding-left: spacing(0);
568
+ padding-right: spacing(0);
569
+ }
570
+
571
+ math-axiom,
572
+ math-con >math-cont {
573
+ padding: 0em spacing(5);
574
+ }
575
+
576
+ }
577
+
578
+
579
+ math-space {
580
+
581
+ $margins: (
582
+ afun: 3, abin: 4, arel: 5, asbin: 8, asrel: 8, amat: 15, acas: 24,
583
+ sthn: 1, vthn: 2, thn: 3, med: 4, thk: 5, vthk: 6, sthk: 7, uthk: 8, hlf: 9, sgl: 18, ssq: 27, dbl: 36
584
+ );
585
+
586
+ @each $name, $margin in $margins {
587
+ &.#{$name} {
588
+ margin-left: spacing($margin) !important;
589
+ }
590
+ }
591
+
592
+ }
593
+
594
+
595
+ math-phantom {
596
+ visibility: hidden;
597
+
598
+ &.hor {
599
+ height: 0em !important;
600
+ }
601
+
602
+ &.ver {
603
+ width: 0em !important;
604
+ }
605
+
606
+ }
607
+
608
+
609
+ math-strut {
610
+ width: 0em !important;
611
+ visibility: hidden;
612
+ }
613
+
614
+
615
+ math-text {
616
+ line-height: 0.8;
617
+ white-space: pre;
618
+ }
619
+
620
+
621
+ math-root {
622
+ line-height: 0;
623
+ display: inline-block;
624
+ box-sizing: border-box;
625
+ white-space: nowrap;
626
+
627
+ * {
628
+ display: inline-block;
629
+ box-sizing: border-box;
630
+ }
631
+
632
+ $margins: (bin: 4 4, rel: 5 5, sbin: 8 8, srel: 8 8, del: 0 5, fun: 0 3, ord: 0 0, par: 0 0, lpar: 0 0, rpar: 0 0, cpar: 5 5);
633
+
634
+ @each $name, $margin in $margins {
635
+ *.#{$name} {
636
+ margin-left: spacing(nth($margin, 1));
637
+ margin-right: spacing(nth($margin, 2));
638
+ }
639
+ }
640
+
641
+ $small-elements: math-sub, math-sup, math-lsub, math-lsup, math-under, math-over, math-index, math-arrow, math-label;
642
+ $shrink-names: bin, rel, sbin, srel, del, cpar;
643
+
644
+ @each $small-element in $small-elements {
645
+ @each $shrink-name in $shrink-names {
646
+ #{$small-element} *.#{$shrink-name} {
647
+ margin-left: spacing(0) !important;
648
+ margin-right: spacing(0) !important;
649
+ }
650
+ }
651
+ }
652
+
653
+ *.fun +*.par,
654
+ *.fun +*.lpar {
655
+ margin-left: spacing(- nth(map-get($margins, fun), 2)) !important;
656
+ }
657
+
658
+ *.not {
659
+ padding-left: spacing(5);
660
+ padding-right: spacing(5);
661
+ margin-left: spacing(-10);
662
+ margin-right: spacing(0);
663
+ }
664
+
665
+ *:not(.lpres) >*:first-child,
666
+ *:not(.lpres) >math-strut +* {
667
+ margin-left: spacing(0);
668
+ }
669
+
670
+ *:not(.rpres) >*:last-child {
671
+ margin-right: spacing(0);
672
+ }
673
+
674
+ }
675
+
676
+
677
+ @font-face {
678
+ font-family: "Math";
679
+ src: url("__mathfonturl__");
680
+ }