Как создать обложку с помощью asciidoctor-fopub

Я пытаюсь настроить наше руководство разработчика в формате pdf, чтобы первая страница выглядела достойно. . Я полностью согласен делать все в фотошопе в качестве изображения, поскольку возможности asciidoc здесь довольно ограничены.

К сожалению, несмотря на то, что я искал везде, я не могу найти ни одного способа настроить титульный лист или заменить его изображением, которое работает для asciidoctor-fopub.

Раздражает то, что этот вариант использования специально упоминается в файле readme проекта https://github.com/asciidoctor/asciidoctor-fopub (в разделе «Пользовательские шаблоны XSL»), но нет упоминания о том, как на самом деле это сделать, кроме «это в XSL». Как человек, не знакомый с docbook, я понятия не имею, с чего начать.

asciidoctor-pdf имеет тег для включения изображения, но он блюет на наш документ и генерирует мусор (оглавление закрашивается поверх всего).


person Shai Almog    schedule 21.01.2016    source источник


Ответы (1)


Это можно сделать с помощью файла Division.xsl в папке build/fopub/docbook/fo/.

поиск «Шаблоны заполнителей»

и вставьте туда код ниже, вы сможете увидеть обложку в сгенерированном fopub

<!-- Placeholder templates -->
<xsl:template name="front.cover">
  <xsl:call-template name="page.sequence">
    <xsl:with-param name="master-reference">titlepage-cover-image</xsl:with-param>
    <xsl:with-param name="content">
      <fo:block text-align="center">
     <fo:external-graphic src="url(path/to/cover.png)" content-height="250mm" content-width="176mm"/>
      </fo:block>
    </xsl:with-param>
  </xsl:call-template>
</xsl:template>

Измените высоту и ширину в соответствии с требованиями вашей книги.

Как только это будет сделано, вам нужно предоставить поля для изображения на титульной странице, чтобы оно было четким. Добавьте ниже в pagesetup.xsl

<fo:simple-page-master master-name="titlepage-cover-image"
                           page-width="{$page.width}"
                           page-height="{$page.height}"
                           margin-top="{$title.page.margin.top}"
                           margin-bottom="{$page.margin.bottom}">
      <xsl:attribute name="margin-{$direction.align.start}">
        <xsl:value-of select="$page.margin.inner"/>
  <xsl:if test="$fop.extensions != 0">
    <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
        </xsl:if>
      </xsl:attribute>
      <xsl:attribute name="margin-{$direction.align.end}">
        <xsl:value-of select="$page.margin.outer"/>
      </xsl:attribute>
      <xsl:if test="$axf.extensions != 0">
        <xsl:call-template name="axf-page-master-properties">
          <xsl:with-param name="page.master">titlepage-cover-image</xsl:with-param>
        </xsl:call-template>
      </xsl:if>
      <fo:region-body margin-bottom="{$body.margin.bottom}"
                      margin-top="{$title.body.margin.top}"
                      column-gap="{$column.gap.titlepage}"
                      column-count="{$column.count.titlepage}">
        <xsl:attribute name="margin-{$direction.align.start}">
          <xsl:value-of select="$body.margin.inner"/>
        </xsl:attribute>
        <xsl:attribute name="margin-{$direction.align.end}">
          <xsl:value-of select="$body.margin.outer"/>
        </xsl:attribute>
      </fo:region-body>
      <fo:region-before region-name="xsl-region-before-first"
                        extent="{$region.before.extent}"
                        precedence="{$region.before.precedence}"
                        display-align="before"/>
      <fo:region-after region-name="xsl-region-after-first"
                       extent="{$region.after.extent}"
                        precedence="{$region.after.precedence}"
                        display-align="after"/>
      <xsl:call-template name="region.inner">
        <xsl:with-param name="sequence">first</xsl:with-param>
        <xsl:with-param name="pageclass">titlepage</xsl:with-param>
      </xsl:call-template>
      <xsl:call-template name="region.outer">
        <xsl:with-param name="sequence">first</xsl:with-param>
        <xsl:with-param name="pageclass">titlepage</xsl:with-param>
      </xsl:call-template>
    </fo:simple-page-master>

Затем добавьте переменные в fo-pdf.xsl, чтобы обнулить верхнее поле вашего тела.

ХТН.

person Jagdeep    schedule 22.01.2016
comment
Большое спасибо! Я чуть не сдался! - person Shai Almog; 22.01.2016