Копирование формулы из чата в редактор почти всегда заканчивается одинаково: на странице появляется R_{in} = \frac{\Delta U}{\Delta I} вместо дроби. Причина не в модели и не в WordPress, а в трёх несовпадениях — формулы из ChatGPT приходят в одном формате, плагин ждёт другого, а символ % в LaTeX вообще начинает комментарий. Ниже — рабочий порядок: выбрать рендерер, выровнять разделители, заставить модель отдавать готовый формат и проверить результат предпросмотром.

TL;DR: три шага и одна проверка
- Выбрать рендерер. Либо клиентский (MathJax), либо серверный (внешний сервис, отдающий SVG), либо встроенные средства темы.
- Совпасть разделителями.
\[ … \]для выносной формулы,\( … \)для строчной,$…$— только если плагин это понимает. - Запросить формат заранее. В промте указать разделители, экранирование
%, отсутствие обрамляющих блоков кода. - Проверка. Предпросмотр в редакторе или страница на сайте — но не «на глаз в чате».
Формула-источник: R_{in} = \frac{\Delta U}{\Delta I}
В статье должно быть: \[ R_{in} = \frac{\Delta U}{\Delta I} \]
Проценты: 100\% — а не 100%, иначе всё после % станет комментарием
Проблема, которую это решает
LaTeX и WordPress живут в разных мирах. LaTeX-строка — это текст с обратными слэшами и фигурными скобками; Gutenberg — это HTML-блоки, где обратный слэш сам по себе ничего не значит, пока его не начнёт разбирать рендерер.
Три типовые поломки, и все три выглядят одинаково — «формула не отрисовалась».
Первая: разделители. Модель часто отдаёт формулу в $…$ или вообще без разделителей, а плагин ждёт \[ … \]. Итог — текст вместо дроби.
Вторая: проценты. 100% в LaTeX — это 100 и комментарий до конца строки. Формула обрезается на середине, а если она занимает несколько строк, потеряется и хвост.
Третья: обёртка. Ответ приходит в блоке кода (тройные обратные кавычки). Если вставить такой блок в Gutenberg как обычный параграф, читатель увидит служебные кавычки и подсветку синтаксиса вместо формулы.
Отдельная проблема — сам выбор плагина: часть решений рендерит на клиенте скриптом, часть отправляет формулу на внешний сервис и получает картинку, а часть уже не поддерживается.
Что такое рендеринг формул в Gutenberg
flowchart TB
GPT["ChatGPT: LaTeX в ответе"] --> PASTE["вставка в Gutenberg"]
PASTE --> KIND{"как рендерится?"}
KIND -- клиентски --> JS["MathJax или KaTeX: скрипт в браузере"]
KIND -- сервер --> SVC["внешний сервис: формула в SVG"]
KIND -- без плагина --> RAW["сырой текст с обратными слэшами"]
JS --> VIEW["читаемая формула"]
SVC --> VIEW| Подход | Что происходит |
|---|---|
| Клиентский рендер | браузер загружает библиотеку (MathJax, KaTeX) и рисует формулу из разметки |
| Серверный рендер | формула уходит на внешний сервис, возвращается изображение или SVG |
| Встроенные средства | тема или платформа сама поддерживает ограниченный набор |
| Без рендерера | читатель видит исходный LaTeX как текст |
Разница практическая: клиентский рендер даёт выделяемый текст и масштабирование без потерь, но требует загрузки скрипта. Серверный не грузит ничего, зато зависит от доступности службы и даёт картинку.
Возможности: что умеют решения
Сравнение подходов
| Решение | Вставка | Рендер | Живой предпросмотр |
|---|---|---|---|
| MathJax-блок | отдельный блок или кнопка для строчной | клиентский, MathJax | есть в редакторе |
| Внешний сервис (QuickLaTeX) | LaTeX прямо в тексте плюс шорткод-переключатель | серверный, SVG | нет |
| MathJax через шорткод | [latex]…[/latex] |
клиентский, по требованию | только предпросмотр страницы |
| Jetpack | $latex …$ в блоке HTML |
изображение с сервиса | нет |
| KaTeX-плагин | блок и шорткоды | клиентский, быстрый | был, плагин закрыт в 2024 |
Почему это ломается именно при копировании
Когда формула живёт в чате, всё выглядит нормально: модель рисует дробь, подставляет индексы, переводит единицы. Ломается не формула, а её транспорт.
В чате вы видите отрендеренный результат, а в буфер обмена уходит исходная строка. Если скопировать её мышкой из прямоугольника ответа, можно получить уже «сплющенный» текст: обратные слэши пропали, фигурные скобки потерялись, индексы склеились. Если копировать через кнопку копирования блока кода, приедут ещё и сами кавычки блока. Отсюда два разных пути и два разных способа испортить строку — и оба заканчиваются одинаковым результатом на странице.
Второй источник поломок — сам редактор. Gutenberg честно хранит текст, но вставляет его как HTML. Обратный слэш для HTML — обычный символ, поэтому он и попадает в статью как есть. Пока в цепочке нет рендерера, который знает, что обратный слэш — часть разметки, ничего не произойдёт.
Третий — модели, которые «улучшают» ответ по дороге. Одна и та же просьба может вернуться в трёх видах: с долларами, с обратными слэшами в скобках, или вообще в виде Unicode-символов (когда дробь нарисована похожими буквами). Последний вариант опаснее всего: на вид всё правильно, но формулы как таковой нет — есть текст, который нельзя ни отредактировать, ни масштабировать.
Поэтому правило номер один звучит скучно: договоритесь о формате до того, как начнёте вставлять. Один раз попросить „в \[ … \], проценты через \%, без блоков кода“ дешевле, чем потом искать, почему из пяти формул две стали текстом.
Как выбрать рендерер под свой случай
Выбор сводится к трём вопросам, и отвечать надо по порядку.
Сколько формул? Если одна-две на статью и они не меняются — картинка или аккуратная запись в тексте. Если формулы идут абзацами, правятся и переиспользуются — нужен рендерер. Плагин ради одной дроби добавляет странице скрипт и вам — обновление, которого не хочется.
Нужен ли текст или картинки достаточно? Текстовый рендер позволяет читателю выделить формулу, скопировать её, увеличить без потерь, и поиск по странице её находит. Картинка проще для автора, но для читателя это изображение: ни выделить, ни изменить масштаб без размытия.
Можно ли зависеть от внешнего сервиса? Серверный рендер отправляет формулу наружу и получает изображение. Это нормально, пока сервис жив и пока политика проекта это допускает. Для внутренней документации с закрытыми данными такой путь иногда неприемлем.
flowchart TD M["MathJax: клиентский рендер"] --> P1["плюс: качество, минус: скрипт на странице"] Q["внешний сервис: SVG"] --> P2["плюс: без JS, минус: зависимость от сети"] K["встроенные средства темы"] --> P3["плюс: ничего не ставить, минус: качество и поддержка"]
Есть и четвёртый вопрос, о котором обычно вспоминают позже остальных: что будет с формулами, если плагин перестанут поддерживать. Снятый с поддержки рендерер продолжает работать до первого крупного обновления WordPress, а потом ломается сразу весь архив статей. Поэтому решение с открытым кодом и активной поддержкой предпочтительнее даже при чуть худшем качестве отрисовки.
Практика: как выглядит рабочий цикл
Опишу порядок, к которому я пришёл после нескольких испорченных вставок.
Сначала — пустая статья и один тестовый абзац. В него вставляется формула с максимальным набором элементов: дробь, корень, индекс с двумя символами и процент. Если это отрисовалось, дальше можно работать; если нет — проблема в настройке, и искать её надо сейчас, а не после пятнадцатой формулы.
Затем в чат уходит просьба о формате. Важно просить не «LaTeX», а конкретно: какие разделители, как экранировать процент, нужны ли фигурные скобки в индексах, не оборачивать ли ответ в блок кода. Модель отвечает на то, что попросили, — но только если попросили явно.
Дальше вставка. Выносные формулы — отдельным блоком или шорткодом, строчные — внутри абзаца. Смешивать не стоит: часть плагинов обрабатывает только один тип, и вторая половина формул остаётся текстом. После вставки — предпросмотр, а не публикация. Это правило экономит больше времени, чем всё остальное вместе.
После публикации — проверка на телефоне и сброс кеша. Кеш страниц способен неделю показывать старую версию статьи, и пока вы ищете ошибку в разметке, редактор уже содержит правильный текст. Если формула отрисована в редакторе и не отрисована на сайте, начинать надо с кеша, а не с плагина.
Что важно в каждом варианте
| Критерий | Почему влияет на выбор |
|---|---|
| Разделители | определяют, что именно можно вставлять как есть |
| Где грузится скрипт | все страницы или только с формулами |
| Зависимость от сети | серверный рендер не работает в офлайне |
| Поддержка | закрытый плагин — риск при обновлении WordPress |
| Кеширование | изображения кешируются иначе, чем текст |
Три способа, три компромисса
flowchart TD M["MathJax: клиентский рендер"] --> P1["плюс: качество, минус: скрипт на странице"] Q["внешний сервис: SVG"] --> P2["плюс: без JS, минус: зависимость от сети"] K["встроенные средства темы"] --> P3["плюс: ничего не ставить, минус: качество и поддержка"]
| Способ | Плюс | Минус |
|---|---|---|
| MathJax на клиенте | качество, выделяемый текст, масштаб | скрипт на странице, нужен правильный разделитель |
| Внешний сервис | ничего не грузится в браузере | зависимость от службы и её политики |
| Встроенные средства | ничего не ставить | ограниченный набор, качество как повезёт |
Практическое правило: если формул в статье много, клиентский рендер предпочтительнее — текст остаётся текстом, поиск и копирование работают. Если формула одна и нужна как иллюстрация, серверный вариант проще и не тянет библиотеку.
Как это делается по шагам
flowchart LR
ASK["запрос к модели с условиями формата"] --> OUT["LaTeX с экранированием"]
OUT --> CHECK{"разделители совпадают с плагином?"}
CHECK -- нет --> FIX["замена разделителей и процентов"]
CHECK -- да --> BLOCK["блок или шорткод в статье"]
FIX --> BLOCK
BLOCK --> PREV["проверка предпросмотром, а не на глаз"]| Шаг | Действие | Что проверять |
|---|---|---|
| 1 | выбрать рендерер и записать его разделители | какие именно строки он понимает |
| 2 | запросить у модели формулу в этом формате | нет блоков кода вокруг формулы |
| 3 | вставить как блок или шорткод | не как «классический» параграф |
| 4 | проверить предпросмотр | дробь нарисована, а не напечатана |
| 5 | проверить проценты и индексы | \%, _{…} на месте |
| 6 | проверить на телефоне | длинная формула не вылезает за экран |
Шестой шаг пропускают чаще всего, а зря: дроби с длинными числителями на узком экране обрезаются или растягивают страницу.
Замеры и цифры
Проверено 10.11.2026 на самом блоге, где эта статья и живёт.
| Что проверено | Значение | Как |
|---|---|---|
| Плагинов на сайте | 24, активны все | wp plugin list |
| Плагинов рендеринга формул | 0 — ни MathJax, ни KaTeX, ни QuickLaTeX, ни MathML | поиск по списку плагинов |
Записей с \frac в тексте |
1 | запрос к базе |
| Эта единственная запись | ID 2420 — сама статья про формулы | там же |
Что это значит на практике. На сайте нет рендерера, поэтому исходный LaTeX в тексте честно виден как текст — и это, кстати, лучший аргумент за то, чтобы сначала выбрать плагин, а потом уже вставлять формулы. Второй вывод: одна запись с \frac — это ровно тот случай, когда ставить тяжёлый рендерер ради одной статьи нерационально, а проще оформить формулу картинкой или аккуратной таблицей.
Чего замеры не показывают: как выглядят формулы после установки конкретного плагина. Для этого нужен прогон на тестовой копии сайта — ставить плагин на боевой блог ради статьи я не стал.
Сильные стороны продукта
- Текст остаётся текстом. При клиентском рендере формула копируется и находится поиском.
- Разделители решают всё. Один раз выровняв формат, вы перестаёте ловить «формула не отрисовалась».
- Промт снимает ручную правку. Если попросить нужный формат заранее, вставлять можно как есть.
- Масштабирование без потерь. Векторный рендер читается на любом экране.
- Рендер по требованию. Часть решений грузит скрипт только на страницах с формулами.
- Ограниченная, но достаточная грамматика. Дроби, индексы, корни, греческие буквы, суммы покрывают инженерные тексты.
- Проверяемость. Видно сразу: либо дробь, либо строка с обратными слэшами.
Установка
# поиск и установка плагина рендеринга
wp plugin search "mathjax"
wp plugin install mathjax-latex --activate
wp plugin list --fields=name,status,version
| Шаг | Что проверять |
|---|---|
| Плагин активирован | status = active |
| Разделители известны | какие именно строки понимает плагин |
| Скрипт подключён | загружается только там, где есть формулы |
| Тестовая статья | одна дробь и одна строчная формула |
На сайте с 24 плагинами добавлять ещё один стоит осознанно: это ещё один источник скриптов и ещё одно место, которое надо обновлять.
Настройка
| Что настроить | Зачем |
|---|---|
| Разделители | чтобы вставка из чата работала без правки |
| Рендер по требованию | чтобы не грузить библиотеку на всех страницах |
| Автонумерация формул | если на формулы ссылаются в тексте |
| Кеширование | чтобы страница не пересобиралась на каждый показ |
| Мобильная ширина | чтобы длинные формулы не ломали вёрстку |
Отдельно про шорткод-переключатель: часть решений требует один раз упомянуть его на странице, иначе формулы останутся текстом. Это самая частая причина «в редакторе всё было хорошо, а на сайте нет».
Промт, который сразу даёт нужный формат
Формулировка, которая снимает половину проблем:
Выведи формулы в формате, готовом для вставки в WordPress:
- выносные — в \[ … \], строчные — в \( … \);
- символ процента экранируй как \%;
- без обрамляющих блоков кода и без пояснений внутри формул;
- индексы и степени — только через _{…} и ^{…};
- после каждой формулы одна строка обычного текста с расшифровкой обозначений.
| Требование | Что предотвращает |
|---|---|
\[ … \] и \( … \) |
несовпадение разделителей |
\% |
обрезание формулы на проценте |
| без блоков кода | вставку служебных кавычек |
_{…} и ^{…} |
однобуквенные индексы R_in вместо R_{in} |
| расшифровка после формулы | формулу без пояснений, которую никто не поймёт |
Последний пункт недооценивают: формула без расшифровки обозначений выглядит наукообразно и бесполезна.
Подводные камни
$…$понимают не все. Если плагин ждёт\(…\), вставка с долларами останется текстом; проверяйте до публикации.%без слэша режет формулу. В LaTeX это комментарий, и всё после него исчезает — включая закрывающий разделитель.- Блок кода вокруг формулы. Ответ модели в тройных кавычках нельзя вставлять как есть: получите подсветку синтаксиса.
- Однобуквенный индекс.
R_inотрендерится какRс индексомiи буквойnв строке — нужны фигурные скобки. - Шорткод-переключатель забыт. Формула есть, рендера нет: на странице не упомянут
[latexpage]или аналогичный триггер. - Скрипт грузится везде. Рендерер без режима «по требованию» замедляет все страницы сайта, включая те, где формул нет.
- Закрытый плагин. Решения, снятые с поддержки, работают до первого крупного обновления WordPress.
- Кеш страниц. После правки формулы страница может отдавать старую версию — чистить кеш, а не искать ошибку в разметке.
- Мобильная ширина. Длинная дробь вылезает за экран и растягивает страницу; проверять на телефоне.
- Копирование «как есть» из PDF. Там формулы часто уже картинки или текст с неверными символами — сверять глазами.
Чек-лист
- [ ] Выбрать рендерер и записать его разделители.
- [ ] Проверить, что скрипт грузится только на страницах с формулами.
- [ ] Взять промт с требованиями к формату.
- [ ] Вставить формулу как блок или шорткод, а не как текст.
- [ ] Проверить предпросмотр: дробь, индексы, проценты.
- [ ] Убедиться, что шорткод-переключатель на странице есть.
- [ ] Посмотреть страницу на телефоне.
- [ ] Сбросить кеш и проверить повторно.
- [ ] Записать версию плагина в паспорт сайта.
- [ ] Решить, нужен ли рендерер для одной формулы, или хватит картинки.
FAQ
Почему формула вставилась как текст?
Почти всегда из-за разделителей: плагин ждёт \[ … \], а пришло $…$ или строка без разделителей. Вторая причина — вставка как обычный параграф вместо блока или шорткода.
Что делать с символом процента?
Экранировать: 100\%. Без слэша LaTeX считает % началом комментария, и остаток строки, включая закрывающий разделитель, пропадает.
Нужен ли плагин, если формула одна?
Не обязательно. Одну формулу дешевле оформить картинкой или аккуратной записью в таблице. Плагин оправдан, когда формул много и они правятся.
Клиентский рендер или серверный?
Клиентский (MathJax) даёт выделяемый текст и масштаб без потерь, но грузит скрипт. Серверный не грузит ничего, зато зависит от внешней службы и отдаёт картинку.
Можно ли обойтись без LaTeX?
Для простых случаев да: степень, индекс и дробь можно собрать средствами HTML. Для формул с корнями, суммами и матрицами это быстро становится нечитаемым.
Почему на этом блоге формул нет?
Проверено: из 24 плагинов ни один не рендерит формулы, а запись с \frac в блоге одна — эта самая. Для одной статьи ставить рендерер нерационально.
Где это ломается в жизни
Отдельно — про три ситуации, которые встречаются чаще всего.
Первый случай — формула в средине абзаца. Выделили её в чате, скопировали, вставили — и в редакторе вместо дроби пробел или обрезанная строка. Почти всегда причина в том, что копирование захватило кусок отрендеренного текста, а не исходную разметку. Лечится привычкой брать формулу из блока кода, который модель охотно отдаёт по просьбе.
Второй — таблица с единицами измерения. Здесь формула живёт в ячейке, и половина рендереров в ячейках не работает вовсе. Практичный выход: в таблицу ставить простую запись (U/I), а полную дробь — отдельной строкой под таблицей, где рендер точно работает.
Третий — правка старой статьи. Формулы в архиве писались год назад, и часть решений с тех пор сменила разделители или снята с поддержки. Перед массовой правкой стоит прогнать одну старую статью целиком и посмотреть, что осталось текстом: это дешевле, чем открывать шестьдесят записей по очереди.
Ни в одном из трёх случаев проблема не в математике. Она в транспорте и в границах применимости рендерера — и именно поэтому проверка предпросмотром важнее выбора плагина. Плагин можно заменить за десять минут, а потерянную статью с неверными формулами читатель заметит раньше, чем вы.
Итог
Перенос формул из ChatGPT в Gutenberg ломается не на математике, а на формате: разделители, экранирование процентов и обёртка из блока кода. Порядок, который работает: выбрать рендерер, записать его разделители, попросить модель отдавать готовый формат, вставить как блок, проверить предпросмотр и телефон. Проверка на этом блоге показала обратную сторону вопроса: 24 плагина и ни одного рендерера формул, а запись с LaTeX одна — значит, для большинства статей вопрос не в плагине, а в том, нужна ли формула вообще.
Цитата: Формула в статье нужна не для красоты, а чтобы читатель понял величину — и если для этого хватает одной строки текста, LaTeX не нужен.
Связанные материалы
- ml-switcher: переключатель языков WordPress — про плагины, которые меняют поведение редактора.
- Промты на псевдокоде: где приём помогает, а где вредит — как формулировать требования к формату ответа.
- Промт для PHP 8.3: как получить код уровня senior — ещё один пример промта с проверяемыми требованиями.
- Fornex Control: панель для DNS-зон — про предпросмотр до применения, как и здесь.
- HTML.PHP: шаблонизатор PHP в одном файле — про разметку, которую можно прочитать целиком.
LLM Summary
- Тема: перенос LaTeX-формул из ChatGPT в WordPress Gutenberg без поломки разметки.
- Три причины поломок: несовпадение разделителей (
$…$против\[ … \]), неэкранированный%(в LaTeX это комментарий), обёртка ответа в блок кода. - Варианты рендеринга: клиентский MathJax (качество, выделяемый текст, скрипт на странице), внешний сервис с SVG (без JS, но зависимость от сети), встроенные средства (ничего не ставить, ограниченный набор).
- Разделители:
\[ … \]для выносных,\( … \)для строчных;$…$работает только там, где плагин это понимает; части решений нужен шорткод-переключатель. - Промт: требует нужные разделители,
\%, отсутствие блоков кода, индексы через_{…}, расшифровку обозначений после формулы. - Проверено 10.11.2026 на этом блоге: 24 плагина, из них 0 рендерят формулы; записей с
\frac— 1 (ID 2420, сама статья). - Не проверялось: вид формул после установки конкретного плагина — на боевой блог плагин не ставился.
- Типовые грабли:
R_inвместоR_{in}, забытый шорткод-переключатель, рендерер без режима «по требованию», закрытый плагин, кеш страниц, мобильная ширина. - Ссылки: https://sysadministrator.ru/copying-latex-math-from-chatgpt-to-wordpress-gutenberg-without-breaking-formatting/
Промт для агента (установка и настройка)
Готовый промт: скопируйте блок целиком. Файла AGENTS.md у этой задачи нет (это не репозиторий), поэтому опора на шаги и на проверку предпросмотром.
Задача: настроить рендеринг LaTeX-формул в WordPress и вставлять формулы из ChatGPT без ручной правки.
Шаг 1. Снять состояние: wp plugin list --fields=name,status,version; записать, есть ли уже рендерер.
Шаг 2. Решить задачу по объёму: одна формула — картинка или таблица; много формул — плагин.
Шаг 3. Выбрать рендерер и выписать его разделители (\[ \], \( \), $…$ или шорткод).
Шаг 4. Установить и активировать: wp plugin install <плагин> --activate
Шаг 5. Проверить режим загрузки скрипта: только на страницах с формулами.
Шаг 6. Взять промт с требованиями формата: разделители, \%, без блоков кода, _{…} и ^{…}, расшифровка после формулы.
Шаг 7. Вставить формулу блоком или шорткодом; проверить, что шорткод-переключатель на странице есть.
Шаг 8. Проверить предпросмотр: дробь, индексы, проценты, длинная формула на телефоне.
Шаг 9. Сбросить кеш страниц и перепроверить на сайте.
Запрещено:
- вставлять ответ модели вместе с обрамляющими блоками кода;
- оставлять % без обратного слэша внутри формулы;
- ставить плагин рендеринга на боевой сайт без тестовой копии;
- выбирать решение без поддержки: закрытый плагин проработает до первого крупного обновления;
- считать, что формула отрисовалась, не открыв предпросмотр или страницу.
Что считать успехом: формула рисуется дробью, индексы на месте, проценты не режут строку, скрипт не грузится на страницах без формул, на телефоне вёрстка не ломается.