Skip to content

Instantly share code, notes, and snippets.

@mcleonard
Last active November 25, 2024 05:39
Show Gist options
  • Save mcleonard/0433c1eca1d56489259118524824f159 to your computer and use it in GitHub Desktop.
Save mcleonard/0433c1eca1d56489259118524824f159 to your computer and use it in GitHub Desktop.
Render math expressions in Markdown with Mathjax as a React component
import ReactMarkdown from 'react-markdown';
import MathJax from 'react-mathjax';
import RemarkMathPlugin from 'remark-math';
function MarkdownRender(props) {
const newProps = {
...props,
plugins: [
RemarkMathPlugin,
],
renderers: {
...props.renderers,
math: (props) =>
<MathJax.Node formula={props.value} />,
inlineMath: (props) =>
<MathJax.Node inline formula={props.value} />
}
};
return (
<MathJax.Provider input="tex">
<ReactMarkdown {...newProps} />
</MathJax.Provider>
);
}
export default MarkdownRender
@saverioscagnoli
Copy link

saverioscagnoli commented Feb 5, 2023

@CNFeffery I don't know, sorry :(
maybe limiting the fonts that get imported? I don't know if that works tho

@jelc53
Copy link

jelc53 commented Oct 7, 2023

This combination is not working for me: react-markdown, remark-math, rehype-katex. I'm running react-markdown version 8.0.7

Keep getting errors related to type of katex: "Type 'Plugin<[(KatexOptions | undefined)?]>' is not assignable to type 'Pluggable<any[]>'"

Any ideas?

@iambasantarai
Copy link

If you are using

import "katex/dist/katex.min.css";

and facing Failed to resolve import "katex/dist/katex.min.css" from "src/components/YourComponent.tsx". Does the file exist?

You can download the katex.min.css file, move the minified css file to your styles directory and manually import it to your react component.

  • Download the minified css file
$ wget https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.css
  • Import it to your component
import '../your/styles/directory/path/katex.min.css';

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment