Autor Tema: Escribir LaTeX a la velocidad de la luz

0 Usuarios y 1 Visitante están viendo este tema.

18 Agosto, 2019, 04:42 pm
Leído 1722 veces

Masacroso

  • Héroe
  • Mensajes: 2,014
  • País: es
  • Karma: +4/-0
Post principal actualizado a 03/06/2020.

He escrito un script con el programa de scripting autohotkey cuya función es poder escribir código \( \LaTeX \) lo más rápido posible. Lo que hace el script es reemplazar unos tecleos por otros.

Además de la versión de autohotkey, que sólo funciona bajo sistemas windows, he creado scripts básicamente idénticos para otros sistemas de scripting como autokey que funciona bajo sistemas GNU/linux, y espanso que funciona tanto en sistemas de windows 10, GNU/linux o macOS. Recomiendo la versión de autohotkey para sistemas windows y ya sea la de autokey o la de espanso para sistemas GNU/linux.

Aquí en esta dirección se puede encontrar todo el material referente al script en sus diferentes versiones.

Cómo funciona:

El script, en sus versiones de autohotkey o espanso, es un archivo de texto donde se define una lista de reemplazos automáticos de tecleos, es decir, al escribir una cadena de texto ésta es reemplazada automáticamente por otra cadena de texto. He diseñado el script de tal manera que las cadenas que desencadenan los reemplazos suelen terminar en ñ y en total tener menos de cinco caracteres.

Para conocer los reemplazos que he ido definiendo hay que ver el texto del script, es decir, abrir el archivo TeX.yml (en la versión del script para espanso), o el archivo TeX.ahk (en la versión del script para autohotkey) con cualquier editor de texto.

Qué significa lo que hay escrito en los archivos TeX.yml o TeX.ahk:

En el archivo TeX.yml las sustituciones se definen así:

Código: [Seleccionar]
  - trigger: "str1"
    replace: "str2"

donde str1 es la cadena de teclas que es sustituida por str2. Algunas cadenas que aparecen como reemplazos necesitan ser "escapadas" para ser sustituidas correctamente, por ejemplo la barra \ debe escribirse como \\. Para más detalles mejor consultar aquí. La cadena especial \n significa salto de línea, y la cadena $|$ define la posición del cursor después de la sustitución.

En el archivo TeX.ahk las sustituciones se definen en una línea así

Código: [Seleccionar]
::str1::str2
En autohotkey también necesitamos escapar algunas cadenas, por ejemplo caracteres como { } ! ^ necesitan ser escritos entre corchetes, es decir como {{} {}} {!} {^} respectivamente. La cadena especial {Space} significa la pulsación de la tecla espaciadora, y las cadenas del tipo {left x}, donde x es un número natural, representa un movimiento del cursor x pasos atrás.

La versión de script de autokey funciona de otra manera: cada sustitución está definida en un par de archivos de texto, uno de ellos oculto. La definición de las sustituciones se hacen dentro de la interfaz del programa no en archivos de texto, es más lento de hacer pero más ordenado.

Instalación y puesta en marcha del script en cualquiera de sus versiones:

Detallado aquí.



A continuación unos ejemplos de los tipos de reemplazos que hace el script:

Letras griegas y hebreas:

Para escribir letras griegas el intercambio es una letra seguido del sufijo gg, por ejemplo, la cadena agg es intercambiada por \alpha seguido de un espacio, es decir, el símbolo de alfa (minúscula) escrito en \( \LaTeX \) y luego seguido de un espacio (no un espacio de \( \LaTeX \) sino una pulsación de la tecla espaciadora).

Las letras mayúsculas van en mayúsculas, es decir que Ggg es intercambiada por \Gamma, etc... Además si una letra tiene una variación ésta se escribe colocando una v delante de la cadena, es decir que vfgg se intercambia por \varphi seguido de un espacio.

He añadido además unas cuatro letras hebreas o así, éstas se escriben con el sufijo hh en vez de gg, es decir que ahh deja el texto \aleph seguido de un espacio.

Operadores y relaciones:

En general son dos o tres letras (generalmente letras significativas del texto en \( \LaTeX \) al que reemplazan) seguidas de ñ, por ejemplo la cadena es sustituida por \lim_{} con el cursor entre los corchetes. O por ejemplo que sustituye a \sum_{} dejando el cursor entre el par de corchetes, o que es reemplazada por \int_{} dejando de nuevo el cursor entre los corchetes.

Otros formas en los reemplazos son por ejemplo cadenas como xx que es sustituida por \times seguido de un espacio, == por \equiv seguido de un espacio, etc... Lo he ido configurando a mi gusto de tal forma que me resulte sencillo recordar los reemplazos y sea rápido de teclear.

Otro tipo de reemplazos:

Por ejemplo los símbolos comúnmente asociados a conjuntos comunes siguen el patrón de letra en mayúsculas repetida, por ejemplo CC por \Bbb{C} o SS por \mathbb S seguido de un espacio, etc...

Funciones comunes utilizan el sufijo ¡ (un signo de exclamación) en vez de ñ, por ejemplo sustituye a \sin seguido de un espacio, y sustituye a \log seguido de un espacio, o por ejemplo es reemplazado por \mathbf{1}_{} donde el cursor se queda entre los corchetes, otro ejemplo sería fl¡ que sustituye a \lfloor  \rfloor que dando el curso entre medias. Etc...

También hay sustituciones para etiquetas de bbcode, que se utilizan con el sufijo bb. Y dos sustituciones específicas para rincón matemático: çç por [tex][/tex] colocándose el cursor entre medias, y ññ para una sustitución similar para escribir matemáticas en modo \display y centrado.

O sustituciones para construcciones comunes como que es reemplazada por \frac{}{} (con el cursor entre el primer par de corchetes) o pxL que es sustituida por \partial/\partial x^1,\ldots,\partial/\partial x^n, que representa una base local para campos vectoriales, etc...



Filosofía en el diseño del script:

La filosofía que tiene el script es posibilitar una velocidad de tecleo de \( \LaTeX \) máxima a aquellos que ya saben escribir en \( \LaTeX \), usando cadenas de texto muy cortas (menos de cinco pulsaciones, de medio tres), fáciles de asociar a las cadenas de \( \LaTeX \) que sustituyen, y muy accesibles en un teclado con distribución española.

La elección de cada cadena corta proviene, en general salvo excepciones, de dos o tres letras (a veces una) del código en \( \LaTeX \) que sustituye.

Alguna cadena podría entrar en conflicto con la escritura normal (es raro que esto ocurra pero puede ocurrir alguna vez) como por ejemplo la cadena que está contenida en la palabra niño, por eso cuando se escribe texto lo mejor es desactivar momentáneamente el script.

El script no pretende ser exhaustivo sino sólo simplificar la escritura de código \( \LaTeX \) de uso común. Va evolucionando conforme su uso lo demande, por supuesto cada uno puede retocar o escribir un script a su gusto, el mío es sólo un ejemplo.

La ventaja de un script como éste frente a otro tipo de sistemas para escribir \( \LaTeX \) más rápido como macros en editores de texto y semejantes es que puede utilizarse en cualquier editor o caja de texto ya que sólo sustituye una cadena de tecleos por otros tecleos. Puede usarse en este foro, en MSE o en cualquier editor de \( \LaTeX \).

Errores de ejecución o de diseño:

Iré mejorando el script poco a poco a medida que lo vaya usando. Ya llevo usándolo a diario desde que lo creé, hace algo menos de diez meses, y he ido haciendo pequeñas variaciones para mejorar mi experiencia personal, añadiendo construcciones comunes como listas de elementos o cosas así.

09 Abril, 2020, 09:50 pm
Respuesta #1

Eparoh

  • Aprendiz
  • Mensajes: 240
  • País: es
  • Karma: +0/-0
  • Sexo: Masculino
Hola, aunque no lo he probado aún para escribir un texto de verdad, mi primera impresión es que si que parece una herramienta increíble para escribir lo más rápido posible. Mi mas sincera enhorabuena  :aplauso:
Solo comentarte que aunque el script me funciona perfecto, el cambio del color del icono y la aparición de las bandas rojas al activarlo, al menos a mí, no me funciona.
Un saludo y, de nuevo, mi enhorabuena  ;)

09 Abril, 2020, 11:16 pm
Respuesta #2

Masacroso

  • Héroe
  • Mensajes: 2,014
  • País: es
  • Karma: +4/-0
Hola, aunque no lo he probado aún para escribir un texto de verdad, mi primera impresión es que si que parece una herramienta increíble para escribir lo más rápido posible. Mi mas sincera enhorabuena  :aplauso:
Solo comentarte que aunque el script me funciona perfecto, el cambio del color del icono y la aparición de las bandas rojas al activarlo, al menos a mí, no me funciona.
Un saludo y, de nuevo, mi enhorabuena  ;)

No sé qué podrá ser. Tienes que descomprimir el contenido del archivo zip en una misma carpeta y ejecutar el archivo TeX.exe. Al menos en windows 10 funciona. Igual al compilar el script cambia la ruta relativa a los archivos de imágenes por rutas absolutas, entonces es posible que no funcione. Luego testeo a ver qué podría ser.

10 Abril, 2020, 12:49 am
Respuesta #3

Eparoh

  • Aprendiz
  • Mensajes: 240
  • País: es
  • Karma: +0/-0
  • Sexo: Masculino
No sé qué podrá ser. Tienes que descomprimir el contenido del archivo zip en una misma carpeta y ejecutar el archivo TeX.exe. Al menos en windows 10 funciona. Igual al compilar el script cambia la ruta relativa a los archivos de imágenes por rutas absolutas, entonces es posible que no funcione. Luego testeo a ver qué podría ser.

El icono verde que pusiste si me aparece. Osea, no me muestra el icono estandar del autohotkey, si no el que diseñaste que pone TeX, y de hecho si lo elimino, al ejecutar el script me da error y deja de aparecer. Sin embargo, las otras dos imágenes las puedo eliminar y no da ningún tipo de error indicando que faltan dichos archivos.
Un saludo.

10 Abril, 2020, 01:07 am
Respuesta #4

Masacroso

  • Héroe
  • Mensajes: 2,014
  • País: es
  • Karma: +4/-0
No sé qué podrá ser. Tienes que descomprimir el contenido del archivo zip en una misma carpeta y ejecutar el archivo TeX.exe. Al menos en windows 10 funciona. Igual al compilar el script cambia la ruta relativa a los archivos de imágenes por rutas absolutas, entonces es posible que no funcione. Luego testeo a ver qué podría ser.

El icono verde que pusiste si me aparece. Osea, no me muestra el icono estandar del autohotkey, si no el que diseñaste que pone TeX, y de hecho si lo elimino, al ejecutar el script me da error y deja de aparecer. Sin embargo, las otras dos imágenes las puedo eliminar y no da ningún tipo de error indicando que faltan dichos archivos.
Un saludo.

Gracias por el feedback. Imagino que es un error de resolución, es decir, la imagen no se adapta correctamente a la resolución de pantalla y no se ve porque está fuera de rango. En mi windows 10 a 1080p funciona bien, en su día hice varios tests a otras resoluciones más bajas y funcionaba. También veo que al eliminar esa imagen el programa no da ningún fallo. Otro día veo a ver si lo arreglo.

10 Abril, 2020, 02:58 am
Respuesta #5

argentinator

  • Consultar la FIRMAPEDIA
  • Administrador
  • Mensajes: 7,292
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
  • Vean mis posts activos en mi página personal
    • Mis posts activos (click aquí)
Hola masacroso.

Hace unos años diseñé un script en autohotkey
para generar comandos de LaTeX.
Creo que puede ser interesante para que compares con el tuyo, y quizás combines y experimentes ideas.

Está medio perdido en el siguiente hilo:

http://rinconmatematico.com/foros/index.php?topic=21452.msg86681#msg86681

Lo que me critico a mí mismo son dos cosas:
sólo adjunté el ejecutable, sin al fuente AHK.
(Creo que el AHK lo publiqué en el foro de AutoHotKey, pero ya ni me acuerdo.)

Así que aprovecho a agregar acá un archivo fuente de AutoHotKey,
aunque los comandos son diferentes del original
(o sea que no van a coincidir con la imagen GIF).
Es el archivo texboard0001.ahk.
He añadido el ejecutable para aquellos que quieran usarlo sin instalar AutoHotKey, aunque no es muy fácil descifrar lo que hace el programa si no se estudia el lenguaje de AutoHotKey... mmmm.
(Si alguien quiere usar mi script y desea un minitutorial, me avisa. Sólo escribiré al respecto si hay interés.)

La filosofía que apliqué creo que es diferente a la tuya.
Aunque uso abreviaturas, no es la intención principal hacerlo,
sino que hago un super-abuso de combinaciones de teclas, mediante CTRL, ALT, WINKEY, AppKey, entre otras cosas raras.
Cada combinación de teclas es "temática".
Por ejemplo, WinKey + letra, genera una letra griega; Win+Alt+Shift+flecha, genera una flecha.

Mi programita tiene algunos problemas.
Por ejemplo, dado que ciertas combinaciones de teclas
tienen prioridad del sistema Windows,
me cuesta generar la "lambda minúscula" de un modo coherente
respecto a como genero las otras letras griegas.

Además, estresar tanto las combinaciones del teclado a veces puede generar que el teclado falle, y se quede tildado, como por ejemplo, que el sistema crea que una tecla CTRL quedó presionada, cuando en realidad ya se soltó. Pero esas son fallas de AutoHotKey, y no de la lógica de programación que he empleado.






10 Abril, 2020, 09:56 am
Respuesta #6

Masacroso

  • Héroe
  • Mensajes: 2,014
  • País: es
  • Karma: +4/-0
Hola masacroso.

Hace unos años diseñé un script en autohotkey
para generar comandos de LaTeX.
Creo que puede ser interesante para que compares con el tuyo, y quizás combines y experimentes ideas.

Está medio perdido en el siguiente hilo:

http://rinconmatematico.com/foros/index.php?topic=21452.msg86681#msg86681

Lo que me critico a mí mismo son dos cosas:
sólo adjunté el ejecutable, sin al fuente AHK.
(Creo que el AHK lo publiqué en el foro de AutoHotKey, pero ya ni me acuerdo.)

Así que aprovecho a agregar acá un archivo fuente de AutoHotKey,
aunque los comandos son diferentes del original
(o sea que no van a coincidir con la imagen GIF).
Es el archivo texboard0001.ahk.
He añadido el ejecutable para aquellos que quieran usarlo sin instalar AutoHotKey, aunque no es muy fácil descifrar lo que hace el programa si no se estudia el lenguaje de AutoHotKey... mmmm.
(Si alguien quiere usar mi script y desea un minitutorial, me avisa. Sólo escribiré al respecto si hay interés.)

La filosofía que apliqué creo que es diferente a la tuya.
Aunque uso abreviaturas, no es la intención principal hacerlo,
sino que hago un super-abuso de combinaciones de teclas, mediante CTRL, ALT, WINKEY, AppKey, entre otras cosas raras.
Cada combinación de teclas es "temática".
Por ejemplo, WinKey + letra, genera una letra griega; Win+Alt+Shift+flecha, genera una flecha.

Mi programita tiene algunos problemas.
Por ejemplo, dado que ciertas combinaciones de teclas
tienen prioridad del sistema Windows,
me cuesta generar la "lambda minúscula" de un modo coherente
respecto a como genero las otras letras griegas.

Además, estresar tanto las combinaciones del teclado a veces puede generar que el teclado falle, y se quede tildado, como por ejemplo, que el sistema crea que una tecla CTRL quedó presionada, cuando en realidad ya se soltó. Pero esas son fallas de AutoHotKey, y no de la lógica de programación que he empleado.







Gracias argentinator, lo he añadido a mi biblioteca de scripts, quizá pueda tomar alguna idea prestada de allí.

Por cierto no lo he dicho pero todavía tengo que retocar el script de autokey (y quizá también el de autohotkey). El de autokey lo escribí sobre la marcha así que está incompleto y puede tener algún error. También tengo que ver si puedo adaptarlo para que su funcionamiento sea como el del script de autohotkey (en cuanto a que sustituya cadenas en vez de palabras, y no haya conflictos en las definiciones del script).

31 Mayo, 2020, 03:04 am
Respuesta #7

Masacroso

  • Héroe
  • Mensajes: 2,014
  • País: es
  • Karma: +4/-0
Hay un "nuevo" programa que se dedica justamente a sustitución de cadenas de caracteres (digo nuevo porque no lo conocía hasta hoy) que se llama espanso, al cual le he adaptado el script, es decir, es "el mismo" script pero adaptado a este programa. La ventaja de espanso sobre autohotkey y autokey es que funciona en cualquier sistema operativo, ya sea linux, windows o macintosh.

Para usar el script con este programa hay que poner el archivo enlazado (el TeX.yml) en la carpeta "/user" dentro de la carpeta de configuración del programa (la ubicación varía según el sistema, para conocerla hay que ejecutar el comando "espanso path" en la consola). El archivo TeX.yml es simplemente un archivo de texto que define la sustitución de cadenas.

De lo testeado funciona muy bien en ubuntu, de hecho funciona mejor que el script de autokey en el sentido de que muchas sustituciones se hacen directamente sin necesitar que sean palabras aisladas (es decir: sustituye cadenas dentro de palabras de manera coherente). Una vez que espanso está en funcionamiento para desactivar (o volver a activar) las sustituciones simplemente hay que presionar dos veces seguidas la tecla ALT.

31 Mayo, 2020, 03:07 am
Respuesta #8

manooooh

  • Matemático
  • Mensajes: 2,808
  • País: ar
  • Karma: +1/-0
  • Sexo: Masculino
Hola Masacroso

He estado usando LaTeX durante los últimos 3 años. Ya estoy acostumbrado a escribir sin usar atajos.

¿Tendrías alguna recomendación para alguien que ya escriba de manera lenta pero constante, poder elegir esta aparente efectiva solución?

Saludos y gracias

Off-topic para Masacroso
Estuve chusmeando tus otros proyectos en GitHub y he notado que hay una fórmula que no renderiza correctamente:

https://github.com/Masacroso/Jupyter-notebooks/blob/master/rana.ipynb

Es esta fórmula: $ $ f_{Y_2}(c)=\frac1{\pi \sqrt{1-c^2/4}}\, \mathbf{1}_{[0,2]}(c)\tag2 $$
[cerrar]

31 Mayo, 2020, 03:28 am
Respuesta #9

Masacroso

  • Héroe
  • Mensajes: 2,014
  • País: es
  • Karma: +4/-0
Hola Masacroso

He estado usando LaTeX durante los últimos 3 años. Ya estoy acostumbrado a escribir sin usar atajos.

¿Tendrías alguna recomendación para alguien que ya escriba de manera lenta pero constante, poder elegir esta aparente efectiva solución?

Saludos y gracias

Off-topic para Masacroso
Estuve chusmeando tus otros proyectos en GitHub y he notado que hay una fórmula que no renderiza correctamente:

https://github.com/Masacroso/Jupyter-notebooks/blob/master/rana.ipynb

Es esta fórmula: $ $ f_{Y_2}(c)=\frac1{\pi \sqrt{1-c^2/4}}\, \mathbf{1}_{[0,2]}(c)\tag2 $$
[cerrar]

No tengo ninguna recomendación al respecto, simplemente me limito a compartir esta herramienta por si a alguien le interesa o por si sirve de ejemplo para otra cosa parecida. Lo único que puedo decir es que desde que diseñé el primer script lo uso continuamente para escribir latex, ya sea en éste u otros foros o en archivos de texto. Ha incrementado de manera notable mi velocidad de escritura de \( \LaTeX \).

Respecto a lo otro: es un error del renderizador de github, puedes verlo mejor aquí.

31 Mayo, 2020, 06:23 pm
Respuesta #10

Marritac

  • Estudiante
  • Nuevo Usuario
  • Mensajes: 11
  • País: es
  • Karma: +0/-0
  • Sexo: Femenino
  • Estudiante
Hay alguna buena APP sobre LaTeX para Android ?

02 Junio, 2020, 03:18 am
Respuesta #11

Masacroso

  • Héroe
  • Mensajes: 2,014
  • País: es
  • Karma: +4/-0
Hay alguna buena APP sobre LaTeX para Android ?

No que yo sepa. Yo tengo instalado el editor de texto markor ya que tiene soporte de \( \LaTeX \) bajo KaTeX, pero nunca lo uso.

Por cierto, he actualizado el texto original del tema simplificando la descripción del script y lo que hace.