\restoregeometry 将一个页码放错了

\restoregeometry 将一个页码放错了

我正在准备一个模板,其中我需要:(1)自定义标题页(单独生成)(2)自定义摘要页,带有非常大的页脚但没有页码(3)文档的其余部分,带有漂亮的页脚(特别是包括页码)和页眉。

为了实现 (2),我使用了\newgeometry\restoregeometry。但是,只有从第 4 页开始,页码才放置在正确的位置,但第 3 页的底部边距大小“错误”。任何修复它的尝试只会使情况变得更糟(例如对齐全部页码与“不正确”的页码相同)。这是我的 MWE(至少我希望它是最小的):

\documentclass[11pt,a4paper,twoside=semi]{scrartcl}

\usepackage{graphicx}
\usepackage[top=4.79cm, bottom=2.5cm, left=1.5cm, right=1.5cm]{geometry}
\usepackage{eso-pic}
\usepackage{afterpage}
\usepackage[automark]{scrlayer-scrpage}
\usepackage{lipsum}

\begin{document}
\title{Some stuff on title page}
\maketitle

\clearpage
\afterpage{
\newgeometry{bottom=8cm}
    \pagenumbering{gobble}
\newcommand{\FooterDisclaimer}{%
    {\parbox[c][5cm]{\textwidth}
        {very long message in footer    
        }
    }
        }   
    \chead{}
    \cfoot{\FooterDisclaimer}
Some stuff on the second page with different footer
\restoregeometry
}

\clearpage
\thispagestyle{scrheadings}
\pagenumbering{arabic}
\setcounter{page}{3}
\clearpairofpagestyles

\cfoot{\pagemark}

\section{Test}  
\lipsum[1-20]   
\end{document}

答案1

问题是,KOMA 脚本调整了\footheight第 2 页上非常大的页脚。\restoregeometry不会将该长度设置回原位,而只会更改其他长度。结果是后续页面上的页脚非常大。

为了解决这个问题,在\recalctypearea之前放置一个\restoregeometry,将 恢复\footheight正常(基本上,这会将所有内容设置为 KOMA 在没有 的情况下使用的尺寸geometry)。\restoregeometry重置geometry的尺寸。

在代码中:

\documentclass[11pt,paper=a4,twoside=semi]{scrartcl}

\usepackage[automark]{scrlayer-scrpage}
\usepackage[top=4.79cm, bottom=2.5cm, left=1.5cm, right=1.5cm]{geometry}
\usepackage{lipsum}

\begin{document}
\title{Some stuff on title page}
\maketitle

%% Your second page
\clearpage
  \newgeometry{bottom=8cm}%
  \pagenumbering{gobble}
  \newcommand{\FooterDisclaimer}
    {%
      \parbox[c][5cm]{\textwidth}
        {\lipsum[1]}%
    }   
    \chead{}
    \cfoot{\FooterDisclaimer}
Some stuff on the second page with different footer

\lipsum[2-5]
\clearpage
%%

\recalctypearea % reset footer height
\restoregeometry % reset page margins
\pagenumbering{arabic}
\setcounter{page}{3}
\clearpairofpagestyles
\cfoot{\pagemark}

\section{Test}  
\lipsum[1-20]   
\end{document}

答案2

以下是另一个避免重新计算的建议footheight(以及有关此重新计算的警告):

\documentclass[twoside=semi]{scrartcl}
\usepackage[top=4.79cm, bottom=2.5cm, left=1.5cm, right=1.5cm,
  showframe% to show the page layout
]{geometry}
\usepackage[automark]{scrlayer-scrpage}
\clearpairofpagestyles
\cfoot{\pagemark}

\newcommand{\FooterDisclaimer}{%
  \parbox[c][5cm]{\textwidth}{%
    Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi.
    Morbi auctor lorem non justo.
    Nam lacus libero, pretium at, lobortis vitae, ultricies et, tellus.
  }%
}

\newcommand\StartDisclaimerPages
  {%
    \newgeometry{bottom=8cm}\begingroup
    \cfoot{\raisebox{\dimexpr-\height+\ht\strutbox\relax}
      [\ht\strutbox][\dp\strutbox]{\FooterDisclaimer}}%
  }
\newcommand\EndDisclaimerPages
  {\clearpage\endgroup\restoregeometry}

\usepackage{lipsum}% only for dummy text
\begin{document}
\title{Some stuff on title page}
\author{Author}
\maketitle

\StartDisclaimerPages
\lipsum[1-4]
\EndDisclaimerPages

\section{test}
\lipsum[5-20]
\end{document}

请注意,我已删除了\pagestyle{gobble}页码 3 的手动设置。

在此处输入图片描述


您还可以对免责声明页面使用新的图层页面样式:

\documentclass[twoside=semi]{scrartcl}

\usepackage[top=4.79cm, bottom=2.5cm, left=1.5cm, right=1.5cm,
  showframe% to show the page layout
]{geometry}
\usepackage[automark]{scrlayer-scrpage}
\clearpairofpagestyles
\cfoot{\pagemark}

\newcommand{\FooterDisclaimer}{%
  \parbox[c][5cm]{\textwidth}{%
    Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi.
    Morbi auctor lorem non justo.
    Nam lacus libero, pretium at, lobortis vitae, ultricies et, tellus.
  }%
}
\DeclareNewLayer[
  foreground,
  foot,
  contents={%
    \usekomafont{pageheadfoot}\usekomafont{pagefoot}%
    \FooterDisclaimer
  }
]{disclaimer.foot}
\DeclareNewPageStyleByLayers{disclaimer}{disclaimer.foot}

\newcommand\StartDisclaimerPages
  {\newgeometry{bottom=8cm}\begingroup\pagestyle{disclaimer}}
\newcommand\EndDisclaimerPages
  {\clearpage\endgroup\restoregeometry}

\usepackage{lipsum,blindtext}% only for dummy text
\begin{document}
\title{Some stuff on title page}
\author{Author}
\maketitle

\StartDisclaimerPages
\lipsum[1-4]
\EndDisclaimerPages

\section{test}
\lipsum[5-20]
\end{document}

相关内容