Я столкнулся с проблемой форматирования блоков кода в Discourse. При публикации кода на Python некоторые его части (например, URL-адреса и пути) подсвечиваются красным или форматируются некорректно, как показано на скриншоте ниже:
Когда я публикую код на Python, используя тройные обратные кавычки для блоков кода, отдельные части текста (например, символы подчеркивания в URL или путях) подсвечиваются красным или отображаются с ошибками форматирования.
Я пробовал экранировать символы, использовать HTML-сущности и отключать подсветку синтаксиса, не указывая язык, но проблема сохраняется.
Я не очень знаком с системой подсветки синтаксиса и её настройками в целом, но если вы просто хотите убрать красный текст, вы можете использовать CSS в теме вашего сайта:
code.language-python span {
color: inherit;
}
Красный цвет используется для обозначения строк, поэтому, если вы хотите просто изменить его на другой, вы можете сделать что-то вроде этого:
code.language-python span.hljs-string {
color: #FFF; /* Замените на нужный цвет */
}
Помимо красного текста, есть ли другие части, которые отображаются некорректно?
Спасибо за ваше предложение, @bryce! Я попробую настроить CSS в теме нашего сайта, чтобы решить проблему с красным текстом.
Я попробую настроить CSS в теме нашего сайта, чтобы решить проблему с красным текстом.
Думаю, основная проблема в том, что шрифт на моем первоначальном скриншоте не отформатирован как код — в нем отсутствует моноширинный стиль, который обычно используется для блоков кода. В идеале я надеялся, что код будет выглядеть примерно так, с правильным шрифтом и цветом:
Есть ли способ обеспечить отображение кода моноширинным шрифтом, похожим на тот, что в этом примере?
Помимо этого, я не заметил других серьезных проблем с форматированием, но продолжу тестировать и сообщу, если возникнут ещё какие-либо вопросы.
Цвета подсветки можно изменить, переопределив следующие CSS-переменные:
--hljs-comment: используется для комментариев в коде
--hljs-number: используется для числовых значений в коде
--hljs-string: используется для строковых значений в коде
--hljs-literal: используется для литеральных значений в коде
--hljs-tag: используется для тегов HTML/XML
--hljs-attribute: используется для атрибутов в тегах HTML/XML
--hljs-symbol: используется для символов в коде
--hljs-bg: используется для цвета фона блоков кода
--hljs-builtin-name: используется для имен встроенных функций
Например, чтобы изменить цвет строк:
:root {
--hljs-string: pink;
}
Похоже, что hljs (используемая библиотека подсветки) может не поддерживать подсветку идентификаторов Python, таких как degirum в вашем примере, но вы сможете добиться близкого результата, изменив другие цвета.
Что касается шрифта — это странно: блоки кода по умолчанию должны отображаться моноширинным шрифтом. Рекомендую перепроверить вашу тему, чтобы убедиться, что там ничего не переопределяется.
Чтобы прояснить ситуацию: в данный момент мы используем тему Default без дополнительных компонентов, поэтому странно, что моноширинный шрифт по умолчанию не применяется к блокам кода. Похоже, что ничто его не переопределяет.
Для справки: я работаю в Chrome версии 127.0.6533.100 на macOS 14.6.1.
Шрифт выглядит правильно, а ссылки подсвечиваются, как и ожидалось. Однако в нашем сообществе я всё ещё сталкиваюсь с проблемой: шрифт отображается некорректно, а ссылки не подсвечиваются так, как должны.
Не совсем понимаю, почему возникает это расхождение.
Для справки, вот ссылка на страницу в нашем сообществе.
Спасибо вам обоим за то, что нашли время помочь мне с этим. Хорошо знать, что шрифт отображается моноширинным у других.
Поскольку у меня он отображается некорректно, возможно, это проблема, специфичная для моей конфигурации или среды. У меня он отображается неправильно как в Chrome, так и в Safari (обе последние версии). Также он отображается некорректно у других сотрудников нашей организации на ПК.
Я только что проверил с личного компьютера, и проблема сохраняется и там. Шрифт кода по-прежнему не отображается моноширинным, а ссылки не подсвечиваются правильно.
Это, похоже, исключает проблему с моим основным окружением, так как проблема наблюдается на разных устройствах.
Я только что проверил в безопасном режиме, и проблема, похоже, там решена — шрифт кода отображается моноширинным, а ссылки подсвечиваются корректно.
Это сбивает с толку, поскольку мы используем тему «По умолчанию» без дополнительных компонентов, поэтому я не понимаю, что может вызывать проблему в обычном режиме.
Так я и ожидал. Эти строки отображаются другим цветом, чтобы вы могли быстро понять, что это строки. Разве не так это выглядит в вашем текстовом редакторе?
Кажется, вам просто нужно изменить SiteSetting.default_code_lang на “text” или “”. Также есть настройка highlighted_languages. Я почти уверен, что здесь они изменили язык кода по умолчанию на что-то вроде text, так что
Это выглядит так:
result=model("https://big.bang")
а если я принудительно укажу ```python, то это будет выглядеть так:
Поскольку я управляю сообществом, моя цель — видеть это так, как его видят конечные пользователи. Как вы можете заметить справа, это выглядит не совсем правильно.