2014-06-06 3 views
0

XSL-FO를 사용하여 형식을 지정하려는 XML (사용자 설명서)이 있습니다. 매뉴얼에서 우리가 사용하는 스타일 중 하나는리스트의 일부인리스트 노트 (글 머리 기호 목록 또는 번호 매기기 목록)입니다. 예를 들면 :목록 블록 안에 블록 컨테이너를 사용하면 공간이 무시됩니다.

  • 목록 글 머리 기호 텍스트


    목록 참고 텍스트


노트는 상단과 하단 테두리를 가지고있다. 노트의 경계 아래에 약간의 공간을 만들려고합니다.

내 렌더러 (Antennahouse)로 전환 결합 FO 파일은 다음과 같다 :

<fo:list-item font-family="DIN-RegularAlternate" font-size="8pt" line-height="13pt" font-weight="normal" font-style="normal" space-before="2pt" space-after="2pt" keep-with-previous="10"> 
<fo:list-item-label end-indent="label-end()"> 
    <fo:block margin-left="0pt">-</fo:block> 
</fo:list-item-label> 
<fo:list-item-body start-indent="body-start()"> 
    <!--List Bullet--> 
    <fo:block background-color="transparent" font-family="DIN-RegularAlternate" font-size="8pt" line-height="13pt" font-weight="normal" font-style="normal" space-before="2pt" space-after="2pt">List Bullet text 
     </fo:block> 
    <!--List Note--> 
    <fo:block-container start-indent="10mm" border-bottom="0.75pt solid rgb-icc(34,73,146,#Separation, 'PANTONE 287 C', 100%)" border-top="0.75pt solid rgb-icc(34,73,146,#Separation, 'PANTONE 287 C', 100%)" keep-together.within-column="always" space-before="0pt" space-after="12pt"> 
     <fo:block background-color="transparent" font-family="DIN-RegularAlternate" font-size="7pt" line-height="13pt" font-style="italic" space-before="0pt" space-after="0pt" color="rgb-icc(0,0,0,#CMYK,0%,0%,0%,80%)" padding-top="3pt" padding-bottom="3pt" padding-left="0pt" padding-right="6pt" start-indent="0pt" end-indent="6pt">Note text 
      </fo:block> 
    </fo:block-container> 
</fo:list-item-body> 

블록 컨테이너가 목록 참고 템플릿의 일부입니다. 이 블록 컨테이너에 Space-below 특성을 부여했습니다. 그러나 나는 그것을 작동시킬 수 없다.이 메모 아래의 공간은 완고하게 0 점에 머물러있다. 나는 다양한 속성을 사용해 보았습니다 :

space-after.minimum="12pt" space-after.optimum="12pt" space-after.precedence="force" 

블록 컨테이너 외부로 블록 컨테이너를 옮기면 작동 할 수 있습니다. 하지만이 노트 스타일은 번호가 매겨진 목록 내에서 사용할 수 있어야하기 때문에 바람직하지 않습니다. note 블록이 목록 블록 밖에 있으면 목록의 번호 매기기가 다시 시작됩니다. List Bullet 아래에 멋진 공간을 만들 수도 있습니다. 단지 여기에 문제가되는 메모 일뿐입니다.
목록 블록 안에 블록 컨테이너를 조합하면 문제가 발생한다고 결론을 내 렸습니다.

노트 테두리 아래의 공간을 어떻게 제어 할 수 있습니까?

답변

0

분명히 space-after 속성은 형제 인 두 개의 블록이있는 경우에만 적용됩니다.

<xsl:if test="(./para/@stylename='List Note') or (./para/@stylename='List Note 2')"> 
    <xsl:attribute name="space-after">6pt</xsl:attribute> 
</xsl:if> 

가 동료 마진 - 하단을 사용하는 대신 공간을 후 내 원래 코드에서의 마진 - 바닥은 블록 사이에 영광 있기 때문에없는 것을 제안 : 나는 목록 블록에 공간을 후 추가 결국 동기. 나는 아직 그것을 시도하지 않았다.