Received: |
by LISTSERV.REDIRIS.ES (LISTSERV-TCP/IP release 17.0) with spool id
1695411 for [log in para visualizar]; Mon, 20 Sep 2021 23:43:33
+0200
from mx01.puc.rediris.es (outbound6mad.lav.puc.rediris.es
[130.206.19.150]) by listserv.backend.rediris.es (Postfix) with ESMTP
id 16C2A76750 for < [log in para visualizar]>; Mon, 20 Sep 2021
23:43:33 +0200 (CEST)
from mout01.posteo.de (mout01.posteo.de [185.67.36.65]) by
mx01.puc.rediris.es with ESMTP id 18KLhVde003640-18KLhVdg003640
(version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO)
for < [log in para visualizar]>; Mon, 20 Sep 2021 23:43:32 +0200
from submission (posteo.de [89.146.220.130]) by mout01.posteo.de
(Postfix) with ESMTPS id 3B01B240027 for
< [log in para visualizar]>; Mon, 20 Sep 2021 23:43:31 +0200 (CEST)
from customer (localhost [127.0.0.1]) by submission (posteo.de) with
ESMTPSA id 4HCyjZ5TKXz6tmN for < [log in para visualizar]>; Mon, 20
Sep 2021 23:43:30 +0200 (CEST) |
Content-Type: |
text/plain; charset=utf-8 |
Date: |
Mon, 20 Sep 2021 21:43:30 +0000 |
Subject: |
|
Emisor: |
|
X-FEAS-SPF: |
|
Sender: |
|
Reply-To: |
|
Delivered-To: |
|
Content-Transfer-Encoding: |
quoted-printable |
Message-ID: |
|
MIME-Version: |
1.0 |
X-FEAS-DKIM: |
Valid |
X-FE-Policy-ID: |
1:3:1:listserv.rediris.es |
Parts/Attachments: |
|
|
Hola a todos:
Por si le resultase de utilidad a alguien (que use Emacs), he escrito
para mi uso esta funcioncilla en Elisp para convertir entre unidades de
las que maneja TeX (pt, dd, bp, cm, in y todo eso). Hace falta requerir
el paquete calc-units, que es el que hace el trabajo:
(require 'calc-units)
Y aquí va mi función. Se puede usar interactivamente, en cuyo caso
pregunta por la cantidad a convertir (p.ej. "18in") y la unidad a
convertir (p.ej. "bp"), y el resultado lo devuelve con un mensaje en la
"echo area" y lo copia al portapapeles. Pero también se puede usar como
código, de forma que admite un argumento que debe ser una lista de dos
elementos, el primero la cantidad a convertir y el segundo la unidad a
convertir. Es decir, podemos poner como código:
(mi-convierte-unidades-tex '("18in" "bp"))
La función (es más simple de lo que parece, ya que tuve que limpiar algo
los resultados, pues calc-units usa cosas como "texbp", "texpt", etc.):
(defun mi-convierte-unidades-tex (&optional cons-cell-de-a)
(interactive)
(let* ((unidades-tex (regexp-opt
'("pt" "pc" "bp" "dd" "cc" "sp")))
(cantidad-de (if cons-cell-de-a
(car cons-cell-de-a)
(read-from-minibuffer "Convertir: ")))
(cantidad-de-corr (if (string-match (concat "\\([[:digit:]]+\\)"
"\\("
unidades-tex
"\\)")
cantidad-de)
(concat
(match-string 1 cantidad-de)
"tex"
(match-string 2 cantidad-de))
cantidad-de))
(cantidad-a (if cons-cell-de-a
(car (cdr cons-cell-de-a))
(read-from-minibuffer "Convertir a: ")))
(cantidad-a-corr (if (string-match (concat "\\(" unidades-tex "\\)")
cantidad-a)
(concat "tex"
(match-string 1 cantidad-a))
cantidad-a))
(resultado (calc-eval (math-convert-units (calc-eval cantidad-de-corr 'raw)
(calc-eval cantidad-a-corr 'raw))))
(resultado-corr (replace-regexp-in-string "tex\\|\s" "" resultado)))
(if cons-cell-de-a
resultado-corr
(message resultado-corr)
(kill-new resultado-corr))))
Y aprovechando que se puede usar como código, escribí esta otra, que
partiendo de una cantidad devuelve una lista de equivalencias en
diversas unidades (ampliable, en la variable 'unidades'):
(defun cuanto-es-en-tex ()
(interactive)
(let* ((unidades
(list "pt" "pc" "bp" "dd" "cc" "sp" "cm" "mm" "in"))
(desde (read-from-minibuffer "Cuánto es en TeX: "))
(resultado-bruto
(mapcar (lambda (x)
(mi-convierte-unidades-tex
(list desde x)))
unidades))
(resultado (mapconcat 'identity resultado-bruto "\n")))
(message (format "%s equivalen a:\n\n%s" desde resultado))
(kill-new (format "%s equivalen a:\n\n%s" desde resultado))))
Y la lista la copia también en el portapapeles además de entregarla como
mensaje. Es decir, que si hacemos M-x cuanto-es-en-tex RET "24cm" RET,
obtenemos la cadena:
"24cm equivalen a:
682.866141732pt
56.905511811pc
680.31496063bp
638.187500795dd
53.1822917329cc
44752315.4646sp
24cm
240.mm
9.44881889764in"
Saludos,
Juan Manuel
----------------------------------------------------
Normas para el correcto uso del correo electrónico:
http://www.rediris.es/mail/estilo.html
----------------------------------------------------
|