我知道以前有人遇到过这种问题,但我却无法在任何地方找到解决问题的方法。
首先,使用 调用Tex_ForwardSearchLatex()
不起作用<leader>ls
。命令窗口弹出并消失(我想这是从 shell 调用的查看器),但什么也没发生。如果查看器尚未打开,则此操作不会打开它。
所以我尝试了一个自定义函数此主题,结果相同。
function! SyncTexForward()
let execstr = "silent !okular --unique %:p:r.pdf\\#src:".line(".")."%:p &"
exec execstr
endfunction
nmap <Leader>f :call SyncTexForward()<CR>
此解决方案不适用于子\input{}
文档\include{}
,但我还没做到。我只是试图让主文档正常工作。
然后我尝试了修改版本自定义函数据称也适用于子文档,但同样无济于事。
function! SyncTexForward()
let execstr = "silent !okular --unique %:p:r.pdf\#src:".line(".")."%:p &"
exec execstr
endfunction
nmap <Leader>f :call SyncTexForward()<CR>
我以为这可能是我的文件/目录名称中的空格问题,但事实并非如此。我尝试在根目录下使用一个名为 test.tex 的文件,结果相同。SyncTex 已启用,查看器位于路径上。问题很可能出在后面的\#
部分(即关键部分),因为:silent !okular --unique %:p:r.pdf
它按预期工作。
我使用的是 Windows 7 和 Okular,虽然我以前也尝试过 SumatraPDF,结果完全一样。坦率地说,我不认为问题出在查看器上。以下是我在我的tex.vim
let g:Tex_DefaultTargetFormat='pdf'
let g:Tex_CompileRule_dvi='latex -synctex=1 --interaction=nonstopmode --src-specials $*'
let g:Tex_CompileRule_pdf='pdflatex -synctex=1 -interaction=nonstopmode $*'
let g:Tex_ViewRule_pdf='okular'
答案1
答案2
我遇到了同样的问题(命令提示符窗口会闪烁),并通过将以下内容添加为“else”语句来处理 Windows 计算机上的所有异常,从而使前向搜索正常工作。请注意,该补丁几乎已经起作用,除了slash...
Vim 中的一些设置可能会调整 Vim 函数fnamemodify
处理单引号的方式。
let mainfnameRoot = fnamemodify(Tex_GetMainFileName(), ':t:r')
let execString = 'silent! !start '. viewer. ' -reuse-instance -forward-search ' . expand('%:p') . ' ' . line('.') . ' ' . mainfnameRoot . '.pdf'
这是完整的图片,因为源文件略有改变。
function! Tex_ForwardSearchLaTex()
....
....
....
if (has('win32'))
if (viewer =~? '^ *yap\( \|$\)')
let execString .= Tex_Stringformat('start %s -s %s%s %s', viewer, linenr, sourcefile, mainfnameRoot)
" SumatraPDF forward search support added by Dieter Castel:
elseif (viewer =~? "^sumatrapdf")
" Forward search in sumatra has these arguments (-reuse-instance is optional):
" SumatraPDF -reuse-instance "pdfPath" -forward-search "texPath" lineNumber
let execString .= Tex_Stringformat('start %s %s -forward-search %s %s', viewer, target_file, sourcefileFull, linenr)
""""""""""""""""""""""""""""""""""""""""""""""""
""" THis is the new part
else
let mainfnameRoot = fnamemodify(Tex_GetMainFileName(), ':t:r')
let execString = 'silent! !start '. viewer. ' -reuse-instance -forward-search ' . expand('%:p') . ' ' . line('.') . ' ' . mainfnameRoot . '.pdf'
endif
....
....