KOMA 不会在文档中间更改页面大小

KOMA 不会在文档中间更改页面大小

我正在尝试使用 KOMA 更改页面大小,但无法

\usepackage[paper=A4]{typearea}
\usepackage{pdfpages}
\usepackage{geometry}
\begin{document}

\KOMAoptions{paper=2.5in:6.0in,DIV=1}
\recalctypearea
"POTRAIT"

\KOMAoptions{paper=6in:2.5in,DIV=1}
\recalctypearea
"LANDSCAPE"

\end{document}

使用 KOMA 我尝试设置两种页面大小2.5in:6.0in6in:2.5in

但输出的 pdf 显示两页大小2.5in:6.0in6in:2.5in

在此处输入图片描述

解决方案 1:我发现它有效(我还添加了页码)

笔记:

1) use \documentclass[version=3.21]{scrartcl}
2) mention page size as width:height
3) no need of landscape



\documentclass[version=3.21]{scrartcl}
% this is required for pagenumber and also KOMAoptions to work
\usepackage[automark,headsepline,footsepline]{scrlayer-scrpage}
% the above both are required to show page number 

\usepackage
  [showframe]% to show the page layout
  {geometry}

\begin{document}

\KOMAoptions{paper=2.5in:6.0in,DIV=calc}
 % widht:height
\recalctypearea
\newgeometry{layoutwidth = 2.5in,layoutheight = 6.0in,left=0mm,right=0mm,top=0mm,bottom=0mm,footskip=1mm}
"POTRAIT"

\KOMAoptions{paper=6in:2.5in,DIV=calc}
% here widht:height mention 6in:2.5in instead of 2.5:6in
\recalctypearea
\newgeometry{layoutwidth =6in,layoutheight = 2.5in,left=0mm,right=0mm,top=0mm,bottom=0mm,footskip=1mm}
"LANDSCAPE"

\end{document}

输出是(我还想在底部添加页码。因此使用 newgeometry 来重置页边距

在此处输入图片描述

解决方案 2:我发现它有效(我还添加了页码)

这里无论 widht:height 如何,它都会显示纵向。我们必须特别提到纵向或横向。最近我犯了一个拼写错误,我使用了potrait而不是portrait,我认为它不起作用。

\documentclass{scrartcl}
\usepackage{pdfpages}
\usepackage{geometry}
\usepackage[automark]{scrlayer-scrpage}
\begin{document}

    \KOMAoptions{paper=432pt:566.36717pt,paper=portrait}
    \recalctypearea
    \newgeometry{layoutwidth = 432pt,layoutheight = 566.36717pt,left=0mm,right=0mm,top=0mm, bottom=0mm,footskip=1mm}
    POTRAIT

    \KOMAoptions{paper=432pt:226.15027pt,paper=landscape}
    \recalctypearea
    \newgeometry{layoutwidth = 432pt,layoutheight = 226.15027pt,left=0mm,right=0mm,top=0mm, bottom=0mm,footskip=1mm}
    LANDSCAPE

    \KOMAoptions{paper=432pt:566.36717pt,paper=portrait}
    \recalctypearea
    \newgeometry{layoutwidth = 432pt,layoutheight = 566.36717pt,left=0mm,right=0mm,top=0mm, bottom=0mm,footskip=1mm}
    EXPECTING SAME POTRAIT

\end{document}

答案1

不幸的是,您的示例无法编译,因为您忽略了显示\documentclass为 KOMAscript 设置的选项的声明。

笔记:

  • KOMAScript 文档指出,无需显式加载该typearea包;它还指出,一般不建议将typearea功能与该geometry包一起使用。但是,如果需要,可以usegeometry=true选择 KOMAscript 类声明。
  • paper=A4如果不需要,为何要设置?
  • of会导致页面划分非常“糟糕”;事实上,typearea 会对这个非常低的DIV值发出警告。1DIV

解决您的问题的一个方法是先设置纵向尺寸,然后简单地切换到横向:

\documentclass[pagesize, usegeometry=true]{scrartcl}

\usepackage{pdfpages}  %%although it is not needed for your example
\usepackage{geometry}
\begin{document}

\KOMAoptions{paper=2.5in:6.0in,DIV=1}
\recalctypearea
"PORTRAIT"

\KOMAoptions{paper=landscape}
\recalctypearea
"LANDSCAPE"

\end{document}

答案2

关于选项,paperKOMA-Script 版本 3.22 发生了变化(当前版本为 3.31)。如果您添加以下选项,您的示例将version=3.21起作用typearea

\documentclass{article}
\usepackage[paper=A4,
  version=3.21% <- added, but it is a really old version
]{typearea}
\usepackage{pdfpages}
\usepackage
  [showframe]% to show the page layout
  {geometry}
\begin{document}

\KOMAoptions{paper=2.5in:6.0in,DIV=calc}
%\KOMAoptions{paper=2.5in:6.0in,DIV=current}% maybe better
"POTRAIT"

\KOMAoptions{paper=6in:2.5in,DIV=calc}
"LANDSCAPE"

\end{document}

请注意,OptionDIV会导致重新计算 typearea。因此,如果您在 的参数中的 keyDIV之后使用 key ,则可以删除附加项(与 几乎相同)。paper\KOMAoptions\recalctypearea\KOMAoptions{DIV=last}

请注意 是DIV=1的同义词DIV=calc。但我认为您不希望DIV=calc将其用于横向页面。

在此处输入图片描述

也许您想用于DIV=current横向页面?

在此处输入图片描述

从 3.22 版开始,它取决于方向(portraitlandscape),哪个值作为高度,哪个值作为宽度。使用paper = portraitpaper=2.5in:6.0inpaper=6.0in:2.5in都会导致页面高度为 6.0 英寸,宽度为 2.5 英寸。如果要切换到landscape,则必须使用paper=landscape!但如果仅交换宽度和高度,则使用paper=landscape后跟DIV=current或 也足够了DIV=last

\documentclass{article}
\usepackage[paper=A4]{typearea}
\usepackage{pdfpages}
\usepackage[%
  showframe% to show the page layout
]{geometry}

\begin{document}

\KOMAoptions{paper=2.5in:6.0in,DIV=calc}
"POTRAIT"

\KOMAoptions{paper=landscape,DIV=current}
"LANDSCAPE"

\end{document}

相关内容