Saltar al contenido

Rompiendo ecuaciones largas en TeXForm

No olvides que en las ciencias un problema suele tener más de una soluciones, por lo tanto aquí enseñaremos lo más óptimo y mejor.

Solución:

No creo que Mathematica pueda hacerlo. Pero por otro lado, se puede hacer en el lado de LaTeX usando el paquete breqn como

documentclassrevtex4
usepackagebreqn
begindocument
begindmath
    R = -g^a^b g ^c^d partial_cpartial_dg_a_b
     + g^a^b g ^c^d partial_bpartial_dg_a_c
     + frac34 g ^a^b g ^c^d g ^e^f partial_eg_a_c
    partial_fg_b_d
     - frac12 g ^a^b g ^c^d g ^e^f partial_fg_a_c
    partial_dg_b_e
     - g^a^b g ^c^d g ^e^f partial_dg_a_c
    partial_fg_b_e
     - frac14 g ^a^b g ^c^d g ^e^f partial_eg_a_b
    partial_fg_c_d
     + g^a^b g ^c^d g ^e^f partial_dg_a_b
    partial_fg_c_e
enddmath
enddocument

La única forma de ajustar una ecuación larga, en la que puedo pensar, sin trabajo adicional como mencioné en el comentario anterior, es simplemente reducir el tamaño de la fuente matemática de látex para usar en esta ecuación.

Es fácil modificar el tamaño de fuente en Latex. Un comando puede hacerlo. Por lo tanto, necesitaría editar el archivo Latex, pero debe hacerlo de cualquier forma para agregar los encabezados estándar de Latex para construir la expresión TexForm, y es solo un comando.

Aquí hay un ejemplo:

Haz una ecuación muy larga que se desbordará en Latex ya que no es rompible automáticamente por Latex:

Remove["Global`*"]
res = (Sum[Sin[a x], a, 1, 15])/(Sum[Cos[b x], b, 1, 15])

Gráficos de Mathematica

Exportarlo a Latex como está primero:

SetDirectory[NotebookDirectory[]];
Export["res.tex", TeXForm[res], "Text"];

Abra el archivo res.tex y agregue el Latex begindocument.... necesario para compilarlo en torno al código exportado por Mathematica. Este es el resultado

documentclass[12pt]article
begindocument

beginequation% this below was generated by Mathematica export

fracsin (x)+sin (2 x)+sin (3 x)+sin (4 x)+sin (5 x)+sin (6 x)+sin (7 x)+sin (8 x)+sin (9 x)+sin (10 x)+sin (11 x)+sin (12 x)+sin (13 x)+sin (14 x)+sin (15 x)cos (x)+cos (2 x)+cos (3 x)+cos (4 x)+cos (5 x)+cos (6 x)+cos (7 x)+cos (8 x)+cos (9 x)+cos (10 x)+cos (11 x)+cos (12 x)+cos (13 x)+cos (14 x)+cos (15 x)

endequation
enddocument

Compílelo y, mirando el pdf, se desborda como se esperaba:

>pdflatex res.tex 
This is pdfTeX, Version 3.1415926-2.5-1.40.14 (TeX Live 2013)
 restricted write18 enabled.

Gráficos de Mathematica

Ahora, haz lo mismo de nuevo, pero haz que la fuente matemática scriptscriptstyle, esto requiere solo agregar este comando de la siguiente manera

documentclass[12pt]article
begindocument

beginequation
scriptscriptstyle fracsin (x)+sin (2 x)+sin (3 x)+sin (4 x)+sin (5 x)+sin (6 x)+sin (7 x)+sin (8 x)+sin (9 x)+sin (10 x)+sin (11 x)+sin (12 x)+sin (13 x)+sin (14 x)+sin (15 x)cos (x)+cos (2 x)+cos (3 x)+cos (4 x)+cos (5 x)+cos (6 x)+cos (7 x)+cos (8 x)+cos (9 x)+cos (10 x)+cos (11 x)+cos (12 x)+cos (13 x)+cos (14 x)+cos (15 x)

endequation
enddocument

Ahora compila de nuevo:

Gráficos de Mathematica

Ahora encaja. Hay otra forma de cambiar la fuente matemática. Puede hacerlo aún más pequeño si es necesario. Dado que está en PDF, eso no es un problema, ya que siempre se puede aumentar la ampliación dentro de PDF para ver la ecuación completa, pero ahora al menos, no se cortará como antes.

Si desea que un comando reduzca el tamaño de fuente de todas las matemáticas del documento, sin tener que hacerlo para cada ecuación, entonces DeclareMathSizes se puede utilizar, aquí hay un ejemplo:

documentclass[12pt]article
usepackageamsmath
DeclareMathSizes12555
begindocument

beginequation% this below was generated by Mathematica export
fracsin (x)+sin (2 x)+sin (3 x)+sin (4 x)+sin (5 x)+sin (6 x)+sin (7 x)+sin (8 x)+sin (9 x)+sin (10 x)+sin (11 x)+sin (12 x)+sin (13 x)+sin (14 x)+sin (15 x)cos (x)+cos (2 x)+cos (3 x)+cos (4 x)+cos (5 x)+cos (6 x)+cos (7 x)+cos (8 x)+cos (9 x)+cos (10 x)+cos (11 x)+cos (12 x)+cos (13 x)+cos (14 x)+cos (15 x)
endequation
enddocument

actualizar

Solo quería agregar otro pensamiento:

Consideraría omitir todo este enfoque y simplemente exportar esas grandes ecuaciones directamente a pdf desde Mathematica.

Al exportar a pdf desde Mathematica, este problema se resuelve. Luego del uso de látex usepackagepdfpages para insertar esas páginas pdf en el pdf que pdflatex está construyendo desde el documento principal de Latex.

Claro, el diseño no se vería exactamente igual que las otras páginas de Latex, y depende de lo que estés haciendo. Si esto es solo un informe y desea incluir algunas ecuaciones, esto funcionaría. Si se trataba de un documento oficial o algo así, es posible que no funcione. Pero pensé en mencionar esto como una forma posible.

Esto también me ha preocupado (por cierto, esta no es una respuesta). Lo más prometedor es envolver la expresión en una fila de un ancho menor que el de su documento. Esto funciona bien en términos de formato dentro de mathica (con las definiciones de la respuesta de @ Nasser):

Row[res, ImageSize -> 300]

pero tristemente TeXForm no lee el formato y se rompe si intenta evaluarlo en lo anterior. Puedo ver por qué esto es así, pero sigo pensando que debería haber la opción de leer mínimamente una salida formateada en algo con \s en el TeXForm del resultado, así que si alguien sabe cómo implementar o puede indicarme la dirección de enriquecimiento TeXForm con una opción para conservar el formato que sería una gran característica.

La otra cosa que puede hacer es mirar su expresión en diferentes niveles y exportar partes de ella a la vez. Esto es fácil si solo tiene, digamos, una suma de muchos términos:

exp = (Sum[Sin[a x], a, 1, 35])

donde puede definir más o menos un umbral de términos por línea que desee y hacer algunos retoques con el string forma de la salida:

[email protected][thres = 3,
  Table[[email protected][[i ;; Min[i + thres, Length[exp]]]], i, 1, 
    Length[exp], thres]]
    (*out*)TeXForm[Sin[x] + Sin[2 x] + Sin[3 x] + Sin[4 x]], TeXForm[
 Sin[4 x] + Sin[5 x] + Sin[6 x] + Sin[7 x]], TeXForm[
 Sin[7 x] + Sin[8 x] + Sin[9 x] + Sin[10 x]], TeXForm[
 Sin[10 x] + Sin[11 x] + Sin[12 x] + Sin[13 x]], TeXForm[
 Sin[13 x] + Sin[14 x] + Sin[15 x] + Sin[16 x]], TeXForm[
 Sin[16 x] + Sin[17 x] + Sin[18 x] + Sin[19 x]], TeXForm[
 Sin[19 x] + Sin[20 x] + Sin[21 x] + Sin[22 x]], TeXForm[
 Sin[22 x] + Sin[23 x] + Sin[24 x] + Sin[25 x]], TeXForm[
 Sin[25 x] + Sin[26 x] + Sin[27 x] + Sin[28 x]], TeXForm[
 Sin[28 x] + Sin[29 x] + Sin[30 x] + Sin[31 x]], TeXForm[
 Sin[31 x] + Sin[32 x] + Sin[33 x] + Sin[34 x]], TeXForm[
 Sin[34 x] + Sin[35 x]]

así que aquí puedes hacer [email protected]% y luego jugar con StringReplace. De nuevo, esto no es satisfactorio, ya que es más probable que si tiene una expresión con muchos términos, no tenga algo tan simple como una suma y tratar de hacer que lo anterior funcione en una configuración general probablemente le llevará más tiempo del que está editando. en $ LaTeX. $

En resumen, tampoco tengo una respuesta, pero me encantaría ver algo mejor de usuarios más experimentados.

Te mostramos las reseñas y valoraciones de los lectores

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *