Автоматическая разбивка текста на абзацы
Автоматически разбивает пост на абзацы. В стиле предусмотрен отступ "красной строки", интервал между абзацами и выравнивание текста по ширине. Скрипт игнорирует участки текста, оформленные вручную с помощью тегов (выравнивание, шрифты, а также [indent]).
https://i.gyazo.com/af3d18f4b81cd04fed59250cdb795914.png

Автор: satsana
Платформа: MyBB

Ставить лучше в html-низ:

Код:
    <style>
    .post-content {text-align: justify;}
    td p {text-indent: 0 !important;}
    .post-content p {
      text-indent: 1.5em;
      padding: 0 0 0.5em 0 !important;
    }
    </style>
    <!-- Разбивка на абзацы -->
    <script type="text/javascript">
     $(".post-content").html(function() {
      var pos = 0, spanpos = 0, brpos = 0; var str = this.innerHTML;
      while (true) {
        spanpos = str.indexOf("<span", pos);
        brpos = str.substring(pos).search(/(\<br\s?\/?\>)+(?!<span style="display:inline-block)/);
        if (brpos == -1) {return str;} else {brpos += pos;}
        if (spanpos < brpos && spanpos != -1) {
          var span1 = 1, span2 = 0; pos = spanpos + 2;
          while (span1 != span2) {
            pos = str.indexOf("span", pos);
            if (str.substring(pos-1, pos) == "/") {span2++;} else {span1++;}
            pos++;
            if (str.indexOf("<span", pos) == str.indexOf("<br>", pos)) {break;}
          }
        } else if (spanpos > brpos || spanpos == -1) {
          str = str.substring(0, brpos) + str.substring(brpos).replace(/(\<br\s?\/?\>)+/, '</p><p>'); pos = brpos++;
        } else {return str;}
      }
     })
    </script> <!-- Разбивка на абзацы (end) -->

В стиле text-indent: 1.5em - величина отступа красной строки, padding: 0 0 0.5em 0 - отступ после абзаца. И то, и другое можно изменить на свой вкус (дробные величины пишутся через точку).

Скрипт отлично сочетается с авто-подстановкой длинных тире, делается она вот так:

Код:
    <script>$('.post-content p').html(function(){return this.innerHTML.replace(/(\s|&nbsp;)?-(\s|&nbsp;)/g,'$1&mdash;$2')})</script>

Если на форуме установлен скрипт для ручного отступа с помощью тега [indent], то для избежания появления двойного отступа в начале абзаца можно использовать вот такой код:

Код:
    <script>$('.post-content').html(function(){return this.innerHTML.replace(/<p><span style="display:inline-block/g,'<p style="text-indent: 0;"><span style="display:inline-block')})</script>

Скрипт для красной строки/деления на абзацы

Чем этот скрипт отличается от остальных.
1. Он подходит для старых форумов. Думаю, кроме меня найдутся те, кто соображал про красную строку уже сильно после того, как форум просуществовал какое-то время и понасочинял достаточно огромное кол-во контента. Существующие скрипты (во всяком случае, те, которые находил я) убивают изначальную иерархию тегов в сообщении и исправно корректно делят текст на <p></p>, позволяя вписать text-indent, но — таким образом они еще и убивают те отступы в тексте сообщений, которые действительно могут быть необходимы для логического деления и оформления тех же постов. Иными словами, установка скриптов для индента на старые форумы может привести к глобальной катастрофе, поскольку логически поделенные в рамках старой иерархии тегов посты становятся просто цельным полотном без первоначальных разделителей-строк-пробелов. Здесь эта проблема учтена.
2. Задаются разделы, на которые распространяется его действие. То есть можно указать только игровые/архивы, не затрагивая рабочие.

HTML-Верх

Код:
<script src="https://forumstatic.ru/files/0016/a4/af/82138.js"></script>

HTML-Низ

<script>
$(document).ready(function() {
var forumIndexes = [3,11,9,17,18]; // форумы, где нужен indent, указываем только ID-номер форума, последнее число без запятой
formatTextParagraphs(forumIndexes);
});
</script>

CSS, таким образом, у нас приобретает примерно такой вид разбивки с дополнительным классом вложенного <p>:

.punbb .post-content p {
    padding: 0 0 1em 0;
    }
.punbb .post-content p.formatted {
    padding: 0 0 0 0;
    text-indent:2.6em;
}

То есть дальше настраиваем отступы уже как удобно, сохраняя первоначальные.