Ene 20 2011

Doc-view : ver pdf desde emacs

Tag: basicoverdrive @ 6:57 pm

En el articulo anterior explicabamos como instalar, configurar y manejar minimamente AUCTeX (obviamente AuCTeX es mucho mas extenso e interesante de lo que mostramos en dicho articulo, pero ahora el usuario ya tiene la capacidad de indagar y ese empujoncito que a veces necesita para tener ese interes).

Este articulo es en parte, un complemento del anterior, pero que he decidido separar debido a que es otro paquete diferente al anterior, tambien externo a emacs y que busca otro proposito; el de poder ver o cargar pdf en emacs. Para ello, podemos tomar el ejemplo del texto anterior y generar asi un pdf o cargar un pdf cualquiera (aprovecho para promocionar el R5RS e invito a cargarlo en nuestro emacs -de paso de su lectura-).

Una vez tengamos nuestro fichero pdf en nuestro sistema. Pasamos a descargar y configurar el paquete (no es mas que uno o dos ficheros elisp cortesia de Tassilo Horn) que nos permitira cargar y visualizar pdfs en emacs: doc-view.

Los pasos que debemos seguir son muy simples:

Prerequisitos:

  • Instalar xpdf:
    • # apt-get install xpdf
  • Instalar ghostscript:
    • # apt-get install ghostscript

Descarga y configuracion de doc-view:

Esto lo podemos poner en un directorio cualquiera de nuestro sistema, en mi caso no me complique mucho para el articulo y cree uno en mi $HOME llamado docview donde meti ahi los ficheros .el. Luego simplemente debeis incluir las siguientes lineas en vuestro .emacs para cargar el nuevo path donde se encuentren esos scripts elisp:

(add-to-list ‘load-path «~/docview/»)
(require ‘doc-view)
(require ‘doc-view-extension)

Luego tan solo debemos abrir emacs o recagar el .emacs con la vieja tecnica de M-x load-path y cargar el propio fichero de configuracion. Abrir nuestro fichero fichero y simplemente cargar el preview con M-x doc-view-mode. Y voila! aqui tenemos el resultado:

Ejemplo de emacs con doc-view visualizando un pdf

Nota: Podemos incluir en nuestro .emacs que cada vez que carguemos un fichero pdf automaticamente cargue el modo doc-view-mode y evitar tener que realizar este paso cada vez:

(setq auto-mode-alist
‘((“\\.pdf$” . doc-view-mode)))

Existen algunos problemas que me han surgido por despiste:

Trobleshooting

En un principio, la primera vez que configure doc-view, solo anadi el load-path, sin embargo olvide el require del doc-view, lo que no evita que podamos cargar y leer pdfs, sin embargo aparece una especie de refresco horizontal de pantalla sobre la ventana donde es cargado el pdf. Esto es precisamente por la falta de este require, asi que si os ocurre ya sabeis que es por la ausencia de esa linea.

Por otra parte he visto ese mismo comportamiento algunas otras veces al cargar algunos pdf, desconozco realmente por que ocurre, sin embargo perdiendo el foco de la propia ventana y volviendolo a colocar en emacs (hacer click en otra ventana y luego en la de emacs de nuevo), el problema se solventa (ya que sino puede hacer la lectura bastante molesta; intentare informar de esto a Tassilo; el creador de este script. Para ver si es un problema de versiones, etc.) de momento os dejo este workaround, para salir del paso.

Nota importante: Desde la version 23.1 doc-view esta incluido en GNU/Emacs y no es necesaria esta configuracion a menos que se use una version anterior. En Emacs 24, doc-view soporta zoom real por lo que +/- no llamara desencadenara la reconversion del documento completo.


Ene 20 2011

AUCTeX

Tag: basicoverdrive @ 5:34 pm

Hace un tiempo escribi un articulo orientado a TeX y LaTeX en emacs. En el simplemente se especificaban un listado de keybindings para usar emacs escribiendo este tipo de documentos. Sin embargo, hay que decir que existe AUCTeX que es una extension que proporciona un entorno de desarrollo para TeX, LaTeX, Texinfo y ConTeXt. Permite ademas previsualizar LaTeX.

  • C-c C-c : previsualiza y realiza demas acciones.
  • C-c C-t C-p : permite cambiar la previsualizacion activando/desactivando pdflatex, dvi o pdf.
  • C-t C-l : [a documentar – investigando en ello]

Prerequisitos antes de instalar AUCTeX:

  • AUCTeX requiere instalar TeX, LaTeX y texinfo (podemos realizarlo a modo apt-get install, emerge, mediante tarball, etc).
    • # apt-get install tex-common tex-latex
  • Preview-latex requiere que instalemos dvips para las operaciones en DVI mode.
    • # apt-get install dvi2ps
  • Preview-latex requiere de la instalacion de ghostscript (podemos realizarlo a modo apt-get install, emerge, tarball, etc).
    • # apt-get install ghostscript
  • Se requiere texinfo; este paquete es interesante para construir el tarball (podemos realizarlo a modo apt-get install, emerge, tarball, etc).
    • # apt-get install texinfo

Recordemos que AUCTeX es una extension y no forma parte del paquete emacs, por lo que hay que descargarlo y compilarlo (tambien es posible descargar AUCTeX desde CVS si quereis tener la ultimisima version, que en mi caso no es fundamental aunque quiza muchos desarrolladores o gente que espere nuevas features si le pueda interesar):

  1. Para ello nos dirigimos a la web oficial de AuCTeX.
  2. En «downloads» tenemos distintas versiones segun el sistema operativo, en mi caso «UNIX-style«.
  3. Una vez descargado, descomprimimos el paquete con:
    • $ tar xvfz auctex-11.86.tar.gz (o la version que sea).
  4. Entramos en el directorio:
    • $ cd auctex-11.86/
  5. Lanzamos el configure:
    • $ ./configure
  6. Compilamos:
    • $ make

Nota: no es necesario lanzar el make install a no ser que queramos que otros usuarios tengan acceso al paquete instalado, en mi caso, no es asi, como en la mayoria de personas que usan ellos unicamente su ordenador. Ademas como nos va a tocar meter un load-path en nuestro .emacs es mucho mas interesante asi, para ir cambiando de versiones segun vayamos metiendo nuevas. Siempre es menos engorros que tener que buscar las ubicaciones y ficheros de donde se haya instalado nuestro paquete en el sistema.

Esta puede ser la configuracion basica para trabajar con AUCTeX (cortesia de David -gracias-) y que podemos anadir en nuestro .emacs:

(add-to-list ‘load-path «~/auctex-version/»)
(add-to-list ‘load-path «~/auctex-version/preview/»)
(load «auctex.el» nil t t)
(load «preview-latex.el» nil t t)
(setq-default TeX-PDF-mode t)

Tambien recomiendo incluir las siguientes lineas para evitar tener cada vez que cargamos un fichero .tex estar cada vez cargando M-x latex-mode:

(setq auto-mode-alist
‘((«\\.tex$» . LaTeX-mode)
(«\\.sty$» . LaTeX-mode)
(«\\.bbl$» . LaTeX-mode)
(«\\.bib$» . BibTeX-mode)
(«\\.cls$» . LaTeX-mode)
(«\\.clo$» . LaTeX-mode)))

Una vez hecho esto o bien podemos lanzar de nuevo emacs o bien simplemente hacer un M-x load-file y cargar de nuevo nuestro .emacs.

Un ejemplo de documento LaTeX en mi emacs

Despues de pulsar C-c C-c para compilar y generar los ficheros dvi, pdf, etc

Estos son los ficheros generados por C-c C-c (en mi caso queria pdf en lugar de DVI)

Existen algunos keystrokes que entran en conflicto con stumpwm (para mas informacion sobre este peculiar wm, ver mi articulo sobre stumpwm):

Troubleshooting

Solucion de algunos problemas que me han surgido con stumpwm:

En latex-mode y AucTeX combinandolo con stumpwm surge un conflicto entre keybindings, ya que C-t C-t en stumpwm hace toggle entre frames mientras que C-c C-t C-p en latex-mode con AucTeX sirve para invocar pdfLatex para especificar si la salida sera dvi o pdf. La forma de solucionarlo es empleando el comando de stumpwm C-t t, el cual generara un C-t que nos servira para poder usar el comando C-c C-t C-p en cualquier otro WM, pero que en este se realizara mediante C-c C-t t C-p.