Команда latex(VAR) преобразует другие объединенные строки в mathemode, когда latex отображает ее

Команда latex(VAR) преобразует другие объединенные строки в mathemode, когда latex отображает ее

Использование sagetex в latex; похоже, что использование команды latex() преобразует любые объединенные строки в этот термин в математический режим, а не в строки. Смотрите MWE ниже:

\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}

Есть ли способ остановить преобразование sage всей строки в математический режим Latex и при этом сохранить все предложение в одной переменной, а также сохранить правильное математическое отображение содержимого Latex (например, отображая его как фактическую дробь вместо строки «11/2»).

Если говорить точнее, то мои конкретные требования таковы:

  1. Объедините строку с правильно отрисованной математикой (не обязательно с помощью команды latex(), но я не вижу других вариантов, которые имели бы смысл?) и отобразите все отдельные части правильно: строку как строки, а математику как настоящую математику.
  2. Сохраните вышеперечисленное водна переменная мудреца; в отличие от последовательности переменных, вызываемых в определенном порядке для достижения результата.

решение1

Согласно документации, размещенной на CTANздесь, вы обнаружите, начиная со страницы 6, что есть макросы \sage, \sagestr, \percent, и \sageplot. \sageМакрос предназначен для числовых данных и \sagestrдля строковых данных. Я скорректировал ваш код так, чтобы он использовал \sagestr. Для обработки числовых данных в (a = 11/2) я добавил его к вашим строкам, используя необработанную строку, чтобы косая черта не вызывала проблем. Это делается с помощью numerator()и denominator()на вашем числе, чтобы определить, какие целые числа следует использовать для создания дроби 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}

Вывод в Cocalc:

введите описание изображения здесь

EDIT: Поскольку в вашем комментарии указано, что вы хотите вставить дробь в строку, я отредактировал свой код, чтобы сделать это.

Связанный контент