真的不知道从哪里开始。我已经安装了最新的 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
等。
最后从第 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}
到你的序言中来生成同步所需的数据。