Чем сравнить две версии размеченного текста на уровне слов?
=============================================================

 Общая задача передо мною стоит так:  

есть два файла с размеченным текстом, а точнее один файл и один diff, который выдала СКВ.  

Нужно из них составить корректный (по языку разметки) файл, в котором включены обе версии, общие части не дублируются, различные части обрамляются специальными тегами.  

При этом изменения в словах должны выделяться на уровне слов.  

Например,  

```
Файл 1:
<h1>Заголовок</h1>
Подзаголовок
Мама мыла раму.
Не было тучь на небе.

Файл 2:
<h1>Название</h1>
<h2>Подзаголовок</h2>
Мама мыла пуделя.
В небе были тучи.

Результат:
<h1><span class=old>Заголовок</span> <span class=new>Название</span><h1>
<h2>Подзаголовок</h2>
Мама мыла <span class=old>раму</span> <span class=new>пуделя</span>.
<span class=old>Не было тучь на небе.</span>
<span class=new>В небе были тучи.</span>
```
  

В принципе, я могу написать функцию, которая принимает два фрагмента и возвращает результат слияния, учитывая мои желания о результате и особенности используемого языка разметки.  

Тогда задача сводится к определению этих самых фрагментов.  
  

diff не подходит, потому что он сравнивает построчно, а строка слишком велика, чтобы её выделять и дублировать, если в ней только одно слово изменено, как в примере с рамой и названием. К тому же, мне хочется, чтобы как можно меньше была вероятность попадания тегов в фрагмент, если тот невелик (см. пример с Заголовком). Вариант вставить в файл дополнительные разрывы строк, чтобы на одной строке было слово, а затем применить diff не подходит, потому что в больших отличающихся фрагментах почти наверняка есть повторяющиеся слова, напр., союзы (см. пример со словом "небе").  
  

Я бы хотел найти какую-нибудь программу, которая работает наподобие kdiff3, который может в строке подсветить отличающиеся символы,  

при этом выход этой программы должен быть в таком формате, чтобы я мог дальше применить свою функцию.  
  
**Собственно, вопрос:  

есть ли какая-нибудь программа, которая могла бы определить фрагменты, в которых два файла отличаются, на уровне слов, а не строк, и формировала список фрагментов с их координатами в легкопарсимом формате?**  
  

Или подойти к задаче с другой стороны? 

 как вы себе представляете функционал такой программы?  
  

чекайте левенштейном, и где близко - делите словами, далеко - строками