TeX中修改minipage一例

来源:互联网 发布:唐嫣杨幂关系知乎 编辑:程序博客网 时间:2024/06/09 04:25
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}

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