Nowoczesny LaTeX - Typst i inni konkurenci LaTeXa

Opublikowane:

30.12.2025

LaTeX jest standardem w przygotowywaniu dokumentów technicznych od dziesięcioleci. Czyżby w końcu pojawił się jego godny następca?

LaTeX jest standardem w przygotowywaniu dokumentów technicznych od dziesięcioleci. Czyżby w końcu pojawił się jego godny następca?

Autor: Lee Phillips

Pod koniec lat 70. XX w. matematyk Donald Knuth wprowadził na rynek coś nowego: system składu o nazwie TeX (wym. „tech”) [1]. Języki znaczników do składu dokumentów już istniały, ale ich wyniki były niskiej jakości. Szczególnie kiepsko radziły sobie z matematyką, która stanowiła szczególny problem dla Knutha.

Rezultat był zdumiewający pod względem piękna generowanych wyników. Gordon Bell, wiceprezes ds. inżynierii w Digital Equipment Corporation, twierdził [2], że system TeX „pod względem znaczenia może plasować się blisko wprowadzenia prasy Gutenberga”.

TeX, wolne oprogramowanie we wszystkich znaczeniach tego terminu, różnił się nie tylko tym, że tworzył wydruki na równi z wysokiej jakości ręczną typografią; był także językiem programowania, choć trudnym w obsłudze.

Te cechy umożliwiły tworzenie kolejnych systemów na bazie TeXa. W połowie lat 80. XX w. [3] informatyk Leslie Lamport zbudował system przygotowywania dokumentów LaTeX [4] jako rozbudowany zestaw makr TeX. LaTeX zachęcał autorów do skupienia się na logicznej strukturze [5] ich dokumentów i pozwolił programowi martwić się o jej aspekt wizualny. Zautomatyzował wiele żmudnych i podatnych na błędy aspektów pisania książek i artykułów technicznych: odniesienia i cytaty, numerację sekcji, rysunków i równań oraz wewnętrzne odniesienia i etykiety.

LaTeX szybko stał się i nadal jest [6] standardem tworzenia książek, raportów i prac naukowych w matematyce i informatyce, a także w dużej mierze w fizyce.

Problemy z LaTeX-em

Wielbiciele LaTeX-a, choć zachwyceni jego możliwościami, elastycznością, a przede wszystkim jakością, mają kilka zastrzeżeń.

Ułatwiając skomplikowane zadania, LaTeX może również sprawić, że to, co powinno być trywialne, staje się niezwykle trudne. Nie ma chyba użytkownika LaTeX-a, który nie był sfrustrowany, gdy ten wyrafinowany system składu odmówił zmiany odstępu między tytułem a podtytułem lub zrobienia wyjątku ad hoc w formatowaniu odnośnika.

Tworzenie nowych formatów lub stylów wiąże się ze zdobyciem wiedzy eksperckiej odnośnie do ekscentrycznego języka programowania TeX – to niezbyt atrakcyjne wyzwanie dla wielu autorów, którzy wolą poświęcić swój czas na faktyczną pracę badawczą i pisanie.

Nawet z mile widzianym dodatkiem opcjonalnego wejścia Unicode znaczniki LaTeX-a są nieco gadatliwe, z wieloma wymaganymi poleceniami backslash, szczególnie w równaniach.

Kompilacja dużych dokumentów nie jest tak szybka, jak niektórzy uważają, że powinna być, a procedura, gdy dokument zawiera odniesienia, wymaga wielu przejść (choć można to zautomatyzować).

Większość zadań składu w LaTeX-u wymaga zaimportowania kolekcji pakietów, które mogą kolidować ze sobą w nieprzewidywalny sposób. Komunikaty o błędach są tajemnicze. Instrukcje importu powiększają i tak już długą preambułę.

LaTeX generalnie dobrze radzi sobie z elementami pływającymi (rysunki, tabele), ale czasami uniemożliwia określenie, gdzie powinny się one pojawić.

Wreszcie, pełna instalacja LaTeX-a wymaga pobrania wielu gigabajtów. (Zobacz ramkę „Silniki LaTeX-a”, aby zapoznać się z uwagami na temat tych programów).

Pomimo tych odwiecznych źródeł niezadowolenia LaTeX pozostał standardem składu dokumentów technicznych. Do niedawna nie było poważnego potencjalnego zamiennika.

Typst

Pragnienie stworzenia nowoczesnego zamiennika LaTeX-a sprawiło, że Martin Haug i Laurenz Mädje [7] rozpoczęli w 2019 roku pracę nad jego stworzeniem, czego efektem jest Typst [8].

Już teraz Typst zaczyna być przyjmowany przez szerszą społeczność. Czasopisma IJIMAI i JUTI akceptują już manuskrypty w Typst; pewien nieustraszony naukowiec [9] napisał swoją pracę doktorską w Typst; a firma Netways świadcząca usługi komputerowe używa teraz Typst [10] do swoich materiałów szkoleniowych.

Stopień, w jakim LaTeX jest zakorzeniony w świecie akademickim, stanowiłby przeszkodę do pokonania dla nowego konkurenta, nawet gdyby był to doskonale nadający się zamiennik. Typst jeszcze nim nie jest i nie twierdzi, że nim jest, ponieważ wciąż znajduje się we wczesnej fazie rozwoju; jednak już dokonał wielkich postępów – i zaimponował wielu wymagającym użytkownikom z doświadczeniem z LaTeX-em, którzy go wypróbowali.

Instalacja i konfiguracja

Typst jest wolnym oprogramowaniem typu open source. Aby go zainstalować, należy przejść do strony wydania [11] i pobrać plik archiwum odpowiedni dla danego systemu operacyjnego. Dla większości użytkowników Linuksa będzie to

typst-x86_64-unknown-linux-musl.tar.xz

ale dostępne są również archiwa dla systemów macOS i Windows. Po rozpakowaniu archiwum wynikowy katalog będzie zawierał kilka plików tekstowych i plik binarny typst. Ostatnim krokiem jest przeniesienie lub podlinkowanie tego pliku binarnego do miejsca na ścieżce wykonywalnej.

Podstawowe znaczniki

Wszystkie przykłady w tym artykule używają Typst v0.13.1.

Wykonanie polecenia typst help w terminalu wyświetla krótki przewodnik po podkomendach Typst. Najbardziej interesujące są tutaj compile i watch, po których następuje nazwa pliku wejściowego. Innym interesującym poleceniem jest typst fonts, wyświetlające nazwy wszystkich czcionek, które Typst może znaleźć na komputerze.

Możesz rozpocząć eksplorację znaczników Typst z danymi wejściowymi pokazanymi na Listingu 1.

Listing 1: Mój pierwszy plik Typst

in the following equation, $i$ is $sqrt(-1)$:

$ e^(i PI) + 1 = 0 "(Euler’s identity)” $

_Many_ people think this is the most *beautiful* equation

*_ever written_*.

Pliki wejściowe Typst są zwykłym tekstem, więc można użyć dowolnego edytora. Utwórz plik o nazwie try.typ z zawartością jak na Listingu 1. Następnie wpisz

typst compile try.typ

Polecenie powinno natychmiast powrócić, po czym katalog będzie zawierał nowy plik o nazwie try.pdf, który powinien wyglądać jak na rysunku 1.

f1-figure1-fmt 

Rysunek 1: Mój pierwszy wynik Typst.

Ten przykład ilustruje wiele ważnych aspektów znaczników Typst. Najpierw skupię się na ostatniej linii. Ci, którzy są zaznajomieni z Markdown [12], rozpoznają podobieństwo do tego systemu znaczników. Mają one te same cele, w tym posiadanie łatwych do odczytania plików źródłowych, w których intencja (podkreślenie, większe podkreślenie) jest sugerowana przez ich wygląd.

Ponieważ ten prosty przykład porusza już kwestie związane z używaniem LaTeX-a, warto przedstawić tutaj porównanie jako demonstrację prostoty Typst. Listing 2 jest tłumaczeniem Listingu 1 na LaTeX.

Listing 2: Wersja LaTeX-owa Listingu 1

\documentclass{article}

\usepackage{unicode-math}

\begin{document}

in the following equation, $i$ is $\sqrt{-1}$:

\[e^{iPI} + 1 = 0 \qquad\textrm{(Euler’s identity)}\]

\emph{Many} people think this is the most \textbf{beautiful}

equation \textbf{\emph{ever written}}.

\end{document}

Jedną z oczywistych różnic są cztery dodatkowe wiersze szablonu potrzebne w dokumencie. Jeśli chcesz czegoś tak egzotycznego jak pogrubienie lub kursywa greckich liter, potrzeba więcej przygotowań. W Typst wystarczy zastosować te same znaczniki co w przypadku każdego innego tekstu: _ß_, na przykład dla kursywy beta.

Ponownie zwracając uwagę na ostatnią linię listingu, wersja LaTeX jest wyraźnie bardziej rozwlekła i stanowi większe utrudnienie dla czytelnika źródła.

Najbardziej dramatyczną różnicą we wprowadzaniu równań między tymi dwoma przykładami jest sposób obsługi zwykłego tekstu. W Typst wystarczy tylko otoczyć tekst cudzysłowami, ale w LaTeX-u trzeba wydać odpowiednie polecenie. Ponadto LaTeX wymaga wyraźnego polecenia spacji (\qquad), ale Typst rozumie, że potrzebna jest tu dodatkowa spacja.

Zauważ również, że potrzebujesz spacji między dwoma symbolami w wykładniku, ale nie potrzebujesz tego w LaTeX. Co się stanie, jeśli zapomnisz o spacji (i zamiast niej wpiszesz e^(iPI))? Rysunek 2 pokazuje, co Typst wypisuje w terminalu w takim przypadku.

f2-figure2-fmt 

Rysunek 2: Komunikat o błędzie w Typst.

Dla tych, którzy mają doświadczenie w radzeniu sobie z niezrozumiałymi komunikatami o błędach LaTeXa, jest to coś pięknego. Dzięki grafice i kolorom Typst wskazuje dokładnie miejsce wystąpienia błędu w danych wejściowych i wyjaśnia, jak można go naprawić.

Aby włączyć podgląd na żywo, uruchom Typst, wpisując typst watch, później nazwę pliku źródłowego, a następnie otwórz plik wyjściowy w przeglądarce pdf (musisz użyć takiej, która automatycznie przeładowuje zmienione pliki). Teraz, gdy tylko zapiszesz zmiany w pliku źródłowym, wynik składu pojawi się w przeglądarce pdf. Proces ten jest płynny, ponieważ Typst przyrostowo i szybko kompiluje nawet duże dokumenty. LaTeX może być również używany w ten sposób, ale nie ma wbudowanej tej możliwości i nie jest wystarczająco szybki do podglądu na żywo długich dokumentów.

Tabele i listy

W tej sekcji i kolejnych zademonstruję więcej możliwości układu Typst. Ta próbka powinna dać poczucie tego, co Typst może już zrobić w tej wczesnej wersji i jak to jest pracować z systemem.

Listing 3 pokazuje, jak utworzyć podstawową listę. Składnia jest prosta, ponownie inspirowana Markdown. Elementy mogą być dowolnie długie, jak w drugim elemencie, ale powinny być wcięte, jak pokazano.

Listing 3: Tworzenie listy wypunktowanej

Shopping List:

- Milk

- Sardines (but not

the ones in tomato sauce)

- Cable Ties

- Whipped Cream

Znaczniki dla innego typu listy, elementów lub terminów, pokazano na Listingu 4.

Listing 4: Tworzenie listy elementów

Mathematicians:

/ David Hilbert: German, 1862 - 1943; invariant theory, geometry,

axiomatics, physics.

/ Emmy Noether: German, 1882 - 1935; invariant theory, varia

tional calculus, abstract algebra.

/ G.H. Hardy: English, 1877 - 1947; Analysis, number theory.

Dwukropki oddzielają pozycje od ich opisów. Wygląd obu list pokazano na rysunku 3.

f3-figure3-fmt 

Rysunek 3: Dwa rodzaje list.

Oprócz tego Typst obsługuje automatycznie i ręcznie numerowane listy i konspekty z automatycznie numerowanymi nagłówkami i podtytułami.

Tworzenie tabeli w Typst jest proste, ale wiąże się z nową koncepcją, która zostanie szczegółowo omówiona poniżej: jest nią tworzenie funkcji. Listing 5 zawiera przykład.

Listing 5: Tworzenie tabeli

#table(

columns: 3,

[*Physicist*], [*Dates*], [*Most Famous Equation*],

[A. Einstein], [1879-1955], [$E = m c^2$],

[J.C. Maxwell], [1831-1879], [$?_µ ?^µ A^v = µ_0 J^v$],

[i. Newton], [1643-1727], [$F = (d p)/(d t)$],

)

W źródle tej tabeli znak # przełącza Typst w tryb kodu. Do tej pory używałem trybu znaczników, który jest domyślny, oraz trybu matematycznego wprowadzanego za pomocą znaku dolara. W trybie kodu mogę używać funkcji; tutaj używam funkcji tabeli, której podałem jeden parametr, liczbę kolumn. Reszta listy argumentów to znaczniki tekstowe, które zostaną ułożone w tabelę pokazaną na rysunku 4.

f4-figure4-fmt 

Rysunek 4: Tabela w Typst.

Komórki tabeli mogą zawierać wszystko: tekst i matematykę, jak w tym przykładzie, a także rysunki i inne tabele.

Więcej matematyki

Zabawne, że kilka rodzajów błędów, które początkujący zwykle popełniają w matematyce w LaTeX-ie, okazuje się legalnymi znacznikami Typst i daje zamierzone efekty. Dzieje się tak dlatego, że tryb matematyczny Typst jest starannie zaprojektowany, aby dostosować się do tego, co większość użytkowników będzie chciała robić przez większość czasu.

Na przykład częstym błędem LaTeX-a jest wpisywanie cos(x) zamiast \cos(x). LaTeX zinterpretuje ten pierwszy jako oznaczający trzy zmienne: c, o i s, i wydrukuje je kursywą matematyczną, zamiast funkcji cosinus (która powinna być drukowana jako słowo fontem pionowym). Sprytnym spostrzeżeniem wbudowanym w tryb matematyczny Typst jest to, że matematycy zazwyczaj używają zmiennych jednoznakowych. Dlatego też, jeśli dwie litery lub więcej sąsiadują ze sobą, zakłada się, że jest to funkcja lub nazwa zmiennej z wartością w Typst (a nie zmienna do składu).

To wyjaśnia komunikat o błędzie na rysunku 2: miałem dwie litery (i i ?) bez spacji między nimi, a Typst nie znał żadnej funkcji ani zmiennej o nazwie i? Wadą tego wygodnego systemu jest to, że autorzy muszą pamiętać o wstawianiu spacji podczas mnożenia zmiennych.

Aby dać wyobrażenie o tym, jak to działa, rysunek 5 wyświetla małą próbkę funkcji w trybie matematycznym Typst: znaczniki znajdują się w lewej kolumnie, a wynik typowania po prawej.

f5-figure5-fmt 

Rysunek 5: Niektóre funkcje z trybu matematycznego Typst.

Programowanie w Typst

Typst zawiera język skryptowy, który pozwala autorom wykonywać obliczenia i włączać ich wyniki do składu. Ma to przewagę nad skryptami Lua [13] osadzonymi w silniku lualatex [14] wspomnianym powyżej, ponieważ jest ściśle zintegrowany, podczas gdy w luatex trzeba manipulować interfejsem między warstwą Lua a wewnętrznymi elementami TeX.

Co więcej, ponieważ funkcje w Typst są zwykle czyste (bez efektów ubocznych), istnieje mniejsze prawdopodobieństwo konfliktów podczas importowania kolekcji pakietów.

Typst jest napisany w języku Rust, a jego wbudowany język skryptowy odzwierciedla aspekty tego języka. Ma znajomą składnię z nawiasami klamrowymi, ze wszystkimi typowymi konstrukcjami języka programowania (pętle, warunkowe) i aspektami funkcjonalnymi, takimi jak destrukturyzacja, funkcje map, fold i filter, (jednowymiarowe) tablice i wiele innych.

Składnia Typst ułatwia łączenie konstrukcji programistycznych ze znacznikami. Listing 6 to procedura Typst, która oblicza i wypisuje kilka liczb pierwszych.

Listing 6: Obliczanie i drukowanie liczb pierwszych

#let n = 2

The prime numbers < 100 are

#while n < 100 {

let prime = true

for i in range(2, calc.ceil(calc.sqrt(n+1))) {

if calc.rem(n, i) == 0 {

prime = false

break

}

}

if prime { [#n ] }

n = n + 1

}.

Podobnie jak na Listingu 5, znak # przełącza Typst w tryb kodu. W tym trybie zwykłe znaczniki są interpolowane za pomocą nawiasów kwadratowych. Dlatego są one używane na Listingu 5: każda funkcja (np. funkcja tabeli tutaj) akceptuje znaczniki jako końcowy argument.

Pierwszy wiersz Listingu 6 definiuje i ustawia zmienną przy użyciu słowa kluczowego let. Następnie rozpoczyna się konstruowanie zdania, które zaczyna się w następnej linii. Ponownie przechodzimy do trybu programu z pętlą while, która sprawdza liczby całkowite < 100. Używamy zmiennej logicznej prime (zwróć uwagę, że nie są wymagane deklaracje typu) jako flagi wskazującej, czy znalazłeś liczbę pierwszą. Pętla for jest standardowym algorytmem, który wyszukuje dzielniki aż do pierwiastka kwadratowego kandydata. Niektóre z zastosowanych funkcji matematycznych są częścią modułu calc Typst, więc należy je umieścić w przestrzeni nazw. Funkcja calc.rem jest typstową wersją funkcji modulo; pozostałe są oczywiste. Wynik jest pokazany na rysunku 6.

f6-figure6-fmt 

Rysunek 6: Wynik Listingu 6.

Bardziej dopracowana wersja wstawiłaby przecinki między liczbami, uniknęłaby spacji przed kropką i znalazłaby sposób na wstawienie słowa „and” (oraz) przed ostatnią liczbą. Ten przykład demonstruje podstawowe koncepcje skryptów Typst; system zapewnia użytkownikowi moc programowalnych dokumentów z imponującym stopniem wygody.

Set and Show

Typst używa reguł zwanych „set rules” do zmiany domyślnego wyglądu poszczególnych elementów (akapitów, list itp.). Listing 7 ustawia niektóre z opcjonalnych parametrów akceptowanych przez funkcję tabeli.

Czterem parametrom nadano nowe wartości. Parametr gutter umieszcza przestrzeń między komórkami tabeli. Parametr fill, po podaniu wartości koloru, ustawia kolor tła komórek tabeli. Parametr stroke umieszcza obramowanie wokół komórek tabeli. Oto przykład połączenia dwóch wartości różnych typów, długości i koloru. Parametr inset dodaje wypełnienie do komórek tabeli. Wynik jest wyświetlany na rysunku 7.

f7-figure7-fmt 

Rysunek 7: Stylowa tabela.

Uważny czytelnik może zauważyć, że w tabeli zmieniło się coś jeszcze. Szerokości jej trzech kolumn nie są już równe. Zostało to osiągnięte poprzez zastąpienie pierwszego argumentu funkcji table, columns: 3, kolumnami: (35%, 25%, 35%). Szerokości kolumn sumują się do mniej niż 100 procent, ponieważ należy przydzielić miejsce na przestrzeń między nimi.

Aby dokonać dostosowań wykraczających poza to, co jest możliwe przy użyciu ustawionych reguł, Typst udostępnia tzw. reguły wyświetlania. Pozwalają one autorom zdefiniować dowolną kombinację ustawień i dowolnego kodu Typst, który będzie wywoływany za każdym razem, gdy napotkany zostanie określony element. Na przykład można zmienić font nagłówka w zależności od jego poziomu lub utworzyć naprzemienne kolory dla wierszy tabeli.

Etykiety i odnośniki

Jednym z największych dobrodziejstw LaTeX-a dla autorów tekstów technicznych było automatyczne numerowanie równań, rysunków i podobnych elementów.

Typst dostarcza system etykiet i odnośników, który działa podobnie jak LaTeX, ale z prostszą składnią. Równanie można oznaczyć etykietą ujętą w nawiasy kątowe: $ a = b + c $. Teraz można odwołać się do danego równania za pomocą składni Według @niceeq, .... Odniesienie @niceeq zostanie przekształcone w odpowiedni numer maszynopisu. Rysunki, tabele i inne elementy można oznaczać i odwoływać się do nich w podobny sposób.

Listing 7: Reguła zestawu dla tabel

#set table(

gutter: 3pt,

fill: aqua,

stroke: 1pt + maroon,

inset: 7pt,

Typst może również tworzyć bibliografie i cytować prace przy użyciu tej samej składni. Rozumie format BibLaTeX i pliki CSL, więc uczeni przyzwyczajeni do LaTeXa będą się czuć jak w domu.

Rysowanie

Typst zawiera wbudowane polecenia rysowania, które mogą być używane w skryptach do tworzenia wizualizacji. Listing 8 zawiera mały program, który tworzy mały obrazek (rysunek 8).

Listing 8: Rysunek w Typst

#rect(width: 100%, height: 200pt, fill: aqua,

stroke: 5pt + blue, radius: 19pt,

{for i in range(0, 30){

place(dx: 5pt * i, dy: 60pt + 14pt * calc.cos(i/2),

circle(radius: 7pt, fill: lime, stroke: 2pt + purple))}

place(dx: 3%, dy: 120pt,

ellipse(fill: gradient.linear(purple, green),

[#set text(white, font: "fira sans”, size: 18pt)

*Wanda Worm*]))}

)

f8-figure8-fmt 

Rysunek 8: Obraz utworzony przez Listing 8.

Skrypt zawiera funkcje rysowania kształtów rect, circle i ellipse, z których każda przyjmuje pewne argumenty – znane lub oczywiste. Niektóre z tych funkcji kształtu pojawiają się jako argumenty funkcji place, która umieszcza swoją zawartość w miejscu określonym za pomocą parametrów dx i dy.

Aby uzyskać interfejs graficzny wyższego poziomu, użytkownicy częściej sięgają po dedykowany pakiet, taki jak CeTZ [15].

Wnioski

Mimo że Typst jest łatwiejszy w użyciu niż LaTeX, wielbiciele LaTeX-a niechętnie porzuciliby swojego starego przyjaciela, gdyby wyniki Typsta wypadły zauważalnie słabiej w bezpośrednim porównaniu. W tej ostatniej sekcji przeanalizuję LaTeX i Typst obok siebie, aby zobaczyć, jak radzi sobie nowicjusz.

Rysunek 9 pokazuje pierwszy akapit klasycznej powieści Melville’a Moby Dick złożony zarówno przez LaTeX, jak i Typst. Kolumna jest ustawiona stosunkowo wąsko, ponieważ jest to najlepszy sposób na przetestowanie umiejętności algorytmu składu.

f9-figure9-fmt 

Rysunek 9: Porównanie składu prozy.

Prawdopodobnie nie da się zobaczyć, która połowa rysunku została zredagowana przez który program (ta po lewej to Typst). Są one porównywalne pod względem jakości składu. Czepialscy mogą zauważyć, że wersja Typst zajmuje nieco więcej miejsca niż wersja LaTeX: potrzebuje części dodatkowej linii, a odstępy między wyrazami są nieco luźniejsze. Jednak wersja LaTeX ma dwie kolejne linie zakończone myślnikami. Jeśli chodzi o skład prozy, jest to kwestia sporna.

Przechodząc do matematyki, Listing 9 pokazuje znaczniki dla wzoru na całkę funkcji specjalnej, najpierw przy użyciu składni Typst, a następnie w sposób, w jaki należałoby wprowadzić tę samą formułę w LaTeX-u.

Listing 9: Porównanie znaczników równań Typst i LaTeX

$ integral_0^1 "li”(x)(d x) / (x^(p+1)sqrt(ln(1/x))) =

-2sqrt(?/p)arcsin(sqrt(p)) #h(1cm) [1>p>0] $

\[ \int_0^1 \mathrm{li}(x)\frac{dx}{x^{p+1}\sqrt{\ln(\frac{1}{x})}} =

-2\sqrt{\frac{?}{p}}\arcsin(\sqrt{p})\qquad[1>p>0] \]

Wersja LaTeX jest bardziej rozwlekła i nieco trudniejsza do odczytania. Wynik jest pokazany na rysunku 10.

f10-figure10-fmt 

Rysunek 10: Porównanie składu równań Typst i LaTeX.

Według twórców Typst [16], silnik matematyczny Typst był pierwotnie oparty na bibliotece Rust, która replikowała silnik TeX, ale teraz ewoluowała w niestandardowe rozwiązanie. Niemniej jednak wersja Typst równania z rysunku 10 jest prawie identyczna z wersją LaTeX. Zadowoli to większość użytkowników, ponieważ skład matematyczny TeX jest bardzo ceniony.

Z pewnością wydaje się, że najnowsza wersja Typst spełnia swoje obietnice, będąc na równi z LaTeXem we wszystkich przykładach w tym artykule. Niemniej jednak użytkownicy wciąż narzekają, że w niektórych specyficznych zadaniach składu jest nieco za mało, a jego kolekcja pakietów specjalnego przeznaczenia [17] nie może się równać z tym, co jest dostępne od dziesięcioleci zaangażowania społeczności w LaTeX (choć szybko rośnie – obecnie w ekosystemie Typst dostępnych jest ponad 800 pakietów).

Pod tym względem względna łatwość pisania plików stylów dla Typst powinna pozwolić mu nadrobić zaległości, gdy populacja użytkowników wzrośnie poza niewielką grupę pierwszych użytkowników.

W tej chwili LaTeX wciąż potrafi wiele rzeczy, których Typst nie umie, z pomocą ekosystemu pakietów. Autorzy złożonych dokumentów, które wymagają takich czynności, jak wtrącenia PDF, znaczniki cięcia, wiele bibliografii lub przypisy w przypisach, mogą na razie pozostać przy LaTeX-ie.

Typst rozwija się jednak w szybkim tempie (co stwarza niebezpieczeństwo zepsucia zmian). Plany na przyszłość obejmują takie funkcje, jak eksport HTML (eksperymentalny w obecnej wersji [18]) i tagowany PDF.

Korzystanie z narzędzia do konwersji dokumentów Pandoc [19] może pomóc autorom zainteresowanym eksploracją Typst, ale jeszcze niegotowym do zaangażowania się w nowy system. Można pisać w Pandoc Markdown i konwertować do imponującej liczby formatów, w tym Typst. Pandoc dobrze radzi sobie również z konwersją z Typst do LaTeX i odwrotnie.

Niezależnie od obecnej sytuacji, twórcy Typst dokonali tego, co nie udało się nikomu wcześniej: stworzyli darmowy program do składu technicznego, który generuje wyniki podobne do LaTeX-a, eliminując jednocześnie bolączki tego systemu. Jest to imponujące osiągnięcie, przyjemne w użyciu i prawdopodobnie ostatecznie wyprze to, co do tej pory było jedyną grą w mieście dla wymagających autorów złożonych dokumentów technicznych.

Info

[1] Czym jest TeX?, TeX Users Group: https://tug.org/whatis.html

[2] Jeremy Norman. Donald Knuth Creates TeX and Metafont. HistoryofInformation.com: https://www.historyofinformation.com/detail.php?entryid=3793

[3] Chris Rowley, The LaTeX Legacy, The LaTeX Project, 2001, 17-25: https://www.latex-project.org/publications/2001-CAR-LaTeX-legacy.pdf

[4] LaTeX -- A Document Preparation System, https://www.latex-project.org/

[5] Leslie Lamport, Document Production: Visual or Logical?, TUGboat Vol.9 (1988), No. 1, 8-10: https://www.tug.org/TUGboat/tb09-1/tb20lamport.pdf

[6] Lee Phillips, What’s New in TeX, Part 1, LWN.net, 2015: http://lwn.net/Articles/657157/

[7] Typst: https://typst.app/about

[8] Laurenz Mädje, Typst: A Programmable Markup Language for Typesetting (praca doktorska, Uniwersytet Techniczny w Berlinie, 2022): https://laurmaedje.github.io/programmable-markup-language-for-typesetting.pdf 

[9] Artykuł o pracy doktorskiej w Typst: https://fransskarman.com/phd_thesis_in_typst.html

[10] Why NETWAYS Has Chosen Typst for Their Course Materials: https://typst.app/blog/2025/netways

[11] Wydania Typst na GitHubie: https://github.com/typst/typst/releases

[12] Podstawowa składnia Markdown: https://www.markdownguide.org/basic-syntax

[13] Lua do pobrania: https://www.lua.org/download.html

[14] Lee Phillips, LuaTeX Comes of Age, LWN.net, 2017: https://lwn.net/Articles/731581/

[15] CeTZ na GitHubie: https://github.com/cetz-package/cetz

[16] Typst, Aktualizacja ze stycznia 2023: https://typst.app/blog/2023/january-update

[17] Typst Universe: https://typst.app/universe

[18] Typst 0.13: https://typst.app/blog/2025/typst-0.13

[19] Pandoc: https://pandoc.org/

Aktualnie przeglądasz

Styczeń 2026 - Nr 263
LM263_Jan-2026

Top 5 czytanych

Znajdź nas na Facebook'u

Opinie naszych czytelników

Nagrody i wyróżnienia