Macvim 和 Skim 同步不起作用

Macvim 和 Skim 同步不起作用

真的不知道从哪里开始。我已经安装了最新的 macvim 和 skim。将 mvim 放在路径中。设置 skim 与默认 macvim 同步(还尝试了一些自定义的东西)。但是无论我做什么它都不会同步。不过 skim 和 textmate 之间可以同步。

如果有人能给我指明方向我将非常感激。

答案1

我认为您需要使用选项--synctex=1。实际上,在 Mac 上最流行的编辑器中,默认使用的值为 1。要将 SyncTeX 用于您的文档,只需使用选项--synctex=1或放置\synctex=1在文档前言中来调用 pdflatex。

有关 MacVim 与 Skim 同步的更多说明,你可以阅读本文MacVim_Skim

备注 1:类似 egreg 所写的内容\usepackage{pdfsync}随着最新的 pdftex 引擎的推出已经过时。

备注2:TextMate 1不是免费的,但与Skim同步很好。

备注3:TeXShop 两种方法的同步性更好。

备注 4:新的免费编辑器(目前)仅适用于 Mac:特克斯尼克。这是一个了不起的项目管理器,但我不知道是否可以同步。快速尝试后,tex -> pdf 的同步没有问题,但 pdf -> tex 存在问题。

答案2

我意识到这是一个老问题;但也许你仍然有这个问题。

我刚才也遇到了同样的问题,最后通过直接编辑文件compiler.vim解决了它~/.vim/ftplugin/latex-suite。我在这里和那里花了几个echo时间,我注意到它正在使用条件分支来选择一个用于UNIX的编辑器,而不是选择用于Mac OS X的Skim。我最终删除了它启动查看器的所有其他可能性,尽管您可以更优雅/更好地保留兼容性,方法是找出哪个参数导致它采用错误的条件分支,然后重新编码/调试。

作为参考,这里是我修复的~/.vim/ftplugin/tex.vim和相关的部分~/.vim/ftplugin/latex-suite/compiler.vim(这取代了功能Tex_ForwardSearchLaTeX();我的功能Tex_ViewLaTeX()立即起作用了,但您可能需要类似地修改该功能)。

    " this is mostly a matter of taste. but LaTeX looks good with just a bit
    " of indentation.
    set sw=2
    " TIP: if you write your \label's as \label{fig:something}, then if you
    " type in \ref{fig: and press <C-n> you will automatically cycle through
    " all the figure labels. Very useful!
    set iskeyword+=:


    let g:tex_flavor = 'latex'

    let g:Tex_MultipleCompileFormat = 'pdf,aux'
    let g:Tex_TreatMacViewerAsUNIX = 0
    let g:Tex_DefaultTargetFormat = 'pdf'
    let g:Tex_CompileRule_pdf = 'pdflatex -synctex=1 --interaction=nonstopmode $*'
    let g:Tex_ViewRule_pdf = 'Skim'

    " Command-R will write, compile, and forward search--thanks to
    " http://reference-man.blogspot.com/2011/09/fully-integrated-latex-in-macvim.html
    " preview, switch back to main window
    map <D-r> :w<cr><leader>ll<leader>ls
    imap <D-r> <ESC><D-r>



    let g:Tex_IgnoredWarnings ='
          \"Underfull\n".
          \"Overfull\n".
          \"specifier changed to\n".
          \"You have requested\n".
          \"Missing number, treated as zero.\n".
          \"There were undefined references\n".
          \"Citation %.%# undefined\n".
          \"Marginpar on page %.%# moved\n".
          \"\oval, \circle, or \line size unavailable\n"' 

相关的补充内容有表格等等let g:tex

Skim 设置如下,假设如您所说,您将 mvim 复制到该位置或将其添加到某个位置$PATH等。

Skim 设置的屏幕截图

最后从第 324 行开始进行更改compiler.vim

    function! Tex_ForwardSearchLaTeX()
        if &ft != 'tex'
            echo "calling Tex_ForwardSeachLaTeX from a non-tex file"
            return
        endif

        if Tex_GetVarValue('Tex_ViewRule_'.s:target) == ''
            return
        endif

        let viewer = Tex_GetVarValue('Tex_ViewRule_'.s:target)
        let s:origdir = fnameescape(getcwd())

        let mainfname = Tex_GetMainFileName(':t')
        let mainfnameRoot = fnamemodify(Tex_GetMainFileName(), ':t:r')
        let mainfnameFull = Tex_GetMainFileName(':p:r')
        " cd to the location of the file to avoid problems with directory name
        " containing spaces.
        call Tex_CD(Tex_GetMainFileName(':p:h'))

        if viewer =~ "^ *Skim"
            let execString = 'silent! !/Applications/Skim.app/Contents/SharedSupport/displayline '.
                \ line('.').' "'.mainfnameFull.'.'.s:target.'" "'.expand("%:p").'"'

        elseif viewer =~ "^ *PDFView"

            let execString = 'silent! !/Applications/PDFView.app/Contents/MacOS/gotoline.sh '.
                \ line('.').' "'.mainfnameFull.'.'.s:target.'" "'.expand("%:p").'"'

        elseif viewer =~ "^ *TeXniscope"

            let execString = 'silent! !/Applications/TeXniscope.app/Contents/Resources/forward-search.sh '.
                \ line('.').' "'.expand("%:p").'" "'.mainfnameFull.'.'.s:target.'"'

        endif

        call Tex_Debug("Tex_ForwardSearchLaTeX: execString = ".execString, "comp")
        execute execString
        if !has('gui_running')
            redraw!
        endif

        exe 'cd '.s:origdir
    endfunction

再次,显然,这只是一种快速而肮脏的编辑方式compiler.vim,一旦它起作用,我就不再关心了,所以你可以通过不删除那么多条件的情况来使它们更兼容,或者通过完全跳过条件来使它们更优雅...我只是担心现在它起作用了,以免给它带来厄运 ;)

注意:如果您需要打开和编辑这些文件的分步说明,请发表评论...相信我,我对互联网上相关手册/帮助文件假设您已经知道如何使用您显然不熟悉的软件感到沮丧,我很乐意尽可能详细地引导您完成它,以免您再次感到沮丧。

注 2:我相信这是我对默认安装所做的全部更改,但由于我为此付出了很多努力,我本可以省略一项。如果这对您不起作用,请告诉我,我会研究我可能还更改了哪些内容。

答案3

我必须设置以下内容才能.vimrc正常<leader>lv工作:

autocmd FileType tex call Tex_SetTeXCompilerTarget('View','pdf')                                                                                                                     

我希望它能帮助别人:)

答案4

您可能需要添加

\usepackage{pdfsync}

到你的序言中来生成同步所需的数据。

相关内容