说明
本方案参考了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源码文件位置中。