![latex(VAR) 命令在 latex 显示其他连接字符串时将其转换为 mathemode](https://linux22.com/image/407484/latex(VAR)%20%E5%91%BD%E4%BB%A4%E5%9C%A8%20latex%20%E6%98%BE%E7%A4%BA%E5%85%B6%E4%BB%96%E8%BF%9E%E6%8E%A5%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%97%B6%E5%B0%86%E5%85%B6%E8%BD%AC%E6%8D%A2%E4%B8%BA%20mathemode.png)
在 latex 中使用 sagetex;看来使用 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 将整个字符串转换为乳胶数学模式,同时仍然能够将整个句子保存在一个变量中,同时保持乳胶内容的正确数学显示(例如,将其显示为实际分数而不是字符串“11/2”)。
明确地说,我的具体要求是:
- 将字符串与正确呈现的数学运算连接起来(不一定通过 latex() 命令,但我看不到任何其他有意义的选项?)并正确呈现所有单独的部分;字符串作为字符串,数学作为实际数学
- 将以上内容保存到单个 sage 变量;而不是按照某种顺序调用一系列变量来实现结果。
答案1
根据 CTAN 上发布的文档这里,你会发现从第 6 页开始有宏、、\sage
和。宏用于数值数据,用于字符串数据。我已调整你的代码,以便它使用。为了处理 (a = 11/2) 中的数值数据,我已使用原始字符串将其添加到你的字符串中,这样斜线就不会造成问题。这是通过在你的数字上使用和来确定要将哪些整数用于制作 LaTeX 分数来完成的。\sagestr
\percent
\sageplot
\sage
\sagestr
\sagestr
numerator()
denominator()
\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 中的输出是:
编辑:由于您的评论指定您希望将分数插入字符串,因此我已编辑了我的代码来执行此操作。