LaTeX multicols环境自定义边距首页底部不生效问题求助
问题原因
- LaTeX 的页面维度参数(
\textheight、\headsep、\hoffset等)属于全局页面属性,参数修改仅会作用于下一个开始构建的页面,当前已经在构建的页面会继续使用修改前的参数,所以你进入自定义环境后修改的参数没有作用到当前页,仅后续页面生效。 - 你直接在环境开头修改原始布局参数的方式缺少强制刷新页面的步骤,导致参数无法即时生效。
解决方案
推荐使用geometry宏包的\newgeometry命令修改页面布局,该命令会自动执行\clearpage输出当前未完成的页面,让新布局参数即时生效,退出环境时用\restoregeometry恢复原有布局即可。
修改后的可运行代码:
\documentclass[12pt]{article} \usepackage{lipsum} \usepackage{showframe} % 显示页边距框线 \usepackage{multicol} \usepackage{geometry} % 引入布局管理宏包 % 自定义环境修改布局 \newenvironment{firstenvironment}{ \newgeometry{ hoffset=0mm, voffset=0mm, headsep=20pt, headheight=4em, textheight=6in, footskip=10mm } }{ \restoregeometry % 退出环境时恢复原有布局 } \newenvironment{secondenvironment}{ \newgeometry{ hoffset=0mm, voffset=0mm, headsep=5pt, headheight=2em, textheight=5in, footskip=20mm } }{ \restoregeometry } \begin{document} \begin{firstenvironment} \setlength\columnsep{30pt} \begin{multicols}{2} {\Large\bfseries 1ST LIPSUM}\\ \lipsum[1-10] \end{multicols} \end{firstenvironment} \begin{secondenvironment} \begin{multicols}{2} {\Large\bfseries 2ND LIPSUM}\\ \lipsum[1-10] \end{multicols} \end{secondenvironment} \end{document}
补充说明
- 如果你不想引入
geometry宏包,也可以在自定义环境的开头手动加\clearpage强制清页,再修改布局参数,也可以解决当前页不生效的问题,但兼容性和便捷性远低于使用geometry宏包的方案。 \bf是LaTeX2e中已废弃的命令,推荐使用\bfseries替代。
内容的提问来源于stack exchange,提问作者josetv
相关产品推荐
相关产品推荐

