Сопоставления для компиляции и просмотра документов LaTeX в Vim

Раньше я использовал плагин LaTeX-Box для компиляции и просмотра документов LaTeX с этими сопоставлениями.

Но я больше этим не пользуюсь, потому что \begin а также \end выделение (и в меньшей степени соответствие скобкам), которое нельзя отключить, делает Vim намного медленнее в больших .tex файлы.

Я знаю, как создать альтернативные отображения для компиляции .tex документы:

autocmd FileType tex nnoremap <buffer> <F2> :!latexmk -xelatex %<cr>
autocmd FileType tex inoremap <buffer> <F2> <Esc>:!latexmk -xelatex %<cr>a

Но это создаст выходные файлы в каталоге, в котором я сейчас нахожусь, а не в каталоге, где .tex файл (например, если я в ~/Desktop и я открываю в Vim файл, который находится в ~/Documentsесли я нажму F2, .pdf и все остальные файлы создаются в ~/Desktop вместо того, чтобы в ~/Documents).

Я не знаю, как создать сопоставления для просмотра скомпилированного .pdf документ.

Итак, я прошу вас помочь мне создать сопоставления, которые будут компилировать .tex файл и вид создан .pdf файл.

2 ответа

Решение

Вы можете легко изменить свои сопоставления для генерации файлов в том же каталоге, что и исходный файл с :help filename-modifiers:

augroup LaTeX
    autocmd!
    autocmd FileType tex nnoremap <buffer> <F2> :!cd %:p:h && latexmk -xelatex %<cr>
    autocmd FileType tex inoremap <buffer> <F2> <Esc>:!cd %:p:h && latexmk -xelatex %<cr>a
augroup END

Чтобы открыть сгенерированный файл с мнимым pdfviewer программа (команда сокращена для удобочитаемости):

!cd %:p:h && latexmk -xelatex % && pdfviewer %:p:r.pdf
augroup LaTeX
        autocmd!
        autocmd FileType tex nnoremap <buffer> <F2> :!cd '%:p:h' && latexmk -xelatex '%:t'<CR>
        autocmd FileType tex inoremap <buffer> <F2> <Esc>:!cd '%:p:h' && latexmk -xelatex '%:t'<CR>a
        autocmd FileType tex nnoremap <buffer> <F3> :silent !mupdf '%:p:r.pdf'&<CR>
        autocmd FileType tex inoremap <buffer> <F3> <Esc>:silent !mupdf '%:p:r.pdf'&<CR>a
augroup END

Это то, что сработало для меня. Спасибо romainl за помощь в выяснении.

Другие вопросы по тегам