基于neovim和latex beamer宏包搭建免费ppt制作工具

简介: ## beamer和powerpoint的不同 我们经常需要用ppt这一形式来展示我们的工作成果,但众所周知,微软的powerpoint是收费软件,且价格不菲,wps的画图功能能用,但需要保存成其他格式,比如pdf时。 是需要收费的。而基于latex的beamer宏包,我们可以使用编辑器写latex代码,用latex的编译工具编译成适合展示的ppt。当然ppt是pdf形式的,并

beamer和powerpoint的不同

我们经常需要用ppt这一形式来展示我们的工作成果,但众所周知,微软的powerpoint是收费软件,且价格不菲,wps的画图功能能用,但需要保存成其他格式,比如pdf时。  
是需要收费的。而基于latex的beamer宏包,我们可以使用编辑器写latex代码,用latex的编译工具编译成适合展示的ppt。当然ppt是pdf形式的,并且不太适合做  
有复杂效果的ppt(不是不可以,只是需要另外做GIF,比较麻烦)。
本文旨在基于neovim和latex,使用latex的beamer宏包,搭建使用代码写ppt,并用skim实时预览的ppt制作环境,同时支持双向搜索跳转(即可以在vim中按快捷键跳转到  
光标所在代码编译生成的ppt的对应页,同时支持在ppt中点击鼠标,定位到vim中对应代码)。

具体流程

1、依赖的第三方工具:开源的pdf阅读、编辑软件skim,latex编译及中文环境。

a. 首先安装skim。

这个软件支持brew方式安装,但现在的release版本有bug,正向跳转有问题,所以建议到官网下载补丁版。  
安装好skim后,需要如下设置:  
打开偏好设置->同步,选择自定义,命令写nvim,参数写

```
--headless -c "VimtexInverseSearch %l '%f'" 
```

b. 然后安装latex及中文环境。

这个软件使用brew install mactex --cask命令安装即可,装好后在~目录下新建配置文件.latexmkrc,内容为   
$pdf_mode=5;
$xelatex = "xelatex -synctex=1 -interaction=nonstopmode -file-line-error %O %S";
这个配置文件主要作用是指定编译使用xeletex,并支持持续编译模式。
latex的beamer宏包有一些默认的主题,如果不满意,可以到网上下载第三方主题,拷贝到latex目录下,执行sudo texhash将主题等内容更新到latex库里。

2、vim配置ppt实时编译及预览用到的插件只有一个,但需要搭配snippets软件使用,方便插入大段固定代码。

a.packer.nvim安装方式:

  • use {'lervag/vimtex', event = 'BufEnter'}
  • use {'honza/vim-snippets', event = 'BufEnter'}
  • use {'SirVer/ultisnips', ft = {'tex'}, event = 'BufEnter'}

b.vim-plug安装方式:

  • Plug 'lervag/vimtex'
  • Plug 'honza/vim-snippets'
  • Plug 'SirVer/ultisnips'

3、安装完插件后需要做的配置

注意:其他配置按vimtex github主页的说明即可,但要支持双向搜索,需要加如下设置:
```
    let g:vimtex_view_general_viewer = '/Applications/Skim.app/Contents/SharedSupport/displayline'
    let g:vimtex_view_general_options = '-g -r @line @pdf @tex'
    augroup vimtex_mac
        autocmd!
        autocmd User VimtexEventCompileSuccess call UpdateSkim()
    augroup END
    function! UpdateSkim() abort
        let l:out = b:vimtex.out()
        let l:src_file_path = expand('%:p')
        let l:cmd = [g:vimtex_view_general_viewer, '-r']
        if !empty(system('pgrep Skim'))
            call extend(l:cmd, ['-g'])
          endif
        call jobstart(l:cmd + [line('.'), l:out, l:src_file_path])
    endfunction
```
这段代码调用了skim.app里的一个bash脚本,这个脚本实际调用了一段applescript脚本来支持定位到skim中的位置。

4、开始写我们的ppt

\documentclass[aspectratio=169,fontset=windows,UTF-8,10pt,xcolor={usenames,dvipsnames,svgnames,x11names}]{beamer}
\usepackage[space]{ctex}
\usetheme{cleancode}
\usetikzlibrary{shadows}
\usepackage{tikz}
\usepackage{bookmark}
\usepackage{diagbox}
\usepackage[absolute,overlay,showboxes]{textpos}
\usepackage{indentfirst} 

\begin{document}
%首页
{
    \usebackgroundtemplate{\tikz[overlay,remember picture]\node[opacity=1]at (current page.center){\includegraphics[height=\paperheight,width=\paperwidth]{"/Users/shiyaoliang/Documents/a.管控资料文件/c.ata/a.nvim/c.png/a.首页.png"}};}
    \begin{frame}[fragile]
        \begin{center}
        \Large 
            基于lsp和neovim的半隔离网络环境\\
                     c++开发环境搭建
            \\[4\baselineskip]
        \small
             钟吕---块存储
        \end{center}
    \end{frame}
}

%目录
\section[Contents]{}
\frame 
{
    \frametitle{\secname}
    %\tableofcontents[pausesections]
    \tableofcontents
}

\AtBeginSection[] 
{
    \frame
  
  
    
    {
        \frametitle{Contents}
        \tableofcontents[current,currentsection]
    }
}

\usebackgroundtemplate{\tikz[overlay,remember picture]\node[anchor=45]at ([xshift=10ex,yshift=-5ex] current page.45) {\includegraphics[height=0.1\paperheight,width=0.2\paperwidth]{"/Users/shiyaoliang/Documents/a.管控资料文件/c.ata/a.nvim/c.png/c.角标.png"}};}
\section{lsp简介}
\begin{frame}[fragile]
    \frametitle{lsp简介}
    \setlength{\parindent}{2em}
    近两年基于language server protocol(后文简称lsp)的language server和language client都在持续发展,已经到了可以使用的程度。
    这不仅使vscode的功能更加强大,也造福了其他功能可扩展的编辑器。
    对于vim而言,受益于lsp,可以拥有和vscode完全一样的语法检测和定义跳转等的体验,并且更加轻量。
    \\[1\baselineskip]
    现在ata上关于lsp介绍的文章还很少,本文旨在基于vim的lsp,在开发机的半网络隔离环境下,搭建C++开发环境。
\end{frame}

%尾页
{
    \usebackgroundtemplate{\tikz[overlay,remember picture]\node[opacity=1]at (current page.center){\includegraphics[height=\paperheight,width=\paperwidth]{"/Users/shiyaoliang/Documents/a.管控资料文件/c.ata/a.nvim/c.png/b.尾页.png"}};}
    \begin{frame}
    \end{frame}
}
\end{document}
  
  

5、按vimtex默认快捷键ll,开启编译并实时预览

效果:
test
test
test

6、双向搜索定位方法

  • 正向定位:在vim中输入快捷键:lv,ppt中的位置会定位到vim中光标所在位置表示的页数。
  • 反向定位:在skim中按住shift+command,并切鼠标点击ppt内容部分,vim中的光标跳转到该页ppt对应的代码位置。
相关文章
|
8月前
|
程序员 Linux iOS开发
一款比Typora更简洁优雅的Markdown编辑器神器(完全开源免费)
一款比Typora更简洁优雅的Markdown编辑器神器(完全开源免费)
295 1
|
数据可视化 Android开发
XMind 2021 v11.1.2破解版使用方法
XMind 2021 v11.1.2破解版使用方法
251 0
|
2月前
Axure设计之文本编辑器制作教程
本文介绍如何在Axure中模拟Web端富文本编辑器,实现基本的文本编辑功能,包括自定义字体样式、大小、颜色及对齐方式等。通过拖入矩形、文本域等元件,添加单选框和图标,并设置相应的交互,完成文本编辑器的制作。
|
19天前
|
前端开发 C++
Marp 教程:使用 VSCode 编写专业 PPT
Marp 是一款基于 Markdown 的幻灯片制作工具,结合 VSCode 的强大编辑功能,可让你高效地创建专业 PPT。本教程将指导你如何在 VSCode 中安装 Marp 插件、配置主题和样式,并使用 Markdown 语法创建和美化幻灯片。内容包括基本结构、布局、图片与图表插入、表格制作,以及高级功能如动画效果、数学公式和代码高亮。最后,你将学会如何预览和导出幻灯片。
32 0
|
19天前
|
存储 安全 Linux
全平台免费的在线笔记本(支持markdown、mermaid)
StackEdit是一款基于浏览器的Markdown编辑器,支持跨平台使用,无需安装,可将笔记存储在gitee、github等平台上。其优势包括内容安全免费、多平台同步、离线可用、支持UML图和流程图绘制等。通过简单的步骤即可完成注册、登录和笔记创作,并能轻松实现在线共享。
41 0
|
5月前
|
前端开发 数据安全/隐私保护 Python
Python 图文:小白也能轻松生成精美 PDF 报告!
Python 图文:小白也能轻松生成精美 PDF 报告!
257 1
|
Linux 开发者 Windows
|
开发工具 对象存储 git
工具丨Typora+PicGo搭建个人笔记平台
工具丨Typora+PicGo搭建个人笔记平台
|
开发者 Python
Xmind 软件的使用 | 学习笔记
快速学习 Xmind 软件的使用
Xmind 软件的使用 | 学习笔记
|
Web App开发 搜索推荐 数据可视化
如何在 FlowUs 、Notion 等笔记软件中使用网页剪藏工具收藏内容?
提起网页剪藏,很多人首先会想起印象笔记剪藏。如今,你在谷歌等浏览器商店搜索剪藏,便会发现 OneNote、Google Keep 等多种网页剪藏插件。 对于很多用户而言,与其寄希望于在线服务,更喜欢将网页内容永久保存至自己的笔记应用之中。
746 0