Po napísaní úvodu do Typstu som chcel vyskúšať niečo viac než bežný dokument s nadpismi, rovnicami a zoznamom literatúry. Čo ďalšie sa dá vytvoriť tým istým nástrojom?
Začneme krátkou knihou, ktorá potrebuje obálku. Potom vytvoríme vizitky pre tím a menovky na konferenciu. Následne premeníme PDF na príručku, v ktorej sa čitateľ pohybuje kliknutím, pripravíme dve verzie pracovného listu do školy a priamo v študijných poznámkach nakreslíme matematický model.
Každý príklad vychádza z konkrétnej situácie: kto dokument potrebuje, čo od neho očakáva a s čím mu môže Typst pomôcť. V niektorých príkladoch pracujeme so zoznamom ľudí. Iné si vystačia s textom, geometriou alebo niekoľkými rovnicami.
Skôr než začneš
Všetkých šesť príkladov bolo skompilovaných a vykreslených v Typste 0.15.0. Mal by si poznať premenné, funkcie, importy a rozdiel medzi kódom a značkovacím zápisom.
Ak chceš príklady skúšať spolu so mnou, stiahni si zdrojové súbory:
Každý súbor .typ je úplný, samostatný dokument. Ukážky nižšie zobrazujú jeho podstatné časti a odkazujú na celý súbor.
typst compile generative-art.typ art.pdf --ignore-system-fontsRovnaký príkaz môžeš použiť aj s ostatnými názvami súborov. Príklady používajú pribalené písmo Libertinus Serif; prepínač --ignore-system-fonts zabezpečí rovnaký výber písma v rôznych prostrediach. Ak chceš vektorový obrázok, zmeň príponu výstupu na .svg; pre rastrový náhľad použi .png. Pri viacstranovom dokumente uzavri vzor názvu do úvodzoviek, napríklad "guide-{p}.svg", alebo exportuj jednu stranu pomocou --pages 1.
Obálka knihy nakreslená z rovnice
Predstav si, že píšeš krátku knihu o matematike. Text je takmer hotový, ale obálka stále pôsobí prázdno. Chceš jednoduchú grafiku, ktorá sa hodí k téme, a rád by si menil jej tvar aj farby bez toho, aby si ju zakaždým kreslil odznova.
Typst dokáže túto grafiku nakresliť priamo v súbore s obálkou. Ak neskôr napíšeš druhú knižku, môžeš zachovať rovnaký návrh a zmenou niekoľkých čísel jej dať vlastný vzhľad.
Nakreslíme polárnu ružicu z niekoľkých vrstiev. Jej polomer sa mení v závislosti od uhla:
R určuje vonkajší polomer, k počet lalokov a φ fázu zmeny polomeru. Vypočítame body na krivke, prevedieme polárne súradnice na súradnice stránky a nakreslíme šesť zmenšených kópií tej istej krivky.
Zostav grafiku
#let rosette(petals: 7, phase: 0deg, radius: 43mm) = {
let center = 48mm
let samples = 720
let points = range(samples + 1).map(i => {
let angle = i * 360deg / samples
let r = radius * (0.7 + 0.3 * calc.cos(petals * angle + phase))
(center + r * calc.cos(angle), center + r * calc.sin(angle))
})
block(width: 96mm, height: 96mm, {
for layer in range(6) {
let scale = 1 - layer * 0.09
let path = points.map(((x, y)) =>
(center + (x - center) * scale, center + (y - center) * scale))
place(top + left, curve(
stroke: (paint: color.mix((rgb("#68C6C4"), 5 - layer), (rgb("#F0AD79"), layer)), thickness: 0.55pt),
curve.move(path.first()),
..path.slice(1).map(point => curve.line(point)),
curve.close(),
))
}
})
} Prvok curve vytvorí tvar spojením 720 bodov a uzavretím krivky. Krátke rovné úseky pri tejto veľkosti vyzerajú ako hladká krivka. Viac bodov znamená presnejšie priblíženie, ale aj väčší súbor.
Blok, v ktorom kreslíme, vyhradzuje plochu 96 × 96 mm. Stred je v bode (48mm, 48mm) a polomer nikdy nepresiahne 43 mm, takže okolo kriviek zostáva voľné miesto. Keď každý bod zmenšujeme vzhľadom na stred, vrstvy zostanú zarovnané. Zmenšenie absolútnych súradníc by kresbu posúvalo k počiatku súradníc stránky.
Vstavaná funkcia color.mix vytvára postupne sa meniacu farebnú paletu. Celá geometria sa počíta v zdrojovom kóde; nemusíš osobitne aktualizovať vložený obrázok.
Vyskúšaj: zmeň #rosette(petals: 7) na #rosette(petals: 11, phase: 40deg). Z rovnakého návrhu tak vznikne ďalšia grafika na obálku. Ak potrebuješ inú veľkosť, uprav polomer aj plochu na kreslenie. Ak chceš grafiku použiť v ďalšej knihe, presuň funkciu do modulu a nastavenia stránky nechaj v súbore konkrétnej knihy.
Rovnaký postup sa hodí na ozdobné prvky kapitol alebo sériu plagátov na podujatia. Jeho výhodou je, že kresbu vieš upraviť zmenou niekoľkých hodnôt, ktorým rozumieš.
Vizitky pre každého vo firme
Predstav si, že vedieš malú firmu a chceš vizitky pre celý tím. Máš súbor JSON s menami. Neobsahuje pracovné pozície ani osobné kontaktné údaje: na každej vizitke má byť meno človeka, názov firmy a rovnaká firemná e-mailová adresa.
Chceš vizitku navrhnúť raz a potom vytvoriť jednu stranu pre každého človeka. Problémom sú rôzne dlhé mená: „Ada Nováková“ aj „Alexandra Konstantinopoulos“ sa musia zmestiť do rovnakého priestoru. Veľkosť písma by si nemal nastavovať pre každé meno ručne.
Naša jednoduchá vizitka má rozmery 85 × 55 mm. Pre meno je vyhradený obdĺžnik 75 × 12 mm a povolený rozsah veľkostí písma. Skúšame ich od najväčšej po najmenšiu, povoľujeme zalomenie v tomto obdĺžniku a oznámime chybu, ak nevyhovuje ani jedna.
Zmeraj to, čo sa naozaj vytlačí
#let fit(value, width, height) = {
for size in (24pt, 22pt, 20pt, 18pt, 16pt, 14pt) {
let body = text(size: size, weight: "bold", value)
let extent = measure(body, width: width)
let tokens-fit = value.split(" ").all(word =>
measure(text(size: size, weight: "bold", word)).width <= width)
if tokens-fit and extent.width <= width and extent.height <= height {
return (body: body, size: size)
}
}
panic("Name exceeds the layout budget: " + value)
} Funkcia measure potrebuje kontext rozloženia dokumentu. Funkcia na vykreslenie nižšie beží v context, až po nastavení písma, medziriadkových rozostupov a delenia slov. Meriame presne ten istý obsah, ktorý potom vykreslíme.
Kontrolujeme aj každé slovo samostatne. Dlhé priezvisko môže prečnievať z rámčeka, aj keď odsek vykazuje šírku, ktorú sme mu priradili. Počítanie písmen by tento problém nezachytilo, pretože rôzne písmená zaberajú rôzne veľa miesta.
Vyhraď komponentu pevný priestor
#let card(name, role, email, accent: rgb("#087F8C")) = context {
let fitted = fit(name, 75mm, 12mm)
block(width: 85mm, height: 55mm, fill: rgb("#F6F3EB"), {
place(top + left, dx: 5mm, dy: 6mm,
text(size: 7pt, tracking: 1pt)[FIELD / STUDIO])
place(top + left, dx: 5mm, dy: 17mm,
block(width: 75mm, fitted.body))
place(top + left, dx: 5mm, dy: 34mm, text(size: 9pt, role))
place(top + left, dx: 5mm, dy: 43mm, text(size: 8pt, email))
place(top + left, dy: 52mm,
rect(width: 85mm, height: 3mm, fill: accent, stroke: none))
[#metadata((name: name, size_pt: fitted.size / 1pt)) <name-fit>]
})
} Blok vyhradzuje obdĺžnik so skutočnými rozmermi vizitky. Funkcia place umiestňuje jednotlivé polia vzhľadom na tento blok. V našom príklade sa pre dlhé meno zvolí 20 pt; kratšie meno môže zostať na 24 pt.
Stiahnutý súbor vykreslí jednu ukážkovú vizitku. Druhý riadok textu a e-mail sú v ňom pevne zadané; pre našu firmu na ich miesto dosadíme názov firmy a spoločný e-mail. Ak neskôr pridáš osobné pracovné pozície alebo adresy, daj aj týmto poliam vlastné kontroly veľkosti. Prvky umiestnené pomocou place si navzájom neuvoľňujú miesto.
Vytvor vizitku pre každé meno
Ulož zoznam ako people.json vedľa súboru business-card.typ:
[
{ "name": "Ada Nováková" },
{ "name": "Alexandra Konstantinopoulos" }
]Ponechaj nastavenia stránky aj obe funkcie zo stiahnutého súboru. Jeho posledné volanie #card(...) nahraď týmto:
#let people = json("people.json")
#for (i, person) in people.enumerate() {
if i > 0 { pagebreak() }
card(person.name, "FIELD STUDIO", "[email protected]")
}Teraz skompiluj business-card.typ rovnako ako predtým. Dostaneš dvojstranové PDF s jednou vizitkou na každej strane. Pridaj do súboru JSON ďalšie meno a opätovnou kompiláciou vytvoríš vizitku aj pre tohto človeka. Návrh zostáva na jednom mieste a funkcia na prispôsobenie mena sa postará o rôzne dĺžky.
Neviditeľné metadáta zaznamenávajú zvolenú veľkosť. V Typste 0.15.x si ich môžeš pozrieť pomocou typst eval:
typst eval 'query(<name-fit>).map(it => it.value)' --in business-card.typ --ignore-system-fonts --prettyKeď budeš pripravený vytlačiť celú sériu, rozšírený projekt vizitiek ponúka ďalšie možnosti: overuje vstupné údaje, pridáva QR kódy a spadávku a rozmiestňuje vizitky na obojstranne tlačené hárky A4. Postup opisuje jeho README.md. Malý príklad vyššie stačí na pochopenie toho, ako z jedného návrhu vznikne vizitka pre každého človeka.
Ak má vytlačený QR kód zostať užitočný aj po zmene kontaktných údajov, vlož doň stálu adresu profilu, ktorú spravuješ. Podľa potreby aktualizuj cieľovú stránku. Vytlačený kód zostane rovnaký; samotné PDF sa neaktualizuje.
Rovnaká funkcia na prispôsobenie textu pomôže aj s menovkami, štítkami alebo certifikátmi. Nastav najmenšiu čitateľnú veľkosť a nechaj program oznámiť meno, ktoré sa nezmestí. Potom môžeš rozhodnúť, ako ho upravíš.
Skladacie menovky na konferenciu
O týždeň máš konferenciu a každý prednášajúci potrebuje menovku na stôl. Chceš, aby meno vedeli prečítať ľudia z oboch strán. Menovky musia stáť samostatne a chceš ich vytlačiť na bežnej tlačiarni.
Môžeme vytvoriť rozloženú šablónu, ktorá sa poskladá do trojuholníkového stojana. Na dvoch plochách bude meno, tretia vytvorí základňu a malá chlopňa bude držať stojan pohromade. Začni menom jedného prednášajúceho a skôr, než pripravíš ostatné menovky, vyskúšaj skladanie.
Použijeme tieto rozmery:
| Časť | Rozmery |
|---|---|
| Každá z troch plôch | 180 × 45 mm |
| Chlopňa na lepenie | 180 × 10 mm |
| Celý obdĺžnik na vystrihnutie | 180 × 145 mm |
| Strana dokumentu | 200 × 175 mm vrátane okraja a pokynov |
Obe potlačené strany sa na hotovom stojane stretávajú pri hornom ohybe. Jedna preto musí byť na rozloženom hárku hore nohami, aby sa po poskladaní dali obe čítať správne.
Rozlož menovku ešte pred skladaním
#let panel(name, subtitle) = block(width: width, height: face,
fill: rgb("#EFF4F3"), align(center + horizon)[
#text(size: 28pt, weight: "bold", name)
#v(2mm)
#text(size: 11pt, subtitle)
])
#block(width: width, height: 3 * face + flap, {
// The two panels share the apex fold; the upper face is upside down flat.
place(top + left, rotate(180deg, reflow: true,
panel("Ada Nováková", "Research / FIELD STUDIO")))
place(top + left, dy: face,
panel("Ada Nováková", "Research / FIELD STUDIO"))
place(top + left, dy: 2 * face,
block(width: width, height: face, align(center + horizon)[
#text(size: 9pt)[BASE / fold into a triangular stand]
]))
place(top + left, dy: 3 * face,
block(width: width, height: flap, fill: rgb("#D5E5E1"),
align(center + horizon)[#text(size: 7pt)[GLUE TAB]]))
for y in (face, 2 * face, 3 * face) {
place(top + left, dy: y,
line(end: (width, 0mm), stroke: (paint: rgb("#087F8C"), thickness: 0.6pt, dash: "dashed")))
}
place(top + left, rect(width: width, height: 3 * face + flap,
fill: none, stroke: 0.7pt + rgb("#183343")))
}) Funkcia rotate(180deg, reflow: true, ...) otočí prvú plochu s menom na hárku hore nohami. Po poskladaní sa bude na druhej strane stojana čítať správne. Otáčame celú plochu, takže jej poloha nezávisí od dĺžky mena. Čiary ohybu používajú rovnakú hodnotu face ako plochy, a preto zostávajú zarovnané.
Plný obrys označuje miesto rezu. Prerušované čiary označujú ohyby. Vytlač PDF v skutočnej veľkosti / na 100 %, vystrihni obrys, prelož papier pozdĺž troch prerušovaných čiar a prilep chlopňu zvnútra k protiľahlému voľnému okraju. Skôr než začneš tlačiť na hrubší papier, vyskúšaj obyčajný. Geometria vykreslenej šablóny bola skontrolovaná; samotné skladanie si ešte zaslúži skutočný prototyp.
Keď ukážka správne stojí, nahraď meno a podtitul údajmi každého prednášajúceho. Na oboch potlačených stranách majú byť rovnaké hodnoty. Pri väčšej konferencii vlož celý stojan do funkcie a zavolaj ju pre každé meno, pričom jednotlivé stojany oddeľ zalomením stránky. Získaš tak rovnaký postup hromadnej tvorby ako pri vizitkách.
Takto môžeš vytvoriť aj čísla stolov, označenia stanovíšť na workshope alebo malé popisky k exponátom. Ak zmeníš rozmery plôch, skontroluj aj veľkosť stránky a priestor pre text. Väčšie plochy automaticky nezväčšia písmo.
Príručka na riešenie problémov, v ktorej sa pohybuješ kliknutím
Pomáhaš s chodom malej kancelárie a kolegovia sa stále pýtajú, čo robiť, keď spoločná tlačiareň prestane fungovať. Dlhú príručku ľahko odložia bokom. Chceš krátky návod, ktorý položí otázku a zavedie čitateľa priamo k príslušným pokynom.
PDF to zvládne pomocou odkazov medzi vlastnými stranami. Prvá strana sa pýta, či je displej tlačiarne zapnutý. Kliknutie na odpoveď otvorí príslušnú stranu a každá výsledná strana obsahuje odkaz späť na začiatok. Súbor sa dá používať aj bez internetu v PDF prehliadači, ktorý podporuje interné odkazy.
Priraď každému kroku cieľ odkazu
#let choice(destination, body) = block(width: 100%, spacing: 3mm,
link(destination, block(width: 100%, inset: 4mm,
radius: 2mm, fill: rgb("#EAF3EF"), body))) Funkcia choice zmení textový panel na odkaz. Jeho cieľom je značka, napríklad <power> alebo <queue>, pripojená k nadpisu inde v dokumente. Typst za nás určí príslušnú stranu. Môžeme pridať obálku alebo presunúť časť dokumentu bez prepisovania čísel strán v odkazoch.
Úvodná otázka vyzerá takto:
= The printer is not printing <start>
Is the printer's display on?
#choice(<queue>)[Yes — check the print queue]
#choice(<power>)[No — check the power]Úplný zdrojový kód obsahuje aj cieľové strany a ďalšiu voľbu pre prípad, že problém pretrváva. Skompiluj ho do PDF a klikni na každú odpoveď, aby si overil, kam vedie. Obrázok vyššie ukazuje vzhľad; funkčné odkazy nájdeš v exportovanom PDF.
Čitateľ si tak môže vybrať, ktorou cestou bude príručkou pokračovať. Kliknutie neukladá odpovede ani nespúšťa program. Na to by si potreboval iný druh nástroja. Interné odkazy však stačia na pomocníka dostupného bez internetu, aktivitu v múzeu alebo príbeh, v ktorom si čitateľ vyberá, čo sa stane ďalej.
Pracovný list pre žiakov a verzia pre učiteľa
Predstav si, že učíš matematiku a pripravuješ úlohy na zajtrajšiu hodinu. Žiaci potrebujú pracovný list s miestom na písanie. Ty potrebuješ rovnaké otázky s odpoveďami pod nimi, aby si mohol počas hodiny kontrolovať ich prácu.
Mohol by si udržiavať dva dokumenty, ale každú opravu by si musel robiť dvakrát. Namiesto toho zapíšeme každú otázku aj odpoveď spolu. Typst vytvorí verziu pre žiakov s prázdnymi plochami na riešenie a verziu pre učiteľa s riešeniami. Pridanie otázky má aktualizovať číslovanie v oboch.
Zapíš otázku aj odpoveď na jednom mieste
#let exercise(prompt, answer) = {
number.step()
block(breakable: false, spacing: 5mm, [
#context text(weight: "bold")[Problem #number.display()]
#v(2mm)
#prompt
#v(3mm)
#if edition == "answers" {
block(inset: 4mm, width: 100%, fill: rgb("#EAF3EF"), answer)
} else {
rect(width: 100%, height: 22mm, fill: none,
stroke: (paint: rgb("#A2B5B8"), dash: "dotted"))
}
#context [#metadata((edition: edition, number: number.get().first())) <exercise-record>]
])
} V úplnom súbore sa hodnota edition načíta cez sys.inputs a overí sa, že ide o student alebo answers. Funkcia exercise prijíma dva bloky obsahu, takže v oboch argumentoch môže byť bežný text aj matematický zápis.
Počítadlo counter sa posunie pri pridaní úlohy. Typst číta jeho hodnotu na mieste, kde sa číslo tlačí, takže otázky zostávajú v správnom poradí. Nastavenie breakable: false udrží každú otázku na rovnakej strane ako jej priestor na riešenie alebo odpoveď.
Jedna z úloh v úplnom súbore je zapísaná takto:
#exercise[Differentiate $f(x) = x^3$.][
By the power rule, $f'(x) = 3x^2$.
]Vytvor oba dokumenty:
typst compile workbook.typ student.pdf --input edition=student --ignore-system-fonts
typst compile workbook.typ answers.pdf --input edition=answers --ignore-system-fontsPorovnaj verziu pre žiakov a verziu s odpoveďami
Vyskúšaj: vlož novú úlohu medzi prvé dve a vytvor obe verzie. Čísla úloh sa majú aktualizovať v oboch a ich znenie má zostať rovnaké. Zalomenia strán sa môžu líšiť, pretože odpoveď a prázdny priestor na riešenie potrebujú rôzne veľa miesta.
Priestor na riešenie s výškou 22 mm vyhovuje týmto krátkym úlohám. Pre dlhšie úlohy urob z výšky parameter. Ak sa úloha môže rozložiť na viac strán, uprav pravidlo breakable: false namiesto toho, aby si veľký blok nasilu vtesnával na malú stranu.
Rovnako môžeš vytvoriť pracovný zošit na workshop a verziu pre lektora alebo knihu hlavolamov a ich riešení. Nechaj otázky spolu s odpoveďami a výber zobrazenej verzie prenechaj funkcii.
Diagram, ktorý ti pomôže pochopiť rovnicu
Na fyzike študuješ kmitanie. Rozumieš tomu, že trenie postupne spomaľuje pohybujúcu sa sústavu, ale zo samotných rovníc si jej správanie nevieš ľahko predstaviť. Chceš diagram do poznámok, ktorý môžeš meniť pri porovnávaní rôznej miery tlmenia.
Použijeme jednoduchý model tlmeného oscilátora. x predstavuje polohu, y rýchlosť a γ určuje tlmenie:
Nakreslíme šípky, ktoré ukazujú smer vývoja sústavy pri rôznych kombináciách polohy a rýchlosti. Vykreslíme aj trajektóriu z jedného počiatočného bodu. Zmena γ aktualizuje kresbu aj zobrazenú hodnotu parametra, takže diagram v poznámkach zostáva prepojený s modelom.
Premeň model na kresbu
#let damping = float(sys.inputs.at("damping", default: "0.35"))
#assert(damping >= 0 and damping <= 2, message: "damping must be 0..2")
#let field(x, y) = (y, -x - damping * y)
#let point(x, y) = (50mm + x * 13mm, 50mm - y * 13mm)
#let arrow(x, y, dx, dy) = {
let norm = calc.sqrt(dx * dx + dy * dy)
if norm > 0 {
let (px, py) = point(x, y)
let (u, v) = (dx / norm, -dy / norm)
let shaft = 3.5mm
let (ex, ey) = (px + u * shaft, py + v * shaft)
place(top + left, dx: px, dy: py,
line(end: (u * shaft, v * shaft), stroke: 0.6pt + rgb("#087F8C")))
place(top + left, polygon(
(ex, ey),
(ex - u * 1.2mm + v * 0.7mm, ey - v * 1.2mm - u * 0.7mm),
(ex - u * 1.2mm - v * 0.7mm, ey - v * 1.2mm + u * 0.7mm),
fill: rgb("#087F8C"), stroke: none,
))
}
} Funkcia field vracia obe derivácie. Funkcia point prevádza abstraktnú súradnicu na milimetre. V druhej zložke odčítava y: v matematike rastie súradnica y smerom nahor, kým súradnice stránky rastú smerom nadol.
Všetky šípky majú rovnakú dĺžku. Ukazujú smer vývoja sústavy, nie jeho rýchlosť. V bode (0, 0) je sústava v pokoji, preto tam šípku vynecháme. Telo každej šípky nakreslíme pomocou line a trojuholníkový hrot pomocou polygon, teda vstavanými kresliacimi nástrojmi Typstu.
Úplný súbor vypočíta hodnoty v bodoch mriežky a potom pridá trajektóriu:
// Explicit Euler samples: an illustrative path, not a high-accuracy solver.
let (x, y) = (2.7, 0.0)
let trajectory = (point(x, y),)
for _ in range(450) {
let (dx, dy) = field(x, y)
(x, y) = (x + 0.025 * dx, y + 0.025 * dy)
trajectory.push(point(x, y))
}
place(top + left, curve(stroke: 1pt + rgb("#B65C32"),
curve.move(trajectory.first()),
..trajectory.slice(1).map(p => curve.line(p)))) Pri kreslení oranžovej krivky začneme v jednom bode a opakovane urobíme malý krok v smere, ktorý určujú rovnice. Tento postup sa nazýva explicitná Eulerova metóda. V zdrojovom kóde sa dá ľahko sledovať, ale jeho presnosť závisí od veľkosti kroku. Bez tlmenia môže dokonca spôsobiť umelé vzďaľovanie trajektórie od stredu. Tu ho používaj na skúmanie obrázka; ak tvoje výsledky závisia od presnej trajektórie, použi vhodný numerický riešič a over konvergenciu.
Porovnaj rôzne hodnoty parametra:
typst compile vector-field.typ weak.pdf --input damping=0.15 --ignore-system-fonts
typst compile vector-field.typ strong.pdf --input damping=0.8 --ignore-system-fontsVlož oba výstupy do poznámok vedľa seba. Ako rýchlo sa každá trajektória približuje k stredu? Čo sa zmení, keď nastavíš tlmenie na nulu? Tieto otázky sa skúmajú ľahšie, keď môžeš model meniť a hneď ho prekresliť. Pri väčšej simulácii vypočítaj výsledky mimo Typstu a importuj ich do dokumentu.
Prispôsob si príklady
Šesť projektov využíva rôzne možnosti toho istého nástroja:
| Keď má dokument… | Použi… |
|---|---|
| Vytvárať skupinu príbuzných grafických tvarov | Funkcie, cykly a vstavané krivky |
| Vtesnať rôzne dlhý text do pevného priestoru | Kontext, meranie a výslovne určené priestorové limity |
| Stať sa fyzickým predmetom | Milimetre, plochy s pevnými rozmermi a transformácie |
| Umožniť čitateľovi vybrať ďalšiu stranu | Značky a interné odkazy |
| Vytvárať súvisiace verzie | Bloky obsahu, počítadlá a overené vstupy |
| Vysvetľovať meniaci sa matematický model | Výpočty a prevody súradníc |
Nemusíš použiť všetkých šesť nápadov v jednom projekte. Vyber si ten, ktorý je najbližší tomu, čo už potrebuješ, stiahni jeho zdrojový kód a zmeň jednu vec: meno, farbu, úlohu alebo parameter modelu. Znova ho skompiluj a pozri sa, čo sa zmenilo.
Potom over výsledok tam, kde sa bude používať. Prezri si obálku v jej konečnej veľkosti. Vytlač a poskladaj menovku. Preklikaj všetky cesty v PDF príručke. Po zmene otázky vytvor obe verzie pracovného listu. Pri matematickej kresbe skontroluj výpočet aj vzhľad.
Keď ti príklad vyhovuje, presuň užitočnú funkciu do vlastného súboru. V ďalšom dokumente ju môžeš použiť bez prenášania pôvodných nastavení stránky alebo ukážkového obsahu. Tak sa z malého experimentu stane niečo, k čomu sa budeš vracať.
Čítajte ďalej
Ďalšie články, ktoré by vás mohli zaujať.