Quais são as diferenças entre os plugins LaTeX?

Respostas:

28

Não fornecerei uma comparação detalhada, pois tenho apenas experiência limitada com os diferentes plugins. Conheço bem alguns plugins ( LaTeX-Box e LaTeX-Suite ) e conheço muito bem um plug-in, já que estou desenvolvendo ele mesmo: vimtex . Assim, vou escrever principalmente sobre vimtex. No entanto, primeiro apontarei algumas referências que podem ser do interesse de outras pessoas.

Algumas descrições e referências

Existem muitos plugins para o Vim. Estes são os que eu reconheci como sendo pelo menos semi-populares:

No site tex.stackexchange.com , há uma lista enorme de editores e IDEs do LaTeX. Ele fornece uma boa visão geral em geral, mas também fornece uma visão geral dos plugins do Vim:

vimtex

O vimtex é baseado no LaTeX-Box. Tudo começou depois de eu ter contribuído com correções de bugs e atualizações para o LaTeX-Box por algum tempo. Percebi que o plugin poderia ser escrito de uma maneira muito mais moderna se eu o escrevesse do zero. Primeiro tirei a maioria dos recursos e construí um "mecanismo" mais robusto e modular. Depois, adicionei recursos, e acho que hoje ele tem a maioria dos recursos do LaTeX-Box e mais alguns.

Em vez de fornecer uma lista completa de recursos (veja aqui em vez disso ), tentarei apontar algumas das diferenças entre o vimtex e outros plugins. No entanto, quero fornecer algumas declarações ousadas:

  • O vimtex é o plugin Vim mais moderno para o LaTeX disponível hoje
  • O código é de alta qualidade e atualmente está sendo mantido ativamente por mim
  • O plug-in é praticamente estável, embora alguns recursos ainda estejam sendo desenvolvidos (e, como tal, podem estar sujeitos a alterações e atualizações)

vimtex vs LaTeX-Box

Como o vimtex é baseado no LaTeX-Box, obviamente possui princípios semelhantes. A idéia é manter as coisas simples e resolver problemas que ainda não foram resolvidos por outros plugins melhores. Ele utiliza o latexmk para compilar os documentos do LaTeX e se baseia no plug-in Vim interno para destacar a sintaxe.

Atualmente, existe um recurso importante no LaTeX-Box que está ausente no vimtex: compilação de captura única com retorno de chamada . A razão pela qual esse recurso não está no vimtex é simplesmente porque é complicado e que eu nunca encontrei uma maneira de implementá-lo que seja simples o suficiente para minha própria preferência (sugestões são bem-vindas, não hesite em abrir problemas ou receber solicitações )

vimtex vs LaTeX-Suite

A principal diferença entre o vimtex e o LaTeX-Suite é provavelmente que o vimtex não tenta implementar um IDE completo para o LaTeX dentro do Vim. Por exemplo:

  • O vimtex não fornece um recurso de snippet completo, porque isso é melhor tratado pelos mecanismos UltiSnips ou neosnippet ou snippet semelhantes.
  • O vimtex baseia-se nos princípios do Vim: fornece objetos de texto para ambientes, matemática embutida, fornece movimentos para seções e parágrafos
  • O vimtex usa latexmkpara compilação com um recurso de retorno de chamada para obter feedback instantâneo sobre erros de compilação
  • O vimtex é muito modular: se você não gosta de um recurso, pode desativá-lo.
Karl Yngve Lervåg
fonte
Só quero deixar claro: você vimtexpode trabalhar lado a lado Latex-Suite, o que significa que você pode obter o melhor dos dois plugins ao mesmo tempo . :)
llinfeng
12

Não consigo fazer comparação, pois o Vim-LaTeX é o único plug-in do LaTeX que usei. Uso o Vim-LaTeX há quase um ano. Então, eu vou falar apenas sobre o Vim-LaTeX.

Existem muitos recursos presentes no Vim-LaTeX. Não me lembro de todos eles. Vou falar sobre os recursos que eu conheço e uso constantemente.

Nota: Essa é minha experiência limitada do usuário , o que pode ser muito enganador . Eu não sou um usuário experiente do Vim. E eu não sei nada sobre vimscript.

IMAP () e <C-j>pulando

IMAP()As funções function e <C-j>jumpping são fornecidas separadamente como um plug-in imaps.vimno pacote Vim-LaTeX. Eles são recursos poderosos e podem ser muito úteis mesmo quando você não está escrevendo o LaTeX.

  • IMAP()A função fornece uma maneira mais natural de fazer mapeamentos e modelos de modo de inserção em geral do que o IMO embutido imape iabbrev.

  • <C-j>o salto é utilizado por muitos recursos de conclusão do Vim-LaTeX. Um ponto de salto é indicado por <++>.

  • Os mapeamentos de teclas do modo de inserção integrados são implementados como IMAP()chamadas. Por exemplo, você pode encontrar uma longa lista de IMAP()chamadas úteis no main.vimarquivo:

    call IMAP ('__', '_{<++>}<++>', "tex")
    call IMAP ('()', '(<++>)<++>', "tex")
    call IMAP ('[]', '[<++>]<++>', "tex")
    call IMAP ('{}', '{<++>}<++>', "tex")
    ...
    call IMAP ('((', '\left( <++> \right)<++>', "tex")
    call IMAP ('[[', '\left[ <++> \right]<++>', "tex")
    call IMAP ('{{', '\left\{ <++> \right\}<++>', "tex")
    ...
    

Então, quando você digita say (), o cursor residirá automaticamente entre os parênteses, substituindo o primeiro <++>. Depois de terminar de digitar, você chuta <C-j>e bate, o cursor sai dos parênteses e você continua digitando para a frente. Quando você está acostumado, ele começa a formar um fluxo de digitação que é meio viciante ...

Você vê de cima que um \left \rightpar pode ser digitado facilmente com um duplo toque do seu suporte de abertura. E <C-j>pular faz a digitação fluir.

Uma grande falha de IMAP()e <C-j>coisa é que eles mexe-se a sua última histórico de alterações . (Um bug que desejo corrigir por um longo tempo.) Portanto, você pode encontrar um comportamento inesperado ao tentar refazer sua última alteração .se a "suposta última alteração" contiver essas chamadas de função.

  • Você pode fazer todos os tipos de mapeamentos usando IMAP(), desde simples mapeamentos de teclas até modelos mais complexos. Aqui estão alguns exemplos dos meus mapeamentos ( ftplugin/tex.vim):

    call IMAP('*EEQ',"\\begin{equation*}\<CR><++>\<CR>\\end{equation*}<++>",'tex')
    call IMAP('DEF',"\\begin{definition}[<++>]\<CR><++>\<CR>\\end{definition}<++>",'tex')
    call IMAP('BIC','\binom{<++>}{<++>}<++>','tex')
    call IMAP('PVERB','\PVerb{<++>}<++>','tex')
    call IMAP('VERB','\verb|<++>|<++>','tex')
    
  • Um fato interessante sobre o imaps.vimplug-in é que ele é um plug-in global, o que implica seu uso potencial além do LaTeX. Na verdade, eu uso <++>e <C-j>jumppings (combinados com outros plugins) para criar modelos de trechos de código em C.

<F5> <F7> Inserção de comandos e ambientes

Uma desvantagem IMAP()é que a combinação de teclas não pode mais ser usada no texto normal (a menos que você desfaça o mapeamento u). Nos casos em que você só quer desencadear o mapeamento como você deseja, o <F5>e <F7>vir a calhar. Essas duas chaves são usadas para acionar ambientes e inserir comandos em linha, respectivamente. E eles se comportam de maneira diferente com base no modo e nas personalizações do usuário.

  • No modo Inserir / Normal, quando o cursor anexa uma palavra ou está na palavra, pressionar <F5>por padrão insere um ambiente básico do formulário

    \begin{word}
    <Cursor>
    \end{word}<++>
    

    baseado na palavra; pressionar <F7>por padrão irá inserir um comando embutido básico do formulário com \word{}<++>base na palavra.

  • "Por padrão", quero dizer que você pode personalizar o comportamento de uma palavra específica quando acionado por <F5>/ <F7>. Aqui estão algumas das minhas configurações ( .vimrc):

    let g:Tex_Com_newcommand = "\\newcommand{<++>}[<++>]{<++>}<++>"
    let g:Tex_Com_latex = "{\\LaTeX}<++>"
    let g:Tex_Com_D = "\\D{<++>}{<++>}<++>"
    
  • No modo Inserir / Normal, quando o cursor não está anexado a nada (também conhecido como sozinho ), pressionar <F5>/ <F7>solicitará um menu para selecionar ambiente / comando a ser inserido. Ou você pode digitar o nome do ambiente / comando desejado na parte inferior. Pessoalmente, eu raramente uso <F5>/ <F7>dessa maneira.

  • Pressione <F5>/ <F7>depois de selecionar visualmente um pedaço de texto para exibir um menu para quebra de texto . O texto selecionado será agrupado no ambiente / comando que você selecionou ou digitou.

  • No modo Inserir / Normal, quando o cursor estiver no escopo de um ambiente / comando, pressione <Shift>+<F5>/<F7>solicitará um menu para alterar o ambiente / comando .

Mapeamentos de Chaves Diversas

  • Letras gregas. `apara `ze capitais correspondentes.
  • Símbolos como `8para \infty, `<para \le, `Ipara \int_{<++>}^{<++>}<++>etc.
  • Pressionar "duas vezes obtém um par de aspas duplas TeX. Então, para digitar "caractere literal , você deve usar.
  • Pressionar em vários ambientes de enumeração inserirá a \itemtag apropriada .
  • Você pode agrupar parte da matemática visualmente selecionada em \left \rightpares por `(, `[e `{.
  • Dobrar é personalizável. Três controle variável global que pode ser dobrada: Tex_FoldedSections, Tex_FoldedMisc, e Tex_FoldedEnvironments.

Às vezes, os mapeamentos internos foram longe demais ou não saem do que você deseja. Você pode substituir os mapeamentos internos redefinindo-os em after/ftplugin/tex.vim:

call IMAP('`|','\abs{<++>}<++>','tex')
call IMAP('ETE',"\\begin{table}\<CR>\\centering\<CR>\\caption{<+Caption text+>}\<CR>\\label{tab:<+label+>}\<CR>\\begin{tabular}{<+dimensions+>}\<CR><++>\<CR>\\end{tabular}\<CR>\\end{table}<++>",'tex')
call IMAP('==','==','tex')
call IMAP('`\','`\','tex')

Definir mecanismo de compilação múltipla

Eu sempre preciso alternar entre pdflatexe xelatexmotor. Portanto, tenho as seguintes linhas no meu .vimrc:

"switch to pdflatex
function SetpdfLaTeX()
    let g:Tex_CompileRule_pdf = 'pdflatex --interaction=nonstopmode -synctex=1 -src-specials $*'
endfunction
noremap <Leader>lp :<C-U>call SetpdfLaTeX()<CR>

"switch to xelatex
function SetXeLaTeX()
    let g:Tex_CompileRule_pdf = 'xelatex --interaction=nonstopmode -synctex=1 -src-specials $*'
endfunction
noremap <Leader>lx :<C-U>call SetXeLaTeX()<CR>

Visualize PDF, pesquisa para frente e para trás entre o Vim e o visualizador de PDF

Este é um tópico confuso e complicado. Com um determinado visualizador de PDF e uma certa quantidade de sorte , pode ser muito fácil. Mas é principalmente uma questão de pesquisa no google.

Sugestões

  • Você deve encontrar seu equilíbrio entre o LaTeX way e o Vim-LaTeX way.
  • O Vim-LaTeX não é leve. Existem alguns recursos e / ou mapeamentos de teclas que você provavelmente nunca usará e precisará substituí-los manualmente.
  • Você usa o Vim. Você sabe o que significa paciência . :-)

No geral, acho que funcionará bem se você estiver disposto a investir algum tempo para domar a fera. Dito isto, se eu tiver tempo e conhecimento adequado, certamente reduzirei os recursos gerais e explorarei o potencial de integração com outros plugins.

Referências

Naitree
fonte