You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarto PDF中KOMA-Script typearea横向页面几何设置失效求助

问题描述

我用KOMA-Script的typearea宏包,通过切换\KOMAoptions的方式在单个PDF里生成纵向和横向页面,但全局配置的geometry边距只对纵向页面生效,横向页面不遵循该设置。需要以下两种解决方案:

  1. 让横向页面应用页眉中的geometry设置;
  2. 在KOMA命令内为横向页面单独设置geometry。

原代码如下:

---
title: "Portrait and Landscape"
format:
  pdf:
    geometry:
      - top=80mm
      - bottom=30mm
      - left=30mm
      - right=30mm
    include-in-header: 
      text: |
        \usepackage{typearea}
---

# Quarto

Quarto可以将内容和可执行代码整合为成品文档。了解更多请访问Quarto官网。

\newpage

<!-- 切换为横向页面 -->

\KOMAoptions{paper=landscape,pagesize}
\recalctypearea

# 运行代码(横向)

点击「渲染」按钮会生成包含内容和代码输出的文档。你可以像这样嵌入代码:

也可以给可执行代码添加选项,比如`echo: false`会隐藏代码,只显示输出。

\newpage

<!-- 切回纵向页面 -->

\KOMAoptions{paper=portrait,pagesize}
\recalctypearea

# Quarto(纵向)

Quarto可以将内容和可执行代码整合为成品文档。了解更多请访问Quarto官网。

解决方案1:让横向页面复用全局geometry设置

问题根源是调用\recalctypearea时会重置页面边距,覆盖之前的geometry配置。解决办法是把全局的geometry设置存为一个命令,切换页面方向后重新调用这个命令。

修改后的代码:

---
title: "Portrait and Landscape"
format:
  pdf:
    geometry:
      - top=80mm
      - bottom=30mm
      - left=30mm
      - right=30mm
    include-in-header: 
      text: |
        \usepackage{typearea}
        % 保存全局geometry设置为自定义命令
        \newcommand{\mygeometry}{\geometry{top=80mm,bottom=30mm,left=30mm,right=30mm}}
        % 初始加载时应用一次
        \mygeometry
---

# Quarto

Quarto可以将内容和可执行代码整合为成品文档。了解更多请访问Quarto官网。

\newpage

<!-- 切换为横向页面 -->

\KOMAoptions{paper=landscape,pagesize}
\recalctypearea
% 重新应用全局geometry设置
\mygeometry

# 运行代码(横向)

点击「渲染」按钮会生成包含内容和代码输出的文档。你可以像这样嵌入代码:

也可以给可执行代码添加选项,比如`echo: false`会隐藏代码,只显示输出。

\newpage

<!-- 切回纵向页面 -->

\KOMAoptions{paper=portrait,pagesize}
\recalctypearea
% 重新应用全局geometry设置
\mygeometry

# Quarto(纵向)

Quarto可以将内容和可执行代码整合为成品文档。了解更多请访问Quarto官网。

说明:

  • 在页眉里定义\mygeometry命令,把全局的geometry参数写进去;
  • 每次切换页面方向并执行\recalctypearea后,调用\mygeometry重新应用边距设置,覆盖typearea的默认边距。

解决方案2:为横向页面单独设置geometry

如果需要给横向页面配置不同的边距,可以在切换方向后直接用\geometry命令单独指定参数。

修改后的代码:

---
title: "Portrait and Landscape"
format:
  pdf:
    geometry:
      - top=80mm
      - bottom=30mm
      - left=30mm
      - right=30mm
    include-in-header: 
      text: |
        \usepackage{typearea}
---

# Quarto

Quarto可以将内容和可执行代码整合为成品文档。了解更多请访问Quarto官网。

\newpage

<!-- 切换为横向页面,并单独设置边距 -->

\KOMAoptions{paper=landscape,pagesize}
\recalctypearea
% 为横向页面单独设置geometry,这里示例用左右80mm,上下30mm,可按需调整
\geometry{left=80mm,right=80mm,top=30mm,bottom=30mm}

# 运行代码(横向)

点击「渲染」按钮会生成包含内容和代码输出的文档。你可以像这样嵌入代码:

也可以给可执行代码添加选项,比如`echo: false`会隐藏代码,只显示输出。

\newpage

<!-- 切回纵向页面,恢复全局geometry设置 -->

\KOMAoptions{paper=portrait,pagesize}
\recalctypearea
% 恢复全局的geometry设置
\geometry{top=80mm,bottom=30mm,left=30mm,right=30mm}

# Quarto(纵向)

Quarto可以将内容和可执行代码整合为成品文档。了解更多请访问Quarto官网。

说明:

  • 切换到横向后,执行\recalctypearea,再用\geometry指定横向页面的专属边距;
  • 切回纵向时,同样用\geometry恢复全局的边距设置,确保后续纵向页符合要求。

内容的提问来源于stack exchange,提问作者andreas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 18:05:22