@unified-latex/unified-latex-builder 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.
package/README.md ADDED
@@ -0,0 +1,153 @@
1
+ <!-- DO NOT MODIFY -->
2
+ <!-- This file was autogenerated by build-docs.ts -->
3
+ <!-- Edit the docstring in index.ts and regenerate -->
4
+ <!-- rather than editing this file directly. -->
5
+ # unified-latex-builder
6
+
7
+ ## What is this?
8
+
9
+ Functions to help build a `unified-latex` Abstract Syntax Tree (AST)
10
+ with [hyperscript](https://github.com/dominictarr/hyperscript)-like syntax.
11
+
12
+ ## When should I use this?
13
+
14
+ If you want to programmatically create `Ast.Node` nodes.
15
+
16
+ # Functions
17
+
18
+ ## `arg(args, special)`
19
+
20
+ Create an Argument. `special.braces` can optionally specify
21
+ the signature of the open/close marks that each argument uses. For example
22
+
23
+ arg("a", { braces: "[]" });
24
+
25
+ will result in arguments `[a]`. Valid braces are `*`, `[`, `{`, and `(`.
26
+
27
+ ```typescript
28
+ function arg(
29
+ args: CoercibleArgument | Ast.Node[],
30
+ special: ArgumentSpecialOptions
31
+ ): Ast.Argument;
32
+ ```
33
+
34
+ **Parameters**
35
+
36
+ | Param | Type |
37
+ | :------ | :-------------------------------- |
38
+ | args | <span color='gray'>Omitted</span> |
39
+ | special | `ArgumentSpecialOptions` |
40
+
41
+ where
42
+
43
+ ```typescript
44
+ type ArgumentSpecialOptions = {
45
+ braces?: string;
46
+ openMark?: string;
47
+ closeMark?: string;
48
+ };
49
+ ```
50
+
51
+ ## `args(args, special)`
52
+
53
+ Create an Argument list. `special.braces` can optionally specify
54
+ the signature of the open/close marks that each argument uses. For example
55
+
56
+ args(["a", "b"], { braces: "[]{}" });
57
+
58
+ will result in arguments `[a]{b}`. Valid braces are `*`, `[`, `{`, and `(`.
59
+
60
+ ```typescript
61
+ function args(
62
+ args: CoercibleArgument | CoercibleArgument[],
63
+ special: ArgumentsSpecialOptions
64
+ ): Ast.Argument[];
65
+ ```
66
+
67
+ **Parameters**
68
+
69
+ | Param | Type |
70
+ | :------ | :-------------------------------- |
71
+ | args | <span color='gray'>Omitted</span> |
72
+ | special | `ArgumentsSpecialOptions` |
73
+
74
+ where
75
+
76
+ ```typescript
77
+ type ArgumentsSpecialOptions = {
78
+ braces?: string;
79
+ defaultOpenMark?: string;
80
+ defaultCloseMark?: string;
81
+ };
82
+ ```
83
+
84
+ ## `env(name, body, envArgs, special)`
85
+
86
+ Create an Environment node.
87
+
88
+ ```typescript
89
+ function env(
90
+ name: String,
91
+ body: CoercibleNode | CoercibleNode[],
92
+ envArgs: CoercibleArgument | CoercibleArgument[],
93
+ special: {}
94
+ ): Ast.Environment;
95
+ ```
96
+
97
+ **Parameters**
98
+
99
+ | Param | Type |
100
+ | :------ | :-------------------------------- |
101
+ | name | `String` |
102
+ | body | <span color='gray'>Omitted</span> |
103
+ | envArgs | <span color='gray'>Omitted</span> |
104
+ | special | `{}` |
105
+
106
+ ## `m(name, marcoArgs, special)`
107
+
108
+ Create a Macro with the given `name`. The macro
109
+ may be followed by any number of arguments.
110
+
111
+ ```typescript
112
+ function m(
113
+ name: String,
114
+ marcoArgs: CoercibleArgument | CoercibleArgument[],
115
+ special: MacroSpecialOptions
116
+ ): Ast.Macro;
117
+ ```
118
+
119
+ **Parameters**
120
+
121
+ | Param | Type |
122
+ | :-------- | :-------------------------------- |
123
+ | name | `String` |
124
+ | marcoArgs | <span color='gray'>Omitted</span> |
125
+ | special | `MacroSpecialOptions` |
126
+
127
+ where
128
+
129
+ ```typescript
130
+ type MacroSpecialOptions = {
131
+ escapeToken?: string;
132
+ };
133
+ ```
134
+
135
+ ## `s(value)`
136
+
137
+ Create a String node from `value`
138
+
139
+ ```typescript
140
+ function s(value: string | Ast.String): Ast.String;
141
+ ```
142
+
143
+ **Parameters**
144
+
145
+ | Param | Type |
146
+ | :---- | :--------------------- |
147
+ | value | `string \| Ast.String` |
148
+
149
+ # Constants
150
+
151
+ | Name | Type | Description |
152
+ | :--- | :--------------- | :--------------- |
153
+ | `SP` | `Ast.Whitespace` | Whitespace node. |
@@ -0,0 +1,13 @@
1
+ export * from "./libs/builders";
2
+ /**
3
+ * ## What is this?
4
+ *
5
+ * Functions to help build a `unified-latex` Abstract Syntax Tree (AST)
6
+ * with [hyperscript](https://github.com/dominictarr/hyperscript)-like syntax.
7
+ *
8
+ * ## When should I use this?
9
+ *
10
+ * If you want to programmatically create `Ast.Node` nodes.
11
+ *
12
+ */
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAGhC;;;;;;;;;;GAUG"}
package/dist/index.js ADDED
@@ -0,0 +1,132 @@
1
+ // libs/builders.ts
2
+ function normalizeNode(node) {
3
+ if (typeof node === "string") {
4
+ return s(node);
5
+ }
6
+ return node;
7
+ }
8
+ function normalizeArgument(arg2, openMark = "{", closeMark = "}") {
9
+ if (typeof arg2 === "string") {
10
+ return {
11
+ type: "argument",
12
+ openMark,
13
+ closeMark,
14
+ content: [s(arg2)]
15
+ };
16
+ }
17
+ if (arg2.type === "argument") {
18
+ return arg2;
19
+ }
20
+ return { type: "argument", openMark, closeMark, content: [arg2] };
21
+ }
22
+ function normalizeArgumentsList(args2, openMark = "{", closeMark = "}") {
23
+ if (args2 == null) {
24
+ return [];
25
+ }
26
+ if (Array.isArray(args2)) {
27
+ return args2.map((arg2) => normalizeArgument(arg2, openMark, closeMark));
28
+ }
29
+ return [normalizeArgument(args2, openMark, closeMark)];
30
+ }
31
+ var BRACES_MAP = {
32
+ "*": { openMark: "", closeMark: "" },
33
+ "{": { openMark: "{", closeMark: "}" },
34
+ "[": { openMark: "[", closeMark: "]" },
35
+ "(": { openMark: "(", closeMark: ")" }
36
+ };
37
+ var CLOSE_BRACES = new Set(Object.values(BRACES_MAP).map((x) => x.closeMark).filter((x) => x));
38
+ function bracesToOpenAndCloseMarks(braces) {
39
+ const ret = [];
40
+ for (const char of braces.split("")) {
41
+ if (CLOSE_BRACES.has(char)) {
42
+ continue;
43
+ }
44
+ const braces2 = BRACES_MAP[char];
45
+ if (braces2 == null) {
46
+ throw new Error(`Unknown open/close mark type "${char}"`);
47
+ }
48
+ braces2;
49
+ ret.push(braces2);
50
+ }
51
+ return ret;
52
+ }
53
+ function args(args2, special) {
54
+ var _a, _b;
55
+ if (!Array.isArray(args2)) {
56
+ args2 = [args2];
57
+ }
58
+ if (special == null ? void 0 : special.braces) {
59
+ const braces = bracesToOpenAndCloseMarks(special.braces);
60
+ if (braces.length !== args2.length) {
61
+ throw new Error(`There is a difference between the number of supplied braces and the number of supplied arguments. ${args2.length} supplied with braces signature ${special.braces}`);
62
+ }
63
+ return args2.map((arg2, i) => normalizeArgument(arg2, braces[i].openMark, braces[i].closeMark));
64
+ }
65
+ const openMark = (_a = special == null ? void 0 : special.defaultOpenMark) != null ? _a : "{";
66
+ const closeMark = (_b = special == null ? void 0 : special.defaultCloseMark) != null ? _b : "}";
67
+ return normalizeArgumentsList(args2, openMark, closeMark);
68
+ }
69
+ function arg(args2, special) {
70
+ var _a, _b;
71
+ if (typeof args2 === "string") {
72
+ args2 = s(args2);
73
+ }
74
+ if (!Array.isArray(args2) && args2.type === "argument") {
75
+ return args2;
76
+ }
77
+ let openMark = (_a = special == null ? void 0 : special.openMark) != null ? _a : "{";
78
+ let closeMark = (_b = special == null ? void 0 : special.closeMark) != null ? _b : "}";
79
+ if (special == null ? void 0 : special.braces) {
80
+ const braces = bracesToOpenAndCloseMarks(special.braces);
81
+ if (braces[0]) {
82
+ openMark = braces[0].openMark;
83
+ closeMark = braces[0].closeMark;
84
+ }
85
+ }
86
+ if (!Array.isArray(args2)) {
87
+ args2 = [args2];
88
+ }
89
+ return { type: "argument", content: args2, openMark, closeMark };
90
+ }
91
+ function m(name, marcoArgs, special) {
92
+ const args2 = normalizeArgumentsList(marcoArgs);
93
+ const escapeToken = special == null ? void 0 : special.escapeToken;
94
+ const ret = { type: "macro", content: name };
95
+ if (args2.length > 0) {
96
+ ret.args = args2;
97
+ }
98
+ if (escapeToken != null) {
99
+ ret.escapeToken = escapeToken;
100
+ }
101
+ return ret;
102
+ }
103
+ function s(value) {
104
+ if (typeof value === "string") {
105
+ return { type: "string", content: value };
106
+ }
107
+ return value;
108
+ }
109
+ function env(name, body, envArgs, special) {
110
+ if (!Array.isArray(body)) {
111
+ body = [body];
112
+ }
113
+ const args2 = normalizeArgumentsList(envArgs, "[", "]");
114
+ const ret = {
115
+ type: "environment",
116
+ env: name,
117
+ content: body.map(normalizeNode)
118
+ };
119
+ if (args2.length > 0) {
120
+ ret.args = args2;
121
+ }
122
+ return ret;
123
+ }
124
+ var SP = { type: "whitespace" };
125
+ export {
126
+ SP,
127
+ arg,
128
+ args,
129
+ env,
130
+ m,
131
+ s
132
+ };
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../libs/builders.ts"],
4
+ "sourcesContent": ["import type * as Ast from \"@unified-latex/unified-latex-types\";\n\ntype CoercibleNode = string | Ast.Node;\ntype CoercibleArgument = CoercibleNode | Ast.Argument;\ntype MacroSpecialOptions = {\n escapeToken?: string;\n};\ntype ArgumentsSpecialOptions = {\n braces?: string;\n defaultOpenMark?: string;\n defaultCloseMark?: string;\n};\ntype ArgumentSpecialOptions = {\n braces?: string;\n openMark?: string;\n closeMark?: string;\n};\n\nfunction normalizeNode(node: CoercibleNode): Ast.Node {\n if (typeof node === \"string\") {\n return s(node);\n }\n return node;\n}\n\nfunction normalizeArgument(\n arg: CoercibleArgument,\n openMark = \"{\",\n closeMark = \"}\"\n): Ast.Argument {\n if (typeof arg === \"string\") {\n return {\n type: \"argument\",\n openMark,\n closeMark,\n content: [s(arg)],\n };\n }\n if (arg.type === \"argument\") {\n return arg;\n }\n return { type: \"argument\", openMark, closeMark, content: [arg] };\n}\n\nfunction normalizeArgumentsList(\n args?: CoercibleArgument | CoercibleArgument[],\n openMark = \"{\",\n closeMark = \"}\"\n): Ast.Argument[] {\n if (args == null) {\n return [];\n }\n if (Array.isArray(args)) {\n return args.map((arg) => normalizeArgument(arg, openMark, closeMark));\n }\n return [normalizeArgument(args, openMark, closeMark)];\n}\n\ntype BracesPair = { openMark: string; closeMark: string };\nconst BRACES_MAP: Record<string, BracesPair> = {\n \"*\": { openMark: \"\", closeMark: \"\" },\n \"{\": { openMark: \"{\", closeMark: \"}\" },\n \"[\": { openMark: \"[\", closeMark: \"]\" },\n \"(\": { openMark: \"(\", closeMark: \")\" },\n};\nconst CLOSE_BRACES = new Set(\n Object.values(BRACES_MAP)\n .map((x) => x.closeMark)\n .filter((x) => x)\n);\n\n/**\n * Turn a braces signature into an array of braces.\n */\nfunction bracesToOpenAndCloseMarks(braces: string): BracesPair[] {\n const ret: BracesPair[] = [];\n\n for (const char of braces.split(\"\")) {\n if (CLOSE_BRACES.has(char)) {\n continue;\n }\n const braces = BRACES_MAP[char];\n if (braces == null) {\n throw new Error(`Unknown open/close mark type \"${char}\"`);\n }\n braces;\n ret.push(braces);\n }\n\n return ret;\n}\n\n/**\n * Create an Argument list. `special.braces` can optionally specify\n * the signature of the open/close marks that each argument uses. For example\n * ```\n * args([\"a\", \"b\"], { braces: \"[]{}\" });\n * ```\n * will result in arguments `[a]{b}`. Valid braces are `*`, `[`, `{`, and `(`.\n */\nexport function args(\n args: CoercibleArgument | CoercibleArgument[],\n special?: ArgumentsSpecialOptions\n): Ast.Argument[] {\n if (!Array.isArray(args)) {\n args = [args];\n }\n if (special?.braces) {\n const braces = bracesToOpenAndCloseMarks(special.braces);\n if (braces.length !== args.length) {\n throw new Error(\n `There is a difference between the number of supplied braces and the number of supplied arguments. ${args.length} supplied with braces signature ${special.braces}`\n );\n }\n return args.map((arg, i) =>\n normalizeArgument(arg, braces[i].openMark, braces[i].closeMark)\n );\n }\n\n const openMark = special?.defaultOpenMark ?? \"{\";\n const closeMark = special?.defaultCloseMark ?? \"}\";\n return normalizeArgumentsList(args, openMark, closeMark);\n}\n\n/**\n * Create an Argument. `special.braces` can optionally specify\n * the signature of the open/close marks that each argument uses. For example\n * ```\n * arg(\"a\", { braces: \"[]\" });\n * ```\n * will result in arguments `[a]`. Valid braces are `*`, `[`, `{`, and `(`.\n */\nexport function arg(\n args: CoercibleArgument | Ast.Node[],\n special?: ArgumentSpecialOptions\n): Ast.Argument {\n if (typeof args === \"string\") {\n args = s(args);\n }\n if (!Array.isArray(args) && args.type === \"argument\") {\n return args;\n }\n\n let openMark = special?.openMark ?? \"{\";\n let closeMark = special?.closeMark ?? \"}\";\n if (special?.braces) {\n const braces = bracesToOpenAndCloseMarks(special.braces);\n if (braces[0]) {\n openMark = braces[0].openMark;\n closeMark = braces[0].closeMark;\n }\n }\n\n if (!Array.isArray(args)) {\n args = [args];\n }\n\n return { type: \"argument\", content: args, openMark, closeMark };\n}\n\n/**\n * Create a Macro with the given `name`. The macro\n * may be followed by any number of arguments.\n */\nexport function m(\n name: string,\n marcoArgs?: CoercibleArgument | CoercibleArgument[],\n special?: MacroSpecialOptions\n): Ast.Macro {\n const args = normalizeArgumentsList(marcoArgs);\n const escapeToken = special?.escapeToken;\n const ret: Ast.Macro = { type: \"macro\", content: name };\n\n if (args.length > 0) {\n ret.args = args;\n }\n if (escapeToken != null) {\n ret.escapeToken = escapeToken;\n }\n\n return ret;\n}\n\n/**\n * Create a String node from `value`\n */\nexport function s(value: string | Ast.String): Ast.String {\n if (typeof value === \"string\") {\n return { type: \"string\", content: value };\n }\n return value;\n}\n\n/**\n * Create an Environment node.\n */\nexport function env(\n name: string,\n body: CoercibleNode | CoercibleNode[],\n envArgs?: CoercibleArgument | CoercibleArgument[],\n special?: unknown\n): Ast.Environment {\n if (!Array.isArray(body)) {\n body = [body];\n }\n const args = normalizeArgumentsList(envArgs, \"[\", \"]\");\n const ret: Ast.Environment = {\n type: \"environment\",\n env: name,\n content: body.map(normalizeNode),\n };\n if (args.length > 0) {\n ret.args = args;\n }\n\n return ret;\n}\n\n/**\n * Whitespace node.\n */\nexport const SP: Ast.Whitespace = { type: \"whitespace\" };\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,53 @@
1
+ import type * as Ast from "@unified-latex/unified-latex-types";
2
+ declare type CoercibleNode = string | Ast.Node;
3
+ declare type CoercibleArgument = CoercibleNode | Ast.Argument;
4
+ declare type MacroSpecialOptions = {
5
+ escapeToken?: string;
6
+ };
7
+ declare type ArgumentsSpecialOptions = {
8
+ braces?: string;
9
+ defaultOpenMark?: string;
10
+ defaultCloseMark?: string;
11
+ };
12
+ declare type ArgumentSpecialOptions = {
13
+ braces?: string;
14
+ openMark?: string;
15
+ closeMark?: string;
16
+ };
17
+ /**
18
+ * Create an Argument list. `special.braces` can optionally specify
19
+ * the signature of the open/close marks that each argument uses. For example
20
+ * ```
21
+ * args(["a", "b"], { braces: "[]{}" });
22
+ * ```
23
+ * will result in arguments `[a]{b}`. Valid braces are `*`, `[`, `{`, and `(`.
24
+ */
25
+ export declare function args(args: CoercibleArgument | CoercibleArgument[], special?: ArgumentsSpecialOptions): Ast.Argument[];
26
+ /**
27
+ * Create an Argument. `special.braces` can optionally specify
28
+ * the signature of the open/close marks that each argument uses. For example
29
+ * ```
30
+ * arg("a", { braces: "[]" });
31
+ * ```
32
+ * will result in arguments `[a]`. Valid braces are `*`, `[`, `{`, and `(`.
33
+ */
34
+ export declare function arg(args: CoercibleArgument | Ast.Node[], special?: ArgumentSpecialOptions): Ast.Argument;
35
+ /**
36
+ * Create a Macro with the given `name`. The macro
37
+ * may be followed by any number of arguments.
38
+ */
39
+ export declare function m(name: string, marcoArgs?: CoercibleArgument | CoercibleArgument[], special?: MacroSpecialOptions): Ast.Macro;
40
+ /**
41
+ * Create a String node from `value`
42
+ */
43
+ export declare function s(value: string | Ast.String): Ast.String;
44
+ /**
45
+ * Create an Environment node.
46
+ */
47
+ export declare function env(name: string, body: CoercibleNode | CoercibleNode[], envArgs?: CoercibleArgument | CoercibleArgument[], special?: unknown): Ast.Environment;
48
+ /**
49
+ * Whitespace node.
50
+ */
51
+ export declare const SP: Ast.Whitespace;
52
+ export {};
53
+ //# sourceMappingURL=builders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../libs/builders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,oCAAoC,CAAC;AAE/D,aAAK,aAAa,GAAG,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC;AACvC,aAAK,iBAAiB,GAAG,aAAa,GAAG,GAAG,CAAC,QAAQ,CAAC;AACtD,aAAK,mBAAmB,GAAG;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AACF,aAAK,uBAAuB,GAAG;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AACF,aAAK,sBAAsB,GAAG;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AA4EF;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAChB,IAAI,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,EAC7C,OAAO,CAAC,EAAE,uBAAuB,GAClC,GAAG,CAAC,QAAQ,EAAE,CAmBhB;AAED;;;;;;;GAOG;AACH,wBAAgB,GAAG,CACf,IAAI,EAAE,iBAAiB,GAAG,GAAG,CAAC,IAAI,EAAE,EACpC,OAAO,CAAC,EAAE,sBAAsB,GACjC,GAAG,CAAC,QAAQ,CAuBd;AAED;;;GAGG;AACH,wBAAgB,CAAC,CACb,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,EACnD,OAAO,CAAC,EAAE,mBAAmB,GAC9B,GAAG,CAAC,KAAK,CAaX;AAED;;GAEG;AACH,wBAAgB,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAKxD;AAED;;GAEG;AACH,wBAAgB,GAAG,CACf,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,aAAa,GAAG,aAAa,EAAE,EACrC,OAAO,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,EACjD,OAAO,CAAC,EAAE,OAAO,GAClB,GAAG,CAAC,WAAW,CAejB;AAED;;GAEG;AACH,eAAO,MAAM,EAAE,EAAE,GAAG,CAAC,UAAmC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "@unified-latex/unified-latex-builder",
3
+ "version": "1.0.0",
4
+ "description": "Tools for constructing unified-latex ASTs",
5
+ "main": "dist/index.js",
6
+ "type": "module",
7
+ "dependencies": {
8
+ "@unified-latex/unified-latex-types": "^1.0.0"
9
+ },
10
+ "files": [
11
+ "dist/**/*.ts",
12
+ "dist/**/*.js",
13
+ "dist/**/*.map",
14
+ "dist/**/*.json"
15
+ ],
16
+ "exports": {
17
+ ".": "./dist/index.js",
18
+ "./*js": "./dist/*js",
19
+ "./*": "./dist/*.js"
20
+ },
21
+ "typesVersions": {
22
+ "*": {
23
+ "*": [
24
+ "dist/*"
25
+ ]
26
+ }
27
+ },
28
+ "scripts": {
29
+ "test": "echo \"Error: no test specified\" && exit 1",
30
+ "build": "npm run clean && npm run compile",
31
+ "clean": "rm -rf ./dist && rm -rf tsconfig.tsbuildinfo",
32
+ "compile": "tsc -b tsconfig.json"
33
+ },
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "git+https://github.com/siefkenj/unified-latex.git"
37
+ },
38
+ "keywords": [],
39
+ "author": "",
40
+ "license": "BSD",
41
+ "bugs": {
42
+ "url": "https://github.com/siefkenj/unified-latex/issues"
43
+ },
44
+ "homepage": "https://github.com/siefkenj/unified-latex#readme"
45
+ }