Я думаю, что было бы лучше исправить
<#if (p<=5)> <#-- p among first 5 pages -->
<#assign interval = 1..(min(5,size))>
<#elseif ((size-p)<5)> <#-- p among last 5 pages -->
<#assign interval = (max(1,(size-4)))..size >
на
<#if (p<=4)> <#-- p among first 5 pages -->
<#assign interval = 1..(min(5,size))>
<#elseif ((size-p)<4)> <#-- p among last 5 pages -->
<#assign interval = (max(1,(size-4)))..size >
(только правильно 5 -> 4)
Поскольку первый код показывает странный результат вкакая-то ситуация вроде <@pages 1 ... 12 5>
Я ожидал 1 ... 3 4 <5> 6 7 ... 12, но это показало
1 2 3 4 <5> ...12, что означает, что если текущей странице 5, невозможно перейти на следующую страницу.
Вторая работает правильно, как я ожидал.