Содержимое XSL FO Docbook слева

Я использую Docbook 5 (docbook-xsl-ns), генерирую PDF с помощью Apache FOP и хочу переместить весь текст влево. Как мне это сделать?

Исходный XML:

<section>
        <title>Usage</title>
        <programlisting>mvn archetype:generate -DarchetypeGroupId=cz.csob.javor -DarchetypeArtifactId=javor-archetypes-subcomponent -DarchetypeVersion=X.Y.Z</programlisting>
        <para>During the subcomponent project generation you will be asked for the following properties:</para>
        <itemizedlist>
            <listitem>
                <para><emphasis>parent-component-id</emphasis> - ID of the parent component, should be the name of the directory the parent component project is placed in</para>
            </listitem>
            <listitem>...

введите здесь описание изображения

Спасибо.


person Xdg    schedule 21.06.2013    source источник
comment
почти все элементы docbook контролируются в файле param.xsl в таблицах стилей docbook/fo. Изучите его, найдите то, что вам нужно изменить, и измените его.   -  person Kevin Brown    schedule 22.06.2013
comment
@Xdg - ты нашел решение?   -  person Viacheslav Molokov    schedule 28.06.2013


Ответы (1)


Отступ абзаца добавлен параметром body.start.indent.

Вы должны установить значение этого параметра с измерением, потому что оно используется в других шаблонах XSLT для вычислений. Например, следующая строка вообще удалит отступ абзаца:

<xsl:param name="body.start.indent">0pt</xsl:param>

Весь уровень настройки XSLT должен выглядеть примерно так:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:fo="http://www.w3.org/1999/XSL/Format"
    version="1.0">
    <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl"/>
    <xsl:param name="body.start.indent">0pt</xsl:param>
</xsl:stylesheet>

Справочная документация по этой теме

Также могут быть использованы другие варианты отступов:

  • page.margin.inner - левое поле страницы
  • page.margin.outer - правое поле страницы

Верхнее и нижнее поля (из документации)

Например, следующие параметры сделают этот макет страницы 3:

<xsl:param name="page.margin.inner">20mm</xsl:param>
<xsl:param name="page.margin.outer">10mm</xsl:param>
<xsl:param name="page.margin.top">12.5mm</xsl:param>
<xsl:param name="page.margin.bottom">15mm</xsl:param>

<xsl:param name="region.before.extent">10mm</xsl:param>
<xsl:param name="region.after.extent">5mm</xsl:param>

<xsl:param name="body.margin.top">15mm</xsl:param>
<xsl:param name="body.margin.bottom">15mm</xsl:param>

Результирующий макет страницы

person Viacheslav Molokov    schedule 28.06.2013
comment
Спасибо @Вячеслав. Это действительно хорошая работа для левого поля основного текста. Что мы используем для правого поля основного текста? body.stop.indent нет. (Кажется, моя проблема в том, что я не знаю, как называются вещи. body.margin.left и body.margin.right кажутся наиболее интуитивными, но они неверны). - person jww; 16.03.2018
comment
Вы можете использовать это: ‹xsl:param name=page.margin.inner›20mm‹/xsl:param› ‹xsl:param name=page.margin.outer›10mm‹/xsl:param› - person Viacheslav Molokov; 30.03.2018