你的\setmainstyle
命令存在问题,因为它将在帧内使用,从而无效。
为了避免这个问题,你可以使用与https://tex.stackexchange.com/questions/173201/beamer-template-with-different-style-options-for-frames相同的策略来创建一个帧选项,它将改变背景。
不幸的是,rmarkdown只忽略用户创建的帧选项,并且只传递一小部分预定义选项。为了欺骗rmarkdown,可以重新使用一个通常不被beamer使用的帧选项,即standout
帧选项(它仅由metropolis主题使用)。
---
output:
beamer_presentation:
keep_tex: true
header-includes: |
\usepackage{etoolbox}
\defbeamertemplate{background canvas}{mydefault}{
\includegraphics[width=\paperwidth,height=\paperheight]{example-image-duck}
}
\defbeamertemplate{background canvas}{standout}{
\includegraphics[width=\paperwidth,height=\paperheight,page=2]{example-image-duck}
}
\BeforeBeginEnvironment{frame}{
\setbeamertemplate{background canvas}[mydefault]
}
\makeatletter
\define@key{beamerframe}{standout}[true]{
\setbeamertemplate{background canvas}[standout]
}
\makeatother
---
# frametitle
test
# frametitle with different background {.standout}
test
# frametitle
test
![enter image description here](https://istack.dev59.com/EFRy5.webp)
或者,如果您想要更改所有后续帧的背景:
\usepackage{etoolbox}
\defbeamertemplate{background canvas}{mydefault}{
\includegraphics[height=\paperheight,page=2]{example-image-duck}
}
\defbeamertemplate{background canvas}{standout}{
\includegraphics[height=\paperheight]{example-image-duck}
}
\setbeamertemplate{background canvas}[mydefault]
\makeatletter
\define@key{beamerframe}{standout}[true]{
\setbeamertemplate{background canvas}[standout]
}
\makeatother
![enter image description here](https://istack.dev59.com/8wHIN.webp)
更新:
Pandoc现在允许任意框架选项(https://github.com/jgm/pandoc/commit/7fbce82f2f7b69e88b23cf138ea6cd3a86786b91)
---
output:
beamer_presentation:
header-includes: |
\defbeamertemplate{background canvas}{mydefault}{}
\defbeamertemplate{background canvas}{special}{
\includegraphics[width=\paperwidth,height=\paperheight]{example-image-duck}
}
\BeforeBeginEnvironment{frame}{
\setbeamertemplate{background canvas}[mydefault]
}
\makeatletter
\define@key{beamerframe}{special}[true]{
\setbeamertemplate{background canvas}[special]
}
\makeatother
---
# frametitle
test
# Heading {frameoptions="special"}
test
# frametitle
test