diff --git a/testsuite/tests/input/tex/Mhchem.test.ts b/testsuite/tests/input/tex/Mhchem.test.ts
index ba0fc030c..f1dc8888a 100644
--- a/testsuite/tests/input/tex/Mhchem.test.ts
+++ b/testsuite/tests/input/tex/Mhchem.test.ts
@@ -46,7 +46,7 @@ describe('Mhchem0', () => {
-
+ ⟶
2
@@ -1283,7 +1283,7 @@ describe('Mhchem2', () => {
-
+ ⟶
@@ -1306,7 +1306,7 @@ describe('Mhchem2', () => {
-
+ ⟵
@@ -1329,7 +1329,7 @@ describe('Mhchem2', () => {
-
+ ⟷
@@ -1352,7 +1352,7 @@ describe('Mhchem2', () => {
-
+ ⇄
@@ -1375,7 +1375,7 @@ describe('Mhchem2', () => {
-
+ ⇌
@@ -1398,7 +1398,7 @@ describe('Mhchem2', () => {
-
+
@@ -1421,7 +1421,7 @@ describe('Mhchem2', () => {
-
+
@@ -2944,13 +2944,13 @@ describe('Mhchem6', () => {
A
-
+ →
B
-
+ ←
C
@@ -3754,7 +3754,7 @@ describe('Mhchem7', () => {
-
+ ⟶
@@ -3814,7 +3814,7 @@ describe('Mhchem8', () => {
-
+ ⟶
@@ -4030,7 +4030,7 @@ describe('Mhchem8', () => {
-
+ ⇌
+
@@ -4130,7 +4130,7 @@ describe('Mhchem8', () => {
-
+ ⇌
+
@@ -4757,7 +4757,7 @@ describe('Mhchem-Ams', () => {
-
+ ⟶
I
@@ -4808,7 +4808,7 @@ describe('Mhchem-Ams', () => {
-
+ ⟶
I
@@ -4910,7 +4910,7 @@ describe('Mhchem-Ams', () => {
-
+ ⟶
H
@@ -4965,7 +4965,7 @@ describe('Mhchem-Ams', () => {
-
+ ⟶
@@ -5007,7 +5007,7 @@ describe('Mhchem-Ams', () => {
-
+ ⟶
@@ -5094,7 +5094,7 @@ describe('Mhchem-Ams', () => {
-
+ ⟶
Δ
@@ -5240,7 +5240,7 @@ describe('Mhchem-Ams', () => {
-
+ ⟶
I
@@ -5298,7 +5298,7 @@ describe('Mhchem-Ams', () => {
-
+ ⟶
I
@@ -5414,7 +5414,7 @@ describe('Mhchem-Ams', () => {
-
+ ⟵
text
@@ -5448,7 +5448,7 @@ describe('Mhchem-Ams', () => {
-
+ ⟶
text
@@ -5482,7 +5482,7 @@ describe('Mhchem-Ams', () => {
-
+ ⟷
text
@@ -5516,7 +5516,7 @@ describe('Mhchem-Ams', () => {
-
+ ⇄
text
@@ -5550,7 +5550,7 @@ describe('Mhchem-Ams', () => {
-
+ ⇌
text
@@ -5584,7 +5584,7 @@ describe('Mhchem-Ams', () => {
-
+
text
@@ -5618,7 +5618,7 @@ describe('Mhchem-Ams', () => {
-
+
text
@@ -5647,7 +5647,7 @@ describe('Mhchem-Ams', () => {
A
-
+ ↔
B
diff --git a/ts/input/tex/ams/AmsMethods.ts b/ts/input/tex/ams/AmsMethods.ts
index d1ea310da..05df4ccc7 100644
--- a/ts/input/tex/ams/AmsMethods.ts
+++ b/ts/input/tex/ams/AmsMethods.ts
@@ -41,6 +41,7 @@ import {
AbstractMmlTokenNode,
} from '../../../core/MmlTree/MmlNode.js';
import { NewcommandUtil } from '../newcommand/NewcommandUtil.js';
+import { OptionList } from '../../../util/Options.js';
/**
* Utility for breaking the \sideset scripts from any other material.
@@ -541,6 +542,7 @@ export const AmsMethods: { [key: string]: ParseMethod } = {
* @param {number} l Left width.
* @param {number} r Right width.
* @param {number} m Min width
+ * @param {string} variant The variant for the arrow
*/
xArrow(
parser: TexParser,
@@ -548,7 +550,8 @@ export const AmsMethods: { [key: string]: ParseMethod } = {
chr: number,
l: number,
r: number,
- m: number = 0
+ m: number = 0,
+ variant: string = ''
) {
const def = {
width: '+' + UnitUtil.em((l + r) / 18),
@@ -557,12 +560,14 @@ export const AmsMethods: { [key: string]: ParseMethod } = {
const bot = parser.GetBrackets(name);
const first = parser.ParseArg(name);
const dstrut = parser.create('node', 'mspace', [], { depth: '.2em' });
- let arrow = parser.create(
- 'token',
- 'mo',
- { stretchy: true, texClass: TEXCLASS.ORD }, // REL is applied in a TeXAtom below
- String.fromCodePoint(chr)
- );
+ const attrs: OptionList = {
+ stretchy: true,
+ texClass: TEXCLASS.ORD, // REL is applied in a TeXAtom below
+ };
+ if (variant) {
+ attrs.mathvariant = variant;
+ }
+ let arrow = parser.create('token', 'mo', attrs, String.fromCodePoint(chr));
if (m) {
arrow.attributes.set('minsize', UnitUtil.em(m));
}
diff --git a/ts/input/tex/mhchem/MhchemConfiguration.ts b/ts/input/tex/mhchem/MhchemConfiguration.ts
index 0015c31cf..8c98a9c7e 100644
--- a/ts/input/tex/mhchem/MhchemConfiguration.ts
+++ b/ts/input/tex/mhchem/MhchemConfiguration.ts
@@ -33,6 +33,11 @@ import { AmsMethods } from '../ams/AmsMethods.js';
import { mhchemParser } from '#mhchem/mhchemParser.js';
import { TEXCLASS } from '../../../core/MmlTree/MmlNode.js';
+/**
+ * The variant to use for mhchem arrows and bonds
+ */
+export const MHCHEM = '-mhchem';
+
/**
* Creates mo token elements with the proper attributes
*/
@@ -41,7 +46,7 @@ export const MhchemUtils = {
const def = {
stretchy: true,
texClass: TEXCLASS.REL,
- mathvariant: '-mhchem',
+ mathvariant: MHCHEM,
...(mchar.attributes || {}),
};
const node = parser.create('token', 'mo', def, mchar.char);
@@ -121,13 +126,13 @@ export const MhchemMethods: { [key: string]: ParseMethod } = {
const mhchemMacros = new CommandMap('mhchem', {
ce: [MhchemMethods.Machine, 'ce'],
pu: [MhchemMethods.Machine, 'pu'],
- mhchemxrightarrow: [MhchemMethods.xArrow, 0xe429, 5, 9],
- mhchemxleftarrow: [MhchemMethods.xArrow, 0xe428, 9, 5],
- mhchemxleftrightarrow: [MhchemMethods.xArrow, 0xe42a, 9, 9],
- mhchemxleftrightarrows: [MhchemMethods.xArrow, 0xe42b, 9, 9],
- mhchemxrightleftharpoons: [MhchemMethods.xArrow, 0xe408, 5, 9],
- mhchemxRightleftharpoons: [MhchemMethods.xArrow, 0xe409, 5, 9],
- mhchemxLeftrightharpoons: [MhchemMethods.xArrow, 0xe40a, 9, 11],
+ mhchemxleftarrow: [MhchemMethods.xArrow, 0x27f5, 9, 5, 0, MHCHEM],
+ mhchemxrightarrow: [MhchemMethods.xArrow, 0x27f6, 5, 9, 0, MHCHEM],
+ mhchemxleftrightarrow: [MhchemMethods.xArrow, 0x27f7, 9, 9, 0, MHCHEM],
+ mhchemxleftrightarrows: [MhchemMethods.xArrow, 0x21c4, 9, 9, 0, MHCHEM],
+ mhchemxrightleftharpoons: [MhchemMethods.xArrow, 0x21cc, 5, 9, 0, MHCHEM],
+ mhchemxRightleftharpoons: [MhchemMethods.xArrow, 0x1f8d2, 5, 9, 0, MHCHEM],
+ mhchemxLeftrightharpoons: [MhchemMethods.xArrow, 0x1f8d3, 9, 11, 0, MHCHEM],
});
/**
@@ -138,16 +143,16 @@ const mhchemChars = new CharacterMap('mhchem-chars', MhchemUtils.relmo, {
mhchemBondTD: ['\uE411', { stretchy: false }],
mhchemBondTDD: ['\uE412', { stretchy: false }],
mhchemBondDTD: ['\uE413', { stretchy: false }],
- mhchemlongleftarrow: '\uE428',
- mhchemlongrightarrow: '\uE429',
- mhchemlongleftrightarrow: '\uE42A',
- mhchemlongrightleftharpoons: '\uE408',
- mhchemlongRightleftharpoons: '\uE409',
- mhchemlongLeftrightharpoons: '\uE40A',
- mhchemlongleftrightarrows: '\uE42B',
- mhchemrightarrow: '\uE42D',
- mhchemleftarrow: '\uE42C',
- mhchemleftrightarrow: '\uE42E',
+ mhchemlongleftarrow: '\u27F5',
+ mhchemlongrightarrow: '\u27F6',
+ mhchemlongleftrightarrow: '\u27F7',
+ mhchemlongrightleftharpoons: '\u21CC',
+ mhchemlongRightleftharpoons: '\u{1F8D2}',
+ mhchemlongLeftrightharpoons: '\u{1F8D3}',
+ mhchemlongleftrightarrows: '\u21C4',
+ mhchemrightarrow: '\u2192',
+ mhchemleftarrow: '\u2190',
+ mhchemleftrightarrow: '\u2194',
});
/**
diff --git a/ts/output/chtml/FontData.ts b/ts/output/chtml/FontData.ts
index a5180c61b..92b4b51c0 100644
--- a/ts/output/chtml/FontData.ts
+++ b/ts/output/chtml/FontData.ts
@@ -64,7 +64,10 @@ export type ChtmlCharData = CharDataArray;
/**
* The extra data needed for a Variant in CHTML output
*/
-export interface ChtmlVariantData extends VariantData {
+export interface ChtmlVariantData extends VariantData<
+ ChtmlCharOptions,
+ ChtmlDelimiterData
+> {
letter: string; // the font letter(s) for the default font for this variant
}
@@ -141,7 +144,7 @@ export class ChtmlFontData extends FontData<
/**
* Data about the delimiters used (for adpative CSS)
*/
- public delimUsage: Usage = new Usage();
+ public delimUsage: Usage<[number, string]> = new Usage<[number, string]>();
/**
* New styles since last update
@@ -354,8 +357,8 @@ export class ChtmlFontData extends FontData<
* @returns {StyleJson} The modified style list.
*/
public updateStyles(styles: StyleJson): StyleJson {
- for (const N of this.delimUsage.update()) {
- this.addDelimiterStyles(styles, N, this.getDelimiter(N));
+ for (const [N, v] of this.delimUsage.update()) {
+ this.addDelimiterStyles(styles, N, this.getDelimiter(N, v));
}
for (const [name, N] of this.charUsage.update()) {
const variant = this.variant[name];
@@ -440,7 +443,7 @@ export class ChtmlFontData extends FontData<
) {
const HDW = data.HDW as ChtmlCharData;
const [beg, ext, end, mid] = data.stretch;
- const [begV, extV, endV, midV] = this.getStretchVariants(n);
+ const [begV, extV, endV, midV] = this.getStretchVariants(n, data.v);
const Hb = this.addDelimiterVPart(styles, c, 'beg', beg, begV, HDW);
this.addDelimiterVPart(styles, c, 'ext', ext, extV, HDW);
const He = this.addDelimiterVPart(styles, c, 'end', end, endV, HDW);
@@ -524,7 +527,7 @@ export class ChtmlFontData extends FontData<
) {
const HDW = [...data.HDW] as ChtmlCharData;
const [beg, ext, end, mid] = data.stretch;
- const [begV, extV, endV, midV] = this.getStretchVariants(n);
+ const [begV, extV, endV, midV] = this.getStretchVariants(n, data.v);
if (data.hd && !this.options.mathmlSpacing) {
//
// Interpolate between full character height/depth and that of the extender,
diff --git a/ts/output/chtml/Wrappers/mo.ts b/ts/output/chtml/Wrappers/mo.ts
index 404708054..7cb9920dd 100644
--- a/ts/output/chtml/Wrappers/mo.ts
+++ b/ts/output/chtml/Wrappers/mo.ts
@@ -247,11 +247,11 @@ export const ChtmlMo = (function (): ChtmlMoClass {
*/
protected stretchHTML(chtml: N[]) {
const c = this.getText().codePointAt(0);
- this.font.delimUsage.add(c);
+ this.font.delimUsage.add([c, this.variant]);
this.childNodes[0].markUsed();
const delim = this.stretch;
const stretch = delim.stretch;
- const stretchv = this.font.getStretchVariants(c);
+ const stretchv = this.font.getStretchVariants(c, this.variant);
const dom: N[] = [];
//
diff --git a/ts/output/common.ts b/ts/output/common.ts
index 2fe819740..f7d9f23c3 100644
--- a/ts/output/common.ts
+++ b/ts/output/common.ts
@@ -109,7 +109,7 @@ export abstract class CommonOutputJax<
WW, WF, WC, CC, VV, DD, FD, FC
>,
CC extends CharOptions,
- VV extends VariantData,
+ VV extends VariantData,
DD extends DelimiterData,
FD extends FontData,
FC extends FontDataClass,
@@ -189,7 +189,7 @@ export abstract class CommonOutputJax<
*/
public static genericFont: FontDataClass<
CharOptions,
- VariantData,
+ VariantData,
DelimiterData
>;
diff --git a/ts/output/common/FontData.ts b/ts/output/common/FontData.ts
index 779196645..2d1d3c8aa 100644
--- a/ts/output/common/FontData.ts
+++ b/ts/output/common/FontData.ts
@@ -87,17 +87,22 @@ export type CharMapMap = {
* Data for a variant
*
* @template C The CharOptions type
+ * @template D The DelimiterData type
*/
-export interface VariantData {
+export interface VariantData {
/**
* A list of CharMaps that must be updated when characters are
* added to this variant
*/
- linked: CharMap[];
+ linked: [CharMap, DelimiterMap][];
/**
* The character data for this variant
*/
chars: CharMap;
+ /**
+ * The delimiters for the variant
+ */
+ delims: DelimiterMap;
}
/**
@@ -106,7 +111,11 @@ export interface VariantData {
* @template C The CharOptions type
* @template V The VariantData type
*/
-export type VariantMap> = {
+export type VariantMap<
+ C extends CharOptions,
+ V extends VariantData,
+ D extends DelimiterData,
+> = {
[name: string]: V;
};
@@ -144,6 +153,7 @@ export type DelimiterData = {
ext?: number; // The extenders left- plus right-bearing
min?: number; // The minimum size a multi-character version can be
c?: number; // The character number (for aliased delimiters)
+ v?: string; // The variant where this delimiter is defined (normal if not present)
fullExt?: [number, number] // When present, extenders must be full sized, and the first number is
// the size of the extender, while the second is the total size of the ends
};
@@ -157,6 +167,15 @@ export type DelimiterMap = {
[n: number]: D | DynamicFile;
};
+/**
+ * An object mapping variant names to delimiter data maps
+ *
+ * @template D The DelimiterData type
+ */
+export type VDelimiterMap = {
+ [variant: string]: DelimiterMap;
+};
+
/**
* Delimiter data for a non-stretchy character
*/
@@ -253,7 +272,7 @@ export type FontParameterList = {
*/
export type Font = FontData<
CharOptions,
- VariantData,
+ VariantData,
DelimiterData
>;
@@ -344,6 +363,7 @@ export interface FontExtensionData<
sizeVariants?: string[] | { '[+]'?: string[]; '[-]'?: string[] };
stretchVariants?: string[] | { '[+]'?: string[]; '[-]'?: string[] };
ranges?: DynamicFileDef[];
+ variantDelimiters?: VDelimiterMap;
}
/**
@@ -373,7 +393,7 @@ export function mergeOptions(
*/
export class FontData<
C extends CharOptions,
- V extends VariantData,
+ V extends VariantData,
D extends DelimiterData,
> {
/**
@@ -642,6 +662,11 @@ export class FontData<
*/
protected static defaultDelimiters: DelimiterMap = {};
+ /**
+ * The default VariantDelimiter data
+ */
+ protected static defaultVariantDelimiters: VDelimiterMap = {};
+
/**
* The default character data
*/
@@ -675,7 +700,7 @@ export class FontData<
/**
* The actual variant information for this font
*/
- protected variant: VariantMap = {};
+ protected variant: VariantMap = {};
/**
* The actual delimiter information for this font
@@ -902,6 +927,18 @@ export class FontData<
extension.stretchN
);
}
+ if (data.variantDelimiters) {
+ Object.entries(data.variantDelimiters).forEach(([name, delims]) => {
+ this.defaultVariantDelimiters[name] ??= {};
+ Object.assign(this.defaultVariantDelimiters[name], delims);
+ this.adjustDelimiters(
+ this.defaultVariantDelimiters[name],
+ Object.keys(delims),
+ extension.sizeN,
+ extension.stretchN
+ );
+ });
+ }
}
/**
@@ -924,6 +961,12 @@ export class FontData<
Object.keys(CLASS.defaultChars).forEach((name) =>
this.defineChars(name, CLASS.defaultChars[name] as CharMap)
);
+ Object.keys(CLASS.defaultVariantDelimiters).forEach((name) =>
+ this.defineDelimiters(
+ CLASS.defaultVariantDelimiters[name] as DelimiterMap,
+ name
+ )
+ );
this.defineRemap('accent', CLASS.defaultAccentMap);
this.defineRemap('mo', CLASS.defaultMoMap);
this.defineRemap('mn', CLASS.defaultMnMap);
@@ -985,6 +1028,20 @@ export class FontData<
dynamicFont.stretchN
);
}
+ if (data.variantDelimiters) {
+ Object.entries(data.variantDelimiters).forEach(([name, delims]) => {
+ this.defineDelimiters(
+ mergeOptions({ delimiters: {} }, 'delimiters', delims),
+ name
+ );
+ this.CLASS.adjustDelimiters(
+ this.variant[name].delims,
+ Object.keys(delims),
+ dynamicFont.sizeN,
+ dynamicFont.stretchN
+ );
+ });
+ }
for (const name of Object.keys(data.chars || {})) {
this.defineChars(name, data.chars[name]);
}
@@ -1052,11 +1109,17 @@ export class FontData<
chars: Object.create(
inherit ? this.variant[inherit].chars : {}
) as CharMap,
+ delims:
+ name === 'normal'
+ ? this.delimiters
+ : Object.create(inherit ? this.variant[inherit].delims : {}),
} as unknown as V;
if (this.variant[link]) {
Object.assign(variant.chars, this.variant[link].chars);
- this.variant[link].linked.push(variant.chars);
+ Object.assign(variant.delims, this.variant[link].delims);
+ this.variant[link].linked.push([variant.chars, variant.delims]);
variant.chars = Object.create(variant.chars);
+ variant.delims = Object.create(variant.delims);
}
this.remapSmpChars(variant.chars, name);
this.variant[name] = variant;
@@ -1131,7 +1194,7 @@ export class FontData<
const variant = this.variant[name];
Object.assign(variant.chars, chars);
for (const link of variant.linked) {
- Object.assign(link, chars);
+ Object.assign(link[0], chars);
}
}
@@ -1153,9 +1216,20 @@ export class FontData<
* Defines stretchy delimiters
*
* @param {DelimiterMap} delims The delimiters to define
- */
- public defineDelimiters(delims: DelimiterMap) {
- Object.assign(this.delimiters, delims);
+ * @param {string} name The name of the variant for the delimiter (or normal if missing)
+ */
+ public defineDelimiters(delims: DelimiterMap, name?: string) {
+ if (name && name !== 'normal') {
+ delims = { ...delims };
+ Object.values(delims).forEach((delim: D) => {
+ delim.v = name;
+ });
+ }
+ const variant = this.variant[name || 'normal'];
+ Object.assign(variant.delims, delims);
+ for (const link of variant.linked) {
+ Object.assign(link[1], delims);
+ }
}
/**
@@ -1318,13 +1392,15 @@ export class FontData<
public addDynamicFontCss(_fonts: string[], _root?: string) {}
/**
- * @param {number} n The delimiter character number whose data is desired
+ * @param {number} n The delimiter character number whose data is desired
+ * @param {string} name The name of the variant for the delimiter
* @returns {DelimiterData} The data for that delimiter (or undefined)
*/
- public getDelimiter(n: number): DelimiterData {
- const delim = this.delimiters[n];
+ public getDelimiter(n: number, name?: string): DelimiterData {
+ const variant = this.variant[name || 'normal'];
+ const delim = variant.delims[n];
if (delim && !('dir' in delim)) {
- this.delimiters[n] = null;
+ variant.delims[n] = null;
retryAfter(this.loadDynamicFile(delim));
return null;
}
@@ -1332,12 +1408,13 @@ export class FontData<
}
/**
- * @param {number} n The delimiter character number whose variant is needed
- * @param {number} i The index in the size array of the size whose variant is needed
- * @returns {string} The variant of the i-th size for delimiter n
+ * @param {number} n The delimiter character number whose variant is needed
+ * @param {number} i The index in the size array of the size whose variant is needed
+ * @param {string} name The name of the variant for the delimiter
+ * @returns {string} The variant of the i-th size for delimiter n
*/
- public getSizeVariant(n: number, i: number): string {
- const delim = this.getDelimiter(n);
+ public getSizeVariant(n: number, i: number, name?: string): string {
+ const delim = this.getDelimiter(n, name || 'normal');
if (delim && delim.variants) {
i = delim.variants[i];
}
@@ -1345,21 +1422,23 @@ export class FontData<
}
/**
- * @param {number} n The delimiter character number whose variant is needed
- * @param {number} i The index in the stretch array of the part whose variant is needed
- * @returns {string} The variant of the i-th part for delimiter n
+ * @param {number} n The delimiter character number whose variant is needed
+ * @param {number} i The index in the stretch array of the part whose variant is needed
+ * @param {string} name The name of the variant for the delimiter
+ * @returns {string} The variant of the i-th part for delimiter n
*/
- public getStretchVariant(n: number, i: number): string {
- const delim = this.getDelimiter(n);
+ public getStretchVariant(n: number, i: number, name?: string): string {
+ const delim = this.getDelimiter(n, name);
return this.stretchVariants[delim.stretchv ? delim.stretchv[i] : 0];
}
/**
- * @param {number} n The delimiter character number whose variants are needed
- * @returns {string[]} The variants for the parts of the delimiter
+ * @param {number} n The delimiter character number whose variants are needed
+ * @param {string} name The name of the variant for the delimiter
+ * @returns {string[]} The variants for the parts of the delimiter
*/
- public getStretchVariants(n: number): string[] {
- return [0, 1, 2, 3].map((i) => this.getStretchVariant(n, i));
+ public getStretchVariants(n: number, name?: string): string[] {
+ return [0, 1, 2, 3].map((i) => this.getStretchVariant(n, i, name));
}
/**
@@ -1423,7 +1502,7 @@ export class FontData<
*/
export interface FontDataClass<
C extends CharOptions,
- V extends VariantData,
+ V extends VariantData,
D extends DelimiterData,
> {
OPTIONS: OptionList;
diff --git a/ts/output/common/LinebreakVisitor.ts b/ts/output/common/LinebreakVisitor.ts
index a0872cdc7..d28b54027 100644
--- a/ts/output/common/LinebreakVisitor.ts
+++ b/ts/output/common/LinebreakVisitor.ts
@@ -109,7 +109,7 @@ export class Linebreaks<
WF extends CommonWrapperFactory,
WC extends CommonWrapperClass,
CC extends CharOptions,
- VV extends VariantData,
+ VV extends VariantData,
DD extends DelimiterData,
FD extends FontData,
FC extends FontDataClass,
@@ -151,7 +151,7 @@ export class LinebreakVisitor<
WF extends CommonWrapperFactory,
WC extends CommonWrapperClass,
CC extends CharOptions,
- VV extends VariantData,
+ VV extends VariantData,
DD extends DelimiterData,
FD extends FontData,
FC extends FontDataClass,
diff --git a/ts/output/common/Wrapper.ts b/ts/output/common/Wrapper.ts
index 3d2844404..6e247d8a3 100644
--- a/ts/output/common/Wrapper.ts
+++ b/ts/output/common/Wrapper.ts
@@ -143,7 +143,7 @@ export type CommonWrapperConstructor<
WF extends CommonWrapperFactory,
WC extends CommonWrapperClass,
CC extends CharOptions,
- VV extends VariantData,
+ VV extends VariantData,
DD extends DelimiterData,
FD extends FontData,
FC extends FontDataClass,
@@ -179,7 +179,7 @@ export interface CommonWrapperClass<
WF extends CommonWrapperFactory,
WC extends CommonWrapperClass,
CC extends CharOptions,
- VV extends VariantData,
+ VV extends VariantData,
DD extends DelimiterData,
FD extends FontData,
FC extends FontDataClass,
@@ -260,7 +260,7 @@ export class CommonWrapper<
WF extends CommonWrapperFactory,
WC extends CommonWrapperClass,
CC extends CharOptions,
- VV extends VariantData,
+ VV extends VariantData,
DD extends DelimiterData,
FD extends FontData,
FC extends FontDataClass,
diff --git a/ts/output/common/WrapperFactory.ts b/ts/output/common/WrapperFactory.ts
index 5562964ed..9a42975ab 100644
--- a/ts/output/common/WrapperFactory.ts
+++ b/ts/output/common/WrapperFactory.ts
@@ -60,7 +60,7 @@ export class CommonWrapperFactory<
WF extends CommonWrapperFactory,
WC extends CommonWrapperClass,
CC extends CharOptions,
- VV extends VariantData,
+ VV extends VariantData,
DD extends DelimiterData,
FD extends FontData,
FC extends FontDataClass,
diff --git a/ts/output/common/Wrappers/TeXAtom.ts b/ts/output/common/Wrappers/TeXAtom.ts
index b68d9c0ff..12d9c24de 100644
--- a/ts/output/common/Wrappers/TeXAtom.ts
+++ b/ts/output/common/Wrappers/TeXAtom.ts
@@ -63,7 +63,7 @@ export interface CommonTeXAtom<
WF extends CommonWrapperFactory,
WC extends CommonWrapperClass,
CC extends CharOptions,
- VV extends VariantData,
+ VV extends VariantData,
DD extends DelimiterData,
FD extends FontData,
FC extends FontDataClass,
@@ -94,7 +94,7 @@ export interface CommonTeXAtomClass<
WF extends CommonWrapperFactory,
WC extends CommonWrapperClass,
CC extends CharOptions,
- VV extends VariantData,
+ VV extends VariantData,
DD extends DelimiterData,
FD extends FontData,
FC extends FontDataClass,
@@ -130,7 +130,7 @@ export function CommonTeXAtomMixin<
WF extends CommonWrapperFactory,
WC extends CommonWrapperClass,
CC extends CharOptions,
- VV extends VariantData,
+ VV extends VariantData,
DD extends DelimiterData,
FD extends FontData,
FC extends FontDataClass,
diff --git a/ts/output/common/Wrappers/TextNode.ts b/ts/output/common/Wrappers/TextNode.ts
index 10eed2797..6aa564395 100644
--- a/ts/output/common/Wrappers/TextNode.ts
+++ b/ts/output/common/Wrappers/TextNode.ts
@@ -65,7 +65,7 @@ export interface CommonTextNode<
WF extends CommonWrapperFactory,
WC extends CommonWrapperClass,
CC extends CharOptions,
- VV extends VariantData,
+ VV extends VariantData,
DD extends DelimiterData,
FD extends FontData,
FC extends FontDataClass,
@@ -103,7 +103,7 @@ export interface CommonTextNodeClass<
WF extends CommonWrapperFactory,
WC extends CommonWrapperClass,
CC extends CharOptions,
- VV extends VariantData,
+ VV extends VariantData,
DD extends DelimiterData,
FD extends FontData,
FC extends FontDataClass,
@@ -139,7 +139,7 @@ export function CommonTextNodeMixin<
WF extends CommonWrapperFactory,
WC extends CommonWrapperClass,
CC extends CharOptions,
- VV extends VariantData,
+ VV extends VariantData,
DD extends DelimiterData,
FD extends FontData,
FC extends FontDataClass,
diff --git a/ts/output/common/Wrappers/XmlNode.ts b/ts/output/common/Wrappers/XmlNode.ts
index bc5e36f03..3bb86e4fa 100644
--- a/ts/output/common/Wrappers/XmlNode.ts
+++ b/ts/output/common/Wrappers/XmlNode.ts
@@ -67,7 +67,7 @@ export interface CommonXmlNode<
WF extends CommonWrapperFactory,
WC extends CommonWrapperClass,
CC extends CharOptions,
- VV extends VariantData,
+ VV extends VariantData,
DD extends DelimiterData,
FD extends FontData,
FC extends FontDataClass,
@@ -128,7 +128,7 @@ export interface CommonXmlNodeClass<
WF extends CommonWrapperFactory,
WC extends CommonWrapperClass,
CC extends CharOptions,
- VV extends VariantData,
+ VV extends VariantData,
DD extends DelimiterData,
FD extends FontData,
FC extends FontDataClass,
@@ -164,7 +164,7 @@ export function CommonXmlNodeMixin<
WF extends CommonWrapperFactory,
WC extends CommonWrapperClass,
CC extends CharOptions,
- VV extends VariantData,
+ VV extends VariantData,
DD extends DelimiterData,
FD extends FontData,
FC extends FontDataClass,
diff --git a/ts/output/common/Wrappers/maction.ts b/ts/output/common/Wrappers/maction.ts
index a9ba4cc53..e3f6cac17 100644
--- a/ts/output/common/Wrappers/maction.ts
+++ b/ts/output/common/Wrappers/maction.ts
@@ -70,7 +70,7 @@ export type ActionHandler<
WF extends CommonWrapperFactory,
WC extends CommonWrapperClass,
CC extends CharOptions,
- VV extends VariantData,
+ VV extends VariantData,
DD extends DelimiterData,
FD extends FontData,
FC extends FontDataClass,
@@ -86,7 +86,7 @@ export type ActionPair<
WF extends CommonWrapperFactory,
WC extends CommonWrapperClass,
CC extends CharOptions,
- VV extends VariantData,
+ VV extends VariantData,
DD extends DelimiterData,
FD extends FontData,
FC extends FontDataClass,
@@ -105,7 +105,7 @@ export type ActionMap<
WF extends CommonWrapperFactory,
WC extends CommonWrapperClass,
CC extends CharOptions,
- VV extends VariantData,
+ VV extends VariantData,
DD extends DelimiterData,
FD extends FontData,
FC extends FontDataClass,
@@ -121,7 +121,7 @@ export type ActionDef<
WF extends CommonWrapperFactory,
WC extends CommonWrapperClass,
CC extends CharOptions,
- VV extends VariantData,
+ VV extends VariantData,
DD extends DelimiterData,
FD extends FontData,
FC extends FontDataClass,
@@ -189,7 +189,7 @@ export interface CommonMaction<
WF extends CommonWrapperFactory,
WC extends CommonWrapperClass,
CC extends CharOptions,
- VV extends VariantData,
+ VV extends VariantData,
DD extends DelimiterData,
FD extends FontData,
FC extends FontDataClass,
@@ -252,7 +252,7 @@ export interface CommonMactionClass<
WF extends CommonWrapperFactory,
WC extends CommonWrapperClass,
CC extends CharOptions,
- VV extends VariantData,
+ VV extends VariantData,
DD extends DelimiterData,
FD extends FontData,
FC extends FontDataClass,
@@ -296,7 +296,7 @@ export function CommonMactionMixin<
WF extends CommonWrapperFactory,
WC extends CommonWrapperClass,
CC extends CharOptions,
- VV extends VariantData,
+ VV extends VariantData,
DD extends DelimiterData,
FD extends FontData,
FC extends FontDataClass,
diff --git a/ts/output/common/Wrappers/math.ts b/ts/output/common/Wrappers/math.ts
index b7b949308..d54aefb89 100644
--- a/ts/output/common/Wrappers/math.ts
+++ b/ts/output/common/Wrappers/math.ts
@@ -63,7 +63,7 @@ export interface CommonMath<
WF extends CommonWrapperFactory,
WC extends CommonWrapperClass,
CC extends CharOptions,
- VV extends VariantData,
+ VV extends VariantData,
DD extends DelimiterData,
FD extends FontData,
FC extends FontDataClass,
@@ -94,7 +94,7 @@ export interface CommonMathClass<
WF extends CommonWrapperFactory,
WC extends CommonWrapperClass,
CC extends CharOptions,
- VV extends VariantData,
+ VV extends VariantData