%20convierte%20otras%20cadenas%20concatenadas%20en%20modo%20matem%C3%A1tico%20cuando%20l%C3%A1tex%20lo%20muestra.png)
Usando sagetex en látex; parece que el uso del comando latex() convierte cualquier cadena concatenada con ese término en modo matemático, en lugar de cadenas. Vea el MWE a continuación:
\documentclass{article}
\usepackage{sagetex}
\begin{document}
\begin{sagesilent}
StartStr = 'Beginning string'
EndStr = 'trailing string.'
WorkingStr = StartStr + " and "+ EndStr
BrokeStr = StartStr + latex(11/2) + EndStr
\end{sagesilent}
Notice that "$\sage{StartStr}$", "$\sage{EndStr}$", and "$\sage{WorkingStr}$" are all printed as text.
But "$\sage{BrokeStr}$" converts the entire string into math-mode and breaks everything.
\end{document}
¿Hay alguna forma de evitar que Sage convierta la cadena completa al modo matemático de látex y aún así poder guardar la oración completa en una variable, además de mantener la visualización matemática correcta del contenido de látex (por ejemplo, mostrándolo como una fracción real en su lugar? de la cadena '11/2').
Para ser claros, mis requisitos específicos son:
- Tener una cadena concatenada con matemáticas renderizadas correctamente (no necesariamente a través del comando latex(), pero no veo ninguna otra opción que tenga sentido) y tener todas las piezas individuales renderizadas correctamente; la cadena como cadenas y las matemáticas como matemáticas reales
- Guarde lo anterior enuna sola variable sabia; en lugar de tener una secuencia de variables llamadas en algún orden para lograr el resultado.
Respuesta1
Según la documentación, publicada en CTANaquí, a partir de la página 6 encontrará que hay macros \sage
, \sagestr
, \percent
y \sageplot
. La \sage
macro es para datos numéricos y \sagestr
para datos de cadena. He ajustado tu código para que use \sagestr
. Para trabajar datos numéricos en (a = 11/2), los agregué a sus cadenas usando una cadena sin formato para que la barra no cause un problema. Esto se hace usando numerator()
y denominator()
en su número para determinar qué números enteros utilizar para formar la fracción de LaTeX.
\documentclass{article}
\usepackage{sagetex}
\begin{document}
\begin{sagesilent}
a = 11/2
StartStr = 'Beginning string'
EndStr = 'trailing string.'
WorkingStr = StartStr + " and "+ EndStr
BrokeStr = (StartStr + r" $\frac{%s}{%s}$ " + EndStr)%(a.numerator(),a.denominator())
\end{sagesilent}
Notice that \sagestr{StartStr}, \sagestr{EndStr}, and \sagestr{WorkingStr} are all printed as text.
Now \sagestr{BrokeStr} prints the entire string.
\end{document}
La salida en Cocalc es:
EDITAR: dado que su comentario especifica que desea insertar la fracción en la cadena, edité mi código para hacerlo.