【漫漫科研路\LaTeX】使用Vim撰寫科研論文

工欲善其事,必先利其器。

本文介紹如何使用Vim作爲編輯器進行科研工作。一般來說,在學術界,使用Vim來寫論文的人應該很少。即使是在工程界,大部分也都是使用的是各種IDE,使用Vim來編寫代碼的也屬少數。大多數科研工作者一般都是使用WinEdtLyxTeXstudio等集成IDE,其中Lyx所見即所得的效果比較好。

我最早接觸LaTeX是在大二暑假數學建模的時候,當時是使用的WinEdt。後來大四畢業設計的時候,果斷選擇LaTeX來編寫畢業論文。讀博之後,實驗室普遍推薦用Lyx,我還是用的WinEdt。一方面,用的順手了比較熟悉;另一方面,論文提交的時候有的要求LaTeX源代碼,使用Lyx的話還得轉換。又過了一年,偶然間發現了Sublime Text這款比較好的編輯器,於是想着使用Sublime+TexLive+SumatraPDF的組合,並安裝了相關插件。相比於WinEdt,使用Sublime Text3寫論文有兩大好處:

主題可自由選擇,語法高亮清晰,可讀性好
可視化效果好,鼠標懸停在行間公式或圖片處既可以預覽

又過了兩年,決定以後去工程界發展,開始學習熟悉所謂的編輯器之神,便考慮將所有的科研任務使用Vim中使用,這其中就包括了C/C++,LaTeX,Python文件等編輯及運行。下圖給出了使用Vim編寫論文的基礎環境:
在這裏插入圖片描述


下面我通過介紹一些寫作比較好用的插件和相關的vimrc配置,來說說使用Vim進行論文編寫的一些特點:

lervag/vimtex插件

vimtex是寫LaTeX的主要插件,具體使用可以在Vim中輸入命令 :help vimtex,其中最主要的命令如下:

  • \ll :編譯.tex文件;

  • \lv: 查看生成的pdf文件,正向索引,即會用黃色高亮PDF中對應光標在源文件的位置。反向索引:鼠標焦點在PDF,按下快捷鍵command(Ctrl)+shift,單機或者雙擊鼠標;
    在這裏插入圖片描述
    正向索引:輸入:\lv即可得下圖:
    在這裏插入圖片描述

  • \lc: 清除編譯過程中產生的中間文件,有時編譯錯誤的時候需要清除這類文件

  • \lt: 打開論文中的label目錄,繼而可以根據label進行跳轉,如下圖所示:
    在這裏插入圖片描述
    具體在.vimrc的配置如下:

"----------------Configuration for LaTeX---------------"
"Type help vimtex for detailed information
let g:tex_flavor='latex'
let g:vimtex_view_method='skim' "Use Skim as the pdf viewer
let g:vimtex_view_automatic=1
let g:vimtex_quickfix_mode=2
let g:vimtex_quickfix_autoclose_after_keystrokes=1
set conceallevel=2
let g:tex_conceal='abdmg'
let g:vimtex_quickfix_autojump=1
let g:vimtex_compiler_latexmk = {
    \ 'options' : [
    \   '-xelatex',
    \   '-verbose',
    \   '-file-line-error',
    \   '-synctex=1',
    \   '-interaction=nonstopmode',
    \ ],
    \}

let g:vimtex_complete_ignore_case=1
let g:vimtex_complete_close_braces=1

"In insert mode show the details, show the math equations othewise
autocmd FileType tex inoremap jk <esc>:set conceallevel=2<cr>
autocmd FileType tex nnoremap i :set conceallevel=0<cr>i
autocmd FileType tex nnoremap s :set conceallevel=0<cr>s
autocmd FileType tex nnoremap a :set conceallevel=0<cr>a
autocmd Filetype tex setlocal nofoldenable

"-------set the shortcuts for compiling, viewing, and cleaning .tex files
autocmd FileType tex nmap <leader>b  \ll
autocmd FileType tex nmap <leader>v \lv
autocmd FileType tex  nmap <leader>c \lc
autocmd FileType tex nmap <leader>t \lt

xuhdev/vim-latex-live-preview 插件

該插件可以實現實時預覽,但是目前來說,我使用skim和zathura閱讀器效果都不太好,容易出現卡頓現象。該插件在.vimrc的配置如下:

"----------Settings for xuhdev/vim-latex-live-preview
autocmd Filetype tex setl updatetime=15 "To set the update time for live view
let g:livepreview_previewer='open -a skim'

若要使用該功能可以在Vim輸入命令 :LLPStarPreview


sirver/ultisnipshonza/vim-snippets自定義代碼塊插件

其中,ultisnips需要自己定義替代規則,而vim-snippets提供了常用的一些代碼塊。對於不同類型的文件都有不同的.snippets,比如tex.snippets文件中就是關於LateX文件的一些常用代碼塊,其目錄位於/Users/tengweitw/.vim/bundle/vim-snippets/UltiSnips/tex.snippets (MacOS系統)。查看tex.snippets 文件,我們可以看到幾個科研寫作中比較常用的代碼塊:

  • 在插入模式下,在句首輸入b或者begin之後按Tab鍵,會補全整個\begin…\end環境
    在這裏插入圖片描述
  • 在插入模式下,輸入fig後按Tab鍵,會補全整個插入圖片的代碼段
    在這裏插入圖片描述
  • 在插入模式下,輸入sec或者sub後按Tab鍵,會補全章節\section{}(\subsection{})並添加label
    在這裏插入圖片描述
    該文件中還有一些其他快捷代碼塊,都比較好理解,可自行查看。當然我們也可以自己在這個文件中添加自定義的代碼塊,我最常用的就是插入行內公式代碼塊,添加如下代碼即可:
snippet mk "Math" wA
$${1}$`!p
if t[2] and t[2][0] not in [',', '.', '?', '-', ' ']:
    snip.rv = ' '
else:
    snip.rv = ''
`$2
endsnippet

該代碼塊的作用是,當我們輸入mk時,自動添加行內公式環境,並且鼠標位於$$中間。這裏不需要按Tab鍵,因爲代碼中的A(uto)意味着自動補全。注意這裏使用mk是因爲以mk爲首的英文字母不常見。 關於如何自定義代碼塊,請讀者自行網上搜索。


發佈了171 篇原創文章 · 獲贊 129 · 訪問量 68萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章