SageTeXについての質問です。

SageTeXについての質問です。

- イシハラ タロウ の投稿
返信数: 2
わからないことが3つほどあるのですが、ご教示願えれば幸いです。

1.商、余りを求めるのに \sage{10 // 3}, \sage{10 % 3} では当然うま
くいきません。\sage{10 \% 3}などとやってもダメです。
2.def による関数の定義がわかりません。
例えばf(x)を if x<2 then return 0 else return x-2 のように定義する
にはどうすればいいのでしょうか。
3.plot3d()がうまくいきません。2dの方は問題ないのですが。
例えば
\begin{sagesilent}
x, y = var('x y')
\end{sagesilent}
\sageplot[scale=.5]{plot3d(sin(pi*(x^2+y^2))/2,(x,-1,1),(y,-1,1))}
では、何も出力されません。
よろしくお願いいたします。
イシハラ タロウ への返信

Re: SageTeXについての質問です。

- イシハラ タロウ の投稿
追記。

plot3dの行で次のメッセージが出ます。ソースを添付します。

Package sagetex Warning: Graphics file sage-plots-for-test6.tex/plot-5.png on p
age 2 not supported; try using pdflatex. Plot command is on input line 111.
イシハラ タロウ への返信

Re: SageTeXについての質問です。

- Z. R. の投稿
1.商、余りを求めるのに \sage{10 // 3}, \sage{10 % 3} では当然うま
くいきません。

%\percent と書くという仕様のようです。なお、/ はLaTeXの特殊文字でないので // はそのまま書けます。

\sage{10 // 3}, \sage{10 \percent 3}
2.def による関数の定義がわかりません。

多分、test6.texにある

\begin{sageblock}
x=var('x')
def h(x):
    if x<2:
        return 0
    else:
        return x-2
\end{sageblock}

が失敗するのは何故か、ということでしょうか。この理由は「インデントをタブで入れている」からで、インデントをスペースで入れると成功するようです。

3.plot3d()がうまくいきません。

マニュアルをざっと見た限りでは、SageTeXの仕様は
「DVI出力の場合は(ドライバの種類に関わらず)EPS画像しかサポートしない」
ということのようです。plot3dはPNG画像を出力するため、DVI出力のpLaTeXでは使えないわけです。

エラーメッセージにある通り、PDF出力のエンジン(pdfLaTeXやLuaLaTeX)では成功するはずです。(pLaTeXでの対策については未調査。)