在某些(非常罕见)情况下,可能需要在偶数页和奇数页上设置不同的排版区域(尤其是文本宽度)。假设我们正在排版一本教科书,奇数页的页边空白处应该有小插图或注释——因此我们需要在这些页面上设置较窄的排版区域。如下所示:
这是我尝试想出的解决方案。它并不像我想象的那么聪明。我认为我们可以结合everyshi
并\ifthispageodd
进行测试,在每次发货时更改类型区域。显然,它不是这样工作的:
\documentclass[paper=a5,pagesize,10pt,DIV=12,twoside=true]{scrreprt}
\usepackage{everyshi,blindtext}
\EveryShipout{%
\ifthispageodd{\areaset{6cm}{12cm}}{\areaset{9cm}{12cm}}}
\begin{document}
\Blinddocument
\end{document}
结果是:
! Bad space factor (0).
<recently read> \@savsf
l.7 \Blinddocument
有没有什么办法可以改善这种情况?或者有什么完全不同的东西?
答案1
这仅适用于简单的情况,但可以稍微扩展和概括。
\documentclass{article}
\makeatletter
\def\a{Cat dog goat sheep pig rabbit cow kangeroo. }
\def\b{One two three four five six. }
\def\c{\a\a\b\a\b\b\a\a\a\a\b\b\a\b}
\def\d{\c\par\a\b\c\par\b\b\b\b\b\b\par}
\def\e{\par\d\d\b\b\b\b\b\d\a\a\a\a\a\a\a\d}
\def\shp#1{%
\@tempcnta\z@
\loop
\advance\@tempcnta\@ne
\edef\pshape{\pshape 0pt #1 }
\ifnum\@tempcnta<46
\repeat
\advance\@tempcntb46
}
\begin{document}
{
\@tempcntb\z@
\def\pshape{}
\shp{5in}\shp{3in}
\shp{5in}\shp{3in}
\shp{5in}\shp{3in}
\def\par{\ifhmode\\\fi\hspace*{\parindent}\ignorespaces}
\show\pshape
\parshape\@tempcntb\pshape
\e\e
\endgraf
}
\end{document}