Hallo, ich führe mittels sagetex eineige Berechnungen in LATeX durch. Wie kann ich mehrere Ergebnisse mittels ifthenelse vergleichen? Oder kann man das in den sage-Code einbinden? Open in Online-Editor
\documentclass{article} \usepackage{sagetex} \usepackage{ifthen} \begin{document} \begin{sagesilent} var('x') f = x^2 \end{sagesilent} $\ifthenelse{\sage{f(2)}>0}{a}{b}$ \end{document} gefragt 15 Sep '15, 20:35 typ42
Ergebnis 5 von 6
show 1 more comments
|
Ich poste hier mal die Antwort von DJP auf meine Frage aus dem Tex.stackexchange forum: A lot of packages don't "play well" with the sagetex package. This appears to be one such package in that it prevents you from typing things in the natural way you tried in your code. One approach is to take advantage of sagetex and Python to avoid even having to use the ifthen package. But if you want to use that package then you can have sagetex insert the command as a string. This solution doesn't seem particularly natural but I don't know of a better way. Open in Online-Editor
\documentclass{article} \usepackage{sagetex} \usepackage{ifthen} \begin{document} \begin{sagesilent} var('x') f = x^2 output = r"" if f(2)>0: output += "a" else: output += "b" output1 = r"\ifthenelse{%s>%s}{a}{b}"%(f(2),0) \end{sagesilent} One way to handle the problem is to process it with sagetex to get\\ \sagestr{output}\\ and another way is to insert the command as a string\\ \sagestr{output1} \end{document}
Permanenter link
Dieser Antwort ist "Community Wiki" markiert.
Da es nicht Deine Antwort ist (und Du sie nicht einmal übersetzt hast), habe ich mir erlaubt sie zu wikifizieren.
(18 Sep '15, 08:18)
saputello
|
Das ganze funktioniert recht leicht mit LuaLaTeX. Die Ausgabe ist natürlich Open in Online-Editor
\documentclass{article} \usepackage{ifthen} \begin{document} \directlua{ function f(x) return tex.sprint(x^2) end } \ifthenelse{\directlua{f(2)}>0}{a}{b} \end{document} beantwortet 20 Sep '15, 17:04 Henri |
Würde mich nicht wundern, wenn das nicht ginge.
\ifthenelse
muss das erste Argument immer voll expandieren. Ich bezweifle aber, dass\sage{f(2)}
voll expandierbar ist. Das schreibt nämlich u. a. eine.sage
-Datei. Echte Tests konnte ich mangelssage
leider nicht machen. Man müsste irgendwie anders an das Ergebnis aus der.sout
-Datei heran kommen. Da ich Mangelssage
nicht testen kann und keine.sout
-Datei habe, kann ich dazu nichts weiter beitragen.Genau das ist wohl das Problem. Das obige Besipiel funktioniert nicht, da ich nicht an den Wert von sage(f(2)) komme.
Die Frage wurde auch unter How can i compare values from sagetex with ifthenelse? gestellt. Bitte gib Links zu Crossposts Deiner Fragen immer mit an.
Was ist eigentlich
sagetex
? Gehört das zum Kanon? Finde es zwar bei CTAN, habe es aber nicht bei meiner TeXLive-Distribution.Also ich kann dir nur sagen, wofür ich es nutze. sagetex bezieh sich auf das Computeralgebrasystem sage. Der Vorteil von sage ist, dass du Schnittstellen zu vielen großen Programmen (Maxima, R, Mathematica...) hast. Ich stelle damit Berechnungen an, die ich dann in LaTeX direkt einbinde.
Unabhängig von der Frage, aber da
f(x) = x^2
ist wird der Test immera
geben, dax^2 > 0
für allex
.