如何在使用 R markdown 生成的 beamer 演示文稿中使用自定义 beamer 主题、模板和包含?
How to employ a custom beamer theme, template and includes in a beamer presentation generated with R markdown?
输出格式beamer
的R markdown演示文稿可以利用
- Classical LaTex beamer themes 例如 Copenhagen 或 Madrid 或使用自定义 beamer 主题.
- Templates ,即
template.tex
- 包括,例如
in_header: preamble.tex
、before_body: before_body.tex
和after_body: after_body.tex
可以在rmarkdown::beamer_presentation
中通过YAML-header实现如下:
theme: "THEMENAME"
template: template.tex
includes:
in_header: preamble.tex
before_body: before_body.tex
after_body: after_body.tex
问题一: 上面列出的这些文件的具体用途是什么?
我得到了 beamer 的自定义主题,包含 beamerthemeTHEMENAME.sty
、beamercolorthemeTHEMENAME.sty
、beamerfontthemeTHEMENAME.sty
、beamerinnerthemeTHEMENAME.sty
、beamerouterthemeTHEMENAME.sty
。
在我的 YAML 中获取此模板 header 不会导致演示文稿看起来与直接使用 LaTex 生成并应用自定义主题的任何 beamer 演示文稿太接近。
例如,在 beamerouterthemeTHEMENAME.sty
中定义了一个新的 titleframe
,然后可以在 LaTex 演示文稿的开头使用 \titleframe
调用它。
我没有成功在 rmarkdown::beamer_presentation
.
中应用此自定义 frame-type
问题二: Applying a LaTex beamer theme
in an rmarkdown::beamer_presentation
, which contents to modify or enhance the presentation
- 必须进行改编或
- 从
beamer theme
移动到 template.tex
和 includes
以便它们像在 LaTex 中一样应用于 rmarkdown 中的演示文稿?
问题三: 自定义theme
、template.tex
、includes
的最终文件可以吗移动到 sub-folder 以更整洁地组织演示文稿文件夹,并且仍能正确加载
MWE 和剩余问题
- 不能使用
beamerouterthemeTHEMENAME.sty
中定义的以下框架模板:\titleframe
、\tocframe
、 \closingframe
beamerouterthemeTHEMENAME.sty
中定义的底线:
- 已成功 link 将页码添加到
appendix
。
- 将徽标 link 放到
table of contents
幻灯片上就好了
MWE.Rmd
---
title: "MWE"
subtitle: "Beamer presnetation with R-markdown"
institute: "some place"
date: "`r format(Sys.time(), '%B %d, %Y')`"
output:
# beamer_presentation: default
bookdown::pdf_book:
base_format: rmarkdown::beamer_presentation
# includes:
# in_header: preamble.tex
theme: "THEMENAME"
latex_engine: xelatex
toc: false
slide_level: 2
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```
# Random presentation
## TOC - Table of Contents {.unnumbered}
\tableofcontents
\label{contents}
## Slide with Bullets
- Bullet 1
- Bullet 2
- Bullet 3
## Apendix
\appendix
beamerthemeTHEMENAME.sty
\usepackage[utf8]{inputenc}
% Tizk, textpos, graphics
\RequirePackage{tikz}
\RequirePackage{textpos}
\RequirePackage{xcolor}
\RequirePackage{booktabs}
% Beamer settings
\usecolortheme{THEMENAME}
\useoutertheme{THEMENAME}
\setbeamertemplate{navigation symbols}{}
\mode<all>
beamercolorthemeTHEMENAME.sty
\mode<presentation>
\definecolor{THEMECOL}{RGB}{162,48,47} % red
\definecolor{THEMEgray}{RGB}{110,110,101}% gray
\colorlet{titlefgcolor}{THEMECOL} % color of box
\colorlet{titlebgcolor}{THEMEgray} % color of box
\setbeamercolor*{title}{fg=THEMECOL} % presentation title
\setbeamercolor*{author}{fg=THEMECOL} % author
\setbeamercolor*{date}{fg=THEMECOL} % date
\mode<all>
beamerouterthemeTHEMENAME.sty
\mode<presentation>
% Redefine \insertshortinstitute to allow multiple lines
\makeatletter
\renewcommand{\insertshortinstitute}{\beamer@shortinstitute}
\makeatother
% Title frame
\def\titlefigure{img/my_bg}
\newlength\titleboxwidth
\setlength{\titleboxwidth}{0.33\textwidth}
\newcommand{\titleframe}{%
{
\setbeamertemplate{background}{
\begin{tikzpicture}
\useasboundingbox (0,0) rectangle(\the\paperwidth,\the\paperheight);
\ifx\titlefigure\empty
\fill[titlebgcolor] (6.3mm,6.4mm) rectangle (\the\paperwidth-8.3mm,\the\paperheight-13mm);
\else
\node at (current page.center) [anchor=center,yshift=-3.5mm] {\includegraphics[width=\the\paperwidth-19mm]{\titlefigure}};
\fi
\node at (current page.north east) [anchor=base east, xshift=-8.3mm, yshift=-6.3mm, align=left, inner sep=0mm, font=\fontsize{5.5}{6.6}\selectfont] {
\insertshortinstitute
};
\node at (current page.north west) [anchor=south west, inner sep=0mm, xshift=8.3mm, yshift=-8.6mm] {
\includegraphics[height=3.8mm]{img/my_logo}
};
\end{tikzpicture}
}
\setbeamertemplate{footline}{}
\begin{frame}[noframenumbering]
\begin{tikzpicture}
\useasboundingbox (0,0) rectangle(\the\paperwidth,\the\paperheight);
\node [
shift={(-11.5mm,-1.8mm)},
fill=titlefgcolor,
minimum width=0.46\paperwidth,
minimum height=18mm,
anchor=west,
inner sep=4mm
] at (current page.west) {
\hspace*{9mm}
\begin{minipage}{\titleboxwidth}
\raggedright
\usebeamerfont{title}\usebeamercolor[fg]{title}\inserttitle\[3mm]
\usebeamerfont{author}\usebeamercolor[fg]{author}\insertauthor\
\usebeamerfont{date}\usebeamercolor[fg]{date}\insertdate
\end{minipage}
};
\end{tikzpicture}
\end{frame}
}
}
% TOC frame
\newcommand{\tocframe}{%
\begin{frame}
\frametitle{Outline}
\tableofcontents
\end{frame}
}
% Section title frame
\AtBeginSection[]
{
\begin{frame}
\frametitle{Outline}
\large
\tableofcontents[currentsection]
\end{frame}
}
\newenvironment{closingframe}{
\setbeamertemplate{background}{
\begin{tikzpicture}
\useasboundingbox (0,0) rectangle(\the\paperwidth,\the\paperheight);
\node at (current page.north west) [anchor=base west, xshift=8mm, yshift=-10mm, align=left] {
\includegraphics[width=23mm]{img/my_logo.png}
};
\end{tikzpicture}
}
\setbeamertemplate{footline}{}
\addtolength{\headsep}{10mm}
\begin{frame}[noframenumbering]
}%
{
\end{frame}
}%
% Footline
\setbeamertemplate{footline}{
\leavevmode%
\hyperlink{contents}{\includegraphics[width=12mm,trim=0mm 0.4mm 0mm 0mm]{img/my_logo.png}}
\hfill
\hyperlinkappendixstart{\insertframenumber/\inserttotalframenumber}
\vspace{3mm}
}
\mode<all>
@Samcarter_is_at_topanswers.xyz 是对的。这是一个广泛的问题。
最简单的回答是肯定的,您可以使用 beamercolor...sty
和相关文件来创建您的自定义 beamer deck。我使用 RStudio 作为我的 R
IDE 我写了一个“插件”,它允许我生成一个新的自定义 beamer 演示文稿,就像您生成任何其他新文档一样:即文件 -> 新文件 - > R Markdown -> 来自模板
我将 .sty
文件保存在我称为 customtex
或其他目录的主目录中,其中包含一个 tex
目录和一个 beamer
目录。
- companytex
- tex
- beamer [houses `.sty` files]
- latex
当我在 RStudio 中使用 From Template
时,这些文件与创建的新 .Rmd
文件一起被复制到我确定的特定位置。
- reportdir
- .Rmd file
- figure dir
- resources dir
- images dir
- theme dir
- all of my `.sty` files for beamer generation
当我单击 Knit
(或 运行 render()
)时,自定义 .sty
文件用作模板。
输出格式beamer
的R markdown演示文稿可以利用
- Classical LaTex beamer themes 例如 Copenhagen 或 Madrid 或使用自定义 beamer 主题.
- Templates ,即
template.tex
- 包括,例如
in_header: preamble.tex
、before_body: before_body.tex
和after_body: after_body.tex
可以在rmarkdown::beamer_presentation
中通过YAML-header实现如下:
theme: "THEMENAME"
template: template.tex
includes:
in_header: preamble.tex
before_body: before_body.tex
after_body: after_body.tex
问题一: 上面列出的这些文件的具体用途是什么?
我得到了 beamer 的自定义主题,包含 beamerthemeTHEMENAME.sty
、beamercolorthemeTHEMENAME.sty
、beamerfontthemeTHEMENAME.sty
、beamerinnerthemeTHEMENAME.sty
、beamerouterthemeTHEMENAME.sty
。
在我的 YAML 中获取此模板 header 不会导致演示文稿看起来与直接使用 LaTex 生成并应用自定义主题的任何 beamer 演示文稿太接近。
例如,在 beamerouterthemeTHEMENAME.sty
中定义了一个新的 titleframe
,然后可以在 LaTex 演示文稿的开头使用 \titleframe
调用它。
我没有成功在 rmarkdown::beamer_presentation
.
问题二: Applying a LaTex beamer theme
in an rmarkdown::beamer_presentation
, which contents to modify or enhance the presentation
- 必须进行改编或
- 从
beamer theme
移动到template.tex
和includes
以便它们像在 LaTex 中一样应用于 rmarkdown 中的演示文稿?
问题三: 自定义theme
、template.tex
、includes
的最终文件可以吗移动到 sub-folder 以更整洁地组织演示文稿文件夹,并且仍能正确加载
MWE 和剩余问题
- 不能使用
beamerouterthemeTHEMENAME.sty
中定义的以下框架模板:\titleframe
、\tocframe
、\closingframe
beamerouterthemeTHEMENAME.sty
中定义的底线:- 已成功 link 将页码添加到
appendix
。 - 将徽标 link 放到
table of contents
幻灯片上就好了
- 已成功 link 将页码添加到
MWE.Rmd
---
title: "MWE"
subtitle: "Beamer presnetation with R-markdown"
institute: "some place"
date: "`r format(Sys.time(), '%B %d, %Y')`"
output:
# beamer_presentation: default
bookdown::pdf_book:
base_format: rmarkdown::beamer_presentation
# includes:
# in_header: preamble.tex
theme: "THEMENAME"
latex_engine: xelatex
toc: false
slide_level: 2
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```
# Random presentation
## TOC - Table of Contents {.unnumbered}
\tableofcontents
\label{contents}
## Slide with Bullets
- Bullet 1
- Bullet 2
- Bullet 3
## Apendix
\appendix
beamerthemeTHEMENAME.sty
\usepackage[utf8]{inputenc}
% Tizk, textpos, graphics
\RequirePackage{tikz}
\RequirePackage{textpos}
\RequirePackage{xcolor}
\RequirePackage{booktabs}
% Beamer settings
\usecolortheme{THEMENAME}
\useoutertheme{THEMENAME}
\setbeamertemplate{navigation symbols}{}
\mode<all>
beamercolorthemeTHEMENAME.sty
\mode<presentation>
\definecolor{THEMECOL}{RGB}{162,48,47} % red
\definecolor{THEMEgray}{RGB}{110,110,101}% gray
\colorlet{titlefgcolor}{THEMECOL} % color of box
\colorlet{titlebgcolor}{THEMEgray} % color of box
\setbeamercolor*{title}{fg=THEMECOL} % presentation title
\setbeamercolor*{author}{fg=THEMECOL} % author
\setbeamercolor*{date}{fg=THEMECOL} % date
\mode<all>
beamerouterthemeTHEMENAME.sty
\mode<presentation>
% Redefine \insertshortinstitute to allow multiple lines
\makeatletter
\renewcommand{\insertshortinstitute}{\beamer@shortinstitute}
\makeatother
% Title frame
\def\titlefigure{img/my_bg}
\newlength\titleboxwidth
\setlength{\titleboxwidth}{0.33\textwidth}
\newcommand{\titleframe}{%
{
\setbeamertemplate{background}{
\begin{tikzpicture}
\useasboundingbox (0,0) rectangle(\the\paperwidth,\the\paperheight);
\ifx\titlefigure\empty
\fill[titlebgcolor] (6.3mm,6.4mm) rectangle (\the\paperwidth-8.3mm,\the\paperheight-13mm);
\else
\node at (current page.center) [anchor=center,yshift=-3.5mm] {\includegraphics[width=\the\paperwidth-19mm]{\titlefigure}};
\fi
\node at (current page.north east) [anchor=base east, xshift=-8.3mm, yshift=-6.3mm, align=left, inner sep=0mm, font=\fontsize{5.5}{6.6}\selectfont] {
\insertshortinstitute
};
\node at (current page.north west) [anchor=south west, inner sep=0mm, xshift=8.3mm, yshift=-8.6mm] {
\includegraphics[height=3.8mm]{img/my_logo}
};
\end{tikzpicture}
}
\setbeamertemplate{footline}{}
\begin{frame}[noframenumbering]
\begin{tikzpicture}
\useasboundingbox (0,0) rectangle(\the\paperwidth,\the\paperheight);
\node [
shift={(-11.5mm,-1.8mm)},
fill=titlefgcolor,
minimum width=0.46\paperwidth,
minimum height=18mm,
anchor=west,
inner sep=4mm
] at (current page.west) {
\hspace*{9mm}
\begin{minipage}{\titleboxwidth}
\raggedright
\usebeamerfont{title}\usebeamercolor[fg]{title}\inserttitle\[3mm]
\usebeamerfont{author}\usebeamercolor[fg]{author}\insertauthor\
\usebeamerfont{date}\usebeamercolor[fg]{date}\insertdate
\end{minipage}
};
\end{tikzpicture}
\end{frame}
}
}
% TOC frame
\newcommand{\tocframe}{%
\begin{frame}
\frametitle{Outline}
\tableofcontents
\end{frame}
}
% Section title frame
\AtBeginSection[]
{
\begin{frame}
\frametitle{Outline}
\large
\tableofcontents[currentsection]
\end{frame}
}
\newenvironment{closingframe}{
\setbeamertemplate{background}{
\begin{tikzpicture}
\useasboundingbox (0,0) rectangle(\the\paperwidth,\the\paperheight);
\node at (current page.north west) [anchor=base west, xshift=8mm, yshift=-10mm, align=left] {
\includegraphics[width=23mm]{img/my_logo.png}
};
\end{tikzpicture}
}
\setbeamertemplate{footline}{}
\addtolength{\headsep}{10mm}
\begin{frame}[noframenumbering]
}%
{
\end{frame}
}%
% Footline
\setbeamertemplate{footline}{
\leavevmode%
\hyperlink{contents}{\includegraphics[width=12mm,trim=0mm 0.4mm 0mm 0mm]{img/my_logo.png}}
\hfill
\hyperlinkappendixstart{\insertframenumber/\inserttotalframenumber}
\vspace{3mm}
}
\mode<all>
@Samcarter_is_at_topanswers.xyz 是对的。这是一个广泛的问题。
最简单的回答是肯定的,您可以使用 beamercolor...sty
和相关文件来创建您的自定义 beamer deck。我使用 RStudio 作为我的 R
IDE 我写了一个“插件”,它允许我生成一个新的自定义 beamer 演示文稿,就像您生成任何其他新文档一样:即文件 -> 新文件 - > R Markdown -> 来自模板
我将 .sty
文件保存在我称为 customtex
或其他目录的主目录中,其中包含一个 tex
目录和一个 beamer
目录。
- companytex
- tex
- beamer [houses `.sty` files]
- latex
当我在 RStudio 中使用 From Template
时,这些文件与创建的新 .Rmd
文件一起被复制到我确定的特定位置。
- reportdir
- .Rmd file
- figure dir
- resources dir
- images dir
- theme dir
- all of my `.sty` files for beamer generation
当我单击 Knit
(或 运行 render()
)时,自定义 .sty
文件用作模板。