尽管布局发生变化(没有几何包),“多列”仍然使用以前的文本宽度

尽管布局发生变化(没有几何包),“多列”仍然使用以前的文本宽度

为了测试目的,我尝试在不使用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}%

现在它起作用了。抱歉因为我不够彻底而浪费了大家的时间 ;)

相关内容