背景
幅が異なる列を持つカスタムの複数列レイアウトを作成します。
問題
この質問の問題は、以前の質問では言及されているが、対処されていない。答え:
設定により
page=yes
、残念な副作用が発生します。つまり、本には章と章の間に空白ページが混在します。これらは、後処理で Ghostscript を使用して削除できます...
つまり、このpage=yes
オプションがないと、ConTeXt はテキストを希望どおりにフォーマットできません。 このpage=yes
オプションを使用すると、ConTeXt は期待どおりにフォーマットしますが、主要セクション間に不要な空白ページをエクスポートします。
コード
問題を説明する最小限の動作例:
\definepapersize[BookPaperSize][width=24in, height=12in,]
\setuppapersize[BookPaperSize]
\definelayout[BookTextLayout][
topspace=.5in,
backspace=.5in,
header=\zeropoint,
footer=\zeropoint,
grid=yes,
]
\setuplayout[BookTextLayout]
\definecolumnset[BookColumns][n=4,distance=.25in]
\setupcolumnset[BookColumns:1][width=11.75in]
\setupcolumnset[BookColumns:2][width=3.46in]
\setupcolumnset[BookColumns:3][width=3.46in]
\setupcolumnset[BookColumns:4][width=3.46in]
\setuphead[section][
page=yes,
beforesection={\startcolumnset[BookColumns]},
aftersection={\stopcolumnset},
]
\setuphead[subsection][
after={\column},
]
\setuphead[subsubsection][
after={\blank[small]},
]
\starttext
\startsection[title={Section Title}]
\startsubsection[title={Subtitle}]
\dorecurse{2}{\input knuth}
\dorecurse{2}{%
\startsubsubsection[title={Subsubtitle}]
\dorecurse{1}{\input ward}
\dorecurse{2}{\input lorem}
\dorecurse{1}{\input bryson}
\stopsubsubsection
}
\stopsubsection
\stopsection
\stoptext
実際の出力
各セクションの前のページは空白です。
ページなしで出力
オプションを削除するとpage=yes
、出力に問題が発生します。
コマンド\column
は列幅を考慮しなくなり、テキストは最初の列の下部に集まります。
期待される出力
望ましい出力には、主要なセクション間に空白ページが含まれません。
回避策
の結果のPDF複数のページが含まれています。ゴーストスクリプトは、1 ページおきにページを削除するように機能し (たとえば、 を使用gs -sPageList=even
)、目的の結果が生成されます。
- インフレーション理論ロエン・ケリー
- スタージェームズ・ジョセフィデス
ただし、余分な空白ページによって連鎖的な問題が発生します。つまり、追加の画像処理ステップ、PDF ページの並べ替えの必要性、2 回のパスが必要なためにコンパイル時間が長くなるなどです。
質問
文書から空白ページを削除するには、何を変更する必要がありますか?
アイデア
page=yes
に追加してから\definecolumnset
削除すると、空白ページの問題は解決されますが、最初のページの列セットが左側に押しつぶされます。私は次の方法でこの問題に対処しようとしました。page=yes
setuphead
\definecounter[BookPageNumber][
way=bychapter,
prefix=no,
]
\definecolumnset[BookColumns][n=4,distance=.25in,page={\doifelse{\rawcountervalue[BookPageNumber]}{1}{}{yes}}]
\setupcolumnset[BookColumns:1][width=11.75in]
\setupcolumnset[BookColumns:2][width=3.46in]
\setupcolumnset[BookColumns:3][width=3.46in]
\setupcolumnset[BookColumns:4][width=3.46in]
\setuphead[section][
before={%
\doif{\rawcountervalue[BookPageNumber]}{1}{\page}
\incrementcounter[BookPageNumber]
},
beforesection={\startcolumnset[BookColumns]},
aftersection={\stopcolumnset},
]
ただし、これでは目的の出力は生成されません。
答え1
列セットはスプレッドベースです。つまり、n=4
実際には 8 つの列があり、左ページに 4 つ、右ページに 4 つあります。ドキュメントは常に、設定していない右ページで開きますが、追加すると、\page[yes]
設定されている左ページにコンテンツがプッシュされるため、役立ちます。
したがって、右側のページに列 5 ~ 8 を追加するだけで問題は解決します。
\definepapersize[BookPaperSize][width=24in, height=12in,]
\setuppapersize[BookPaperSize]
\definelayout[BookTextLayout][
topspace=.5in,
backspace=.5in,
header=\zeropoint,
footer=\zeropoint,
grid=yes,
]
\setuplayout[BookTextLayout]
\definecolumnset[BookColumns][n=4,distance=.25in]
\setupcolumnset[BookColumns:1][width=11.75in]
\setupcolumnset[BookColumns:2][width=3.46in]
\setupcolumnset[BookColumns:3][width=3.46in]
\setupcolumnset[BookColumns:4][width=3.46in]
\setupcolumnset[BookColumns:5][width=11.75in]
\setupcolumnset[BookColumns:6][width=3.46in]
\setupcolumnset[BookColumns:7][width=3.46in]
\setupcolumnset[BookColumns:8][width=3.46in]
\setuphead[section][
%page=yes,
beforesection={\startcolumnset[BookColumns]},
aftersection={\stopcolumnset},
]
\setuphead[subsection][
after={\column},
]
\setuphead[subsubsection][
after={\blank[small]},
]
\starttext
\startsection[title={Section Title}]
\startsubsection[title={Subtitle}]
\dorecurse{2}{\input knuth}
\dorecurse{2}{%
\startsubsubsection[title={Subsubtitle}]
\dorecurse{1}{\input ward}
\dorecurse{2}{\input lorem}
\dorecurse{1}{\input bryson}
\stopsubsubsection
}
\stopsubsection
\stopsection
\stoptext