Как выровнять некоторый текст по центру, а другой по правому краю в пределах одной ячейки таблицы - PullRequest
0 голосов
/ 08 января 2019

Как выровнять текст по центру, а по правому краю - по одной и той же строке в пределах одной ячейки таблицы. Только в XSL-FO.

Ответы [ 3 ]

0 голосов
/ 08 января 2019

Использование fo:leader (см. https://www.w3.org/TR/xsl11/#fo_leader).

Использование <fo:leader /> при text-align="justify" на fo:block может быть достаточным.

Если это не дает правильного результата, это может быть потому, что значение .optimum по умолчанию для свойства leader-length (см. https://www.w3.org/TR/xsl11/#leader-length) равно 12pt. В этом случае вам, вероятно, понадобится что-то вроде:

<fo:leader leader-length.optimum="100%" />

Если вы используете AH Formatter, вы можете использовать axf:leader-expansion="force" (см. https://www.antennahouse.com/product/ahf66/ahf-ext.html#axf.leader-expansion), чтобы заставить лидера максимально расширяться.

0 голосов
/ 12 января 2019

Если вам действительно нужно, чтобы текст по центру и текст, выровненный по правому краю, находились внутри одного и того же fo:table-cell, вы можете использовать отрицательное пространство между двумя fo:block элементами поставить их, по-видимому, на одной строке:

<fo:table-cell>
    <fo:block text-align="center" space-after="-14.4pt">in the center</fo:block>
    <fo:block text-align="right">to the right</fo:block>
</fo:table-cell> 

Это должно сработать (я проверил это с FOP), но это может считаться грязной уловкой; точное значение для space-after зависит от высоты строки для первого блока, которая по умолчанию равна 1,2 * font-size (сама по умолчанию равна 12pt), поэтому вам может потребоваться вычислить правильное значение для вашей конкретной ситуации.

Однако , я думаю, что во многих ситуациях вы могли бы просто

  1. использовать таблицу из трех столбцов, первая и третья таблицы имеют одинаковую ширину
  2. поместите центрированный текст во вторую ячейку
  3. поместите выровненный по правому краю текст в третью ячейку
  4. определяют границу только за пределами строки таблицы, поэтому три ячейки отображаются в выводе как одна.

(как уже прокомментировал Тони Грэм, более точное описание желаемого результата или, еще лучше, изображение, показывающее его, поможет предложить правильный ответ для вашей ситуации)

0 голосов
/ 08 января 2019

Поместите каждый блок текста в отдельный fo:block. Используйте text-align="center" для первого fo:block и text-align="right" для второго. Смотри https://www.w3.org/TR/xsl11/#text-align.

...