Saltar al contenido

¿Cómo configurar synctex con vim, pdflatex y un visor de PDF de código abierto en Linux?

Solución:

Sería útil saber qué complemento de LaTeX, si lo hay, estás usando para vim. (Por ejemplo, latex-suite, vim-auctex, latex-box, etc.)

A continuación, en lo que respecta a la elección del visor, el único visor de PDF de código abierto ampliamente utilizado para Linux que actualmente es compatible con SyncTeX listo para usar es Okular. Probablemente esa sea tu mejor opción.

Hay instrucciones para configurar SyncTeX con Okular con el complemento vim-latex aquí, y algunas observaciones relacionadas aquí. Tuve resultados mixtos siguiendo esas instrucciones. Esto es lo que parece ser importante.

  1. Asegúrese de que su método de compilación LaTeX (que dependerá de su complemento) llame a pdflatex (o xelatex o lo que sea) con el -synctex=1 bandera.

  2. Creo que algo como esto debería ser suficiente para las búsquedas hacia adelante con Okular, aunque podría ser mejor intentar reescribir o modificar la función de búsqueda hacia adelante para su complemento (hay información sobre eso en uno de los enlaces de arriba). Pon esto en tu .vimrc (y cambia el mapeo a lo que quieras).

    function! SyncTexForward()
         let execstr = "silent !okular --unique %:p:r.pdf\#src:".line(".")."%:p &"
         exec execstr
    endfunction
    nmap <Leader>f :call SyncTexForward()<CR>
    
  3. Para búsquedas inversas, establezca la línea del editor en Okular en gvim --servername GVIM --remote +%l %f. También podría funcionar usar gvim --servername GVIM --remote-send "<Esc>%lgg" si solo lo usa con el archivo ya abierto. Cambie el nombre del servidor por el que use. (No estoy seguro de si es diferente con vim normal, pero esto no tiene mucho sentido fuera de un entorno gráfico).

Sin embargo, no tengo Okular instalado en este momento, por lo que no pude probar nada de eso. (Y los enlaces que di anteriormente tienen consejos ligeramente diferentes que vale la pena probar). Realmente espero que alguien con Okular y gvim instalados pueda probar este consejo y corregir dónde me equivoqué.

Y todos esos consejos no funcionarán bien si utiliza subdocumentos llamados a través de input{...} o include{...}, donde el nombre del PDF no coincide con el nombre del documento que está editando. Hay formas de evitar eso, pero requeriría saber más sobre los complementos y métodos de LaTeX que ya está utilizando, si corresponde.

Sin embargo, otras opciones ya están disponibles. La próxima versión de evince admitirá SyncTeX a través de D-Bus, y aparentemente alguien ya está trabajando en un complemento para que vim lo use. Detalles aquí. Sin embargo, es muy poco probable que esta versión de evince ya esté disponible para su distribución de Linux y puede haber algunos problemas con ella.

Hay una bifurcación antigua de una versión antigua de evince que proporciona compatibilidad con synctex; hay instrucciones que vienen con ese detalle sobre cómo configurar esto con gvim. Funciona bien. Es fácil de configurar si está usando Arch Linux, ya que está en AUR. Si no es así, no sé qué tan difícil sería compilar. (Solía ​​usar Ubuntu antes de Arch, y no podía hacerlo funcionar allí, pero esa puede haber sido mi ignorancia).

A continuación, escribí algunos scripts que brindan soporte synctex muy limitado, muy pobre, pero aún mejor que nada entre gvim y el visor de PDF de código abierto tipo vim Zathura, que usa combinaciones de teclas similares a vim. Los encontrará mencionados y detallados en este hilo en los foros de Arch aquí. (publicación # 370)

Finalmente, creo que este tipo de cosas se abrirá camino en los principales complementos de LaTeX para vim pronto, y luego no tendrá que recurrir a tanto ensayo y error.

Esta es una solución para evince, gracias a José Aliste, quien escribió gedit-synctex-plugin:

Preámbulo

  1. Descarga estos archivos
  2. desinflarlos a ~ / bin (o algo dentro de $ PATH)

Búsqueda hacia atrás (Evince → Editor)

  1. Adopte la primera línea de »~ / bin / evince« (EDITORCMD) según sus necesidades. (ejecute »evince_backward_search« para obtener ayuda para posibles entradas)
  2. Compile su archivo .tex con synctex (»pdflatex -synctex = 1 myfile.tex«)
  3. Ejecute »evince myfile.pdf« (el script debe ejecutar evince_backward_search y evince)
  4. haga clic en algún texto en evince con »Ctrl + clic izquierdo«
  5. el editor debe saltar a la línea correspondiente

Búsqueda hacia adelante (Editor → Evince)

  1. tienes que decirle a tu editor que ejecute »evince_forward_search $ PDFFILE $ LINE $ TEXFILE« al presionar alguna tecla.
  2. ve a alguna línea en tu editor y presiona la tecla
  3. evince debe marcar la línea correspondiente

Usando vim-latexsuite, escriba ~ / .vim / ftplugin / tex.vim:

function! Tex_ForwardSearchLaTeX()
  let cmd = 'evince_forward_search ' . fnamemodify(Tex_GetMainFileName(), ":p:r") .  '.pdf ' . line(".") . ' ' . expand("%:p")
  let output = system(cmd)
endfunction

Luego, puede hacer una búsqueda hacia adelante en vim con ls

Complemento LaTeX automático para Empuje admite la búsqueda hacia adelante y hacia atrás para muchos espectadores (Xpdf, Okular, Evince o Skim en MacOs).

Nota: Enlace reemplazado por enlace de archivo. El software ya no parece existir.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *