diff --git a/services/web/frontend/js/features/source-editor/extensions/visual/atomic-decorations.ts b/services/web/frontend/js/features/source-editor/extensions/visual/atomic-decorations.ts index 5bd75cf5f2..f9599fd74b 100644 --- a/services/web/frontend/js/features/source-editor/extensions/visual/atomic-decorations.ts +++ b/services/web/frontend/js/features/source-editor/extensions/visual/atomic-decorations.ts @@ -1108,6 +1108,33 @@ export const atomicDecorations = (options: Options) => { widget: new TeXWidget(), }).range(nodeRef.from, nodeRef.to) ) + return false + } + } else if (commandName === '\\ce') { + // Chemical equation/formula, from the `mhchem` CTAN package. + // Handled by the MathJaX mhchem extension: + // https://docs.mathjax.org/en/latest/input/tex/extensions/mhchem.html + if (textArgumentNode && shouldDecorate(state, nodeRef)) { + const innerContent = state.doc + .sliceString( + textArgumentNode.from + 1, + textArgumentNode.to - 1 + ) + .trim() + + if (innerContent.length) { + const outerContent = state.doc.sliceString( + nodeRef.from, + nodeRef.to + ) + + decorations.push( + Decoration.replace({ + widget: new MathWidget(outerContent, false), + }).range(nodeRef.from, nodeRef.to) + ) + } + return false } } else if (hasCharacterSubstitution(commandName)) {