TeX中修改minipage一例

类别:编程语言 点击:0 评论:0 推荐:
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}

   注意事项: 由于交叉引用的原因,所以需编译两次后才能正常使用

本文地址:http://com.8s8s.com/it/it25051.htm