Скрипт для форматирования текстов делает то же самое, что должен делать и специальный конвертор, при этом не рубится на символе '<' или '>', действительно сливает в одну строку абзац и выглядит так:
#=== begin file libru.awk
# Usage gawk -f libru.awk file.txt >file
BEGIN {RS=" ";FS=" "}
{
for (i=1; i<=NF; i++)
{
gsub(/[:space:] +/," ",$i);
gsub(/-+/,"-",$i);
printf("%s%s%s",(i==1 ? "\n\t":""),$i , (i==NF ? "":" "));
}
}
#=== begin file libru.awk
Запускается из командной строки:
gawk -f libru.awk file.txt >file
Еще неплохо перед запуском пробежаться по тексту и вставить перед названием глав или частей 5 пробелов. Скриптом это сделать тяжело.