Rechnen in LaTeX - Eine kurze Vorstellung von ... - suedraum
Rechnen in LaTeX - Eine kurze Vorstellung von ... - suedraum
Rechnen in LaTeX - Eine kurze Vorstellung von ... - suedraum
- Keine Tags gefunden...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Christian Degenkolb<br />
<strong>Rechnen</strong> <strong>in</strong> L A TEX<br />
E<strong>in</strong>e <strong>kurze</strong> <strong>Vorstellung</strong> <strong>von</strong> spreadtab, fp<br />
und SageTeX<br />
15. Juli 2012<br />
L A TEX-User-Treffen Freiberg
Das Paket spreadtab<br />
Autor: Christian Tellechea (auch chemfig, xtr<strong>in</strong>g, ...)<br />
Version: 0.4b (2012/05/13)<br />
“[. . . ] provides spreadsheet features for <strong>LaTeX</strong> table environments. [. . . ]<br />
allows to construct tables <strong>in</strong> a manner similar to a spreadsheet [. . . ] cells of<br />
a table have row and column <strong>in</strong>dices [. . . ] can be used <strong>in</strong> formulas to<br />
generate values <strong>in</strong> other cells [. . . ]”<br />
kompatibel mit allen Tabellentypen, booktabs, \multicolumn, \hl<strong>in</strong>e und<br />
\cl<strong>in</strong>e<br />
http://www.ctan.org/pkg/spreadtab<br />
Christian Degenkolb (TUBAF) <strong>Rechnen</strong> <strong>in</strong> LATEX 1
<strong>Rechnen</strong> <strong>in</strong> Tabellen mit spreadtab<br />
1 \usepackage{spreadtab}<br />
2 ...<br />
3 \beg<strong>in</strong>{spreadtab}%<br />
4 {{Tabellentyp}{Spaltendef<strong>in</strong>itionen}}<br />
5 1 & 2 & Cell1:1 + Cell2:1\\<br />
6 3 & 4 & Cell1:2 - Cell2:2\\<br />
7 Cell1:1 / Cell2:1 & Cell1:2 * Cell2:2 & Cell3:1 ^ Cell3:2 \\<br />
8 \end{spreadtab}<br />
1 2 3<br />
3 4 -1<br />
0.333 8 0.333<br />
Christian Degenkolb (TUBAF) <strong>Rechnen</strong> <strong>in</strong> LATEX 2
Referenzieren <strong>von</strong> Zellen<br />
Absolutes Referenzieren<br />
<strong>in</strong> der Form wobei colref=[Buchstabe <strong>von</strong> a bis z] und<br />
rowref=[Zahl <strong>von</strong> 1 startend]<br />
1 1 & 2 & a1 + b1 \\<br />
2 3 & 4 & a2 - b2 \\<br />
3 a1/a2 & b1*b2 & c1^c2 \\<br />
1 2 3<br />
3 4 -1<br />
0.333 8 0.333<br />
Relatives Referenzieren<br />
<strong>in</strong> der Form [x,y] wobei x=[horizontale Offset <strong>von</strong> der Zelle mit Formel]<br />
und y=[vertikale Offset <strong>von</strong> der Zelle mit Formel]<br />
1 1 & 2 & [-2,0] + [-1,0] \\<br />
2 3 & 4 & [-2,0] - [-1,0] \\<br />
3 [0,-2]/[0,-1]&[0,-2]*[0,-1]&[0,-2]^[0,-1]\\<br />
1 2 3<br />
3 4 -1<br />
0.333 8 0.333<br />
Christian Degenkolb (TUBAF) <strong>Rechnen</strong> <strong>in</strong> LATEX 3
Textzellen und gemischte Zellen<br />
Textzellen<br />
durch e<strong>in</strong> vorgestelltes @ def<strong>in</strong>iert<br />
Zelle wird <strong>in</strong> Berechnungen ignoriert und ist nicht adressierbar<br />
mit \renewcommand\STtextcell{} auf änderbar<br />
leere Zellen oder Zellen mit nur Leerzeichen s<strong>in</strong>d automatisch Textzellen<br />
gemischte Zellen<br />
:={Numerisches Feld}<br />
Trenner <strong>von</strong> := durch \renewcommand\STnumericfieldmarker{} auf<br />
änderbar<br />
1 1 & 2 \\<br />
2 3 & b2= :={4} nicht 5 \\<br />
3 a1+a2 & b1+b2 \\<br />
1 2<br />
3 b2= 4 nicht 5<br />
4 6<br />
Christian Degenkolb (TUBAF) <strong>Rechnen</strong> <strong>in</strong> LATEX 4
Kopieren <strong>von</strong> Formeln mit \STcopy<br />
um Formeln nicht mehrmals e<strong>in</strong>geben zu müssen<br />
\STcopy{>x,vy}{}<br />
>x kopiert die Formeln um x stellen nach rechts, nur > kopiert bis zum<br />
Ende der Zeile<br />
vy kopiert die Formeln um y nach unten, nur v kopiert bis zum Ende der<br />
Spalte<br />
Zellen mit belegtem numerischen Teil werden nicht überschrieben (A)<br />
Zellen mit Text<strong>in</strong>halt, aber freiem numerischen Inhalt, werden “aufgefüllt”<br />
(B)<br />
1 1 & \STcopy{v2}{a1 + a2} & \\<br />
2 \STcopy{v}{a1+1} & & \\<br />
3 & B:={} & \\<br />
4 A:={99} & \STcopy{>1}{a1 + a3} & \\<br />
1 3<br />
2 5<br />
3 B102<br />
A99 4 105<br />
Christian Degenkolb (TUBAF) <strong>Rechnen</strong> <strong>in</strong> LATEX 5
Zellen<strong>in</strong>halte <strong>in</strong>nerhalb und außerhalb der Tabelle anzeigen<br />
außerhalb der Tabelle<br />
\STsavecell{}{abs. Refenz} als optionaler Parameter <strong>von</strong><br />
\beg<strong>in</strong>{spreadtab}<br />
1 \beg<strong>in</strong>{spreadtab}<br />
2 [\STsavecell{\exp}{b3}]<br />
3 ...<br />
4 1 & 2 \\<br />
5 3 & b2= :={4} nicht 5 \\<br />
6 a1+a2 & b1+b2 \\<br />
7 ...<br />
8 Inhalt <strong>von</strong> b3: \exp<br />
1 2<br />
3 b2= 4 nicht 5<br />
4 6<br />
Inhalt <strong>von</strong> b3: 6<br />
<strong>in</strong>nerhalb der Tabelle<br />
<strong>in</strong> der Form <br />
1 @Verkauf & 5 \\<br />
2 @E<strong>in</strong>kauf & 3 \\<br />
3 @Profit (-) & b1-b2 \\<br />
Verkauf 5<br />
E<strong>in</strong>kauf 3<br />
Profit (5-3) 2
Zellen<strong>in</strong>halte <strong>in</strong>nerhalb und außerhalb der Tabelle anzeigen II<br />
mit tag, cell und STtag<br />
durch tag() wird als Alias für Zelle festgelegt<br />
Zugriff <strong>in</strong>nerhalb der Tabelle mit cell() . . .<br />
. . . und außerhalb der Tabelle mit \STtag{}<br />
1 1tag(e<strong>in</strong>s) \\<br />
2 4tag(vier) \\<br />
3 cell(e<strong>in</strong>s)+cell(vier) \\<br />
4 a1*cell(vier)tag(erg) \\<br />
5 ...<br />
6 a1 = \STtag{e<strong>in</strong>s}<br />
7 Ergebnis = \STtag{erg}<br />
1<br />
4<br />
5<br />
4<br />
a1 = 1<br />
Ergebnis = 4<br />
Christian Degenkolb (TUBAF) <strong>Rechnen</strong> <strong>in</strong> LATEX 7
Zeilen und Spalten verstecken<br />
\SThiderow verteckt Zeile vor Ausgabe<br />
\SThidecol versteckt Spalte vor Ausgabe<br />
für Zwischenergebnisse s<strong>in</strong>nvoll<br />
1 1 & 3\SThidecol & b3 \\<br />
2 2\SThiderow & 4 & 6 \\<br />
3 a1+a2 & b1*b2 & c1/c2 \\<br />
1 12<br />
3 2<br />
Christian Degenkolb (TUBAF) <strong>Rechnen</strong> <strong>in</strong> LATEX 8
Weitere nützliche Makros<br />
runden <strong>von</strong> Werten<br />
\STautoround{} bzw \STautoround*{} rundet auf n<br />
Nachkommastellen bzw. füllt bis auf n Nachkommastellen mit 0 auf<br />
1 \STautoround{3}<br />
2 ...<br />
3 1 \\<br />
4 3 \\<br />
5 a1 / a2 \\<br />
1<br />
3<br />
0.333<br />
1 \STautoround*{3}<br />
2 ...<br />
3 1 \\<br />
4 3 \\<br />
5 a1 / a2 \\<br />
1.000<br />
3.000<br />
0.333<br />
Dezimaltrennzeichen<br />
durch \STsetdecimalsep{} auf char festlegen<br />
Standard ist Punkt<br />
1 \STsetdecimalsep{,}<br />
2 ...<br />
3 1 & 2 & a1 + a2 \\<br />
4 3 & 4 & b1 - b2 \\<br />
5 a1/a2 & b1*b2 & c1^c2 \\<br />
1 2 3<br />
3 4 -1<br />
0,333 8 0,333
Weitere nützliche Makros II<br />
Summen berechnen<br />
\sum{< Intervall 1>;; ... ;}<br />
wobei e<strong>in</strong> Intervall e<strong>in</strong>e e<strong>in</strong>zelne Zelle, die absolut (a1) oder relativ ([2,1])<br />
adressiert se<strong>in</strong> kann,. . .<br />
. . . oder e<strong>in</strong> Rechteck aus Zellen, das durch die obere l<strong>in</strong>ke und unter<br />
rechte Zelle (a2:d5 oder [-1,-1]:[2,3]) begrenzt ist<br />
1 1 & 9 \\<br />
2 3 & 8 \\<br />
3 sum(a1;[0,-1]) & sum(a1:b2) \\<br />
1 9<br />
3 8<br />
4 21<br />
Fakultät berechnen<br />
fact{} berechnet die Fakultät <strong>von</strong> n (n
Weitere nützliche Makros III<br />
sumprod(,...) multipliziert Elemente und addiert die<br />
Produkte (Kap. 4.1.3)<br />
rand() / rand<strong>in</strong>t(n,m) zufällige Zahl zwischen [0,1] / [n,m] (Kap. 4.1.4)<br />
gcd(n,m,...) / lcm(n,m,...) größte geme<strong>in</strong>same Teiler / kle<strong>in</strong>ste<br />
geme<strong>in</strong>same Teiler <strong>von</strong> n,m,. . . (Kap. 4.1.5)<br />
scitodec(EE) wandelt <strong>von</strong> wissenschaftliche<br />
Notation (Mantisse ∗ 10 Exponent ) <strong>in</strong> Dezimal um (Kap. 4.1.6)<br />
weiter Makrofunktionen für Zellenwerte (Kap. 4.1.7) und<br />
Datumsumrechnungen (Kap. 4.3)<br />
1 1 & rand()& sumprod(a1:a2;b1:b2) \\<br />
2 3 & 4 & gcd(a2,b2) \\<br />
3 @-3.1EE3 & scitodec(a3) \\<br />
1 0,12 12,12<br />
3 4 1<br />
-3.1EE-3 -0,003<br />
Christian Degenkolb (TUBAF) <strong>Rechnen</strong> <strong>in</strong> LATEX 11
Beispiel: spreadtab und ltxtable<br />
1 \beg<strong>in</strong>{spreadtab}<br />
2 {{longtable}[c]{llllllllllll}}<br />
3 1 & \STcopy{>}{[-1,0]+1} & & & & & & & & & & \\<br />
4 ...<br />
5 \LTXtable{\textwidth}{spreadtab_ltxtable_exp.tex}<br />
1 2 3 4 5 6 7 8 9 10 11 12<br />
2 6789 9019 8478 4456 5979 9141 8944 2118 1257 1428 9408<br />
3 3921 5124 9300 6339 5537 7301 3673 4994 5161 1818 9434<br />
4 8232 5821 9960 7412 3378 3588 4235 8986 1722 1252 7019<br />
5 3323 1772 8353 7421 9199 7673 9524 2995 4487 8603 2188<br />
6 6915 7233 8407 3109 7906 1038 3169 7849 1496 6747 3398<br />
7 4127 9405 5504 1313 2390 6343 4340 6347 5332 2065 9014<br />
8 2405 3378 8895 7315 7702 6357 5580 4777 6957 5768 6644<br />
9 8472 5622 2995 6427 6143 4064 2205 1887 1303 8439 2958<br />
10 1245 6286 4328 5726 4463 6871 8446 6772 1766 8288 5221<br />
11 3064 5334 9836 8757 9508 6477 7841 8283 1758 7915 8049<br />
12 9048 5904 8423 5639 2618 6241 1662 2266 7683 6034 5233<br />
13 9662 9543 2813 5869 1737 4093 4405 4162 4485 8950 2383<br />
14 9033 7239 4867 6498 4725 4126 3125 5608 5981 2073 8166<br />
15 5525 4829 6897 8253 2932 8158 7627 8414 5449 5316 3105<br />
16 5751 1929 1057 4094 5500 9843 5310 1151 3576 3611 4551<br />
17 3670 5571 8097 9942 9782 5999 9851 5154 5133 7827 4495<br />
18 8842 6425 8446 5537 2137 3669 6814 8355 7586 6857 7272<br />
19 4367 5503 8778 5178 1123 4092 9356 4065 7880 5949 1818<br />
20 5828 4700 7886 8340 4295 5132 4312 1825 5634 2175 8237<br />
21 9581 7098 8388 3826 4735 7361 6002 2338 6085 1163 6832<br />
22 6247 6909 7452 4914 2549 8622 7814 7990 8046 7340 7597<br />
23 8614 3471 7303 3183 1322 1766 4844 7705 1960 6899 5795<br />
24 8936 3479 4676 5038 6291 3688 3071 3285 2618 1514 4299<br />
25 6633 7369 1211 2987 4659 8288 3211 4635 1152 1219 7754<br />
26 3593 1444 3870 1436 8365 4475 7109 8247 9334 2230 9381<br />
27 9267 9024 2419 6372 5750 4957 3294 2492 1347 7372 1423<br />
28 5882 5986 8210 6539 8017 9998 6503 6290 5904 2712 2516<br />
29 2701 3811 3164 5428 3439 8654 7832 2738 8504 8948 2880<br />
30 9154 6107 3045 2953 2826 7980 5062 3653 8093 1230 9631<br />
31 5591 9174 5850 5093 5443 2651 2464 9652 2906 2237 8331<br />
32 3944 2755 5152 5774 1938 1653 1824 7995 5549 6195 8444<br />
33 3644 2433 6484 9165 4210 8588 2511 3702 6264 1466 2720<br />
34 2879 2297 3760 4416 7605 7962 6034 9600 9867 3686 7296<br />
35 5548 6167 3820 8233 4468 5544 7468 2600 9673 9592 4284<br />
36 3597 3351 1478 7800 4886 4023 5063 9823 5999 7492 6430<br />
37 5130 3451 4147 8500 8590 3283 5239 6290 9050 8152 6697<br />
38 7651 9579 4500 3029 6846 4213 6252 3888 9024 2402 4332<br />
39 4640 1634 7542 5687 5613 4475 6574 5885 6364 5897 1260<br />
40 3785 9115 8514 2406 6929 3281 8129 9144 1478 9470 5815<br />
41 9641 7776 3049 9846 9226 1823 2622 2507 3398 6386 8892<br />
42 8070 8012 2177 5416 3521 5509 3108 5125 4024 9251 6820<br />
43 7688 4872 4138 1365 4785 1839 6038 9775 2576 7004 4003<br />
44 2606 3850 3280 2235 9076 1771 6976 6099 2214 4636 7099<br />
45 2390 7971 5452 2669 7299 2499 4627 4776 6436 1325 8277<br />
46 1304 9625 8604 1612 3823 6201 5153 2173 8633 5016 1931<br />
47 3273 5104 7480 4831 2268 7202 4646 2066 3506 3532 2045<br />
48 8128 9720 7851 3871 5500 2187 5547 5669 2303 3577 5515<br />
49 9733 1207 4447 3592 7763 7035 5762 8059 6946 2033 5415<br />
50 2330 7951 7100 5825 2021 8527 6157 1826 3845 9053 6319<br />
51 9892 4541 2645 4574 7618 4403 5071 3109 6813 5839 3218<br />
52 5599 5568 4527 2206 4303 3283 1600 1743 8311 1104 8308<br />
53 8825 5809 8919 4731 5907 8854 5454 9903 8445 2987 9989<br />
54 5365 4301 7368 3854 4170 4008 9172 3993 9299 4147 9449<br />
55 5932 5886 9337 2453 9853 4662 7124 4983 8348 6107 8708<br />
56 9880 6638 7343 5230 8491 3001 4849 1624 7782 8729 2211<br />
57 9096 2133 5971 6291 1387 2383 2253 9975 6553 4671 7952<br />
58 5996 7916 7059 2447 5642 3427 1020 5789 8006 6781 8234<br />
59 6641 7450 6550 3947 7274 2614 3027 2950 8449 7360 1465<br />
60 4575 8171 2002 7421 8821 9387 4691 1016 3612 8539 6929<br />
61 3590 8635 7709 2361 2719 1981 4103 9391 3709 5326 4038<br />
62 7940 6627 8518 8223 4539 2883 6017 8412 4309 1015 2368<br />
63 4074 1532 6332 9753 4301 4503 7591 5980 9335 8230 8216<br />
64 3880 7759 9447 6044 1359 1132 9273 1686 7313 5036 8824<br />
65 3679 5833 5932 4106 8043 2930 7903 6255 6500 2816 8158<br />
66 6702 7793 4939 3700 7586 5695 4381 9380 4981 5202 4504<br />
67 2385 5560 9749 4468 1434 4015 8294 4358 7496 9546 2979<br />
68 4668 2513 1052 9217 3334 7550 1409 9721 6114 2223 8942<br />
69 7783 7043 5902 9807 2712 3100 2670 4097 2632 9957 3217<br />
70 1060 7134 5840 6952 4946 8741 9976 9336 7161 2508 9511<br />
71 1036 3996 1460 9832 1978 6569 8993 7609 6539 6234 9189<br />
72 9967 6504 7650 5970 5646 8217 9997 1881 4941 4258 9536<br />
73 7962 2193 6865 7871 4379 1353 8715 1672 7177 8138 4225<br />
74 8322 3289 3238 9915 4882 1696 6385 1618 1287 2928 7183<br />
75 8943 5606 2969 9751 5123 1180 8468 6843 8629 8386 5190<br />
76 1436 7521 5400 4969 6497 4425 3935 9929 3429 3033 6172<br />
77 4465 2372 7861 2680 2991 4379 7655 4433 3913 8943 4732<br />
78 6346 4962 6304 1403 1327 7298 2776 6886 5878 8288 4064<br />
79 6506 9547 1823 4231 3247 8397 2322 9521 3730 2371 5156<br />
80 5701 3530 7394 3495 1987 5605 9281 6012 7142 6589 6646<br />
81 9553 5768 6388 3662 6593 6872 4562 9981 2729 4817 8364<br />
1<br />
2<br />
Limitierender Faktor bei Berechnungen ist “save_size”. Festes Limit <strong>in</strong> TeXLive 2012 = 80000
Das Paket fp<br />
Autor: Michael Mehlich<br />
Version: jede Datei hat eigene Version, letztes Update 21. Okt. 1996<br />
“Fixed po<strong>in</strong>t arithmetic for TeX [. . . ]”<br />
E<strong>in</strong>b<strong>in</strong>den mit \usepackage[options]{fp}<br />
http://www.ctan.org/pkg/fp<br />
Christian Degenkolb (TUBAF) <strong>Rechnen</strong> <strong>in</strong> LATEX 13
Werte zuweisen/ausgeben und e<strong>in</strong>fache Operationen<br />
\FPset#1#2 weist #1 den Wert <strong>von</strong> #2 zu<br />
\FPpr<strong>in</strong>t#1 gibt #1 aus<br />
\FPadd/div/mul/sub#1#2#3 addiert/dividiert/multipliziert/subtrahiert #2<br />
zu #3 und speichert das Ergebnis <strong>in</strong> #1<br />
\FPround#1#2#3<br />
\FPtrunc#1#2#3<br />
\FPclip#1#2<br />
#1 := #2 gerundet auf #3 Stellen nach “Komma”<br />
#1 := #2 abgeschnitten auf #3 Stellen nach “Komma”<br />
#1 := #2 mit allen unnötigen Nullen entfernt<br />
1 \FPset\wertE<strong>in</strong>s{1}<br />
2 \FPset\wertDrei{3}<br />
3 \FPadd\ErgAdd\wertE<strong>in</strong>s\wertDrei<br />
4 \FPdiv\ErgDiv\wertE<strong>in</strong>s\wertDrei<br />
5 Erg(Add): \FPpr<strong>in</strong>t\ErgAdd<br />
6 Erg(Div): \FPpr<strong>in</strong>t\ErgDiv<br />
7 \FPround\ErgDivR\ErgDiv{3}<br />
8 Erg(DivRound): \FPpr<strong>in</strong>t\ErgDivR<br />
9 \FPclip\ErgAddC\ErgAdd<br />
10 Erg(AddClip): \FPpr<strong>in</strong>t\ErgAddC<br />
Erg(Add):<br />
4.000000000000000000<br />
Erg(Div):<br />
0.333333333333333333<br />
Erg(DivRound): 0.333<br />
Erg(AddClip): 4
Werte vergleichen<br />
\FPiflt#1#2 \else \fi Prüft #1 < #2 dann ansonsten <br />
\FPifeg#1#2 \else \fi Prüft #1 = #2 dann ansonsten <br />
\FPifgt#1#2 \else \fi Prüft #1 > #2 dann ansonsten <br />
\FPifpos/neg/zero#1 \else \fi Prüft #1 > 0/< 0/= 0 dann <br />
\FPif<strong>in</strong>t#1 \else \fi Prüft ob #1 Integer ist, dann <br />
ansonsten <br />
1 \FPset\wertE<strong>in</strong>s{1}<br />
2 \FPset\wertDrei{3}<br />
3 \FPiflt\wertE<strong>in</strong>s\wertDrei 1 kle<strong>in</strong>er 3<br />
\else 1 nicht kle<strong>in</strong>er 3 \fi<br />
4 \FPifpos\wertE<strong>in</strong>s \FPset\wertTest{4}<br />
\else \FPset\wertTest{-4} \fi<br />
5 wertTest=\FPpr<strong>in</strong>t\wertTest<br />
1 kle<strong>in</strong>er 3<br />
wertTest=4<br />
Christian Degenkolb (TUBAF) <strong>Rechnen</strong> <strong>in</strong> LATEX 15
Weitere nützliche Makros und Funktionen<br />
\FPm<strong>in</strong>/max#1#2#3 #1 := m<strong>in</strong>/max(#2,#3)<br />
\FPln#1#2 #1 := ln(#2) \FPpow#1#2#3 #1 := #2^#3<br />
\FProot#1#2#3 #1 := #3 te Wurzel <strong>von</strong> #2<br />
\FPs<strong>in</strong>/cos/tan#1#2 #1 := s<strong>in</strong>/cos/tan(#2)<br />
\FPrandom#1 #1 := zufällige Zahl zwischen 0 und 1<br />
\FPe = Eulerzahl (2.718. . . ) \FPpi = Pi (3.1415. . . )<br />
\FPlsolve#1#2#3 #1 := x mit #2∗x+#3= 0<br />
\FPqsolve#1#2#3#4#5 #1,#2 := x mit #3∗x 2 +#4∗x+#5= 0<br />
weitere siehe fp-Dokumentation<br />
1 \FPm<strong>in</strong>\ergM<strong>in</strong>{7}{11}<br />
2 \FPset\wertDrei{3}<br />
3 \FPpow\ergPow\wertDrei{2}<br />
4 \FPrandom\ergRand<br />
5 \FPlsolve\ergLSolv{4}{12}<br />
ergM<strong>in</strong>= 7<br />
ergPow=<br />
8.999999999999999733<br />
ergRand=<br />
0.686674999392905737<br />
ergLSolv= -3
Eigene Funktionen mit \FPeval und \FPupn<br />
\FPeval#1#2 #1 ist das Ergebnis der Berechnung #2<br />
mögliche Operationen <strong>in</strong> #2 s<strong>in</strong>d:<br />
+,−,∗,/,^,clip,trunc,round,s<strong>in</strong>,cos,tan,root,ln,m<strong>in</strong>,max,. . .<br />
per \FPset zugewiesene Makros werden direkt mit ihrem Namen<br />
angesprochen (ohne\)<br />
mit \FPupn#1#2 ist auch die Umgekehrte Polnische Notation möglich<br />
1 \FPeval\ergE<strong>in</strong>s{(2*3 + 2) / 2 }<br />
2 \FPset\wertNeun{9}<br />
3 \FPeval\ergZwei{round(wertNeun / 8:2)}<br />
4 \FPeval\ergDrei{trunc(tan(abs(-5)):3)}<br />
5 \FPupn\ergUPN{3 4 + pi * 2 round}<br />
ergE<strong>in</strong>s=<br />
4.000000000000000000<br />
ergZwei= 1.13<br />
ergDrei= -3.380<br />
ergUPN= 21.99<br />
Christian Degenkolb (TUBAF) <strong>Rechnen</strong> <strong>in</strong> LATEX 17
Das Paket sageTeX<br />
Autor: Dan Drake<br />
Version: (CTAN) 2.2.1 (Sage 5.1) v2.3.3 2012/01/16<br />
“[. . . ] allows you to embed code, results of computations, and plots from<br />
the Sage mathematics software suite (http://sagemath.org) <strong>in</strong>to<br />
L A TEXdocuments. [. . . ]”<br />
http://www.ctan.org/pkg/sagetex<br />
sagetex.sty aus $SAGEROOT/local/share/texmf/tex/generic/sagetex <strong>in</strong><br />
L A TEX-Suchpfad kopieren<br />
E<strong>in</strong>b<strong>in</strong>den mit \usepackage{sagetex}<br />
L A TEX-Lauf, Sage-Lauf (generiert .sagetex.*), L A TEX-Lauf<br />
Christian Degenkolb (TUBAF) <strong>Rechnen</strong> <strong>in</strong> LATEX 18
Inl<strong>in</strong>e Sage-Code und sageblock<br />
\sage{} führt und gibt Ergbnisse aus<br />
\beg<strong>in</strong>{sageblock}\end{sageblock} führt aus<br />
und setzt es <strong>in</strong> L A TEX<br />
\beg<strong>in</strong>{sagesilent} . . . führt aus, aber setzt den Inhalt<br />
nicht <strong>in</strong> L A TEX<br />
\beg<strong>in</strong>{sageverbatim} . . . setzt <strong>in</strong> L A TEX, aber führt ihn<br />
nicht aus<br />
1 Inl<strong>in</strong>e: $2+2=\sage{2+2}$<br />
2 mit sageblock<br />
3 \beg<strong>in</strong>{sageblock}<br />
4 var(’a,b’)<br />
5 eqn = [a+b==1, b-a==0]<br />
6 s = solve(eqn, a,b)<br />
7 \end{sageblock}<br />
8 Lösung der $\text{Gleichungen}=<br />
\sage{eqn}$:<br />
9 $\sage{s}$<br />
Inl<strong>in</strong>e: 2 + 2 = 4<br />
mit sageblock<br />
var(’a,b’)<br />
eqn = [a+b==1, b-a==0]<br />
s = solve(eqn, a,b)<br />
Lösung der Gleichungen =<br />
[a [[ + b ( = 1, −a + b = 0] :<br />
a =<br />
1<br />
) (<br />
2 , b = 1<br />
2)]]
sageplot<br />
\sageplot[][]{,}<br />
plottet <br />
<br />
<br />
werden direkt an \<strong>in</strong>cludegraphics weitergereicht<br />
Ausgabeformat, Standard ist EPS/PDF, möglich außerdem png<br />
1 \beg<strong>in</strong>{sagesilent}<br />
2 var(’x’)<br />
3 f(x) = -x^3+3*x^2+7*x-4<br />
4 \end{sagesilent}<br />
5 \sageplot[scale=.4]{plot(f, x,<br />
-5, 5), axes=False}<br />
Christian Degenkolb (TUBAF) <strong>Rechnen</strong> <strong>in</strong> LATEX 20
sageplot <strong>in</strong> 3D<br />
1 \beg<strong>in</strong>{sagesilent}<br />
2 x, y = var(’x y’)<br />
3 \end{sagesilent}<br />
4 \sageplot[scale=.23]{<br />
plot3d(s<strong>in</strong>(pi*(x^2+y^2))/2,<br />
(x,-1,1),(y,-1,1))}<br />
1 \beg<strong>in</strong>{sagesilent}<br />
2 G = graphs.CubeGraph(5)<br />
3 \end{sagesilent}<br />
4 \sageplot[scale=.23][png]{<br />
G.plot3d()}
sageplot mit TikZ<br />
1 \usepackage{tkz-berge}<br />
2 \beg<strong>in</strong>{sagesilent}<br />
3 g = graphs.PetersenGraph()<br />
4 g.set_latex_options(tkz_style=’Art’)<br />
5 \end{sagesilent}<br />
6 \tikzstyle{every picture}=[rotate=45,<br />
scale=1/2]<br />
7 \sage{g}
Weitere nützliche Makros und Skripte<br />
\sagetex<strong>in</strong>dent E<strong>in</strong>rückungslänge der sageblock-Ausgabe<br />
\sagetexpause/\sagetexunpause Pausieren/Entpausieren der<br />
Sage-Berechnungen<br />
\percent Prozentzeichen (Sage kommt nicht mit \% klar und<br />
L A TEX nicht mit %)<br />
makestatic.py <strong>in</strong>file [outfile] ersetzt alle Sage-Aufrufe durch die<br />
Ergebnisse aus .sagetex.sout<br />
extractsagecode.py <strong>in</strong>file [outfile] liest alle Sage-Aufrufe aus<br />
<strong>in</strong>file und speichert sie <strong>in</strong> outfile<br />
remote-sagetex.py sagefile führt sagefile auf entferntem System aus<br />
Christian Degenkolb (TUBAF) <strong>Rechnen</strong> <strong>in</strong> LATEX 23
\end<strong>in</strong>put