改ページ挙動と奇妙な白の発生

138 views
Skip to first unread message

Kenshi Muto

unread,
Sep 20, 2016, 6:09:08 AM9/20/16
to Vivliostyle Project JA
武藤です。
たびたび質問ばかりですみません。

Vivliostyle Formatter 2016.7版+Linuxを使ってEPUBからの縦書きの挙動を試しているのですが、奇妙な現象に悩まされています。

book.epubとbook.pdfを添付しました。
・縦書き5章立てとし、章は奇数起こし(左ページ)で扉をつけるものとしています。
・章扉はh1をchapter-title-flowのフローとしてchapter-titleマスターの扉パーティションに入れています。
   その他要素となるchapter-flowは本来一切入れたくないのですが、マスター内にそのパーティションを用意しないと
   Formatterが停止すること、パーティションをheight:0とすると今度はchapter-flow内容が一切消失してしまうことから、
   widthとheightを1文字ぶんにした領域とし、コンテンツでは空白文字を1つ置いてそこに流し込ませるようにして回避
  させています(章扉の左上の赤い箇所)。
  (『CSSシークレット』サンプルではheight:0でうまくいっているようなので不思議ですが…)
・h1とsection-chapterでpage-break-before: leftを入れています。

[問題]
・章が偶数ページで終わったときには、次のページは奇数なので次の章がそのまま入るはずです。
   しかし3章は正常ですが、1章・4章では章末に空白ページ2ページが追加されています。1章のコンテンツを3章と同様に1行に
   減らしてもこの挙動には変化がありません。
・目次ハイパーリンクを有効にしていますが、2章が1章末の(不正な)空白ページの2つめに、3章が2章末の空白ページに、
   5章が4章末の(不正な)空白ページの2つめに、それぞれ飛びます。
・1章を除去した状態で作成すると、今度は3章に空白2ページがつき、4章が正常になります。また5章末尾に空白ページ
  (奇数ページ)が1つ入ります。

なお、ファイルごとに解析されるのが何か悪いのかと1つのファイルにまとめても実験したのですが、やはり同様の現象が
起きるようです。

book.pdf
book.epub

Kenshi Muto

unread,
Sep 20, 2016, 6:18:53 AM9/20/16
to Vivliostyle Project JA
訂正、このサンプルファイルの場合は単一ファイル化(sectionが並ぶものにする)すると問題は出ないみたいです。
js版でも問題はありませんでした。

2016年9月20日火曜日 19時09分08秒 UTC+9 Kenshi Muto:
なお、ファイルごとに解析されるのが何か悪いのかと1つのファイルにまとめても実験したのですが、やはり同様の現象が
起きるようです。

Kawakubo Toru

unread,
Sep 22, 2016, 8:50:11 PM9/22/16
to vivlios...@googlegroups.com
武藤さま

Vivliostyle川久保です。
いろいろとご不便をおかけしており申し訳ありません。

今回のケースでは、不具合と仕様の不備が組み合わさって複雑になっている状態です。
まず結論から言いますと、
• section[data-type="chapter”]をchapter-flowに入れるのをやめ、デフォルトのbodyフローを使うようにすればうまくいく
• chapter-titleマスターに本文フロー(chapter-flow→bodyフローに変更)を流し込むダミーのパーティションは現状では必要、ただしheight:0のパーティションでよい
• 上記のダミーパーティションに流し込む内容は、コンテンツに手を入れて空白文字を入れる必要はなく、CSSで擬似要素を使えばよい
これらの修正を入れたCSSファイルを添付いたしますので、ご確認ください。
また、HTMLファイル内の空白文字の段落は削除して大丈夫なはずです。

原因についてご説明しようと思ったのですが、少し時間がかかりそうなので、まずは結論のみ取り急ぎお知らせします。
原因について、追ってご説明する予定です。
-- 
Toru Kawakubo (川久保 亮)
Vivliostyle Inc.
http://vivliostyle.com
style.css

Kenshi Muto

unread,
Sep 23, 2016, 2:26:16 AM9/23/16
to vivlios...@googlegroups.com
武藤です。

At Fri, 23 Sep 2016 09:50:05 +0900,
Kawakubo Toru wrote:
> 今回のケースでは、不具合と仕様の不備が組み合わさって複雑になっている状態です。
> まず結論から言いますと、
> • section[data-type="chapter”]をchapter-flowに入れるのをやめ、デフォルトのbodyフローを使うようにすればうまくいく
> • chapter-titleマスターに本文フロー(chapter-flow→bodyフローに変更)を流し込むダミーのパーティションは現状では必要、ただしheight:0のパーティションでよい
> • 上記のダミーパーティションに流し込む内容は、コンテンツに手を入れて空白文字を入れる必要はなく、CSSで擬似要素を使えばよい
> これらの修正を入れたCSSファイルを添付いたしますので、ご確認ください。
> また、HTMLファイル内の空白文字の段落は削除して大丈夫なはずです。

おぉ!
これは盲点でした。確かにうまく動きました、ありがとうございます。

一部に全然違うmasterを適用したいときには、こんな感じですかね。

section[data-type="okuduke"] {
-epubx-flow-into: okuduke-flow;
}
@-epubx-flow okuduke-flow {
-epubx-flow-consume: all;
}
@-epubx-page-master okuduke {
@-epubx-partition {
-epubx-flow-from: okuduke-flow;
…任意のページスタイル指定…
}
@-epubx-partition {
-epubx-flow-from: body;
height: 0;
}
}
--
武藤 健志@ kmuto @ kmuto.jp
Debianプロジェクト (km...@debian.org)
株式会社トップスタジオ (km...@topstudio.co.jp)
URL: http://kmuto.jp/
Reply all
Reply to author
Forward
0 new messages