%20%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D1%83%D0%B5%D1%82%20%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D0%B5%20%D0%BE%D0%B1%D1%8A%D0%B5%D0%B4%D0%B8%D0%BD%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8%20%D0%B2%20mathemode%2C%20%D0%BA%D0%BE%D0%B3%D0%B4%D0%B0%20latex%20%D0%BE%D1%82%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B0%D0%B5%D1%82%20%D0%B5%D0%B5.png)
Использование 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»).
Если говорить точнее, то мои конкретные требования таковы:
- Объедините строку с правильно отрисованной математикой (не обязательно с помощью команды latex(), но я не вижу других вариантов, которые имели бы смысл?) и отобразите все отдельные части правильно: строку как строки, а математику как настоящую математику.
- Сохраните вышеперечисленное водна переменная мудреца; в отличие от последовательности переменных, вызываемых в определенном порядке для достижения результата.
решение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: Поскольку в вашем комментарии указано, что вы хотите вставить дробь в строку, я отредактировал свой код, чтобы сделать это.