$ v=1.2.13
$ echo "${v%.*}.$((${v##*.}+1))"
1.2.14
$ v=11.1.2.3.0
$ echo "${v%.*}.$((${v##*.}+1))"
11.1.2.3.1
Вот как это работает:
Строка разбита на две части.
${v%.*}
${v##*.}
Первая часть печатается как есть, за ней следует простая точка, а последняя часть увеличивается с использованием арифметического расширения оболочки: $((x+1))
Наконец, я не смог этого сделать, потому что [fo: inline] пытается собрать все доступное пространство.
Один из приемов - установить поля (левое или правое) для 90% или более, чтобы заполнить этот пробел, но тогда я не знаю, что предыдущий [fo: inline] текст был отображен в одной, двух или более строках.
Единственный способ, который я нашел для создания файла в заголовках столбцов используется [fo: table] плюс добавление полей (слева и справа) к каждой ячейке.
PS: Я использую FOP-0.95
Свойство "width" не применяется к fo: block (см. http://www.w3.org/TR/xsl11/#fo_block ). Если вы хотите переопределить ширину, вам нужно использовать fo: block-container ( http://www.w3.org/TR/xsl11/#fo_block-container ) или другой элемент, который генерирует так называемая эталонная область. Немного сложно понять, каков именно ваш ожидаемый макет. Возможно, вы также можете поэкспериментировать с использованием свойств "start-indent" и "end-indent", чтобы косвенно повлиять на фактическую ширину блока fo: block. HTH