ES-TEX Archivos

Usuarios hispanohablantes de TeX

ES-TEX@LISTSERV.REDIRIS.ES

Opciones: Vista Clásica

Use Proportional Font
Mostrar las partes HTML
Esconda cabeceras de correo

Tema: [<< Primero] [< Prev] [Siguiente >] [Último >>]

Print Responder
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
Emisor: Juan Manuel Macías <[log in para visualizar]>
X-FEAS-SPF: spf-result=pass, ip=185.67.36.65, helo=mout01.posteo.de, [log in para visualizar]
Sender: Usuarios hispanohablantes de TeX <[log in para visualizar]>
Reply-To: Usuarios hispanohablantes de TeX <[log in para visualizar]>
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-FEAS-DKIM: Valid
X-FE-Policy-ID: 1:3:1:listserv.rediris.es
Parts/Attachments: text/plain (98 lines)
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
----------------------------------------------------

ATOM RSS1 RSS2