为了测试目的,我尝试在不使用geometry
包的情况下重现我的几何/布局(仅加载以使用该showframe
选项)。
到目前为止,它运行良好。但在我的主文档中,我使用命令来生成一个完全自动化的两列部分multicol
。如果我现在用\newgeometry
我调整后的布局尺寸替换在主文档中运行良好的命令,布局本身就会发生变化,但列仍然使用textwidth
我最初的布局尺寸来排版,如图所示showframe
。
这是我的 MWE:
\documentclass[a4paper,english,twoside]{article}
\usepackage[T1]{fontenc}
\usepackage{blindtext}
\usepackage[showframe]{geometry}
\usepackage{multicol}
\setlength\oddsidemargin{-5.4mm}
\setlength\evensidemargin{34.6mm}
\setlength\topmargin{-23.4mm}
\setlength\headheight{4.2mm}
\setlength\headsep{8.8mm}
\setlength\marginparsep{4.5mm}
\setlength\marginparwidth{40.5mm}
\setlength\footskip{10.5mm}
\setlength\marginparpush{1.8mm}
\setlength\voffset{0mm}
\setlength\hoffset{0mm}
\setlength\textwidth{130mm}
\setlength\textheight{262mm}
\NewDocumentCommand{\columnpart}{+m}{
\newpage
\begingroup
\setlength\oddsidemargin{-5.4mm}
\setlength\evensidemargin{12.1mm}
\setlength\topmargin{-23.4mm}
\setlength\headheight{4.2mm}
\setlength\headsep{8.8mm}
\setlength\marginparsep{4.5mm}
\setlength\marginparwidth{18mm}
\setlength\footskip{10.5mm}
\setlength\marginparpush{1.8mm}
\setlength\voffset{0mm}
\setlength\hoffset{0mm}
\setlength\textwidth{152.5mm}
\setlength\textheight{262mm}
\setlength\columnsep{1cm}
\begin{multicols*}{2}
#1
\end{multicols*}
\endgroup
\newpage
}
\begin{document}
\blindtext
\columnpart{\blindtext[5]}
\blindtext
\end{document}
我必须进行哪些更改才能使其适应命令中的multicols
新设置而不使用额外的包?textwidth
答案1
好的,我可能忽略了包中的某些内容。只需在 newcommand 内的代码末尾插入从包(定义)geometry
中获取的以下几行:geometry
\Gm@changelayout
\setlength{\columnwidth}{\textwidth}%
\setlength\columnsep{5mm}%
\if@twocolumn%
\advance\columnwidth-\columnsep
\divide\columnwidth\tw@%
\@firstcolumntrue%
\fi%
\setlength{\hsize}{\columnwidth}%
\setlength{\linewidth}{\hsize}%
现在它起作用了。抱歉因为我不够彻底而浪费了大家的时间 ;)