|
|
|
@@ -12,6 +12,7 @@ const DANGEROUS_TAGS = ['svg', 'math'];
|
|
|
|
|
const latexDelimiters = [
|
|
|
|
|
{ left: '$$', right: '$$', display: true },
|
|
|
|
|
{ left: '\\[', right: '\\]', display: true },
|
|
|
|
|
{ left: '$', right: '$', display: false },
|
|
|
|
|
{ left: '\\(', right: '\\)', display: false }
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
@@ -105,7 +106,7 @@ function Article({ cache }) {
|
|
|
|
|
|
|
|
|
|
if (v.nodeName === '#text') {
|
|
|
|
|
const text = v.data;
|
|
|
|
|
if (text.includes('\\[') || text.includes('\\(') || text.includes('$$')) {
|
|
|
|
|
if (text.includes('\\[') || text.includes('\\(') || text.includes('$$') || text.includes('$')) {
|
|
|
|
|
return <Latex key={key} delimiters={latexDelimiters}>{text}</Latex>;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -137,7 +138,8 @@ function Article({ cache }) {
|
|
|
|
|
const textContent = v.textContent.trim();
|
|
|
|
|
const isMath = (textContent.startsWith('\\(') && textContent.endsWith('\\)')) ||
|
|
|
|
|
(textContent.startsWith('\\[') && textContent.endsWith('\\]')) ||
|
|
|
|
|
(textContent.startsWith('$$') && textContent.endsWith('$$'));
|
|
|
|
|
(textContent.startsWith('$$') && textContent.endsWith('$$')) ||
|
|
|
|
|
(textContent.startsWith('$') && textContent.endsWith('$') && textContent.indexOf('$') !== textContent.lastIndexOf('$') && !/\s/.test(textContent.charAt(textContent.length - 2)));
|
|
|
|
|
|
|
|
|
|
const props = { key: key };
|
|
|
|
|
if (v.hasAttributes()) {
|
|
|
|
@@ -157,6 +159,13 @@ function Article({ cache }) {
|
|
|
|
|
const firstParen = mathContent.indexOf('\\(');
|
|
|
|
|
const lastParen = mathContent.lastIndexOf('\\)');
|
|
|
|
|
mathContent = mathContent.substring(0, firstParen) + '\\[' + mathContent.substring(firstParen + 2, lastParen) + '\\]' + mathContent.substring(lastParen + 2);
|
|
|
|
|
} else if (trimmed.startsWith('$') && !trimmed.startsWith('$$')) {
|
|
|
|
|
// Replace $ with $$
|
|
|
|
|
const firstDollar = mathContent.indexOf('$');
|
|
|
|
|
const lastDollar = mathContent.lastIndexOf('$');
|
|
|
|
|
if (firstDollar !== lastDollar) {
|
|
|
|
|
mathContent = mathContent.substring(0, firstDollar) + '$$' + mathContent.substring(firstDollar + 1, lastDollar) + '$$' + mathContent.substring(lastDollar + 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return <Tag {...props}><Latex delimiters={latexDelimiters}>{mathContent}</Latex></Tag>;
|
|
|
|
|