¿Cuáles son las diferencias entre los complementos de LaTeX?

Respuestas:

28

No proporcionaré una comparación en profundidad, ya que solo tengo una experiencia limitada con los diferentes complementos. Conozco bien algunos complementos ( LaTeX-Box y LaTeX-Suite ), y conozco muy bien un complemento, ya que lo estoy desarrollando yo mismo: vimtex . Por lo tanto, escribiré principalmente sobre vimtex. Sin embargo, primero señalaré algunas referencias que pueden ser de interés para otros.

Algunas descripciones y referencias

Hay muchos complementos para Vim. Estos son los que he reconocido como al menos semi populares:

En tex.stackexchange.com , hay una gran lista de editores e IDE de LaTeX. Ofrece una buena descripción general en general, pero también proporciona una descripción general de los complementos para Vim:

vimtex

vimtex se basa en LaTeX-Box. Comenzó después de haber contribuido con correcciones de errores y actualizaciones a LaTeX-Box durante algún tiempo. Me di cuenta de que el complemento podría escribirse de una manera mucho más moderna si lo escribía desde cero. Primero eliminé la mayoría de las características y construí un "motor" más robusto y modular. Luego agregué características, y creo que hoy tiene la mayoría de las características de LaTeX-Box y algunas más.

En lugar de dar una lista completa de características (ver en su lugar aquí para eso ), trataré de señalar algunas de las diferencias entre vimtex y otros complementos. Sin embargo, quiero proporcionar algunas afirmaciones audaces:

  • vimtex es el complemento Vim más moderno para LaTeX disponible hoy
  • El código es de alta calidad y actualmente lo mantengo activamente yo mismo
  • El complemento es principalmente estable, aunque algunas características aún se están desarrollando (y como tal pueden estar sujetas a cambios y actualizaciones)

vimtex vs LaTeX-Box

Como vimtex se basa en LaTeX-Box, obviamente tiene principios similares. La idea es mantener las cosas simples y resolver problemas que otros complementos aún no hayan resuelto. Utiliza latexmk para compilar los documentos de LaTeX, y se basa en el complemento interno de Vim para resaltar la sintaxis.

Actualmente hay una característica importante en LaTeX-Box que falta en vimtex: compilación de disparo único con devolución de llamada . La razón por la que esta característica no está en vimtex es simplemente porque es complicada, y porque nunca encontré una manera de implementarla que sea lo suficientemente simple para mi preferencia (las sugerencias son bienvenidas, no dude en abrir problemas o solicitar solicitudes) )

vimtex vs LaTeX-Suite

La principal diferencia entre vimtex y LaTeX-Suite es probablemente que vimtex no intenta implementar un IDE completo para LaTeX dentro de Vim. P.ej:

  • vimtex no proporciona una función de fragmento completo, porque UltiSnips o neosnippet o motores de fragmentos similares lo manejan mejor .
  • vimtex se basa en los principios de Vim: proporciona objetos de texto para entornos, matemática en línea, proporciona movimientos para secciones y párrafos
  • vimtex utiliza latexmkpara la compilación con una función de devolución de llamada para obtener comentarios instantáneos sobre errores de compilación
  • vimtex es muy modular: si no le gusta una característica, puede desactivarla.
Karl Yngve Lervåg
fuente
Solo quiero dejarlo en claro: vimtexpuede trabajar en paralelo Latex-Suite, lo que significa que puede obtener lo mejor de los dos complementos al mismo tiempo . :)
llinfeng
¿Cómo se compara vimtex con algo como usar coc junto con coc-texlab? ¿Puedes usar los dos juntos?
Michiel Van Couwenberghe
12

No puedo hacer una comparación, ya que Vim-LaTeX es el único complemento de LaTeX que he usado. He estado usando Vim-LaTeX durante casi un año. Así que hablaré solo de Vim-LaTeX.

Hay muchas características presentes en Vim-LaTeX. No los recuerdo a todos. Solo hablaré sobre características que conozco y uso constantemente.

Nota: Esta es mi experiencia de usuario limitada , que puede ser muy engañosa . No soy un usuario experimentado de Vim. Y no sé nada de vimscript.

IMAP () y <C-j>saltos

IMAP()La función y <C-j>las funciones de salto se proporcionan por separado como un complemento imaps.vimen el paquete Vim-LaTeX. Son funciones potentes y podrían ser muy útiles incluso cuando no esté escribiendo LaTeX.

  • IMAP()La función proporciona una forma más natural de hacer asignaciones de modo de inserción y plantillas en general que la función integrada imapy iabbrev, IMO.

  • <C-j>El salto es utilizado por muchas características de terminación de Vim-LaTeX. Un punto de salto se indica con <++>.

  • Las asignaciones de teclas de modo de inserción incorporadas se implementan como IMAP()llamadas. Por ejemplo, puede encontrar una larga lista de IMAP()llamadas útiles en el main.vimarchivo:

    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")
    ...
    

Luego, cuando escribe say (), el cursor residirá automáticamente entre paréntesis, reemplazando al primero <++>. Después de que termine de escribir en el interior, patea <C-j>y golpea , el cursor se moverá fuera de los paréntesis y simplemente sigue escribiendo hacia adelante. Una vez que está acostumbrado, comienza a formar un flujo de escritura que es un poco adictivo ...

Usted ve desde arriba que un \left \rightpar se puede escribir fácilmente con doble trazo de su soporte de apertura. Y <C-j>saltar hace que la escritura fluya.

Un importante problema técnico de IMAP()y <C-j>es que se mete hasta su último historial de cambios . (Un error que deseo solucionar durante mucho tiempo). Por lo tanto, puede encontrar un comportamiento inesperado al intentar rehacer su último cambio .si su "supuesto último cambio" contiene estas llamadas a funciones.

  • Puede hacer todo tipo de asignaciones IMAP(), desde simples asignaciones de teclas hasta plantillas más complejas. Estos son algunos ejemplos de mis asignaciones ( 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')
    
  • Un hecho interesante sobre el imaps.vimcomplemento es que es un complemento global, lo que implica su uso potencial más allá de LaTeX. De hecho, uso <++>y <C-j>saltos (combinados con otros complementos) para crear plantillas de fragmentos de código en C.

<F5> <F7> Inserción de comandos y entornos

Una desventaja IMAP()es que la combinación de teclas ya no se puede usar en texto normal (a menos que deshaga la asignación u). En los casos en los que solo desee activar el mapeo como lo desee, <F5>y <F7>será útil. Estas dos teclas se utilizan para activar entornos e insertar comandos en línea, respectivamente. Y se comportan de manera diferente según el modo y las personalizaciones del usuario.

  • En el modo Insertar / Normal, cuando el cursor está adjuntando una palabra o está en la palabra, al presionar <F5>se insertará de forma predeterminada un entorno básico del formulario

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

    basado en la palabra; Al presionar, <F7>se insertará de manera predeterminada un comando básico en línea del formulario \word{}<++>basado en la palabra.

  • "Por defecto", quiero decir que puede personalizar el comportamiento de una palabra específica cuando se activa con <F5>/ <F7>. Estas son algunas de mis configuraciones ( .vimrc):

    let g:Tex_Com_newcommand = "\\newcommand{<++>}[<++>]{<++>}<++>"
    let g:Tex_Com_latex = "{\\LaTeX}<++>"
    let g:Tex_Com_D = "\\D{<++>}{<++>}<++>"
    
  • En el modo Insertar / Normal, cuando el cursor no está unido a nada (también conocido como solo ), al presionar <F5>/ se <F7>le solicitará un menú para seleccionar el entorno / comando para insertar. O puede escribir el nombre del entorno / comando deseado en la parte inferior. Personalmente, rara vez uso <F5>/ de <F7>esta manera.

  • Presione <F5>/ <F7>después de seleccionar visualmente un fragmento de texto abrirá un menú para ajustar el texto . Luego, el texto seleccionado se envolverá en el entorno / comando que seleccionó o escribió.

  • En el modo Insertar / Normal, cuando el cursor está dentro del alcance de un entorno / comando, al presionar <Shift>+<F5>/<F7>aparecerá un menú para cambiar el entorno / comando .

Asignaciones de teclas misceláneas

  • Letras griegas. `aa `zy capitales correspondientes.
  • Símbolos como `8for \infty, `<for \le, `Ifor \int_{<++>}^{<++>}<++>, etc.
  • Al presionar "dos veces se obtienen un par de comillas dobles TeX. Entonces, para escribir "caracteres literales , debe usar.
  • Al presionar en varios entornos de enumeración se insertará la \itemetiqueta adecuada .
  • Puede ajustar parte de las matemáticas visualmente seleccionada en \left \rightpares por `(, `[y `{.
  • Plegable es personalizable. Tres de control variable global lo que se puede plegar: Tex_FoldedSections, Tex_FoldedMisc, y Tex_FoldedEnvironments.

A veces, las asignaciones incorporadas simplemente han ido demasiado lejos o no dejan lo que quieres. Puede anular las asignaciones incorporadas redefiniéndolas en 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')

Establecer motor de compilación múltiple

Siempre necesito cambiar entre pdflatexy xelatexmotor. Por lo tanto, tengo las siguientes líneas en mi .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>

Ver PDF, búsqueda hacia adelante y hacia atrás entre Vim y el visor de PDF

Este es un tema complicado y complicado. Con cierto visor de PDF y cierta suerte , puede ser muy fácil. Pero es principalmente una cuestión de búsqueda en Google.

Sugerencias

  • Debe encontrar el equilibrio entre la forma LaTeX y la forma Vim-LaTeX.
  • Vim-LaTeX no es ligero en absoluto. Hay algunas características y / o asignaciones de teclas que posiblemente nunca usará y debe anularlas manualmente.
  • Usas Vim. Ya sabes lo que significa la paciencia . :-)

En general, creo que funcionará bien si está dispuesto a invertir algo de tiempo para domar a la bestia. Dicho esto, si tuviera el tiempo y el conocimiento adecuado, seguramente reduciré las funciones generales y exploraré las posibilidades de integración con otros complementos.

Referencias

Naitree
fuente