Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
203 views
in Technique[技术] by (71.8m points)

latex - How to employ a custom beamer theme, template and includes in a beamer presentation generated with R markdown?

R markdown presentations with output format beamer can make use of

  • Classical LaTex beamer themes such as Copenhagen or Madrid or employ custom beamer themes.
  • Templates , i.e. a template.tex
  • Includes, e.g. in_header: preamble.tex, before_body: before_body.texand after_body: after_body.tex

which can be implemented in the rmarkdown::beamer_presentation through the YAML-header as follows:

theme: "THEMENAME"
template: template.tex
includes:
  in_header: preamble.tex
  before_body: before_body.tex
  after_body: after_body.tex

Question I: What are the specific purposes of these files listed above?

I got provided with a custom themes for beamer, containing beamerthemeTHEMENAME.sty, beamercolorthemeTHEMENAME.sty, beamerfontthemeTHEMENAME.sty, beamerinnerthemeTHEMENAME.sty, beamerouterthemeTHEMENAME.sty. Sourcing this template within my YAML header does not lead to the presentation looking too close to any beamer presentation generated straight with LaTex and applying the custom theme.

As an example, in the beamerouterthemeTHEMENAME.sty, a new titleframe is defined, which can then be called at the beginning of the LaTex presentation with itleframe. I did not succeed in applying this custom frame-type in the rmarkdown::beamer_presentation.

Question II: Applying a LaTex beamer theme in an rmarkdown::beamer_presentation, which contents to modify or enhance the presentation

  • would have to be adapted or
  • moved from the beamer theme to template.tex and includes

such that they are applied to the presentation in rmarkdown just as in LaTex?

Question III: Can the final files of the custom theme, the template.tex, and the includes be moved to a sub-folder for the neater organization of the presentation folder and still be loaded correctly

MWE & issues remaining

  • Can not use the following frame templates defined in beamerouterthemeTHEMENAME.sty: itleframe, ocframe, closingframe
  • footline defined in beamerouterthemeTHEMENAME.sty:
    • Succeeded in linking the page numbers to the appendix .
    • Would be nice to link the logo to the table of contents slide

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}

	ableofcontents
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

enewcommand{insertshortinstitute}{eamer@shortinstitute}
makeatother

% Title frame
def	itlefigure{img/my_bg}

ewlength	itleboxwidth
setlength{	itleboxwidth}{0.33	extwidth}

ewcommand{	itleframe}{%
    {
        setbeamertemplate{background}{
            egin{tikzpicture}
            useasboundingbox (0,0) rectangle(	hepaperwidth,	hepaperheight);
            ifx	itlefigureempty
                fill[titlebgcolor] (6.3mm,6.4mm) rectangle (	hepaperwidth-8.3mm,	hepaperheight-13mm);
            else
                
ode at (current page.center) [anchor=center,yshift=-3.5mm] {includegraphics[width=	hepaperwidth-19mm]{	itlefigure}};
            fi
            
ode 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
            }; 
            
ode 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}{}
        egin{frame}[noframenumbering]
            egin{tikzpicture}
                useasboundingbox (0,0) rectangle(	hepaperwidth,	hepaperheight);
                
ode [
                    shift={(-11.5mm,-1.8mm)},
                    fill=titlefgcolor,
                    minimum width=0.46paperwidth,
                    minimum height=18mm,
                    anchor=west,
                    inner sep=4mm
                    ] at (current page.west) {
                        hspace*{9mm}
                        egin{minipage}{	itleboxwidth}
                            
aggedright
                            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

ewcommand{	ocframe}{%
    egin{frame}
      frametitle{Outline}
      	ableofcontents
    end{frame}
}

% Section title frame
AtBeginSection[]
{
    egin{frame}
      frametitle{Outline}
      large
      	ableofcontents[currentsection] 
    end{frame}
}


ewenvironment{closingframe}{
    setbeamertemplate{background}{
        egin{tikzpicture}
        useasboundingbox (0,0) rectangle(	hepaperwidth,	hepaperheight);
        
ode 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}
    egin{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>
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

@Samcarter_is_at_topanswers.xyz is right. This is a broad question.

The simplest response is yes, you can use the beamercolor...sty and associated files to create your custom beamer deck. I use RStudio as my R IDE and I wrote a "plugin" that allows me to generate a new custom beamer presentation just like you would generate any other new doc: i.e., File -> New file -> R Markdown -> From Template

I keep the .sty files in home directory I call customtex or something, with a tex directory and a beamer dir.

- companytex
    - tex
        - beamer [houses `.sty` files]
        - latex

When I use From Template in RStudio, these files get copied into the specific location I determine, along with the new .Rmd file that is created.

- reportdir
    - .Rmd file
    - figure dir
    - resources dir
        - images dir
        - theme dir
            - all of my `.sty` files for beamer generation

When I click the Knit (or otherwise run render()), the custom .sty files are used as the template.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...