Olá, o plugin Math parece depender do frontend para renderização. Portanto, nossos usuários de e-mail não conseguem receber a fórmula matemática renderizada.
Existe alguma maneira de resolver este problema?
Tecnicamente, sim… mas é complicado. Precisaríamos carregar o mathjax no mini racer (ou node) simular o DOM e renderizar para um SVG.
Tenho certeza que isso já foi feito por algumas pessoas antes, mas não consigo encontrar exemplos fáceis e mantidos por aí. Provavelmente vale a pena testar se o pacote do node funciona para começar.
Existe uma maneira de usar o MathJax 3 em vez disso? Ele é muito menor e, portanto, pode reduzir os tempos de carregamento e melhorar a velocidade da página.
Absolutamente aberto a isso, se alguém se sentir à vontade para ajudar, ficarei muito feliz.
Como descobri naquele tópico, como o MathJax 3 lida com seu arquivo de configuração de forma diferente do MathJax 2.x, atualizar este plugin exigirá mais do que apenas alterar a URL.
A inteligência artificial fornece respostas em formato latex. Escrevi um prompt para converter este formato latex para o formato mathjax, mas o prompt nem sempre é implementado e responde em formato latex. Quando escrevi meu problema para a comunidade openai, a seguinte sugestão veio.
"Decidi que nem valia a pena o esforço de poluir um prompt do sistema, quando eu poderia simplesmente fazer o seguinte por conta própria com os resultados:
Eu gosto dessa ideia, concordo que o LaTeX pode ser irritante em respostas de IA e em prompts de sistema se for difícil. Mais ainda porque o GPT4o é ajustado em LaTeX. Apoio totalmente a criação de algum tipo de PR com uma opção para suportar o “modo LaTeX” se você marcar uma caixa nas configurações do site.
Não sei se estou falando da mesma coisa, mas para mim funcionou. Não uso fórmulas muito difíceis, no entanto.
Você entende totalmente o MathJax e o gera.
Ao apresentar expressões matemáticas, use as seguintes regras:
1. Para expressões matemáticas inline, use cifrões únicos `$...$`.
2. Para expressões matemáticas em estilo de exibição, use cifrões duplos `$$...$$`.
Por exemplo:
- Inline: A equação da equivalência massa-energia é $e=mc^2$.
- Exibição:
$$
e=mc^2
$$
Você pode adicionar este recurso na próxima atualização. Não importa o quanto eu digite o prompt, ele nem sempre funciona corretamente. No fórum da OpenAI, eles sugerem um arranjo como o acima, não um prompt, como uma solução definitiva.
Notei que no Meta, a matemática não é renderizada na janela de visualização, mas é (acho que) renderizada nas postagens. Vou testar isso aqui:
$$\n1 - a = 1 - \frac{1}{1 + e^{-z}}\n$$\n\nNa janela de visualização, estou vendo 1 - a = 1 - \\frac{1}{1 + e^{-z}}.\n\nIsso é um problema conhecido? Estou me perguntando se há uma configuração específica que o causa.\n\nNo site DeepLearning.AI Discourse, a matemática é renderizada na visualização, mas é muito instável - muda de código mathjax para matemática renderizada a cada pressionamento de tecla. Não estou encontrando esse problema no meu site de desenvolvimento local. Novamente, estou me perguntando se isso é um problema de configuração.
Existem novas sugestões da comunidade openai em relação aos problemas que estou enfrentando. Vocês planejam fazer uma atualização sobre isso? As sugestões são as seguintes.
Sugestão 1;
def parse_stream_to_katex(stream: Stream):
"""
Recebe um Stream da OpenAI e substitui os delimitadores LaTeX do ChatGPT
pelos delimitadores KateX.
Retorna texto, não pedaços
"""
last_text = ""
for chunk in stream:
text = chunk.choices[0].delta.content
if text:
# Às vezes, delimitadores como \( podem ser divididos em dois pedaços.
# Se o pedaço anterior terminou em \, anexe-o a este pedaço
if last_text.endswith("\\"):
text = last_text + text
text = (
text.replace(r"\[", "$$")
.replace(r"\]", "$$")
.replace(r"\(", "$")
.replace(r"\)", "$")
)
last_text = text
# Se o texto terminar em \, não o retornamos, ele será incluído no próximo pedaço
if not text.endswith("\\"):
yield text
Sugestão 2:
// MarkdownLaTeXRenderer.js
import React from 'react';
import ReactMarkdown from 'react-markdown';
import remarkGfm from 'remark-gfm';
import remarkMath from 'remark-math';
import rehypeRaw from 'rehype-raw';
import rehypeKatex from 'rehype-katex';
const MarkdownLaTeXRenderer = ({ content }) => {
// Substitui \[ por $$ e \] por $$ para garantir compatibilidade
const processedText = content
.replace(/\[/g, '$$') // Substitui todas as ocorrências de \[ por $$
.replace(/\]/g, '$$') // Substitui todas as ocorrências de \] por $$
.replace(/\(/g, '$') // Substitui todas as ocorrências de \( por $$
.replace(/\)/g, '$'); // Substitui todas as ocorrências de \) por $$
const remarkMathOptions = {
singleDollarTextMath: false,
};
return (
<ReactMarkdown
className="markdown-content"
children={processedText}
remarkPlugins={[[remarkMath, remarkMathOptions], remarkGfm]} // Passa opções como o segundo elemento do array
rehypePlugins={[rehypeRaw, rehypeKatex]} // Inclui rehypeRaw para HTML, rehypeKatex para LaTeX
/>
);
Quando visualizo fórmulas matemáticas no meu dispositivo móvel, não consigo ver a fórmula inteira corretamente (a fórmula é muito longa). Alguém sabe como resolver este problema?
Abaixo está a exibição correta no PC.
Virando o telefone na horizontal? Mas por que está entre aspas e isso pode ser o problema?
Caso contrário. Perguntei à IA do meu fórum e ela respondeu isto (não sei se é útil ou pura besteira).
Soluções para Alinhar Equações Longas Usando MathJaxIA
Jagster:
O fórum utiliza MathJax para matemática e equações. Ocasionalmente, uma equação é tão longa que não cabe em uma tela de celular. Existe alguma maneira de quebrar a equação em várias linhas?
Respondente:
O MathJax não suporta diretamente a quebra automática de linha para equações, mas você pode usar algumas técnicas para fazer com que equações longas caibam melhor em telas de celular. Aqui estão algumas dicas:
Use o ambiente align: Você pode dividir a equação em várias linhas usando o ambiente align. Isso permite alinhar e distribuir partes da equação em várias linhas. Por exemplo:
$$
\begin{align}
a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z = 0
\end{align}
$$
Use o ambiente split: Esta é outra maneira de dividir uma equação em várias linhas. É particularmente útil quando você deseja dividir a equação em partes sem precisar de alinhamento. Por exemplo:
$$
\begin{split}
a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z = 0
\end{split}
$$
Use o ambiente multline: Este ambiente é projetado para equações longas que não cabem em uma única linha. Ele divide a equação em várias linhas sem alinhamento. Por exemplo:
$$
\begin{multline}
a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z = 0
\end{multline}
$$
Esses ambientes permitem controlar a apresentação das equações e garantir que elas sejam legíveis mesmo em telas menores. Lembre-se que os ambientes MathJax geralmente exigem o pacote amsmath, que normalmente é habilitado por padrão no MathJax.
Estou tendo problemas para copiar fórmulas matemáticas do Google Sheets para o Meta Discourse. As fórmulas não parecem estar sendo renderizadas corretamente?
Ele renderiza OK, mas não há barra de rolagem para ver toda a matemática. Há, na pré-visualização, no entanto.
Na postagem, você só pode ver a outra parte se der zoom: