2016-06-22 1 views
2

나는 여러 단락이있는 2 열 페이지의 레이아웃에 속성 break-after가 가지고있는 영향력을 설명하기 위해 밖으로 최고의 내려고 해요 : 난 단지에 의해 생성 된 페이지를 봤다면XSL-FO 문서에서 '중단 후'의 정확한 의미는 무엇입니까?

<fo:block text-align="justify" font-size="14pt" break-after="column"> 
    <fo:block space-after="0.1in">In 294 BC, the people...</fo:block> 
    <fo:block space-after="0.1in">The Colossus was built...</fo:block> 
    <fo:block space-after="0.1in">The statue was toppled....</fo:block> 
    <fo:block space-after="0.1in">The statue remained on....</fo:block> 
</fo:block> 

이 코드는 (그리고 코드 자체가 아닙니다) 레이아웃 알고리즘을 설명하라는 메시지가 나타납니다. 두 번째 열에 나머지 텍스트를 배치하기 전에 가능한 한 많은 텍스트로 첫 번째 열을 채 웁니다. 내 눈으로

enter image description here

이 거의 무슨 일이 일어나고 있는지 설명합니다,하지만 난 break-after="column"의 의미와이 설명을 조정할 수 없습니다. 예를 들어 break-after은 단락이 이후에만 발생해야한다고 제안합니다. 단,이 작은 문서에서는 자주 단락의 중간에 발생합니다.

누구나 정확하게이 레이아웃 알고리즘을 설명 할 수 있습니까? 정확한 의미는 break-after="column"입니까?

여기는 documents입니다 (.fo 파일 및 생성하는 pdf 파일). 재료 책 XML에서 오는 것을 참고 : 퀵 스타트 가이드

+0

컨테이너를 지정한 시점 ("후")에 컨테이너를 지정한 다음 다음 열로 "중단"할 때를 의미합니다. 다중 열의 경우 동일한 페이지의 다른 열일 수 있으며 마지막 열인 경우 다음 페이지가 될 수 있습니다. 그림에서 볼 수있는 효과는 해당 속성을 지정한 블록 이후의 내용이 페이지의 두 번째 열의 두 번째 열 안에 있었기 때문에 다음 페이지에서 시작한다는 것입니다. "break- *"와 같은 속성은이 내용을 채울 수 없습니다. –

답변

2

귀하의 질문에 대한 귀하의 질문과 답변 ... break-after = "column"이 적용된 "block"은 내부에 4 개의 추가 블록을 포함하는 블록입니다 .

이 컨테이너 블록에 break-after = "column"을 추가하면 문자 그대로 "이 블록의 끝에서 다음 열로 넘어갑니다."따라서 귀하의 경우에는 4 개의 블록이 흐르고 있습니다 (4 개의 내용 블록이 자신의 단락을 초래하는지 여부는 문제가되지 않습니다). 두 열 레이아웃으로 흘러 가고 있습니다 (분명히) 페이지가 흐름 영역에 대해 두 개의 열이 지정되었습니다.

포맷터가 밀가루 블록을 마쳤을 때 마지막 부분은 "동상이 남아 있습니다 ...."로 시작하여 포크 블록의 내용을 마칩니다.

따라서 포맷터가 추가 내용에 대해 열 구분을 주입했습니다.이 경우 두 열 레이아웃의 두 번째 열에 있었기 때문에 다음 열로 넘어가는 것은 의미합니다. 그 다음 블록으로 이어지는 콘텐츠는 다음 열의 맨 위에서 시작되었습니다.

break-after = "column"속성은 여기 저기 또는 다른 것과 아무런 관련이 없습니다. 지정된 요소의 끝에서 다음 열로 이동하고 배치 할 때만 포맷터에 지시하는 것입니다. 더 많은 것들을 내린다. 그것은 유전되지 않으며, 어떤 식 으로든 아이들의 행동을 변화시키지 않습니다.

n 번째 학위로 단순화하고 싶다면 </block>을 만나면 다음 열로 넘어 가서 더 많은 내용으로 시작해야합니다.

+0

감사합니다. Kevin - 저는 그것이 상속받지 않는다는 사실에 놀랐습니다. 제가 작업하고있는 책에서 모든 속성이 블록의 자식에 의해 상속되었다는 인상을 받았습니다. 일부 속성에 대해서는 그렇지 않습니다. –

+0

일부 및 일부는 그렇지 않습니다. 예를 들어 글꼴 정보는 있지만 구분은 없습니다. 표준 자체는 상속되는 세부 사항입니다. https://www.w3.org/TR/xsl11/#common-font-properties를보고 font-family를 살펴보십시오. 상속 된 상태입니다. –

-2

"는 두 번째 열에서 나머지 텍스트를 배치하기 전에 가능한 한 많은 텍스트와 함께 첫 번째 열을 채워 케빈 하워드 골드버그에 의해. "무슨 일이 일어날 지 꽤 많이 있습니다. 글자를 글리프로 바꾸고 글리프를 선으로 조합 한 다음 선을 블록 영역에 맞추고 페이지 전체에서 블록 영역을 제거하는 작업은 XSL 포맷터에 맡깁니다. FO에서 속성의 역할은 XSL Formatter가 따라야하는 제약 조건을 지정하는 것입니다. 예를 들어, page-widthpage-heights은 페이지 크기에 대한 제약 조건이며 '제약 조건'섹션에 포함되어 있습니다 (https://www.w3.org/TR/xsl11/#fo_simple-page-master).

keep- * 및 break- * 속성은 XSL Formatter에서 따라야하는 제약 조건이기도합니다. 적용 방법 및 상호 작용에 대한 자세한 내용은 XSL 1.1 (https://www.w3.org/TR/xsl11/#keepbreak)의 섹션 4.8, 유지 및 중단 부분에 나와 있습니다. 중단을 지정하지 않으면 중단되지 않으며 XSL Formatter는 다른 적용 가능한 제약 조건에 따라 최선을 다할 것입니다. 즉, break-beforebreak-after의 기본값은 auto이고 break-before (https://www.w3.org/TR/xsl11/#break-before)의 auto의 정의는 "중단하지 말아야합니다."입니다.

페이지 나누기는 "과부", "고아", "유지 - 함께 - 다음"의 영향을받은 것으로 포맷터의 처리 결정에 따라 발생할 수 있습니다, "유지 -에 - 이전의"정의는이 메모를 가지고 , "Keep-together"속성을 포함합니다.

관련 문제