XSL-FO: перенос длинных слов в ячейку таблицы
Я использую Docbook-XSL и Apache FOP для создания PDF-документов, содержащих таблицы. При настройках по умолчанию таблицы имеют столбцы фиксированной ширины, а строки переносятся по границам слов. Но если слово длиннее ширины ячейки, оно переполняет ячейку. Я хотел бы разбить слова на несколько строк в таком случае. Как это можно сделать?
Дефис не является решением, так как слова не обязательно должны быть на английском. (Правка: переносы в других языках также не являются решением. Может быть заранее неизвестно, на каком языке находятся данные, и могут существовать "слова", которые нельзя переносить, например числовые строки.)
Я нашел предложения использовать keep-together.within-column="always"
за fo:table-row
с, но это, казалось, не имело никакого эффекта.
(Правка:) Еще одно предложение заключалось в том, чтобы вставить пробелы нулевой ширины между всеми символами. Но это также нарушает короткие слова среднего слова. Мне нужно решение, которое по возможности будет выходить за границы слов, а средние - только при необходимости.
1 ответ
FOP, как почти каждый процессор FO, может переносить языки, отличные от английского. См. http://xmlgraphics.apache.org/fop/2.1/hyphenation.html
Вы можете попробовать использовать процессор FO, такой как Antenna House AH Formatter, который реализует "автоматическую" компоновку таблицы и может регулировать ширину столбцов таблицы в зависимости от того, где текст может разбиваться (а также выполнять переносы для нескольких языков).
Другие ответы для разрыва текста в ячейках таблицы: