如何在使用 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演示文稿可以利用

可以在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.stybeamercolorthemeTHEMENAME.stybeamerfontthemeTHEMENAME.stybeamerinnerthemeTHEMENAME.stybeamerouterthemeTHEMENAME.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

以便它们像在 LaTex 中一样应用于 rmarkdown 中的演示文稿?

问题三: 自定义themetemplate.texincludes的最终文件可以吗移动到 sub-folder 以更整洁地组织演示文稿文件夹,并且仍能正确加载

MWE 和剩余问题

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 文件用作模板。