Q: 如何使twoside的book在奇数页的右侧和偶数页的左侧留出一段margin,而且这段margin上面也有页眉线,并且用小页(minipage)可以设为占用整个textwidth + margin,即超出正文的左侧或右侧?
A: 在奇数页的右侧和偶数页的左侧留出margin,这个比较简单
按照《TeX中修改文本尺寸的问题》修改\oddsidemargin和\evensidemargin就可以了
页眉线的问题可以使用fancyhdr宏包,然后在导言区加上
\addtolength{\headwidth}{2cm} %2cm为margin宽度
关于minipage的问题,我定义了一个命令\preminipage
\def\preminipage{%
\ifodd\thepage
\else
\hspace{-2.54cm}
\fi
\noindent}%
然后在正文中调用\begin{minipage}{\headwidth}...\end{minipage}之前先调用一下\preminipage
但是,这种方法存在一个bug:当有些minipage需要重新开一页时,就会出现奇偶页判断错误的现象,这种情况下只能在\preminipage之前手动加上\newpage
为了解决这个bug,我借用\pageref命令的定义进行改装,重新完善了\preminipage
\makeatletter
\def\@set@ref#1#2#3{%
\ifx#1\relax
\thepage
\else
\expandafter#2#1\null
\fi}
\def\page@ref#1{\expandafter\@set@ref\csname r@#1\endcsname
\@secondoftwo{#1}}
\def\preminipage#1{%
\ifodd\page@ref{#1}
\else
\hspace{-2.54cm}
\fi%
\noindent}
\makeatother
使用方法:
\preminipage{aa}\begin{minipage}{\headwidth}\label{aa}...\end{minipage}
注意事项: 由于交叉引用的原因,所以需编译两次后才能正常使用