问题描述
输出格式为 beamer
的 R 降价演示可以使用
- Classical LaTex beamer themes 例如 copenhagen 或 Madrid 或采用自定义投影仪主题。
-
模板,即
template.tex
-
包括,例如
in_header: preamble.tex
、before_body: before_body.tex
和after_body: after_body.tex
可以通过 YAML-header 在 rmarkdown::beamer_presentation
中实现,如下所示:
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 标头中采购此模板不会导致演示文稿看起来与直接使用 LaTex 生成并应用自定义主题的任何投影仪演示文稿太接近。
例如,在 beamerouterthemeTHEMENAME.sty
中定义了一个新的 titleframe
,然后可以在 LaTex 演示文稿的开头使用 \titleframe
调用它。
我没有成功地在 rmarkdown::beamer_presentation
中应用这个自定义框架类型。
问题二:在 LaTex beamer theme
中应用 rmarkdown::beamer_presentation
,修改或增强演示文稿的内容
- 必须适应或
- 从
beamer theme
移动到template.tex
和includes
这样它们就可以像在 LaTex 中一样应用于 rmarkdown 中的演示文稿?
问题三: 自定义 theme
、template.tex
和 includes
的最终文件是否可以移动到子文件夹中为了使演示文件夹更整洁,并且仍然可以正确加载
MWE 和遗留问题
- 不能使用
beamerouterthemeTHEMENAME.sty
中定义的以下框架模板:\titleframe
、\tocframe
、\closingframe
- 在
beamerouterthemeTHEMENAME.sty
中定义的脚注:
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,xshift=8.3mm,yshift=-8.6mm] {
\includegraphics[height=3.8mm]{img/my_logo}
};
\end{tikzpicture}
}
\setbeamertemplate{footline}{}
\begin{frame}[noframenumbering]
\begin{tikzpicture}
\useasboundingBox (0,\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,\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
和相关文件来创建您的自定义投影台。我使用 RStudio 作为我的 R
IDE,我编写了一个“插件”,它允许我生成一个新的自定义投影仪演示文稿,就像您生成任何其他新文档一样:即,文件 -> 新文件 -> 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
文件用作模板。