将两个输入文件的内容分发到左页和右页

将两个输入文件的内容分发到左页和右页

是否可以导入两个 tex 文件\input并让其中一个文件的内容始终显示在左侧页面面对另一个文件的内容总是在右边?页码应该连续为 1、2、3、4……

(事实上​​我猜这不太容易实现。)

我想象这样的事情:

%!TEX TS-program = lualatexmk
\documentclass{scrbook}
\begin{document}

\input[left]{file_A.tex}
\input[right]{file_B.tex}

\end{document}

这两个文件都只包含简单的数据,例如

\chapter{Chapter}
Text.
\section{Section}
Text. ...

尽管如此,这两个文件都很长,包含几页文本。换句话说,我将有两个长文件file_A.texfile_B.tex然后 latex 会用 A 的内容连续填充左页,用 B 的内容连续填充右页。

话虽如此,我不介意(事实上更愿意!)通过\pagebreak在每个文件的适当位置手动使用几次来将两个文件的内容切成页面大小的块。

答案1

您可以安排将每页存储在一个盒子中,而不是将其运出,然后在最后对盒子进行分类,如下所示:

在此处输入图片描述

\documentclass[openany]{scrbook}

\newcount\zzz
\newif\ifdone
\let\zzshipout\shipout
\makeatletter
\def\shipout\vbox#1{%
\edef\x{\noexpand\typeout{page \thepage\space is box \the\zzz}}\x
\global\setbox\zzz\vbox{#1}%
\global\advance\zzz1 %
\stepcounter{page}%
}

\begin{document}

\clearpage
\zzz=5001\setcounter{page}{1}
\input{file_A.tex}

\clearpage
\zzz=6001\setcounter{page}{2}
\input{file_B.tex}
\clearpage

\typeout{===========}

\makeatletter
\begingroup 
  \let \protect \noexpand
  \@resetactivechars
  \@parboxrestore
 \global\c@page=1
\loop
\ifvoid\numexpr5000+\c@page\relax
  \ifvoid\numexpr6000+\c@page\relax
    \donetrue
  \else
    \zzshipout\vbox{\hbox{blank A}}%
    \zzshipout\box\numexpr6000+\c@page
  \fi
\else
  \zzshipout\box\numexpr5000+\c@page
  \ifvoid\numexpr6000+\c@page\relax
    \zzshipout\vbox{\hbox{blank B}}%
  \else
    \zzshipout\box\numexpr6000+\c@page
  \fi
\fi
\ifdone\else
\global\advance\c@page1 %
\repeat

\endgroup
\end{document}

相关内容