说明
本方案参考了StackExchange Answer
1. LaTeX编译时打开SyncTeX支持
编译时打开SyncTeX支持才能够在tex与PDF之间进行跳转。
例如使用pdflatex时:
| 1
 | pdflatex -synctex=1 file.tex
 | 
或者使用latexmk时:
| 1
 | latexmk -xelatex -synctex=1 file.tex
 | 
上述选项会生成一个file.synctex.gz文件。
2. Tex源码定位到PDF(Tex-to-PDF)
Okular支持打开PDF时指定到行位置,将下面的函数添加到~/.vimrc中:
对于vim-tex插件:
| 1
2
3
4
5
6
7
8
9
 | function! OkularFind()
    let this_tex_file = expand('%:p')
    let master_tex_file = b:vimtex.tex
    let pdf_file = fnamemodify(master_tex_file, ':p:r') . '.pdf'
    let line_number = line('.')
    let okular_cmd = 'okular --noraise --unique "' . pdf_file . '#src:' . line_number . ' ' . this_tex_file . '"'
    let s:okular_job = job_start(['/bin/bash', '-c', okular_cmd])
endfunction
nnoremap <leader>f :call OkularFind()<cr>
 | 
对于vim-latex插件:
| 1
2
3
4
5
6
7
8
9
 | function! OkularFind()
    let this_tex_file = expand('%:p')
    let master_tex_file = Tex_GetMainFileName()
    let pdf_file = fnamemodify(master_tex_file, ':p:r') . '.pdf'
    let line_number = line('.')
    let okular_cmd = 'okular --noraise --unique "' . pdf_file . '#src:' . line_number . ' ' . this_tex_file . '"'
    let s:okular_job = job_start(['/bin/bash', '-c', okular_cmd])
endfunction
nnoremap <leader>f :call OkularFind()<cr>
 | 
其中,二者的区别是,对于多文件的项目如何找到Tex项目的主文件:
| 1
2
3
4
 | # vim-tex
let master_tex_file = b:vimtex.tex
# vim-latex
let master_tex_file = Tex_GetMainFileName()
 | 
在gvim下将光标移动到想要预览的内容,通过\f来打开Okular并指定到要预览的内容。
3. PDF定位到Tex源码(PDF-To-Tex)
在Okular中设置以下:
- 设置-- Settings
- 配置Okular-- Configure Okular
- 编辑器-- Editor
- 选择自定义文本编辑器-- Custom Text Editor
- 在命令框中填入下列命令-- Input the following command
在浏览模式下,使用快捷键Shift+鼠标左键单击想要查看源码的内容,即可跳转到相应的Tex源码文件位置中。