[fix] prevent translations to math formulas and code-blocks

This commit is contained in:
PrinOrange
2024-08-25 22:45:34 +08:00
parent 2b04a51fda
commit bd1b158172
3 changed files with 14 additions and 2 deletions

View File

@@ -32,14 +32,19 @@ const PreWrapper = ({ children }: { children: JSX.Element }) => {
{hovered && ( {hovered && (
<Button <Button
aria-label="Copy code" aria-label="Copy code"
className={`absolute top-2 right-2 h-8 w-8 rounded p-1 ${copied ? "text-green-500 hover:text-green-500" : ""}`} className={`absolute top-2 right-2 h-8 w-8 rounded p-1 ${
copied ? "text-green-500 hover:text-green-500" : ""
}`}
onClick={onCopy} onClick={onCopy}
variant={"outline"} variant={"outline"}
> >
{copied ? <FaCheck /> : <IoCopyOutline />} {copied ? <FaCheck /> : <IoCopyOutline />}
</Button> </Button>
)} )}
<pre className="flat-scrollbar-normal not-prose rounded-md bg-[#F6F8FA] p-2 text-sm selection:bg-gray-300 selection:text-inherit dark:bg-[#0d1117] dark:selection:bg-gray-700"> <pre
translate="no"
className="flat-scrollbar-normal not-prose rounded-md bg-[#F6F8FA] p-2 text-sm selection:bg-gray-300 selection:text-inherit dark:bg-[#0d1117] dark:selection:bg-gray-700"
>
{children} {children}
</pre> </pre>
</div> </div>

5
components/mdx/Span.tsx Normal file
View File

@@ -0,0 +1,5 @@
const Span = (props: JSX.IntrinsicElements["h2"]) => {
return <span translate={props.className?.includes("katex") ? "no" : undefined} {...props} />;
};
export default Span;

View File

@@ -2,6 +2,7 @@ import Blockquote from "./Blockquote";
import H2 from "./H2"; import H2 from "./H2";
import ImageWrapper from "./ImageWrapper"; import ImageWrapper from "./ImageWrapper";
import PreWrapper from "./PreWrapper"; import PreWrapper from "./PreWrapper";
import Span from "./Span";
import TableWrapper from "./TableWrapper"; import TableWrapper from "./TableWrapper";
export const MDXComponentsSet = { export const MDXComponentsSet = {
@@ -10,4 +11,5 @@ export const MDXComponentsSet = {
img: ImageWrapper, img: ImageWrapper,
h2: H2, h2: H2,
blockquote: Blockquote, blockquote: Blockquote,
span: Span,
}; };