O comando latex (VAR) converte outras strings concatenadas em mathemode quando o latex o exibe

O comando latex (VAR) converte outras strings concatenadas em mathemode quando o latex o exibe

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:

  1. 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
  2. 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 \sagemacro é para dados numéricos e \sagestrpara 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 é:

insira a descrição da imagem aqui

EDIT: Como seu comentário especifica que você gostaria que a fração fosse inserida na string, editei meu código para fazer isso.

informação relacionada