%20converte%20outras%20strings%20concatenadas%20em%20mathemode%20quando%20o%20latex%20o%20exibe.png)
Usando sagetex em látex; parece que o uso do comando latex() converte quaisquer strings concatenadas para esse termo em modo matemático, em vez de strings. Veja o MWE abaixo:
\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}
Existe alguma maneira de impedir o sage de converter a string inteira para o modo matemático de látex e ainda ser capaz de salvar a frase inteira em uma variável, bem como manter a exibição matemática correta do conteúdo de látex (por exemplo, mostrando-o como uma fração real em vez disso da string '11/2').
Para ser claro, meus requisitos específicos são:
- Ter uma string concatenada com matemática renderizada corretamente (não necessariamente por meio do comando latex(), mas não vejo nenhuma outra opção que faça sentido?) e ter todas as partes individuais renderizadas corretamente; a string como strings e a matemática como matemática real
- Salve o acima emuma única variável sábia; em oposição a ter uma sequência de variáveis chamadas em alguma ordem para alcançar o resultado.
Responder1
De acordo com a documentação, publicada no CTANaqui, você descobrirá na página 6 que existem macros \sage
, \sagestr
, \percent
, e \sageplot
. A \sage
macro é para dados numéricos e \sagestr
para dados de string. Ajustei seu código para que ele use \sagestr
. Para trabalhar dados numéricos em (a = 11/2), adicionei-os às suas strings usando uma string bruta para que a barra não cause problemas. Isso é feito usando numerator()
e denominator()
em seu número para determinar quais números inteiros usar para fazer a fração 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}
A saída no Cocalc é:
EDIT: Como seu comentário especifica que você gostaria que a fração fosse inserida na string, editei meu código para fazer isso.