POLECAMY
Autor:
Wydawca:
Format:
pdf, ibuk
Lua i LaTeX. Dynamiczne tworzenie dokumentów to książka, która staje na granicy dwóch na pozór odległych światów – programowania i składu tekstu. Po jednej stronie Lua – szybki, łatwy i użyteczny język programowania o licznych zastosowaniach. Po drugiej LaTeX – zaawansowany system składu tekstu o rosnącej z roku na rok popularności.
Ich połączenie otwiera wiele nowych możliwości, dla których inspirację znajdziesz w tej książce.
Pozycja ta stanowi pierwsze polskojęzyczne wprowadzenie do dynamicznego tworzenia dokumentów z wykorzystaniem języka Lua i systemu LaTeX.
Podzielona jest na trzy niezależne części:
· Część I. Język Lua
To łagodne i przyjazne wprowadzenie do języka Lua, wzbogacone o liczne komentarze, przykłady i ćwiczenia. Pozwolą Ci one nie tylko lepiej zrozumieć samą konstrukcję języka, ale także wyrobić w sobie uniwersalną umiejętność myślenia algorytmicznego.
· Część II. LuaLaTeX
Dzięki informacjom zawartym w tej części dowiesz się, w jaki sposób kod napisany w języku Lua może wpłynąć na dokumenty generowane przez system LaTeX. Poznasz w tym celu możliwości silnika LuaLaTeX i nauczysz się z nich korzystać.
· Część III. Praktyczne przykłady
Nawet najlepiej wprowadzona teoria nie zastąpi odrobiny praktyki. Ta część stanowi zbiór interesujących przykładów, w których wiedza zawarta w dwóch pierwszych częściach znajduje zastosowanie do rozwiązania rzeczywistych problemów.
Książka przeznaczona jest dla osób, które znają już podstawy tworzenia dokumentów w systemie LaTeX, ale chcą się dowiedzieć, w jaki sposób można zwiększyć jego możliwości.
Rok wydania | 2017 |
---|---|
Liczba stron | 300 |
Kategoria | Programowanie |
Wydawca | Wydawnictwo Naukowe PWN |
ISBN-13 | 978-83-01-19696-7 |
Numer wydania | 1 |
Język publikacji | polski |
Informacja o sprzedawcy | ePWN sp. z o.o. |
POLECAMY
Ciekawe propozycje
Spis treści
Przedmowa | 11 |
I. Język Lua | 15 |
Rozdział 1.Zanim zaczniemy | 17 |
1.1. Środowisko pracy | 18 |
1.2. Programy i biblioteki | 21 |
Rozdział 2.Elementarz | 23 |
2.1. Tryb interaktywny | 25 |
2.2. Anatomia programu | 27 |
2.2.1. Wartości i typy danych | 27 |
2.2.2. Wyrażenia | 29 |
2.2.3. Instrukcje | 30 |
2.2.4. Porcje kodu i programy | 31 |
2.3. Zmienne | 31 |
2.3.1. Wartość domyślna | 32 |
2.3.2. Typ zmiennej | 33 |
2.3.3. Instrukcja przypisania .34 | |
2.4. Komentarze | 35 |
Rozdział 3.Typ podstawowy boolean | 41 |
3.1. Operatory | 41 |
3.1.1. Operatory relacji | 42 |
3.1.2. Operatory logiczne | 44 |
3.1.3. Priorytety operatorów | 45 |
3.2. Instrukcja warunkowa if | 46 |
3.3. Pętle | 48 |
3.3.1. Pętla while | 48 |
3.3.2. Pętla repeat-until | 48 |
3.3.3. Instrukcja break | 49 |
Rozdział 4.Typ podstawowy number | 52 |
4.1. Wartości liczbowe | 53 |
4.2. Operatory | 54 |
4.2.1. Operatory relacji | 54 |
4.2.2. Operatory arytmetyczne | 55 |
4.3. Biblioteka matematyczna | 56 |
4.3.1. Stałe | 56 |
4.3.2. Funkcje trygonometryczne | 57 |
4.3.3. Funkcje liczbowe | 58 |
4.3.4. Generator liczb pseudolosowych | 59 |
4.3.5. Innefunkcje | 60 |
4.3.6. Przejściepomiędzywartościami integer i float | 60 |
4.4. Numeryczna pętla for | 61 |
Rozdział 5.Typ podstawowy string | 65 |
5.1. Stałe wartości znakowe | 65 |
5.1.1. Anatomia ciągu znaków | 67 |
5.1.2. Długie ciągi znaków | 69 |
5.2. Operatory | 71 |
5.2.1. Operator # | 71 |
5.2.2. Operatory relacji | 72 |
5.2.3. Operator konkatenacji (łączenia) | 72 |
5.2.4. Na styku typów | 72 |
5.3. Biblioteka tekstowa | 74 |
5.3.1. Podstawowe funkcje | 75 |
5.3.2. Podciągi | 75 |
5.3.3. Reprezentacje liczbowe | 76 |
5.3.4. Przeszukiwanie i podstawienia | 77 |
5.3.5. Formatowanie ciągu | 78 |
5.4. Kodowanie utf-8 | 81 |
Rozdział 6.Typ obiektowy table | 87 |
6.1. Tabele i klucze | 87 |
6.1.1. Klucze | 88 |
6.1.2. Konstruktory tabel | 91 |
6.2. Tabele sekwencyjne | 93 |
6.2.1. Sekwencje | 93 |
6.3. Biblioteka dla sekwencji | 95 |
6.3.1. Dodawanie,usuwanie i przemieszczanie elementów sekwencji | 95 |
6.3.2. Sortowanie | 97 |
6.3.3. Funkcje ogólnego przeznaczenia | 98 |
6.4. Tabela arg | 100 |
Rozdział 7.Typ obiektowy function | 103 |
7.1. Argumenty i wartości | 105 |
7.1.1. Argumenty funkcji | 105 |
7.1.2. Wartości zwracane przez funkcje | 106 |
7.1.3. Funkcje o nieznanej liczbie argumentów | 108 |
7.2. Zasięg zmiennych | 110 |
7.2.1. Bloki kodu | 111 |
7.2.2. Zmienne lokalne | 111 |
7.3. Funkcje jako wartości pierwszoklasowe | 113 |
7.3.1. Funkcje anonimowe | 114 |
7.3.2. Funkcje lokalne | 115 |
7.4. Iteratory | 116 |
7.4.1. Domknięcia i zmienne nielokalne | 117 |
7.4.2. Iteratory | 118 |
7.4.3. Ogólna pętla for | 119 |
7.4.4. Funkcje iteracyjne dla tabel | 120 |
Rozdział 8.Obsługa wejścia i wyjścia | 124 |
8.1. Podstawowy model obsługi wejścia i wyjścia | 124 |
8.1.1. Funkcja io.write | 125 |
8.1.2. Funkcja io.read | 127 |
8.1.3. Iterator io.lines | 128 |
8.2. Pełen model obsługi wejścia i wyjścia | 129 |
8.2.1. Funkcja io.open | 129 |
8.2.2. Wywoływanie funkcji na strumieniach danych | 131 |
8.2.3. Iterator io.lines raz jeszcze | 132 |
8.2.4. Inne operacje na plikach | 132 |
Rozdział 9.Dopasowywanie do wzorców tekstowych | 137 |
9.1. Wzorce | 138 |
9.1.1. Funkcja string.match | 140 |
9.1.2. Iterator string.gmatch | 140 |
9.1.3. Klasy symboli | 141 |
9.1.4. Modyfikatory wielokrotności | 143 |
9.1.5. Dopasowywanie podciągów ograniczonych | 146 |
9.1.6. Kotwice | 147 |
9.2. Przechwytywanie fragmentów dopasowań | 148 |
9.2.1. Podstawowy mechanizm przechwytywania fragmentów dopasowań | 149 |
9.2.2. Wewnętrzne odwołania do przechwyconych fragmentów | 150 |
9.3. Funkcja string.gsub | 151 |
9.3.1. Podstawienia stałej wartości | 152 |
9.3.2. Podstawienia wartości zależnej od fragmentu dopasowania | 152 |
9.3.3. Podstawienia pochodzące z tabeli | 154 |
9.3.4. Podstawienia zwracane przez funkcje | 154 |
9.4. Prosty konwerter zjęzyka LATEX do języka xhtml | 155 |
Rozdział 10.Moduły i pakiety | 160 |
10.1. Funkcja require | 160 |
10.1.1. Ścieżki do plików modułów | 162 |
10.2. Własne moduły i pakiety | 163 |
10.2.1. Prosty moduł | 163 |
10.2.2. Inne zwyczaje | 165 |
10.2.3. Podmoduły i pakiety | 167 |
10.3. Oprogramowanie LuaRocks | 168 |
10.3.1. Instalacja programu luarocks | 168 |
10.3.2. Instalacja modułów | 169 |
10.3.3. Dostęp do modułów z poziomu interpretera Lua | 169 |
Czego nie znajdziesz w tej książce | 171 |
II. LuaLaTeX | 175 |
Rozdział 11.Wprowadzenie | 177 |
11.1. Silniki i formaty | 178 |
11.2. Czym się różnią pdfTEX i LuaTEX? | 179 |
11.3. Jak przejść od pdfLATEX do LuaLATEX? | 180 |
Rozdział 12.Wbudowany interpreter Lua | 182 |
12.1. Polecenie \directlua | 182 |
12.1.1. Polecenie \directlua w trzech krokach | 183 |
12.1.2. Potencjalne problemy | 183 |
12.1.3. Umieszczanie kodu Lua w zewnętrznych plikach | 187 |
12.2. LATEX i symbole specjalne | 188 |
12.3. Pakiet luacode | 191 |
12.3.1. Nowe polecenia i otoczenia | 191 |
12.3.2. Tabliczka mnożenia | 192 |
12.3.3. Debugowanie kodu | 194 |
12.4. Podstawowe funkcje z biblioteki tex | 194 |
12.4.1. Funkcje wypisujące kod TEXa | 195 |
12.4.2. Funkcja tex.error | 196 |
12.5. Biblioteka texio | 197 |
Rozdział 13.Wywołania zwrotne | 200 |
13.1. Wywołania zwrotne i biblioteka callback | 200 |
13.1.1. Punkty kompilacji i ich identyfikatory | 201 |
13.1.2. Podstawowe funkcje z biblioteki callback | 201 |
13.1.3. Przykład automatyczne pogrubienie liczb | 202 |
13.2. Wywołania zwrotne i biblioteka luatexbase | 203 |
13.2.1. Przykład automatyczne formatowanie liczb | 205 |
13.3. Wybrane punkty dla wywołań zwrotnych | 206 |
13.3.1. Poszukiwanie plików | 206 |
13.3.2. Przetwarzanie danych | 207 |
Rozdział 14.Biblioteka lualibs | 210 |
14.1. Moduł lualibs-boolean | 211 |
14.2. Moduł lualibs-number | 212 |
14.3. Moduł lualibs-string | 213 |
14.4. Moduł lualibs-table | 214 |
14.5. Moduł lualibs-math | 216 |
14.6. Moduł lualibs-io | 216 |
14.7. Moduł lualibs-os | 218 |
14.8. Moduł lualibs-gzip | 218 |
14.9. Moduł lualibs-md5 | 219 |
14.10. Moduł lualibs-dir | 219 |
14.11. Moduł lualibs-unicode | 221 |
Czego nie znajdziesz w tejksiążce | 223 |
III. Praktyczne przykłady | 227 |
Przykład 1.Quiz | 229 |
1.1. Wymagania | 229 |
1.2. Plik z bazą pytań | 230 |
1.3. Moduł quiz-module | 232 |
1.3.1. Zmienne wykorzystywane przez moduł | 232 |
1.3.2. Funkcja sygnatury | 232 |
1.3.3. Funkcje związane z wczytywaniem danych | 232 |
1.3.4. Funkcje związane z generowaniem testu | 236 |
1.3.5. Funkcje związane z odczytywaniem testu | 239 |
1.3.6. Pełen kod źródłowy pliku quiz-module.lua | 239 |
1.4. Przykładowy plik LuaLATEXa | 243 |
Przykład 2.Tabliczki | 251 |
2.1. Wymagania | 251 |
2.2. Moduł csv | 253 |
2.2.1. Funkcje csv.open i csv.openstring | 255 |
2.2.2. Iterator lines | 256 |
2.2.3. Parametr columns | 258 |
2.3. Tabliczki | 260 |
2.3.1. Wczytywanie danych z pliku | 260 |
2.3.2. Sortowanie listy pracowników | 261 |
2.3.3. Generowanie dokumentu | 262 |
2.3.4. Pełen kod źródłowy dokumentu | 264 |
Przykład 3.Rachunek | 269 |
3.1. Opracowane rozwiązanie | 269 |
3.2. Moduł luasql.mysql | 271 |
3.2.1. Środowisko MySQL i połączenie z bazą danych | 272 |
3.2.2. Operacje na bazie danych | 274 |
3.2.3. Odczytywanie pozyskanych danych | 275 |
3.3. Rachunek | 277 |
3.3.1. Numer rachunku | 277 |
3.3.2. Pobieranie danych instytucji | 278 |
3.3.3. Lista produktów | 279 |
3.3.4. Pełen kod źródłowy dokumentu | 282 |
Dodatki | 289 |
Dodatek A. Polecane lektury | 291 |
Dodatek B. Tabela znaków ascii | 292 |
Dodatek C. Odpowiedzi do wybranych zadań | 294 |
Indeks | 315 |