2014-01-23 4 views
0

Возможно ли предотвратить изменение текстового отступа в верхней части новой страницы документа?XSL-FO нет текстового отступа в верхней части новой страницы

Код:

<xsl:template match="paragraph"> 
    <fo:block text-indent="10pt"> 
    <xsl:value-of select="."/> 
    </fo:block> 
</xsl:template> 

Новая страница:

ххххххх

вместо:

текста отступа ххххххх

Чтобы избежать текстовый отступ в первом абзаце главы i я использовал код ниже, но это не поможет мне с текстовым отступом на новой странице:

<xsl:template match="paragraph"> 
    <xsl:choose> 
     <xsl:when test="fn:position() = 1"> 
      <fo:block> 
      <xsl:value-of select="."/> 
      </fo:block> 
     </xsl:when> 
     <xsl:otherwise> 
      <fo:block text-indent="10pt"> 
       <xsl:value-of select="."/> 
      </fo:block> 
     </xsl:otherwise> 
    </xsl:choose> 
</xsl:template> 

Спасибо!

+0

С каким процессором FO вы работаете? –

+0

Я работаю с ФОПОМ – Ferestes

ответ

1

Насколько я знаю, невозможно определить наличие и положение разрывов страниц до того, как произошла фактическая обработка ФО.

Причина в следующем. В XSL-FO вы не моделируете страницы. Скорее, вы определяете потоки и регионов, где текст разрешен для «потока». Процессор FO остается обработать, как контент делится на страницы.

Следствием этого является то, что некоторые виды информации не доступны заранее, например, информация Is there going to be a page-break?, которую вы ищете, или, что примечательно, number of pages.

С другой стороны, вы можете легко контролировать, когда обязательно должен быть вставлен разрыв страницы. Если вы укажете page-break-after или page-break-before на fo:block элементах, вы можете по крайней мере убедиться, что первый абзац каждой главы начинается с новой страницы.

<fo:block page-break-before="always">Chapter title</fo:block> 

Таким образом, как небольшое утешение, отступ первого абзаца на новой странице опущен, если она совпадает с новой главой.


Обратите внимание, что речь идет о разрывах страниц, которые автоматически введены FOP без вмешательства пользователя.

+0

Я использую этот код для страницы-брейка: \t \t ' \t \t fo: block page-break-before =" always "/> \t' Это прекрасно работает и нет доступа к странице в последней главе, но у меня все еще есть проблема, что абзацы на верхней части новой страницы имеют текстовый отступ, что довольно раздражает. – Ferestes

+0

«Причина в следующем: в XSL-FO вы не моделируете страницы. Вместо этого вы определяете потоки и регионы, в которых текст разрешен« поток ». Остается процессору FO, чтобы разобраться, как контент делится на страницы.« Я вижу проблему. Но все же XSL-Fo используется для создания макета книги, поэтому должен быть способ предотвратить отступ текста в верхней части новой страницы. – Ferestes

+0

Я искал для этих функций довольно давно я сам, но не смог их найти. Возможно, вы можете получить помощь здесь: http://xmlgraphics.apache.org/fop/maillist.html. –

Смежные вопросы