如何调整 LaTex 投影仪主题以将其应用于 rmarkdown::beamer_presentation MWE.RmdbeamerthemeTHEMENAME.stybeamercolorthemeTHEMENAME.stybeamerouterthemeTHEMENAME.sty

如何解决如何调整 LaTex 投影仪主题以将其应用于 rmarkdown::beamer_presentation MWE.RmdbeamerthemeTHEMENAME.stybeamercolorthemeTHEMENAME.stybeamerouterthemeTHEMENAME.sty

我想在 LaTex beamer theme 中应用 rmarkdown::beamer_presentation。 自定义主题包含 beamerthemeTHEMENAME.stybeamercolorthemeTHEMENAME.stybeamerfontthemeTHEMENAME.stybeamerinnerthemeTHEMENAME.stybeamerouterthemeTHEMENAME.sty。 如果模板来自我的 YAML 标头,则编织演示文稿看起来与通过应用自定义主题直接从 LaTex 生成的投影仪演示文稿不太相似。

因此,要修改或增强演示文稿的 beamertheme*.sty 的哪些内容需要修改或需要从 beamer theme 中移出,例如template.texincludes*?

特别是,我正在努力使用 beamerouterthemeTHEMENAME.sty 中定义的以下框架模板:\titleframe\tocframe \closingframe

对于 beamerouterthemeTHEMENAME.sty 中定义的脚注,最好有一个从徽标到 table of contents 幻灯片的超链接(就像页码链接到 appendix)。 下面提供了一个 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,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>

解决方法

您可以对 Markdown 文档进行以下肮脏的修改:

  • 代替yaml标题,使用\AtBeginDocument{\title{MWE}\titleframe} 来抑制烦人的自动标题降价插入(它甚至不使用\maketitle,因此无法进行任何合理的修改)并添加您的自定义标题命令

  • \AtEndDocument{\begin{closingframe}lalala\end{closingframe}} 添加结束框 [用你喜欢的任何文字替换 lalala]

  • 添加 \makeatletter\beamer@ignorenonframefalse\makeatother 以抑制自动使用且不允许任何框架包装器的选项 markdown 令人讨厌

  • 你可以使用

    ``` {=latex}
    \end{frame}
    \tocframe
    \begin{frame}
    ```
    

    使用您的 \tocframe 宏,但是我认为这没有多大用处,因为降价会自动在所有合理的位置插入这样的帧(然后在所有不合理的位置插入更多,只是因为它似乎喜欢被烦人......)


---
subtitle: "Beamer presnetation with R-markdown"
institute: "some place"
date: "`r format(Sys.time(),'%B %d,%Y')`"
author: "Donald Duck"
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
    keep_tex: true 
header-includes:
  - \AtBeginDocument{\title{MWE}\titleframe}    
  - \AtEndDocument{\begin{closingframe}lalala\end{closingframe}}
  - \makeatletter\beamer@ignorenonframefalse\makeatother
---

# Random presentation

## TOC - Table of Contents {.unnumbered}

\tableofcontents
\label{contents}

``` {=latex}
\end{frame}
\tocframe
\begin{frame}
```

## Slide with Bullets

- Bullet 1
- Bullet 2
- Bullet 3

``` {=latex}
\end{frame}
\appendix
\begin{frame}
```
## Apendix

现在进入主题:

  • 如果自恐龙灭绝以来您的 tex 分布已经更新过一次,那么您就不需要 \usepackage[utf8]{inputenc}。这是当前乳胶发行版中的默认设置。 rmarkdown 也会自动插入这个。

  • 你不需要\RequirePackage{xcolor}。 beamer 不仅已经自动加载了它,而且它还将包含在这个令人讨厌的长长的不合适包列表中,rmarkdown 会自动添加到文档中。

  • \titleframe 宏还需要进行一些修改,因为主题确实滥用 \\ 换行,并且不测试标题、作者和日期宏是否实际填充。结合起来,这将失败得惊人...

  • 你可能还想为背景和标题框的字体使用不同的颜色......我在背景中混合了一点白色以使字体可见

\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]{example-image}
            }; 
            \end{tikzpicture}
        }
        \setbeamertemplate{footline}{}
        \begin{frame}[noframenumbering]
            \begin{tikzpicture}
                \useasboundingbox (0,\the\paperheight);
                \node [
                    shift={(-11.5mm,-1.8mm)},fill=titlefgcolor!50!white,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\par
                            \usebeamerfont{author}\usebeamercolor[fg]{author}\insertauthor\par
                            \usebeamerfont{date}\usebeamercolor[fg]{date}\insertdate
                        \end{minipage}          
                    };
            \end{tikzpicture}
        \end{frame}
    }
}

对于脚注,使用由您的 toc 部分创建的超链接目标

% Footline
\setbeamertemplate{footline}{
    \leavevmode%
    \hyperlink{toc---table-of-contents}{\includegraphics[width=12mm,trim=0mm 0.4mm 0mm 0mm]{example-image}}
    \hfill
    \hyperlinkappendixstart{\insertframenumber/\inserttotalframenumber}
    \vspace{3mm}
}

[我猜我在这个答案中使用 annoying 的次数表明 rmarkdown 使在普通 Beamer 文档中需要 2 秒的工作变得更加困难]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res