-- VimTeX configuration with Sioyek as PDF viewer local M = {} function M.setup() -- Use Sioyek as the PDF viewer vim.g.vimtex_view_method = 'sioyek' -- Sioyek executable (use 'sioyek' if in PATH) vim.g.vimtex_view_sioyek_exe = 'sioyek' -- Enable synctex for forward/inverse search vim.g.vimtex_view_sioyek_sync = 1 -- Use custom wrapper script for inverse search (uses nvr instead of --headless) vim.g.vimtex_callback_progpath = vim.fn.expand '~/dotfiles/bin/nvim-vimtex-callback' -- Compiler settings vim.g.vimtex_compiler_method = 'latexmk' vim.g.vimtex_compiler_latexmk = { build_dir = '', callback = 1, continuous = 1, executable = 'latexmk', options = { '-verbose', '-file-line-error', '-synctex=1', '-interaction=nonstopmode', }, } -- 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 vim.keymap.set('n', 'll', 'VimtexCompile', 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) - save servername first for inverse search vim.keymap.set('n', 'lv', function() -- Save servername to file for inverse search callback local servername = vim.v.servername local f = io.open('/tmp/vimtex-servername', 'w') if f then f:write(servername) f:close() end vim.cmd 'VimtexView' end, 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