rechnen in latex - suedraumsuedraum.de/latex/stammtisch/degenkolb_rechnen_in_latex...rechnen in...

25
Christian Degenkolb Rechnen in L A T E X Eine kurze Vorstellung von spreadtab, fp und SageTeX 15. Juli 2012 L A T E X-User-Treffen Freiberg

Upload: others

Post on 21-Jan-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Rechnen in LATEX - suedraumsuedraum.de/latex/stammtisch/degenkolb_rechnen_in_latex...Rechnen in Tabellen mit spreadtab 1 \usepackage{spreadtab} 2... 3 \begin{spreadtab}% 4 {{Tabellentyp}{Spaltendefinitionen}}

Christian Degenkolb

Rechnen in LATEXEine kurze Vorstellung von spreadtab, fpund SageTeX

15. Juli 2012

LATEX-User-Treffen Freiberg

Page 2: Rechnen in LATEX - suedraumsuedraum.de/latex/stammtisch/degenkolb_rechnen_in_latex...Rechnen in Tabellen mit spreadtab 1 \usepackage{spreadtab} 2... 3 \begin{spreadtab}% 4 {{Tabellentyp}{Spaltendefinitionen}}

Das Paket spreadtab

Autor: Christian Tellechea (auch chemfig, xtring, ...)Version: 0.4b (2012/05/13)“[. . . ] provides spreadsheet features for LaTeX table environments. [. . . ]allows to construct tables in a manner similar to a spreadsheet [. . . ] cells ofa table have row and column indices [. . . ] can be used in formulas togenerate values in other cells [. . . ]”kompatibel mit allen Tabellentypen, booktabs, \multicolumn, \hline und\clinehttp://www.ctan.org/pkg/spreadtab

Christian Degenkolb (TUBAF) Rechnen in LATEX 1

Page 3: Rechnen in LATEX - suedraumsuedraum.de/latex/stammtisch/degenkolb_rechnen_in_latex...Rechnen in Tabellen mit spreadtab 1 \usepackage{spreadtab} 2... 3 \begin{spreadtab}% 4 {{Tabellentyp}{Spaltendefinitionen}}

Rechnen in Tabellen mit spreadtab

1 \usepackage{spreadtab}2 ...3 \begin{spreadtab}%4 {{Tabellentyp}{Spaltendefinitionen}}5 1 & 2 & Cell1:1 + Cell2:1\\6 3 & 4 & Cell1:2 - Cell2:2\\7 Cell1:1 / Cell2:1 & Cell1:2 * Cell2:2 & Cell3:1 ^ Cell3:2 \\8 \end{spreadtab}

1 2 33 4 -1

0.333 8 0.333

Christian Degenkolb (TUBAF) Rechnen in LATEX 2

Page 4: Rechnen in LATEX - suedraumsuedraum.de/latex/stammtisch/degenkolb_rechnen_in_latex...Rechnen in Tabellen mit spreadtab 1 \usepackage{spreadtab} 2... 3 \begin{spreadtab}% 4 {{Tabellentyp}{Spaltendefinitionen}}

Referenzieren von Zellen

Absolutes Referenzierenin der Form <colref><rowref> wobei colref=[Buchstabe von a bis z] undrowref=[Zahl von 1 startend]

1 1 & 2 & a1 + b1 \\2 3 & 4 & a2 - b2 \\3 a1/a2 & b1*b2 & c1^c2 \\

1 2 33 4 -1

0.333 8 0.333

Relatives Referenzierenin der Form [x,y] wobei x=[horizontale Offset von der Zelle mit Formel]und y=[vertikale Offset von der Zelle mit Formel]

1 1 & 2 & [-2,0] + [-1,0] \\2 3 & 4 & [-2,0] - [-1,0] \\3 [0,-2]/[0,-1]&[0,-2]*[0,-1]&[0,-2]^[0,-1]\\

1 2 33 4 -1

0.333 8 0.333

Christian Degenkolb (TUBAF) Rechnen in LATEX 3

Page 5: Rechnen in LATEX - suedraumsuedraum.de/latex/stammtisch/degenkolb_rechnen_in_latex...Rechnen in Tabellen mit spreadtab 1 \usepackage{spreadtab} 2... 3 \begin{spreadtab}% 4 {{Tabellentyp}{Spaltendefinitionen}}

Textzellen und gemischte Zellen

Textzellendurch ein vorgestelltes @ definiertZelle wird in Berechnungen ignoriert und ist nicht adressierbarmit \renewcommand\STtextcell{<char>} auf <char> änderbarleere Zellen oder Zellen mit nur Leerzeichen sind automatisch Textzellen

gemischte Zellen

<Textfeld> :={Numerisches Feld}<Ende des Textfeldes>

Trenner von := durch \renewcommand\STnumericfieldmarker{<text>} auf<text> änderbar

1 1 & 2 \\2 3 & b2= :={4} nicht 5 \\3 a1+a2 & b1+b2 \\

1 23 b2= 4 nicht 54 6

Christian Degenkolb (TUBAF) Rechnen in LATEX 4

Page 6: Rechnen in LATEX - suedraumsuedraum.de/latex/stammtisch/degenkolb_rechnen_in_latex...Rechnen in Tabellen mit spreadtab 1 \usepackage{spreadtab} 2... 3 \begin{spreadtab}% 4 {{Tabellentyp}{Spaltendefinitionen}}

Kopieren von Formeln mit \STcopy

um Formeln nicht mehrmals eingeben zu müssen\STcopy{>x,vy}{<Formel>}

>x kopiert die Formeln um x stellen nach rechts, nur > kopiert bis zumEnde der Zeilevy kopiert die Formeln um y nach unten, nur v kopiert bis zum Ende derSpalteZellen mit belegtem numerischen Teil werden nicht überschrieben (A)Zellen mit Textinhalt, aber freiem numerischen Inhalt, werden “aufgefüllt”(B)

1 1 & \STcopy{v2}{a1 + a2} & \\2 \STcopy{v}{a1+1} & & \\3 & B:={} & \\4 A:={99} & \STcopy{>1}{a1 + a3} & \\

1 32 53 B102

A99 4 105

Christian Degenkolb (TUBAF) Rechnen in LATEX 5

Page 7: Rechnen in LATEX - suedraumsuedraum.de/latex/stammtisch/degenkolb_rechnen_in_latex...Rechnen in Tabellen mit spreadtab 1 \usepackage{spreadtab} 2... 3 \begin{spreadtab}% 4 {{Tabellentyp}{Spaltendefinitionen}}

Zelleninhalte innerhalb und außerhalb der Tabelle anzeigen

außerhalb der Tabelle\STsavecell{<name>}{abs. Refenz} als optionaler Parameter von\begin{spreadtab}

1 \begin{spreadtab}2 [\STsavecell{\exp}{b3}]3 ...4 1 & 2 \\5 3 & b2= :={4} nicht 5 \\6 a1+a2 & b1+b2 \\7 ...8 Inhalt von b3: \exp

1 23 b2= 4 nicht 54 6

Inhalt von b3: 6

innerhalb der Tabellein der Form <<Reference>>

1 @Verkauf & 5 \\2 @Einkauf & 3 \\3 @Profit (<<b1>>-<<b2>>) & b1-b2 \\

Verkauf 5Einkauf 3

Profit (5-3) 2

Page 8: Rechnen in LATEX - suedraumsuedraum.de/latex/stammtisch/degenkolb_rechnen_in_latex...Rechnen in Tabellen mit spreadtab 1 \usepackage{spreadtab} 2... 3 \begin{spreadtab}% 4 {{Tabellentyp}{Spaltendefinitionen}}

Zelleninhalte innerhalb und außerhalb der Tabelle anzeigen II

mit tag, cell und STtag

durch tag(<name>) wird <name> als Alias für Zelle festgelegtZugriff innerhalb der Tabelle mit cell(<name>) . . .. . . und außerhalb der Tabelle mit \STtag{<name>}

1 1tag(eins) \\2 4tag(vier) \\3 cell(eins)+cell(vier) \\4 a1*cell(vier)tag(erg) \\5 ...6 a1 = \STtag{eins}7 Ergebnis = \STtag{erg}

1454

a1 = 1Ergebnis = 4

Christian Degenkolb (TUBAF) Rechnen in LATEX 7

Page 9: Rechnen in LATEX - suedraumsuedraum.de/latex/stammtisch/degenkolb_rechnen_in_latex...Rechnen in Tabellen mit spreadtab 1 \usepackage{spreadtab} 2... 3 \begin{spreadtab}% 4 {{Tabellentyp}{Spaltendefinitionen}}

Zeilen und Spalten verstecken

\SThiderow verteckt Zeile vor Ausgabe\SThidecol versteckt Spalte vor Ausgabefür Zwischenergebnisse sinnvoll

1 1 & 3\SThidecol & b3 \\2 2\SThiderow & 4 & 6 \\3 a1+a2 & b1*b2 & c1/c2 \\

1 123 2

Christian Degenkolb (TUBAF) Rechnen in LATEX 8

Page 10: Rechnen in LATEX - suedraumsuedraum.de/latex/stammtisch/degenkolb_rechnen_in_latex...Rechnen in Tabellen mit spreadtab 1 \usepackage{spreadtab} 2... 3 \begin{spreadtab}% 4 {{Tabellentyp}{Spaltendefinitionen}}

Weitere nützliche Makros

runden von Werten\STautoround{<n>} bzw \STautoround*{<n>} rundet auf nNachkommastellen bzw. füllt bis auf n Nachkommastellen mit 0 auf

1 \STautoround{3}2 ...3 1 \\4 3 \\5 a1 / a2 \\

13

0.333

1 \STautoround*{3}2 ...3 1 \\4 3 \\5 a1 / a2 \\

1.0003.0000.333

Dezimaltrennzeichendurch \STsetdecimalsep{<char>} auf char festlegenStandard ist Punkt

1 \STsetdecimalsep{,}2 ...3 1 & 2 & a1 + a2 \\4 3 & 4 & b1 - b2 \\5 a1/a2 & b1*b2 & c1^c2 \\

1 2 33 4 -1

0,333 8 0,333

Page 11: Rechnen in LATEX - suedraumsuedraum.de/latex/stammtisch/degenkolb_rechnen_in_latex...Rechnen in Tabellen mit spreadtab 1 \usepackage{spreadtab} 2... 3 \begin{spreadtab}% 4 {{Tabellentyp}{Spaltendefinitionen}}

Weitere nützliche Makros II

Summen berechnen\sum{< Intervall 1>;<Intervall 2>; ... ;<Intervall n>}

wobei ein Intervall eine einzelne Zelle, die absolut (a1) oder relativ ([2,1])adressiert sein kann,. . .. . . oder ein Rechteck aus Zellen, das durch die obere linke und unterrechte Zelle (a2:d5 oder [-1,-1]:[2,3]) begrenzt ist

1 1 & 9 \\2 3 & 8 \\3 sum(a1;[0,-1]) & sum(a1:b2) \\

1 93 84 21

Fakultät berechnenfact{<n>} berechnet die Fakultät von n (n<=18)

1 1 & 3 \\2 fact(5) & fact(b1) \\

1 3120 6

Christian Degenkolb (TUBAF) Rechnen in LATEX 10

Page 12: Rechnen in LATEX - suedraumsuedraum.de/latex/stammtisch/degenkolb_rechnen_in_latex...Rechnen in Tabellen mit spreadtab 1 \usepackage{spreadtab} 2... 3 \begin{spreadtab}% 4 {{Tabellentyp}{Spaltendefinitionen}}

Weitere nützliche Makros III

sumprod(<Intervall>,...) multipliziert Elemente und addiert dieProdukte (Kap. 4.1.3)rand() / randint(n,m) zufällige Zahl zwischen [0,1] / [n,m] (Kap. 4.1.4)gcd(n,m,...) / lcm(n,m,...) größte gemeinsame Teiler / kleinstegemeinsame Teiler von n,m,. . . (Kap. 4.1.5)scitodec(<Mantisse>EE<Exponent>) wandelt von wissenschaftlicheNotation (Mantisse ∗ 10Exponent) in Dezimal um (Kap. 4.1.6)weiter Makrofunktionen für Zellenwerte (Kap. 4.1.7) undDatumsumrechnungen (Kap. 4.3)

1 1 & rand()& sumprod(a1:a2;b1:b2) \\2 3 & 4 & gcd(a2,b2) \\3 @-3.1EE3 & scitodec(a3) \\

1 0,12 12,123 4 1

-3.1EE-3 -0,003

Christian Degenkolb (TUBAF) Rechnen in LATEX 11

Page 13: Rechnen in LATEX - suedraumsuedraum.de/latex/stammtisch/degenkolb_rechnen_in_latex...Rechnen in Tabellen mit spreadtab 1 \usepackage{spreadtab} 2... 3 \begin{spreadtab}% 4 {{Tabellentyp}{Spaltendefinitionen}}

Beispiel: spreadtab und ltxtable

1 \begin{spreadtab}2 {{longtable}[c]{llllllllllll}}3 1 & \STcopy{>}{[-1,0]+1} & & & & & & & & & & \\4 ...5 \LTXtable{\textwidth}{spreadtab_ltxtable_exp.tex}

1 2 3 4 5 6 7 8 9 10 11 122 6789 9019 8478 4456 5979 9141 8944 2118 1257 1428 94083 3921 5124 9300 6339 5537 7301 3673 4994 5161 1818 94344 8232 5821 9960 7412 3378 3588 4235 8986 1722 1252 70195 3323 1772 8353 7421 9199 7673 9524 2995 4487 8603 21886 6915 7233 8407 3109 7906 1038 3169 7849 1496 6747 33987 4127 9405 5504 1313 2390 6343 4340 6347 5332 2065 90148 2405 3378 8895 7315 7702 6357 5580 4777 6957 5768 66449 8472 5622 2995 6427 6143 4064 2205 1887 1303 8439 295810 1245 6286 4328 5726 4463 6871 8446 6772 1766 8288 522111 3064 5334 9836 8757 9508 6477 7841 8283 1758 7915 804912 9048 5904 8423 5639 2618 6241 1662 2266 7683 6034 523313 9662 9543 2813 5869 1737 4093 4405 4162 4485 8950 238314 9033 7239 4867 6498 4725 4126 3125 5608 5981 2073 816615 5525 4829 6897 8253 2932 8158 7627 8414 5449 5316 310516 5751 1929 1057 4094 5500 9843 5310 1151 3576 3611 455117 3670 5571 8097 9942 9782 5999 9851 5154 5133 7827 449518 8842 6425 8446 5537 2137 3669 6814 8355 7586 6857 727219 4367 5503 8778 5178 1123 4092 9356 4065 7880 5949 181820 5828 4700 7886 8340 4295 5132 4312 1825 5634 2175 823721 9581 7098 8388 3826 4735 7361 6002 2338 6085 1163 683222 6247 6909 7452 4914 2549 8622 7814 7990 8046 7340 759723 8614 3471 7303 3183 1322 1766 4844 7705 1960 6899 579524 8936 3479 4676 5038 6291 3688 3071 3285 2618 1514 429925 6633 7369 1211 2987 4659 8288 3211 4635 1152 1219 775426 3593 1444 3870 1436 8365 4475 7109 8247 9334 2230 938127 9267 9024 2419 6372 5750 4957 3294 2492 1347 7372 142328 5882 5986 8210 6539 8017 9998 6503 6290 5904 2712 251629 2701 3811 3164 5428 3439 8654 7832 2738 8504 8948 288030 9154 6107 3045 2953 2826 7980 5062 3653 8093 1230 963131 5591 9174 5850 5093 5443 2651 2464 9652 2906 2237 833132 3944 2755 5152 5774 1938 1653 1824 7995 5549 6195 844433 3644 2433 6484 9165 4210 8588 2511 3702 6264 1466 272034 2879 2297 3760 4416 7605 7962 6034 9600 9867 3686 729635 5548 6167 3820 8233 4468 5544 7468 2600 9673 9592 428436 3597 3351 1478 7800 4886 4023 5063 9823 5999 7492 643037 5130 3451 4147 8500 8590 3283 5239 6290 9050 8152 669738 7651 9579 4500 3029 6846 4213 6252 3888 9024 2402 433239 4640 1634 7542 5687 5613 4475 6574 5885 6364 5897 126040 3785 9115 8514 2406 6929 3281 8129 9144 1478 9470 581541 9641 7776 3049 9846 9226 1823 2622 2507 3398 6386 889242 8070 8012 2177 5416 3521 5509 3108 5125 4024 9251 6820

1

43 7688 4872 4138 1365 4785 1839 6038 9775 2576 7004 400344 2606 3850 3280 2235 9076 1771 6976 6099 2214 4636 709945 2390 7971 5452 2669 7299 2499 4627 4776 6436 1325 827746 1304 9625 8604 1612 3823 6201 5153 2173 8633 5016 193147 3273 5104 7480 4831 2268 7202 4646 2066 3506 3532 204548 8128 9720 7851 3871 5500 2187 5547 5669 2303 3577 551549 9733 1207 4447 3592 7763 7035 5762 8059 6946 2033 541550 2330 7951 7100 5825 2021 8527 6157 1826 3845 9053 631951 9892 4541 2645 4574 7618 4403 5071 3109 6813 5839 321852 5599 5568 4527 2206 4303 3283 1600 1743 8311 1104 830853 8825 5809 8919 4731 5907 8854 5454 9903 8445 2987 998954 5365 4301 7368 3854 4170 4008 9172 3993 9299 4147 944955 5932 5886 9337 2453 9853 4662 7124 4983 8348 6107 870856 9880 6638 7343 5230 8491 3001 4849 1624 7782 8729 221157 9096 2133 5971 6291 1387 2383 2253 9975 6553 4671 795258 5996 7916 7059 2447 5642 3427 1020 5789 8006 6781 823459 6641 7450 6550 3947 7274 2614 3027 2950 8449 7360 146560 4575 8171 2002 7421 8821 9387 4691 1016 3612 8539 692961 3590 8635 7709 2361 2719 1981 4103 9391 3709 5326 403862 7940 6627 8518 8223 4539 2883 6017 8412 4309 1015 236863 4074 1532 6332 9753 4301 4503 7591 5980 9335 8230 821664 3880 7759 9447 6044 1359 1132 9273 1686 7313 5036 882465 3679 5833 5932 4106 8043 2930 7903 6255 6500 2816 815866 6702 7793 4939 3700 7586 5695 4381 9380 4981 5202 450467 2385 5560 9749 4468 1434 4015 8294 4358 7496 9546 297968 4668 2513 1052 9217 3334 7550 1409 9721 6114 2223 894269 7783 7043 5902 9807 2712 3100 2670 4097 2632 9957 321770 1060 7134 5840 6952 4946 8741 9976 9336 7161 2508 951171 1036 3996 1460 9832 1978 6569 8993 7609 6539 6234 918972 9967 6504 7650 5970 5646 8217 9997 1881 4941 4258 953673 7962 2193 6865 7871 4379 1353 8715 1672 7177 8138 422574 8322 3289 3238 9915 4882 1696 6385 1618 1287 2928 718375 8943 5606 2969 9751 5123 1180 8468 6843 8629 8386 519076 1436 7521 5400 4969 6497 4425 3935 9929 3429 3033 617277 4465 2372 7861 2680 2991 4379 7655 4433 3913 8943 473278 6346 4962 6304 1403 1327 7298 2776 6886 5878 8288 406479 6506 9547 1823 4231 3247 8397 2322 9521 3730 2371 515680 5701 3530 7394 3495 1987 5605 9281 6012 7142 6589 664681 9553 5768 6388 3662 6593 6872 4562 9981 2729 4817 8364

2

Limitierender Faktor bei Berechnungen ist “save_size”. Festes Limit in TeXLive 2012 = 80000

Page 14: Rechnen in LATEX - suedraumsuedraum.de/latex/stammtisch/degenkolb_rechnen_in_latex...Rechnen in Tabellen mit spreadtab 1 \usepackage{spreadtab} 2... 3 \begin{spreadtab}% 4 {{Tabellentyp}{Spaltendefinitionen}}

Das Paket fp

Autor: Michael MehlichVersion: jede Datei hat eigene Version, letztes Update 21. Okt. 1996“Fixed point arithmetic for TeX [. . . ]”Einbinden mit \usepackage[options]{fp}

http://www.ctan.org/pkg/fp

Christian Degenkolb (TUBAF) Rechnen in LATEX 13

Page 15: Rechnen in LATEX - suedraumsuedraum.de/latex/stammtisch/degenkolb_rechnen_in_latex...Rechnen in Tabellen mit spreadtab 1 \usepackage{spreadtab} 2... 3 \begin{spreadtab}% 4 {{Tabellentyp}{Spaltendefinitionen}}

Werte zuweisen/ausgeben und einfache Operationen

\FPset#1#2 weist #1 den Wert von #2 zu\FPprint#1 gibt #1 aus\FPadd/div/mul/sub#1#2#3 addiert/dividiert/multipliziert/subtrahiert #2zu #3 und speichert das Ergebnis in #1

\FPround#1#2#3 #1 := #2 gerundet auf #3 Stellen nach “Komma”\FPtrunc#1#2#3 #1 := #2 abgeschnitten auf #3 Stellen nach “Komma”\FPclip#1#2 #1 := #2 mit allen unnötigen Nullen entfernt

1 \FPset\wertEins{1}2 \FPset\wertDrei{3}3 \FPadd\ErgAdd\wertEins\wertDrei4 \FPdiv\ErgDiv\wertEins\wertDrei5 Erg(Add): \FPprint\ErgAdd6 Erg(Div): \FPprint\ErgDiv7 \FPround\ErgDivR\ErgDiv{3}8 Erg(DivRound): \FPprint\ErgDivR9 \FPclip\ErgAddC\ErgAdd10 Erg(AddClip): \FPprint\ErgAddC

Erg(Add):4.000000000000000000Erg(Div):0.333333333333333333Erg(DivRound): 0.333Erg(AddClip): 4

Page 16: Rechnen in LATEX - suedraumsuedraum.de/latex/stammtisch/degenkolb_rechnen_in_latex...Rechnen in Tabellen mit spreadtab 1 \usepackage{spreadtab} 2... 3 \begin{spreadtab}% 4 {{Tabellentyp}{Spaltendefinitionen}}

Werte vergleichen

\FPiflt#1#2 <3> \else <4> \fi Prüft #1 < #2 dann <3> ansonsten <4>

\FPifeg#1#2 <3> \else <4> \fi Prüft #1 = #2 dann <3> ansonsten <4>

\FPifgt#1#2 <3> \else <4> \fi Prüft #1 > #2 dann <3> ansonsten <4>

\FPifpos/neg/zero#1 <2> \else <3> \fi Prüft #1 > 0/< 0/= 0 dann <2>

\FPifint#1 <2> \else <3> \fi Prüft ob #1 Integer ist, dann <2>ansonsten <3>

1 \FPset\wertEins{1}2 \FPset\wertDrei{3}3 \FPiflt\wertEins\wertDrei 1 kleiner 3

\else 1 nicht kleiner 3 \fi4 \FPifpos\wertEins \FPset\wertTest{4}

\else \FPset\wertTest{-4} \fi5 wertTest=\FPprint\wertTest

1 kleiner 3wertTest=4

Christian Degenkolb (TUBAF) Rechnen in LATEX 15

Page 17: Rechnen in LATEX - suedraumsuedraum.de/latex/stammtisch/degenkolb_rechnen_in_latex...Rechnen in Tabellen mit spreadtab 1 \usepackage{spreadtab} 2... 3 \begin{spreadtab}% 4 {{Tabellentyp}{Spaltendefinitionen}}

Weitere nützliche Makros und Funktionen

\FPmin/max#1#2#3 #1 := min/max(#2,#3)\FPln#1#2 #1 := ln(#2) \FPpow#1#2#3 #1 := #2^#3

\FProot#1#2#3 #1 := #3 te Wurzel von #2

\FPsin/cos/tan#1#2 #1 := sin/cos/tan(#2)\FPrandom#1 #1 := zufällige Zahl zwischen 0 und 1\FPe = Eulerzahl (2.718. . . ) \FPpi = Pi (3.1415. . . )\FPlsolve#1#2#3 #1 := x mit #2∗x+#3= 0

\FPqsolve#1#2#3#4#5 #1,#2 := x mit #3∗x2+#4∗x+#5= 0

weitere siehe fp-Dokumentation

1 \FPmin\ergMin{7}{11}2 \FPset\wertDrei{3}3 \FPpow\ergPow\wertDrei{2}4 \FPrandom\ergRand5 \FPlsolve\ergLSolv{4}{12}

ergMin= 7ergPow=8.999999999999999733ergRand=0.686674999392905737ergLSolv= -3

Page 18: Rechnen in LATEX - suedraumsuedraum.de/latex/stammtisch/degenkolb_rechnen_in_latex...Rechnen in Tabellen mit spreadtab 1 \usepackage{spreadtab} 2... 3 \begin{spreadtab}% 4 {{Tabellentyp}{Spaltendefinitionen}}

Eigene Funktionen mit \FPeval und \FPupn

\FPeval#1#2 #1 ist das Ergebnis der Berechnung #2

mögliche Operationen in #2 sind:+,−,∗,/,^,clip,trunc,round,sin,cos,tan,root,ln,min,max,. . .per \FPset zugewiesene Makros werden direkt mit ihrem Namenangesprochen (ohne\)mit \FPupn#1#2 ist auch die Umgekehrte Polnische Notation möglich

1 \FPeval\ergEins{(2*3 + 2) / 2 }2 \FPset\wertNeun{9}3 \FPeval\ergZwei{round(wertNeun / 8:2)}4 \FPeval\ergDrei{trunc(tan(abs(-5)):3)}5 \FPupn\ergUPN{3 4 + pi * 2 round}

ergEins=4.000000000000000000ergZwei= 1.13ergDrei= -3.380ergUPN= 21.99

Christian Degenkolb (TUBAF) Rechnen in LATEX 17

Page 19: Rechnen in LATEX - suedraumsuedraum.de/latex/stammtisch/degenkolb_rechnen_in_latex...Rechnen in Tabellen mit spreadtab 1 \usepackage{spreadtab} 2... 3 \begin{spreadtab}% 4 {{Tabellentyp}{Spaltendefinitionen}}

Das Paket sageTeX

Autor: Dan DrakeVersion: (CTAN) 2.2.1 (Sage 5.1) v2.3.3 2012/01/16“[. . . ] allows you to embed code, results of computations, and plots fromthe Sage mathematics software suite (http://sagemath.org) intoLATEXdocuments. [. . . ]”http://www.ctan.org/pkg/sagetex

sagetex.sty aus $SAGEROOT/local/share/texmf/tex/generic/sagetex inLATEX-Suchpfad kopierenEinbinden mit \usepackage{sagetex}

LATEX-Lauf, Sage-Lauf (generiert <job>.sagetex.*), LATEX-Lauf

Christian Degenkolb (TUBAF) Rechnen in LATEX 18

Page 20: Rechnen in LATEX - suedraumsuedraum.de/latex/stammtisch/degenkolb_rechnen_in_latex...Rechnen in Tabellen mit spreadtab 1 \usepackage{spreadtab} 2... 3 \begin{spreadtab}% 4 {{Tabellentyp}{Spaltendefinitionen}}

Inline Sage-Code und sageblock

\sage{<sagecode>} führt <sagecode> und gibt Ergbnisse aus\begin{sageblock}<sagecode>\end{sageblock} führt <sagecode> ausund setzt es in LATEX\begin{sagesilent} . . . führt <sagecode> aus, aber setzt den Inhaltnicht in LATEX\begin{sageverbatim} . . . setzt <sagecode> in LATEX, aber führt ihnnicht aus

1 Inline: $2+2=\sage{2+2}$2 mit sageblock3 \begin{sageblock}4 var(’a,b’)5 eqn = [a+b==1, b-a==0]6 s = solve(eqn, a,b)7 \end{sageblock}8 Lösung der $\text{Gleichungen}=

\sage{eqn}$:9 $\sage{s}$

Inline: 2 + 2 = 4mit sageblock

var(’a,b’)eqn = [a+b==1, b-a==0]s = solve(eqn, a,b)

Lösung der Gleichungen =[a+ b = 1,−a+ b = 0] :[[a =

(12

), b =

(12

)]]

Page 21: Rechnen in LATEX - suedraumsuedraum.de/latex/stammtisch/degenkolb_rechnen_in_latex...Rechnen in Tabellen mit spreadtab 1 \usepackage{spreadtab} 2... 3 \begin{spreadtab}% 4 {{Tabellentyp}{Spaltendefinitionen}}

sageplot

\sageplot[<graphicx options>][<format>]{<graphic obj>,<args>}plottet <graphic obj>

<graphicx options> werden direkt an \includegraphics weitergereicht<format> Ausgabeformat, Standard ist EPS/PDF, möglich außerdem png

1 \begin{sagesilent}2 var(’x’)3 f(x) = -x^3+3*x^2+7*x-44 \end{sagesilent}5 \sageplot[scale=.4]{plot(f, x,

-5, 5), axes=False}

Christian Degenkolb (TUBAF) Rechnen in LATEX 20

Page 22: Rechnen in LATEX - suedraumsuedraum.de/latex/stammtisch/degenkolb_rechnen_in_latex...Rechnen in Tabellen mit spreadtab 1 \usepackage{spreadtab} 2... 3 \begin{spreadtab}% 4 {{Tabellentyp}{Spaltendefinitionen}}

sageplot in 3D

1 \begin{sagesilent}2 x, y = var(’x y’)3 \end{sagesilent}4 \sageplot[scale=.23]{

plot3d(sin(pi*(x^2+y^2))/2,(x,-1,1),(y,-1,1))}

1 \begin{sagesilent}2 G = graphs.CubeGraph(5)3 \end{sagesilent}4 \sageplot[scale=.23][png]{

G.plot3d()}

Page 23: Rechnen in LATEX - suedraumsuedraum.de/latex/stammtisch/degenkolb_rechnen_in_latex...Rechnen in Tabellen mit spreadtab 1 \usepackage{spreadtab} 2... 3 \begin{spreadtab}% 4 {{Tabellentyp}{Spaltendefinitionen}}

sageplot mit TikZ

1 \usepackage{tkz-berge}2 \begin{sagesilent}3 g = graphs.PetersenGraph()4 g.set_latex_options(tkz_style=’Art’)5 \end{sagesilent}6 \tikzstyle{every picture}=[rotate=45,

scale=1/2]7 \sage{g}

Page 24: Rechnen in LATEX - suedraumsuedraum.de/latex/stammtisch/degenkolb_rechnen_in_latex...Rechnen in Tabellen mit spreadtab 1 \usepackage{spreadtab} 2... 3 \begin{spreadtab}% 4 {{Tabellentyp}{Spaltendefinitionen}}

Weitere nützliche Makros und Skripte

\sagetexindent Einrückungslänge der sageblock-Ausgabe\sagetexpause/\sagetexunpause Pausieren/Entpausieren derSage-Berechnungen\percent Prozentzeichen (Sage kommt nicht mit \% klar undLATEX nicht mit %)makestatic.py infile [outfile] ersetzt alle Sage-Aufrufe durch dieErgebnisse aus <job>.sagetex.sout

extractsagecode.py infile [outfile] liest alle Sage-Aufrufe ausinfile und speichert sie in outfile

remote-sagetex.py sagefile führt sagefile auf entferntem System aus

Christian Degenkolb (TUBAF) Rechnen in LATEX 23

Page 25: Rechnen in LATEX - suedraumsuedraum.de/latex/stammtisch/degenkolb_rechnen_in_latex...Rechnen in Tabellen mit spreadtab 1 \usepackage{spreadtab} 2... 3 \begin{spreadtab}% 4 {{Tabellentyp}{Spaltendefinitionen}}

\endinput