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}
注意事项: 由于交叉引用的原因,所以需编译两次后才能正常使用
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}
注意事项: 由于交叉引用的原因,所以需编译两次后才能正常使用
博客围绕如何使twoside的book在奇偶页特定位置留出margin、添加页眉线,以及让minipage占用textwidth + margin展开。给出了修改/oddsidemargin和/evensidemargin、使用fancyhdr宏包等方法,还解决了minipage奇偶页判断错误的bug,最后提醒因交叉引用需编译两次。
4263

被折叠的 条评论
为什么被折叠?



