23.01.2015 Aufrufe

Rechnen in LaTeX - Eine kurze Vorstellung von ... - suedraum

Rechnen in LaTeX - Eine kurze Vorstellung von ... - suedraum

Rechnen in LaTeX - Eine kurze Vorstellung von ... - suedraum

MEHR ANZEIGEN
WENIGER ANZEIGEN
  • 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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!