Skip to content

Commit

Permalink
printNumber converted to mml generation
Browse files Browse the repository at this point in the history
  • Loading branch information
limefrogyank committed Jul 26, 2023
1 parent 0429370 commit 0dcbd5d
Show file tree
Hide file tree
Showing 6 changed files with 269 additions and 152 deletions.
109 changes: 16 additions & 93 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -14,27 +14,24 @@
//perMode: 'fraction'
},
startup: {
ready: () => {
ready: async () => {
MathJax.startup.defaultReady();
function fillTableWithSpeech(name, arr) {
async function fillTableWithSpeech(name, arr) {
var table = document.getElementById(name);
for (var j = 0; j < num.length; j++) {
for (var j = 0; j < arr.length; j++) {
const capt = j;
MathJax.tex2mmlPromise(arr[capt], {}).then(mml => {
var regex = /(?:data-semantic-speech=")(.*?)(?:")/g;
var matches = [...mml.matchAll(regex)];
table.rows[capt + 1].cells[2].innerText = matches[0][1];
}, err => {
// not sure why this is erroring
console.log(err);
});
const mml = await MathJax.tex2mmlPromise(arr[capt], {});
var regex = /(?:data-semantic-speech=")(.*?)(?:")/g;
var matches = [...mml.matchAll(regex)];
table.rows[capt + 1].cells[2].innerText = matches[0][1];

}
}
fillTableWithSpeech('angTable', ang);
fillTableWithSpeech('numTable', num);
fillTableWithSpeech('unitTable', unit);
fillTableWithSpeech('qtyTable', qty);
fillTableWithSpeech('declareSIUnitTable', declareSIUnit);
await fillTableWithSpeech('angTable', ang);
await fillTableWithSpeech('numTable', num);
await fillTableWithSpeech('unitTable', unit);
await fillTableWithSpeech('qtyTable', qty);
await fillTableWithSpeech('declareSIUnitTable', declareSIUnit);
}
}
};
Expand Down Expand Up @@ -300,20 +297,8 @@ <h2>DeclareSIUnit</h2>
];

fillTable('numTable', num);
// var table = document.getElementById('numTable');
// for (var i = 0; i < num.length; i++) {
// var tr = document.createElement('tr');
// table.appendChild(tr);
// var td = document.createElement('td');
// td.innerText = num[i];
// tr.appendChild(td);
// td = document.createElement('td');
// td.innerText = "$ " + num[i] + " $";
// tr.appendChild(td);
// td = document.createElement('td');
// tr.appendChild(td);
// }


var ang = [
String.raw`\ang{10}`,
String.raw`\ang{12.3}`,
Expand Down Expand Up @@ -378,27 +363,6 @@ <h2>DeclareSIUnit</h2>

fillTable('angTable', ang);

// var table = document.getElementById('angTable');
// // var tr = document.createElement('tr');
// // table.appendChild(tr);
// // var th = document.createElement('th');
// // th.innerText = 'LaTeX';
// // tr.appendChild(th);
// // th = document.createElement('th');
// // th.innerText =
// for (var i = 0; i < ang.length; i++) {
// var tr = document.createElement('tr');
// table.appendChild(tr);
// var td = document.createElement('td');
// td.innerText = ang[i];
// tr.appendChild(td);
// td = document.createElement('td');
// td.innerText = "$ " + ang[i] + " $";
// tr.appendChild(td);
// td = document.createElement('td');
// tr.appendChild(td);
// }

var unit = [
String.raw`\unit{kg.m/s^2}`,
String.raw`\unit{g_{polymer}~mol_{cat}.s^{-1}}`,
Expand Down Expand Up @@ -507,20 +471,7 @@ <h2>DeclareSIUnit</h2>
]
fillTable('unitTable', unit);
// var table = document.getElementById('unitTable');
// for (var i = 0; i < unit.length; i++) {
// var tr = document.createElement('tr');
// table.appendChild(tr);
// var td = document.createElement('td');
// td.innerText = unit[i];
// tr.appendChild(td);
// td = document.createElement('td');
// td.innerText = "$ " + unit[i] + " $";
// tr.appendChild(td);
// td = document.createElement('td');
// tr.appendChild(td);
// }
var qty = [
String.raw`\qty{1.23}{J.mol^{-1}.K^{-1}}`,
Expand Down Expand Up @@ -554,21 +505,6 @@ <h2>DeclareSIUnit</h2>
fillTable('qtyTable', qty);
// var table = document.getElementById('qtyTable');
// for (var i = 0; i < qty.length; i++) {
// var tr = document.createElement('tr');
// table.appendChild(tr);
// var td = document.createElement('td');
// td.innerText = qty[i];
// tr.appendChild(td);
// td = document.createElement('td');
// td.innerText = "$ " + qty[i] + " $";
// tr.appendChild(td);
// td = document.createElement('td');
// tr.appendChild(td);
// }
var declareSIUnit = [
String.raw`\DeclareSIUnit[inter-unit-product = \times]{\hello}{FakeUnit} \unit{\hello\kg\second}`,
String.raw`\unit{\kg\second}`,
Expand All @@ -581,20 +517,7 @@ <h2>DeclareSIUnit</h2>
];

fillTable('declareSIUnitTable', declareSIUnit);
// var table = document.getElementById('declareSIUnitTable');
// for (var i = 0; i < declareSIUnit.length; i++) {
// var tr = document.createElement('tr');
// table.appendChild(tr);
// var td = document.createElement('td');
// td.innerText = declareSIUnit[i];
// tr.appendChild(td);
// td = document.createElement('td');
// td.innerText = "$ " + declareSIUnit[i] + " $";
// tr.appendChild(td);
// td = document.createElement('td');
// tr.appendChild(td);

// }


</script>

Expand Down
2 changes: 1 addition & 1 deletion siunitx.js

Large diffs are not rendered by default.

24 changes: 24 additions & 0 deletions speech.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,30 @@ I'm not sure what else I can try, but it seems that ideally we would have
spaces between numbers in plain <mn> tags be treated the same way
commas are treated.

## Bracketed uncertainty issue

Brackets in MathML seem to default to multiplication in SRE. For an
uncertainty written in the form:

`8.35(4)`

This means that the last digit (5) has an uncertainty of plus or
minus 4.

i.e. `8.35 +- 0.04`

While MathSpeak just literally announces the brackets after the main number,
ClearSpeak uses the word "times" which is incorrect.

One possible solution is to wrap the uncertainty section in an <mrow>
then define a class like "Bracketed-Uncertainty"
(or something similar to "MathML-Unit") that could identify the
start of the uncertainty so that it is interpreted correctly in SRE.

Ideally, this would change the operator that separates the number and
the leading bracket for the uncertainty from multiplication to something
else.

## Units problem

MathJax with Speech-Rule-Engine does a fantastic job of creating speech in multiple
Expand Down
Loading

0 comments on commit 0dcbd5d

Please sign in to comment.