
非常に具体的な質問があり、誰かが自分の経験に基づいて教えてくれることを願っています。
テキストは 17,000 行ほどあります。このテキストを両面印刷で 80 ページほどに印刷し、切り取って小さな本に折っています (趣味ですからね)。つまり、テキストはページ全体に小さなボックスで奇妙なパターンで表示される必要があります。具体的には...
このページは、AB、CD、EF などを切り取って、その裏側を半分に折ってページを形成します。折られた長方形は、綴じるために互いに重ね合わされるため、テキストは A から C の反対側、C から E の反対側、E から F へと流れる必要があります。
要点はお分かりですね。それでは問題は次のとおりです。
私の計画は、C (または sed または awk) を使用してプログラム的に LaTeX コードを生成することです。これにより、これを印刷するために必要なすべての PDF が生成されるはずです。ただし、テキストがこれらのボックスのいずれかの下部を越えた場合に LaTeX の動作を変更する方法が必要です。つまり、通常、テキストが境界を越えると、その下にテキストが続くだけです。この場合、テキストをまったく別の場所、まったく別のページに続ける必要があります。このプロジェクトは規模が大きいため、これはパッケージなどを使用して実行する必要があります。
これがどうやって行われるか知っている人はいますか?
答え1
まず、通常の LaTeX アプローチを使用して本を作成し、通常の方法でページを再フォーマットします。ページを適切な用紙サイズなどにする必要があります。ここでは、book.tex
以下に示す を使用すると、各ページに文字が 1 つずつ含まれる 26 ページのドキュメント が作成されますbook.pdf
。途中でページを追加したり、ページを削除したりする必要がある場合は、LaTeX に任せてください。
最終的に小さな本になることがわかっていたので、この本では各ページを 3 インチ x 3 インチにしましたが、小さな本の場合は最終的には 2 分の 1 に縮小されます (ただし、これはプロセス上必須ではありません。単に私が行った方法です)。
\documentclass{article}
\usepackage[paperwidth=3in,paperheight=3in,margin=.5in]{geometry}
\usepackage{graphicx}
\newcommand\makebook[1]{\makebookhelp#1\relax}
\def\makebookhelp#1#2\relax{%
\scalebox{15}{#1}\clearpage%
\ifx\relax#2\else%
\makebookhelp#2\relax\fi%
}
\begin{document}
\centering
\makebook{ABCDEFGHIJKLMNOPQRSTUVWXYZ}
\end{document}
さて、通常の方法で本を作成したので、次の MWE を使用して正しい順序で本を組み立てます (この場合はレター用紙に)。
\documentclass{article}
\usepackage[paper=letterpaper,margin=1.25in]{geometry}
\usepackage{graphicx,ifthen,stackengine}
\newcounter{bookpage}
\fboxsep=-\fboxrule\relax
\newcommand\nullpage{\fbox{\rule{0pt}{1.5in}\rule{1.5in}{0pt}}}
\newcommand\showthepage[2]{%
\protect\fbox{\protect\includegraphics[width=1.5in,height=1.5in,page=#1]{#2}}%
}
\parindent 0in
\setstackgap{S}{0pt}
\begin{document}
\Shortstack
{
\showthepage{2}{book}%
\showthepage{3}{book}%
\showthepage{6}{book}%
\showthepage{7}{book}
\showthepage{10}{book}%
\showthepage{11}{book}%
\showthepage{14}{book}%
\showthepage{15}{book}
\showthepage{18}{book}%
\showthepage{19}{book}%
\showthepage{22}{book}%
\showthepage{23}{book}
\showthepage{26}{book}%
\nullpage%
\nullpage%
\nullpage}
\clearpage
\Shortstack
{
\showthepage{8}{book}%
\showthepage{5}{book}%
\showthepage{4}{book}%
\showthepage{1}{book}
\showthepage{16}{book}%
\showthepage{13}{book}%
\showthepage{12}{book}%
\showthepage{9}{book}
\showthepage{24}{book}%
\showthepage{21}{book}%
\showthepage{20}{book}%
\showthepage{17}{book}
\nullpage%
\nullpage%
\nullpage%
\showthepage{25}{book}}
\end{document}
これは、 の 26 個のパネル (サイズ 1.5 インチ) で構成される 2 ページのドキュメントを作成しますbook.pdf
。このドキュメントは、カットすると、ページ ABCD が最初のミニリーフに、EFGH が 2 番目のミニリーフに、というように組み立てられます。
製本配置が上記と異なる場合 (製本前にミニリーフがネストされていない場合)、呼び出しの順序を変更するだけで\showthepage
、希望するレイアウトが得られます。 1 枚の紙 (カットされる) のレイアウトを設定したら、私はそれを実行しませんでしたが、 の実行に「リーフ オフセット」を実装するのは簡単です\showthepage
。 そうすれば、 の呼び出しのコレクション (私の場合は 32) を\showthepage
1 つのマクロにまとめ、そのマクロを「リーフ オフセット」を増やしながら連続的に再呼び出しして、より大きなドキュメントをシームレスに処理できます。
2 回目のコンパイルで作成された 2 ページを以下に示します。両面印刷すると、すべて一致します。
答え2
あなたの質問を正しく理解していれば、あなたは2つ折りの小冊子レイアウト。もしそうなら、既存のLaTeXパッケージのいくつかでこれを実現できます。以下は、冊子パッケージ:
\documentclass{article}
\usepackage{lipsum}
\usepackage[print]{booklet}
\setpdftargetpages
\begin{document}
\lipsum[1-20]
\end{document}
print
オプションを指定しないと、\usepackage[print]{booklet}
出力は通常のドキュメントと同じになることに注意してください。パッケージのドキュメントでは、両面印刷でも問題なく動作すると説明されています (詳細については上記のリンクを確認してください)。
他にも興味があるかもしれないパッケージ(基本的には のバックボーンbooklet
)は、2アップ. 欲しいものを手に入れることができると信じていますpdfページ同様に2up
、two up
またはbooklet
この Web サイトで検索すると、この問題の他の解決策が見つかります。