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 12357 veces

Masacroso

  • “Lo que oigo, lo olvido; lo que veo, lo recuerdo; lo que hago, lo aprendo” (antiguo proverbio chino)
  • Moderador Global
  • Mensajes: 5,466
  • País: es
  • Karma: +0/-0
Post principal actualizado a 27/06/2023.

He escrito un script con el programa de scripting espanso 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. Aquí en esta dirección se puede encontrar todo el material referente a dicho script.

Cómo funciona:

El script 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 con cualquier editor de texto.

Qué significa lo que hay escrito en el archivo TeX.yml:

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.

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 cuatro letras hebreas, é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 lñ es sustituida por \lim_{} con el cursor entre los corchetes. O por ejemplo sñ que sustituye a \sum_{} dejando el cursor entre el par de corchetes, o iñ 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 ZZ por \mathbb{Z} o NN por \mathbb{N} seguido de un espacio, o CC (dos Cs mayúsculas seguidas de un espacio) por \mathbb{C}, o RR (dos rs mayúsculas seguidas de un espacio) por \mathbb{R}, en estos dos últimos casos el espacio al final es para evitar que el reemplazo se produzca en palabras como ACCIÓN o PERRO.

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

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 fñ que es reemplazada por \frac{}{} (con el cursor entre el primer par de corchetes), o bñ que es sustituida por \binom{}{}, con el cursor en el primer par de corchetes, que es para escribir números binomiales. Etcétera.



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 media 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 iñ que está contenida en la palabra niño, por eso algunas veces será necesario 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, y cada uno puede retocar o escribir un script a su gusto, el mío es sólo un ejemplo que puede servir como punto de partida para que cada uno haga un script adecuado a su propio gusto.

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 texto (obviamente también 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í.

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

argentinator

  • Consultar la FIRMAPEDIA
  • Administrador
  • Mensajes: 7,797
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
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.






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

manooooh

  • $$\Large \color{#9c57a6}\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 4,790
  • 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 #3

Masacroso

  • “Lo que oigo, lo olvido; lo que veo, lo recuerdo; lo que hago, lo aprendo” (antiguo proverbio chino)
  • Moderador Global
  • Mensajes: 5,466
  • País: es
  • Karma: +0/-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 #4

Marritac

  • Estudiante
  • $$\Large \color{#6a84c0}\pi$$
  • 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 #5

Masacroso

  • “Lo que oigo, lo olvido; lo que veo, lo recuerdo; lo que hago, lo aprendo” (antiguo proverbio chino)
  • Moderador Global
  • Mensajes: 5,466
  • País: es
  • Karma: +0/-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.

23 Mayo, 2024, 07:27 pm
Respuesta #6

Masacroso

  • “Lo que oigo, lo olvido; lo que veo, lo recuerdo; lo que hago, lo aprendo” (antiguo proverbio chino)
  • Moderador Global
  • Mensajes: 5,466
  • País: es
  • Karma: +0/-0
Parece que hay una aplicación de código abierto para android que soporta los archivos de configuración de espanso:

https://github.com/lochidev/TextToolsPro

Lo estoy probando con el archivo TeX.yml que tengo alojado en mi página de GitHub sobre escribir LaTeX a la velocidad de la luz (o más rápido 😁). Lo que es la sustitución funciona según he probado, pero en los navegadores web que he testeado no funciona lo que es dejar el cursor en la posición que le indico, pero bueno, algo es algo.

Iré haciendo alguna prueba con otros navegadores, a ver cómo va.