vim-latex编辑多合一文件时的一键编译
在使用vim
或nvim
编译latex
文件时,对于单个源文件,自然使用vim-latex
插件足够应对,但是对于一个多合一文件,比如说一本书,这里会有一个主文件,然后各个章节分开来写,但是每次写一部分后都要切换到主文件编译,然后再回到当前章节文件编辑,这显然是十分低效率的。于是研究使用一键编译,在多合一文件时能够直接编译主文件,设计思路是:
建立一个文件夹,. 例如:
特殊函数/特殊函数.tex
绑定'F10'映射到编译命令,使用shell命令截取文件夹的名称,也就获得了主文件的名称,进而直接编译就可以了,文件夹内的其他子文件就不用再管了。
映射设置,位于'~/.config/nvim/lua/plg/vim-latex.lua`中,相关部分设置为:
1
2
3
4
5
6
7
8
9
10
11
12
13
14--绑定快捷键
vim.api.nvim_create_autocmd("FileType",{
pattern = "tex",
callback = function()
-- 配置F4打开模板
vim.api.nvim_set_keymap("n", "<F4>", ":TTemplate<CR>", {noremap = true, silent = true})
-- 配置pdflatex编译,原vim-latex中使用\ll 默认 xelatex 编译
vim.api.nvim_set_keymap("n", "<F6>", [[<cmd>!pdflatex % <CR>]], {noremap = true, silent = true})
-- 配置F8编译 aux辅助文件,直接根据数据库生成文献引用, 注意使用%:t:r 截取文件名
vim.api.nvim_set_keymap("n", "<F8>", [[<cmd>!bibtex %:t:r.aux <CR>]], {noremap = true, silent = true})
-- 配置F10编译多合一文件时,以当前目录名为主文件,以节省时间
vim.api.nvim_set_keymap("n", "<F10>", [[<cmd>!xelatex $(echo $PWD|awk -F"/" '{print $NF}').tex <CR>]], {noremap = true, silent = true})
end
})多合一文件的结构参考
特殊函数 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62\documentclass[a4paper,fontset = windows]{ctexbook}
\usepackage{xeCJKfntef}
\usepackage[svgnames]{xcolor}
\usepackage[margin=2cm]{geometry}
\usepackage{tikz}
\usetikzlibrary{patterns}
\usepackage{float}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{mathtools}
\usepackage{amsthm}
\usepackage{amsmath}
\usepackage{physics}
\usepackage{multicol}
\usepackage{lineno}
%\usepackage{mathpazo}
\usepackage[
pdfborder=0 0 0,
bookmarksnumbered=true
]{hyperref}
\usepackage[user=teacher]{cexam}
\usepackage{colornote}
\usepackage[fontwarning=off]{ctrlwarning}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
%\usepackage{doc}
%\usepackage{draftwatermark}
%\SetWatermarkText{冯振华}
\includeonly{
Gamma函数,
Reimannζ函数,
常系数线性微分方程,
特殊函数的微分解法,
积分变换,
特殊函数的积分解法,
Whittaker,
椭圆函数,
不等式高级水平必备,
线性代数,
张量分析,
附录,
}
\begin{document}
%\title{\Huge 特殊函数新解}
%\author{ 冯振华}
%\date{2020年12月3日}
%\maketitle
\input{coverpage}
\tableofcontents
\include{Gamma函数}
\include{Reimannζ函数}
\include{常系数线性微分方程}
\include{特殊函数的微分解法}
\include{积分变换}
\include{特殊函数的积分解法}
\include{Whittaker}
\include{椭圆函数}
\include{不等式高级水平必备}
\include{线性代数}
\include{张量分析}
\include{附录}
\end{document}
注意:在绑定到F10
的编译命令中,本来应当借助于vimscript的内置变量,但是%:h
返回值是当前目录的缩写.
,
而我需要的是和主文件同名的文件夹名,同时也没有使用shell
截取字符串的方法,因为##
或%
都被vimscript解析成它的命令用来替换,所以直接使用了awk
来截截取文件夹名,从而也获得了主文件的名称。同时注意,由于使用了主文件/主文件.tex
的命名方式,在多文件latex
的编辑过程中,应当遵守这个规定命名。同时键位F9
已经分配给了nabla
插件,用来显示公式,所以此处多合一编辑分配了最后一个键位F10
。