在 SageTeX 中的 sageplot 环境中使用引号

在 SageTeX 中的 sageplot 环境中使用引号

问题是:如何让以下内容在 SageTeX 中工作?引号总是会导致错误。

\sageplot{plot(cos(x),(x,0,pi),label='$\cos(x)$')}

双引号,转义它们,......似乎没有任何作用。

答案1

我不知道该如何告诉你发生了什么,但是这是有效的:

\documentclass{article}
\usepackage{sagetex}
\begin{document}
\pagestyle{empty}
\begin{sagesilent}
G=Graphics()
var('x')
G+=plot(cos(x),(x,0,pi),label='$\cos(x)$')
\end{sagesilent}
\[ \sageplot{G}\] 
\end{document}

请注意,为了更好地控制文本标签的位置,请尝试以下操作:

\documentclass{article}
\usepackage{sagetex}
\begin{document}
\pagestyle{empty}
\begin{sagesilent}
G=Graphics()
H=Graphics()
var('x')
G+=plot(cos(x),(x,0,pi))
H+= text("$\cos(x)$", (3, 1), fontsize=16, color='black')
\end{sagesilent}
\[ \sageplot{G+H}\] 
\end{document}

人们在询问会知道什么是最好的。以下是第一组代码的输出:在此处输入图片描述

答案2

问题不在于引号。如果你使用了'cos(x)',它就可以正常工作。真正的问题是美元符号和\cos: TeX 正在解释 之前的内容。有了美元符号,你的文件\sageplot中最终会出现以下内容:.sagetex.sage

_st_.plot(0, format='notprovided', _p_=plot(cos(x),(x,0,pi),label='$\mathop {\mathgroup \symoperators cos}\nolimits (x)$'))

在这种情况下,SageTeX 所做的正是您(无意中)要求的:它将上述文本作为标签包含在内。而且由于 TeX 在\sageplot看到任何内容之前就这样做了,所以 SageTex 什么也做不了。

上面的解决方案sagesilent比必要的更复杂,但有效,因为里面的美元符号和反斜杠sagesilent直接传递给.sagetex.sage文件。这是一个更简单的方法:

\begin{sagesilent}
  P = plot(cos(x),(x,0,pi),label='$\cos(x)$')
\end{sagesilent}

\sageplot[width=.5\textwidth]{P}

相关内容