先日の記事で bxpapersize の“幸せな LaTeX ユーザ向け”の使い方は説明し終わったので、ここではチョットアレな人向けの高度な使い方を解説する。
文書の途中で出力用紙サイズを変える話
実は \papersizesetup 命令は文書本体中でも使うことができる。つまり、文書の途中で出力用紙サイズを変更できることになる。実際にそれを行った場合、「(非同期で)ページ出力が発生した際に、その時に有効であった size パラメタの設定値」が適用されることになる。また、size パラメタの変更は局所的代入の扱いになる。
\documentclass[a5paper]{article} \usepackage{bxpapersize}% 'size=real'が既定で設定される \begin{document} First! \newpage % ページ出力発生, 出力サイズはa5paper {% グループ開始 \papersizesetup{size=a4paper} Second! \newpage % ページ出力発生, 出力サイズはa4paper }% グループ終了, sizeパラメタはrealに戻る Last! \end{document}% ページ出力発生, 出力サイズはa5paper
例によって、「bxpapersize は出力用紙サイズを変えるだけ」なので、この例の 2 ページ目は奇妙な出力になる。
ちなみに、size=real は「ページ出力発生時に、その時の \paperwidth/height の値を出力サイズに設定する」という意味なので、real が指定されている状態で文書中で \paperwidth/height の値が変わった場合にも、出力用紙サイズは変更される。
※DVI ウェアの中には「出力サイズが異なるページが混在した DVI」を正常に処理できないものがあることに注意。
機能の一時的な無効化
active パラメタを true/false に設定するとパッケージの機能が有効/無効になる。無効化されている間に出力されたページには「(bxpapersize パッケージは)出力用紙サイズを設定しない」状態になる。その場合の実際の出力がどうなるかは DVI ウェアやエンジンに依存する。
TeX のボックスをそのまま出力してしまう話
size パラメタの値を box にすると、「出力(\shipout)しようとする TeX ボックスの寸法をそのまま出力用紙サイズに設定する」という動作になる。
\documentclass[a4paper]{article} \usepackage{bxpapersize} \begin{document} {\LaTeX} is wonderful! %!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! TeX code BEGIN \begingroup \papersizesetup{size=box} % ボックスを直接shipoutするぞ \shipout\hbox{{\TeX} is chaotic!!} \endgroup %!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! TeX code END \end{document}% "LaTeXの"ページ出力発生, 出力サイズはa4paper
これをコンパイルすると、1 ページ目は「{\TeX} is chaotic!!」の組版結果のボックスがそのままの寸法で出力される。2 ページ目は通常の LaTeX の処理によるページが A4 判で出力される。