Изменить место увеличения длины текста

Изменить место увеличения длины текста

У меня есть очень конкретный вопрос, и я надеюсь, что кто-нибудь сможет поделиться со мной своим опытом.

У меня около 17000 строк текста. Я печатаю этот текст где-то на 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, приведенным ниже, создается 26-страничный документ book.pdfс буквой на каждой странице. Если мне нужно было вставить дополнительную страницу посередине или удалить одну, просто позвольте LaTeX сделать это.

Поскольку я знала, что в результате получится небольшая книга, я сделала каждую страницу размером 3 на 3 дюйма, хотя в конечном итоге она будет уменьшена в 2 раза для вашей небольшой книги (хотя это не обязательно для процесса... просто я так сделала).

\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 дюйма) book.pdf, собранных таким образом, что после разрезания страницы ABCD будут на первом мини-листе, EFGH на втором и т. д.

Если ваша схема переплета отличается от показанной выше (где мини-листы не вкладывались до переплета), просто измените порядок вызовов, \showthepageчтобы получить желаемый макет. После того, как вы настроили макет для одного листа бумаги (который будет разрезан), я этого не делал, но было бы тривиально реализовать «смещение листа» в выполнении \showthepage. Таким образом, набор (в моем случае 32) вызовов \showthepageможно было бы объединить в один макрос, и этот макрос можно было бы повторно вызывать последовательно с увеличивающимся «смещением листа» для бесшовной обработки больших документов.

Вот две страницы, которые получились в результате второй компиляции. При двусторонней печати все совпадает.

введите описание изображения здесь

введите описание изображения здесь

решение2

Если я правильно понял ваш вопрос, вас интересуетбуклет из двух частеймакет. Если так, вы можете достичь этого с помощью некоторых из уже существующих пакетов латекса. Вот решение с использованиембуклетупаковка:

\documentclass{article}
\usepackage{lipsum}

\usepackage[print]{booklet}
\setpdftargetpages

\begin{document}
\lipsum[1-20]
\end{document}

введите описание изображения здесь

Обратите внимание, что без printопции \usepackage[print]{booklet}вывод будет выглядеть как обычный документ. В документации пакета утверждается, что это также работает с двусторонней печатью (подробности см. по ссылке выше).

Другой пакет, который может вас заинтересовать (который по сути является основой booklet), это2upЯ верю, что вы можете получить то, что хотите, используяpdfстраницыа также. Если вы выполните поиск 2up, two upили bookletна этом сайте, вы можете найти другие решения этой проблемы.

Связанный контент