Autor Tema: $$\LaTeX$$

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

27 Noviembre, 2020, 10:22 am
Leído 161 veces

Bobby Fischer

  • $$\Large \color{red}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 632
  • País: es
  • Karma: +1/-0
  • Sexo: Masculino
    • chess.com
Hola,

Código: (matlab) [Seleccionar]
clear, clc
str='%%%%%%%%%%%%%';
v=strfind(str,'$');
for k=1:length(v)
    str=insertAfter(str,v(k),'$');
    v=v+1;
end
str

v=strfind(str,'\\');
for k=1:length(v)
    str=eraseBetween(str,v(k),v(k)+1);
    v=v-2;
end
str

Encuentra el símbolo '$' y allí donde lo encuentra añade otro.

Encuentra el símbolo '\\' y allí donde lo encuentra lo elimina.

Se puede escribir en el editor del desktop, pasárselo al matlab y obtener de inmediato el equivalente en el lenguaje del editor del foro. Siempre que no haya fórmulas incompatibles entre uno y otro, pero eso son las menos y se pueden arreglar a mano.

Así, desaparece el tedioso trabajo de tener que hacerlo a mano uno por uno. La máquina lo hace por ti y listo (sobre todo si el mensaje es muy largo, y uno necesita tener las dos cosas a un tiempo).

27 Noviembre, 2020, 01:44 pm
Respuesta #1

manooooh

  • $$\Large \color{red}\pi\,\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 3,136
  • País: ar
  • Karma: +1/-0
  • Sexo: Masculino
Hola

No le encuentro la practicidad, la verdad. Creo que uno cuando escribe ya sabe qué significa $ y qué \( \$\$ \), además del \\. ¿En qué circunstancias habría que modificar esa parte del código según tú?

Por otro lado, no he probado el código pero si ya tenemos una fórmula con \( \$\$ \), ¿no discrimina y habría \( \$\$\$ \) de apertura y de cierre? ¿Si trabajamos con moneda como \( \$1500 \) también se agrega allí? ¿Y cómo sabría el programa dónde borrar los \\ si por ejemplo en un ambiente array o tabular son completamente necesarios?

No lo tomes a mal por favor; es probable que sea mi desconocimiento de aplicación.

Saludos

27 Noviembre, 2020, 04:28 pm
Respuesta #2

Bobby Fischer

  • $$\Large \color{red}\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 632
  • País: es
  • Karma: +1/-0
  • Sexo: Masculino
    • chess.com
Hola manooooh,

Llevas razón, no sirve. El principal inconveniente que veo es que matlab no reconoce los espacios.

El otro principal inconveniente es que hay comandos que son incompatibles.

Suponiendo que se salvan estos dos inconvenientes, esto de aquí funciona me parece:

Código: (matlab) [Seleccionar]
clear, clc
str='$cos\theta$\\ Pero si $$x$$ entonces \\ \begin{bmatrix}a\\ b\\ c\end{bmatrix}\\ \begin{bmatrix}a\\ b\\ c\end{bmatrix}\\ $\int$ \\ si \\'
v=strfind(str,'$');
for k=1:length(v)
    str=insertAfter(str,v(k),'$');
    v=v+1;
end

v=strfind(str,'$$$$');
for k=1:length(v)
    str=eraseBetween(str,v(k),v(k)+1);
    v=v-2;
end

u=strfind(str,'\begin');
w=strfind(str,'\end');

v=strfind(str,'\\');

for n=1:length(v)
    for k=1:length(u)
        if u(k)<v(n) && v(n)<w(k)
            break
        elseif v(n)<u(k)
            str=eraseBetween(str,v(n),v(n)+1);
            u=u-2;
            w=w-2;
            v=v-2;
            break
        end
    end
end

for n=1:length(v)
    if v(n)>w(end)
        z=v(n:end);
        break
    end
end

for k=1:length(z)
    str=eraseBetween(str,z(k),z(k)+1);
    z=z-2;
end
str


Conclusión consecuencia de los inconvenientes que has indicado:

El código sirve para poco o nada.

Sin embargo:

Me ha servido de gimnasia mental.

Para resolver de verdad el problema:

Usar el mismo editor en un lado y en otro. Desaparecen los problemas de incompatibilidad.

Si todo el mundo hablase el mismo idioma, nos ahorraríamos tener que traducir entre idiomas.

Saludos.

(PS: No me hagas pensar más en esto porque he estado unas horas liado y no debería!)

28 Noviembre, 2020, 04:49 am
Respuesta #3

ingmarov

  • Moderador Global
  • Mensajes: 4,934
  • País: hn
  • Karma: +0/-0
  • Sexo: Masculino
Hola compañeros

...
Me ha servido de gimnasia mental.

Para resolver de verdad el problema:

Usar el mismo editor en un lado y en otro. Desaparecen los problemas de incompatibilidad.

Si todo el mundo hablase el mismo idioma, nos ahorraríamos tener que traducir entre idiomas.

Saludos.

(PS: No me hagas pensar más en esto porque he estado unas horas liado y no debería!)

Me gusta este tipo de gimnasia. Se aprende mucho aunque no se resuelva el problema o no se aporte algo nuevo, se estudian muchos detalles del problema en cuestión y se consideran formas de resolver.

Yo creo que la "expresiones regulares" (Regex) pueden servir mucho para resolver este tipo de problemas. Hay que estudiarlas y sacarles el provecho. Revisando en Google veo que en Matlab también  se pueden utilizar.

Saludos
No te confíes, revisa lo que escribo. Yo también me equivoco.
Odio el autocorrector de Android...