Revoltijo Elisp (II)
Convertir entre unidades de TeX en GNU Emacs (con LaTeX de fondo)
Esta función convierte desde Emacs las unidades habituales usadas en TeX1. Ejecuta de fondo algunos comandos de
bash y las unidades se convierten a través de LaTeX. Para ello, requiere que creemos un documento *.tex
cargado con el
paquete xparse
y lo guardemos en algún lugar permanentemente. Para confeccionar este documento a gusto de cada cual,
véase esta respuesta en tex.stackexchange.com.
Lo que la función hace en segundo plano: añade la dimensión a convertir en el archivo *.tex
, lo compila, convierte el
pdf a texto plano y muestra los resultados en un búfer temporal. La función cuenta con dos versiones (a y b). Cualquiera
de ambas es usable (pero hay que reemplazar, naturalmente, las rutas que aparecen, según donde hayamos guardado nuestro
archivo *.tex).
;; versión a (defun convierte-unidades () (interactive) (let ((convde (read-from-minibuffer "Convertir unidades:"))) (save-window-excursion (dired "/home/juanmanuel/Tipografía/unidades/") (shell-command (concat "sed -i 's/\\(convertto{.\\+}{\\).\\+}/\\1" (format "%s" convde) "}/g' unidades.tex")) (shell-command "lualatex unidades.tex") (shell-command "pdftotext -layout unidades.pdf unidades.txt")) (when (get-buffer "*unidades convertidas*") (kill-buffer "*unidades convertidas*")) (get-buffer-create "*unidades convertidas*") (set-buffer "*unidades convertidas*") (insert-file-contents "/home/juanmanuel/Tipografía/unidades/unidades.txt") (temp-buffer-window-show "*unidades convertidas*" '((display-buffer-below-selected display-buffer-at-bottom) (inhibit-same-window . t) (window-height . fit-window-to-buffer))))) ;; version b (defun convierte-unidades () (interactive) (let ((convde (read-from-minibuffer "Convertir unidades:"))) (save-window-excursion (dired "~/Tipografía/unidades/") (with-temp-file "unidades-temp.tex" (insert-file-contents "unidades.tex") (replace-regexp "\\(convertto{.+}{\\).+}" (concat "\\1" (format "%s" convde) "}") nil)) (shell-command "lualatex unidades-temp.tex") (shell-command "pdftotext -layout unidades-temp.pdf unidades.txt")) (when (get-buffer "*unidades convertidas*") (kill-buffer "*unidades convertidas*")) (get-buffer-create "*unidades convertidas*") (set-buffer "*unidades convertidas*") (insert-file-contents "~/Tipografía/unidades/unidades.txt") (temp-buffer-window-show "*unidades convertidas*" '((display-buffer-below-selected display-buffer-at-bottom) (inhibit-same-window . t) (window-height . fit-window-to-buffer)))))
Y como un gif vale más que mil palabras:
∞
Publicado: 12/09/2019
Última actualización: 12/09/2019
Esta obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional.