1

私は自分のtexファイルをコンパイルするためにこの関数を持っています:

function! CompileTex()
    silent write!
    call setqflist([])
    echon "compiling with arara ..."
    exec 'lcd %:h'

    if expand("%:p") =~# '\(figuras\|figures\)'
        let mainfile = fnameescape(expand("%:p"))
    else
        let mainfile = fnameescape(Tex_GetMainFileName())
    endif
    let &l:makeprg = 'arara -v ' . mainfile
    silent make!

    if !empty(getqflist())
        copen
        wincmd J
    else
        cclose
        redraw
        echon "successfully compiled"
    endif

endfunction

最初の条件は、図を作成するときに、メイン ファイルがあっても現在のバッファーをコンパイルしたいためです。ただし、「図」を含むパスで関数を呼び出すと、

Error detected while processing function CompileTex:
line 4:
E499: Empty file name for '%' or '#', only works with ":p:h": lcd %:h

mainfile変数は、必要に応じて現在のバッファーではなく、メインの tex ファイルに設定されます。

4

1 に答える 1

1

エラーメッセージが示唆するように試して、「lcd %:h」を「lcd %:p:h」に変更してください。

また、:exec は必要ありません。直接書くだけです。これはexコマンドです:

function! CompileTex()
    silent write!
    call setqflist([])
    echon "compiling with arara ..."
    lcd %:p:h
    ...
    etc.
于 2013-10-23T14:59:53.203 に答える