Vim-Latex:向前搜索不起作用

Vim-Latex:向前搜索不起作用

我知道以前有人遇到过这种问题,但我却无法在任何地方找到解决问题的方法。

首先,使用 调用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

注意:以下内容针对的是 Sumatra,而不是 OP 所问的 Okular。不过,我确信 Okular 的问题与 Sumatra 的问题相同。

我认为问题很可能出在你的 Vim-Latex 版本上。我用这个修复了 Sumatra 的前向搜索问题修补以及对它的支持这里

这个补丁似乎不在最新版本的 Vim-Latex 中,补丁提供的 diff 文件也不在(这意味着补丁实用程序什么也没做)。我不得不手动将补丁应用到我的 ftplugin/latex-suite/compile.vim 文件中,但之后它运行正常。

答案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
    ....
    ....

相关内容