在R Markdown beamer演示文稿中更改背景

在R Markdown beamer演示文稿中更改背景,r,latex,r-markdown,beamer,R,Latex,R Markdown,Beamer,我在rmarkdown的beamer演示文稿上写文章,我有两种类型的帧,它们的背景应该不同。 所以我在latex中编写了两个类似的函数: \newcommand{\settitlestyle}{ \setbeamertemplate{background canvas}{% \includegraphics[width = \paperwidth, height = \paperheight] {backgroundtitle.jpg}} } \setmainstyle是完全相同的命令

我在rmarkdown的beamer演示文稿上写文章,我有两种类型的帧,它们的背景应该不同。 所以我在latex中编写了两个类似的函数:

\newcommand{\settitlestyle}{
\setbeamertemplate{background canvas}{%
  \includegraphics[width = \paperwidth, height = \paperheight] 
{backgroundtitle.jpg}}
} 
\setmainstyle
是完全相同的命令,但却是另一个jpg


在YAML中,我已经输入了一个tex文件,该文件定义了函数和调用
\settitlestyle
。作品但是在第一张幻灯片之后,我想切换到主流风格。当我在markdown文件中调用
\setmainstyle
时,什么都没有发生

您的
\setmainstyle
命令的问题是,它将在帧内使用,因此无效

为了避免此问题,可以使用与中相同的策略创建一个框架选项,该选项将更改背景

不幸的是,rmarkdown只是忽略了用户创建的帧选项,只传递了一小部分预定义选项。为了欺骗rmarkdown,可以重新使用通常不被beamer使用的帧选项,
standout
frame选项(它只被metropolis主题使用)

和.tex

\usepackage{etoolbox}

\defbeamertemplate{background canvas}{mydefault}{%
  \includegraphics[width=\paperwidth,height=\paperheight]{example-image-b}
}
\defbeamertemplate{background canvas}{standout}{%
  \includegraphics[width=\paperwidth,height=\paperheight]{example-image-a}
}

\BeforeBeginEnvironment{frame}{%
  \setbeamertemplate{background canvas}[mydefault]%
}

\makeatletter
\define@key{beamerframe}{standout}[true]{%
  \setbeamertemplate{background canvas}[standout]%
}
\makeatother

或者,如果要更改以下所有帧的背景:

\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

\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