如何将书中的文字重新用于不同的文档格式?

如何将书中的文字重新用于不同的文档格式?

有什么想法可以让我重新使用我编写的书中文本(以chapter1.texchapter2.tex等格式)以各种文档格式(a4、信函、移动设备格式等)?我面临的问题是,我\newpage在章节中放置了各种 s,因此它们看起来a4格式没问题。但现在当我尝试编译这本书时,letter这些\newpages 位于错误的位置,因此我必须有一份不同的文本副本,其中\newpages 位于正确的位置。重新使用各种格式的文本的一般策略是什么?

我之所以\newpage在整本书中使用它,是因为\sections 有时会出现在页面底部,而我想将它们强制放入新页面,因此我在当前页面底部\newpage之前使用了它。\section

以下是一个截图示例:

在此处输入图片描述

看到4.12最底部的代码示例被切成两半了吗?这就是我插入这些\newpage代码以将其强制放在新页面上的原因,这样看起来就没问题了!

我正在使用memoir文档类,并且代码框是通过完成的\begin{lstlisting}...\end{lstlisting}

答案1

尽管你似乎已经放弃了这个问题,但我还是要回答它。原因是:无论你的代码多么通用,你最终都必须在这里或那里输入手动布局调整。这应该谨慎地进行,并且作为最后的手段,但对于任何给定大小和复杂程度的手稿,我认为你不可避免地需要这样做。现在的问题是如何让你的调整有条件地出现,这取决于纸张大小和可能的其他布局参数。以下是执行此操作的一种方法:

\documentclass{minimal}

\makeatletter
\def\setlayout#1{\@setlayout#1,\relax,}
\def\@setlayout#1,{\ifx\relax#1\else
  \expandafter\def\csname layout@#1\endcsname{}%
  \expandafter\@setlayout\fi}
\def\layout #1#{\@layout #1,\relax,}
\def\@layout#1,{\ifx\relax#1\expandafter\@secondoftwo\else
\ifcsname layout@#1\endcsname
\expandafter\expandafter\expandafter\layout@yes\else
\expandafter\expandafter\expandafter\@layout
\fi
  \fi}
\def\layout@yes#1#{\@firstoftwo}
\makeatother

% demo
\setlayout{one,two}
\begin{document}
\layout one,four{\message{[the first]}}{\message{[not the first]}}
\layout five,two{\message{[the second]}}{\message{[not the second]}}
\layout six,three{\message{[the third]}}{\message{[not the third]}}
\end{document}

在实际文档中,您可能会设置选项 a5 和小册子,使用

\setlayout{a5,booklet}

然后,每当\newpage需要针对 a5 情况或屏幕情况进行特定的布局调整(例如, a )时,您可以编写

\layout a5,screen{\newpage}{}

第二个参数是为了以防您在其他情况下需要做其他事情。

相关内容