-- VimTeX configuration local M = {} function M.setup() -- Sioyek - cross-platform PDF viewer with vim-like keybindings vim.g.vimtex_view_method = 'general' vim.g.vimtex_view_general_viewer = 'sioyek' vim.g.vimtex_view_general_options = '--forward-search-file @tex --forward-search-line @line @pdf' -- Skim (macOS) -- vim.g.vimtex_view_method = 'skim' -- Compiler settings vim.g.vimtex_compiler_method = 'latexmk' vim.g.vimtex_compiler_latexmk = { aux_dir = 'build', out_dir = 'build', callback = 1, continuous = 1, executable = 'latexmk', options = { '-verbose', '-file-line-error', '-synctex=1', '-interaction=nonstopmode', }, } -- Auto-open viewer on compile vim.g.vimtex_view_automatic = 1 -- Quickfix settings vim.g.vimtex_quickfix_mode = 0 -- Don't open quickfix automatically -- Disable default mappings, we'll set our own vim.g.vimtex_mappings_enabled = 1 -- TOC settings vim.g.vimtex_toc_config = { split_pos = 'vert leftabove', split_width = 40, show_help = 0, } -- Fold settings vim.g.vimtex_fold_enabled = 0 -- Set up filetype-specific keymaps vim.api.nvim_create_autocmd('FileType', { pattern = { 'tex', 'latex' }, callback = function() local opts = { buffer = true, silent = true } -- Compilation - saves servername for inverse search vim.keymap.set('n', 'll', function() local f = io.open('/tmp/vimtex-servername', 'w') if f then f:write(vim.v.servername) f:close() end vim.cmd 'VimtexCompile' end, vim.tbl_extend('force', opts, { desc = 'Compile LaTeX' })) vim.keymap.set('n', 'lk', 'VimtexStop', vim.tbl_extend('force', opts, { desc = 'Stop compilation' })) vim.keymap.set('n', 'lc', 'VimtexClean', vim.tbl_extend('force', opts, { desc = 'Clean aux files' })) vim.keymap.set('n', 'lC', 'VimtexClean!', vim.tbl_extend('force', opts, { desc = 'Clean all files' })) -- View PDF (forward search) vim.keymap.set('n', 'lv', 'VimtexView', vim.tbl_extend('force', opts, { desc = 'View PDF (forward search)' })) -- TOC vim.keymap.set('n', 'lt', 'VimtexTocToggle', vim.tbl_extend('force', opts, { desc = 'Toggle TOC' })) -- Errors vim.keymap.set('n', 'le', 'VimtexErrors', vim.tbl_extend('force', opts, { desc = 'Show errors' })) -- Info vim.keymap.set('n', 'li', 'VimtexInfo', vim.tbl_extend('force', opts, { desc = 'VimTeX info' })) vim.keymap.set('n', 'ls', 'VimtexStatus', vim.tbl_extend('force', opts, { desc = 'Compilation status' })) end, }) end return M