@artcompiler/translatex v0.21.4
TransLaTeX
A library for translating LaTeX
DESCRIPTION
This module implements a LaTeX translator using translation rules written in L120.
BUILD
$ make
This command will run ESLint linter and Jest tests.
INSTALLING
$ npm i './translatex'
where ./translatex
refers to the directory that contains this repo.
CALLING
import {TransLaTeX} from '@artcompiler/translatex'
const str = TransLaTeX.translate(rules, '-1+2');
console.log(str); // (negative (number one)) plus (number two)
where rules
is a rules object created using L120. For example:
https://gc.acx.ac/item?id=3LgCjBbX9u0
A rules object is the DATA JSON obtained by clicking the DATA link in the navigation bar at the top of the Graffiticode browser window. Here is a sample: https://gc.acx.ac/data?id=3LgCjBbX9u0
NUMBER FORMATTING
TransLaTeX supports Excel-like number formatting using the $fmt
expander. This allows you to format numbers with different currency symbols, thousands separators, and decimal places.
Format String Syntax
The format string uses Excel-like patterns:
#
- Optional digit0
- Required digit,
- Thousands separator (position determines separator type).
- Decimal separator (position determines separator type)- Currency symbols:
$
,€
,¥
,£
,₹
,₽
,¢
_
prefix for suffix placement (e.g.,_$
puts $ at the end)
Examples
// US Dollar format with comma thousands separator
const rules = {
rules: { "?": ["$fmt{%1,$#,##0.00}"] }
};
TransLaTeX.translate(rules, "1234.56"); // "$1,234.56"
// European format with dot thousands, comma decimal
const rules = {
rules: { "?": ["$fmt{%1,€#.##0,00}"] }
};
TransLaTeX.translate(rules, "1234.56"); // "€1.234,56"
// Japanese Yen (no decimals)
const rules = {
rules: { "?": ["$fmt{%1,¥#,##0}"] }
};
TransLaTeX.translate(rules, "1234.56"); // "¥1,235"
// Currency suffix
const rules = {
rules: { "?": ["$fmt{%1,#,##0.00_$}"] }
};
TransLaTeX.translate(rules, "1234.56"); // "1,234.56$"
// French format with space thousands separator
const rules = {
rules: { "?": ["$fmt{%1,€# ##0,00}"] }
};
TransLaTeX.translate(rules, "1234567.89"); // "€1 234 567,89"
// International format with space separator
const rules = {
rules: { "?": ["$fmt{%1,# ##0.00_$}"] }
};
TransLaTeX.translate(rules, "1234567.89"); // "1 234 567.89$"
// US Dollar with space separator (no decimals)
const rules = {
rules: { "?": ["$fmt{%1,$# ##0}"] }
};
TransLaTeX.translate(rules, "12345.67"); // "$12 346"
Environment-Based Formatting
The $fmt
expander can also get formatting instructions from the environment, which enables per-cell formatting in spreadsheet applications:
// Cell-based formatting (typical Graffiticode usage)
const formatRules = {
rules: {
"\\type{number}": ["$fmt"],
"?": ["%1"]
}
};
const options = {
allowInterval: true,
RHS: false,
env: { format: "Currency" }, // Format from cell
...formatRules
};
TransLaTeX.translate(options, "1500.75", (err, val) => {
console.log(val); // "$1,500.75"
});
// Integration example (formatCellValue pattern)
const formatCellValue = ({ env, name }) => {
const { val, format } = env.cells[name] || {};
if (format && val.length > 0) {
const options = {
allowInterval: true,
RHS: false,
env: { format },
...formatRules
};
TransLaTeX.translate(options, val, (err, result) => {
return result; // Formatted value
});
}
return val; // Unformatted value
};
Supported Currency Symbols
$
- US Dollar€
- Euro¥
- Japanese Yen£
- British Pound₹
- Indian Rupee₽
- Russian Ruble¢
- Cent
Thousands Separators
- Comma (
,
) - Used in US, UK:1,234.56
- Dot (
.
) - Used in Europe:1.234,56
- Space (
) - Used in France, Germany, Russia, International:
1 234 567,89
The separator behavior is determined by the pattern:
#,##0.00
= comma thousands, dot decimal (US/UK)#.##0,00
= dot thousands, comma decimal (European)# ##0,00
= space thousands, comma decimal (French/International)# ##0.00
= space thousands, dot decimal (Canadian/Scientific)
Countries Using Space Separators
Space as thousands separator is used in:
- France -
€1 234 567,89
- Germany -
1 234 567,50 €
- Russia -
₽1 234 567,89
- Poland, Czech Republic, Slovakia -
1 234 567,89
- Nordic countries (Sweden, Norway, Finland) -
1 234 567,89
- Scientific/International documents - Following ISO 31-0 standard
5 months ago
5 months ago
8 months ago
5 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
8 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
5 months ago
5 months ago
5 months ago
5 months ago
5 months ago
4 years ago
4 years ago
4 years ago
4 years ago
4 years ago