増加するテキストの長さの場所を変更する

増加するテキストの長さの場所を変更する

非常に具体的な質問があり、誰かが自分の経験に基づいて教えてくれることを願っています。

テキストは 17,000 行ほどあります。このテキストを両面印刷で 80 ページほどに印刷し、切り取って小さな本に折っています (趣味ですからね)。つまり、テキストはページ全体に小さなボックスで奇妙なパターンで表示される必要があります。具体的には...

https://i.stack.imgur.com/uRS7b.png

このページは、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) を\showthepage1 つのマクロにまとめ、そのマクロを「リーフ オフセット」を増やしながら連続的に再呼び出しして、より大きなドキュメントをシームレスに処理できます。

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ページ同様に2uptwo upまたはbookletこの Web サイトで検索すると、この問題の他の解決策が見つかります。

関連情報