Cheatsheet
Szkielet dokumentu
\documentclass[opcje]{klasa}
Pierwsza linia każdego pliku — jak <!DOCTYPE html>. Klasy: article, report, book, beamer (prezentacje)
\usepackage{nazwa}
Dołącza pakiet — jak <script src="..."> w HTML. Idzie w preambule (przed \begin{document})
\begin{document} ... \end{document}
Cała treść dokumentu — jak <body>...</body>. Poza tym blokiem LaTeX ignoruje tekst.
% komentarz
Komentarz — jak <!-- --> w HTML. Procent pomija resztę linii.
\\
Nowa linia (łamanie wiersza) — jak <br>
\newpage
Nowa strona — jak page-break-after: always w CSS
\par lub pusta linia
Nowy akapit — jak <p>
\noindent
Akapit bez wcięcia (LaTeX domyślnie wcina pierwsze słowo)
Wskazówka: Pojedyncza pusta linia w kodzie = nowy akapit. Dwie spacje = jedna spacja (LaTeX ignoruje wielokrotne spacje).
Opcje documentclass
[a4paper]
Format strony A4 (domyślnie jest US Letter!)
[12pt]
Podstawowy rozmiar czcionki (10pt, 11pt, 12pt)
[twocolumn]
Dwie kolumny tekstu — jak column-count: 2 w CSS
[landscape]
Strona pozioma zamiast pionowej
[polish]
Polskie łamanie wyrazów (z pakietem babel)
[fleqn]
Wzory matematyczne wyrównane do lewej
Przykład: \documentclass[a4paper,12pt]{article}
Znaki specjalne (ucieczka)
\%
% — znak procenta (sam % to komentarz!)
\$
$ — dolar (sam $ to tryb math!)
\&
& — ampersand (jak &amp; w HTML)
\_
_ — podkreślnik (sam _ to indeks dolny w math)
\{ \}
{ } — nawiasy klamrowe (same { } to grupowanie)
\#
# — hash / krzyżyk
\textbackslash
\ — backslash (sam \ to komenda!)
\textasciitilde
~ — tylda (sama ~ to twarda spacja)
~
twarda spacja — nierozdzielna spacja, jak &nbsp; w HTML
---
Myślnik długi (—). -- to półpauza (–), - to łącznik (-)
Styl tekstu
\textbf{tekst}
Pogrubienie — jak <strong> lub font-weight: bold
\textit{tekst}
Kursywa — jak <em> lub font-style: italic
\underline{tekst}
Podkreślenie — jak text-decoration: underline
\texttt{tekst}
Czcionka maszynowa — jak <code>
\textsc{tekst}
KAPITALIKI — jak font-variant: small-caps
\textsf{tekst}
Bezszeryfowa — jak font-family: sans-serif
\textbf{\textit{...}}
Pogrubiona kursywa — komendy można zagnieżdżać jak tagi HTML
\emph{tekst}
Kontekstowe wyróżnienie — kursywa w normalnym tekście, normalna w kursywie
Rozmiar czcionki
{\tiny tekst}
Najmniejszy — jak font-size: 0.5em
{\scriptsize tekst}
Bardzo mały (jak indeksy)
{\footnotesize tekst}
Rozmiar przypisów dolnych
{\small tekst}
Mały — jak font-size: 0.875em
{\normalsize tekst}
Normalny (domyślny)
{\large tekst}
Duży
{\Large tekst}
Większy
{\LARGE tekst}
Jeszcze większy
{\huge tekst}
Ogromny
{\Huge tekst}
Największy — jak font-size: 3em
Uwaga: Klamry {} ograniczają zasięg — bez nich rozmiar zmienia się do końca dokumentu!
Wyrównanie tekstu
\begin{center} ... \end{center}
Wyśrodkowanie — jak text-align: center
\begin{flushleft} ... \end{flushleft}
Wyrównanie do lewej — jak text-align: left
\begin{flushright} ... \end{flushright}
Wyrównanie do prawej — jak text-align: right
Domyślnie LaTeX używa justyfikacji (wyjustowania do obu stron).
Kolor tekstu
\usepackage{xcolor}
Pakiet potrzebny do kolorów — dodaj do preambuły
\textcolor{red}{tekst}
Czerwony tekst — jak color: red w CSS
\textcolor[HTML]{FF6600}{tekst}
Kolor hex — jak color: #FF6600
\colorbox{yellow}{tekst}
Kolorowe tło — jak background-color: yellow
\color{blue}
Zmienia kolor dla całej grupy (bez argumentu tekstowego)
Gotowe kolory: red, blue, green, yellow, orange, purple, gray, black, white i wiele innych.
Nagłówki sekcji
\chapter{Tytuł}
Rozdział — jak <h1>. Tylko w klasach book/report
\section{Tytuł}
Sekcja — jak <h2> (lub h1 w article)
\subsection{Tytuł}
Podsekcja — jak <h3>
\subsubsection{Tytuł}
Pod-podsekcja — jak <h4>
\paragraph{Tytuł}
Akapit z tytułem — jak <h5>
\section*{Tytuł}
Sekcja bez numeru i bez wpisu do spisu treści (gwiazdka działa wszędzie)
LaTeX automatycznie numeruje sekcje i buduje spis treści!
Strona tytułowa
\title{Tytuł pracy}
Ustawia tytuł — deklaracja w preambule
\author{Jan Kowalski}
Ustawia autora
\date{2024}
Data. \date{\today} = aktualna data
\maketitle
Wstawia stronę tytułową w miejscu wywołania — jak render()
\begin{titlepage} ... \end{titlepage}
Własna, ręcznie zaprojektowana strona tytułowa
Spis treści i indeksy
\tableofcontents
Automatyczny spis treści — LaTeX generuje go sam na podstawie sekcji
\listoffigures
Spis rysunków (wymaga środowiska figure z \caption)
\listoftables
Spis tabel
\addcontentsline{toc}{section}{Tytuł}
Ręcznie dodaj wpis do spisu treści (np. dla sekcji z gwiazdką)
Ważne: Skompiluj dokument dwukrotnie, żeby spis treści się zaktualizował (LaTeX robi to w dwóch przebiegach).
Elementy dokumentu naukowego
\begin{abstract} ... \end{abstract}
Streszczenie (abstrakt) — sekcja specjalnie sformatowana przez LaTeX
\appendix
Od tego miejsca sekcje stają się dodatkami (A, B, C zamiast 1, 2, 3)
\footnote{treść}
Przypis dolny — LaTeX sam umieszcza go na dole strony i numeruje
\marginpar{tekst}
Uwaga na marginesie strony
Rodzaje list
\begin{itemize} \item ... \end{itemize}
Lista z punktami (•) — jak <ul><li>
\begin{enumerate} \item ... \end{enumerate}
Lista numerowana — jak <ol><li>
\begin{description} \item[pojęcie] ... \end{description}
Lista definicji — jak <dl><dt><dd>
\item[własny symbol]
Własny znacznik punktu zamiast domyślnego — np. \item[-]
Zagnieżdżanie: Listy można wkładać w listy (do 4 poziomów). LaTeX automatycznie zmienia symbol punktu na każdym poziomie.
Tryby matematyczne
$wzór$
Wzór inline — wbudowany w tekst, jak <span>
$$wzór$$
Wzór display — wycentrowany w osobnej linii, jak <div>
\begin{equation} wzór \end{equation}
Wzór numerowany — LaTeX dodaje numer po prawej stronie
\begin{equation*} wzór \end{equation*}
Wzór display bez numeru (gwiazdka = bez numeru)
\begin{align} a &= b \\ c &= d \end{align}
Układ równań wyrównanych w kolumnie — & to punkt wyrównania, \\ to nowa linia
Pakiet amsmath: Dodaj \usepackage{amsmath} dla zaawansowanych środowisk matematycznych.
Podstawowe operacje
\frac{licznik}{mianownik}
Ułamek — np. $\frac{1}{2}$
x^{2}
Potęga / indeks górny — jak <sup>
x_{i}
Indeks dolny — jak <sub>
\sqrt{x}
Pierwiastek kwadratowy
\sqrt[n]{x}
Pierwiastek n-tego stopnia
\sum_{i=0}^{n}
Suma — granice pod i nad symbolem
\int_{a}^{b}
Całka — z granicami a i b
\lim_{x \to 0}
Granica — zapis "x dąży do 0"
\prod_{i=1}^{n}
Iloczyn (pi-notacja)
\infty
Symbol nieskończoności ∞
Litery greckie i symbole
\alpha \beta \gamma
α β γ — małe litery greckie (pisane z backslashem)
\delta \epsilon \theta
δ ε θ
\lambda \mu \pi
λ μ π
\sigma \phi \omega
σ φ ω
\Gamma \Delta \Sigma
Γ Δ Σ — wielkie litery greckie (duża pierwsza litera)
\cdot \times \div
· × ÷ — operatory arytmetyczne
\leq \geq \neq
≤ ≥ ≠ — porównania
\approx \equiv
≈ ≡ — aproksymacja, równoważność
\in \subset \cup \cap
∈ ⊂ ∪ ∩ — teoria zbiorów
\forall \exists
∀ ∃ — kwantyfikatory logiczne
\partial
∂ — pochodna cząstkowa
\nabla
∇ — operator nabla (gradient)
Nawiasy i macierze
\left( ... \right)
Automatycznie skalowane nawiasy — zawsze używaj tej pary!
\left[ ... \right]
Skalowane nawiasy kwadratowe
\left\{ ... \right\}
Skalowane nawiasy klamrowe (muszą być poprzedzone \)
\begin{pmatrix} a & b \\ c & d \end{pmatrix}
Macierz w nawiasach okrągłych — & oddziela kolumny, \\ wiersze
\begin{bmatrix} a & b \\ c & d \end{bmatrix}
Macierz w nawiasach kwadratowych
\vec{v}
Wektor ze strzałką → v̄
\overline{AB}
Kreska nad wyrażeniem
\hat{x}
Daszek nad literą x̂
Środowisko tabular
\begin{tabular}{|l|c|r|} ... \end{tabular}
Tabela — jak <table>. Kolumny: l=lewa, c=środek, r=prawa, |=pionowa linia
A & B & C \\
Wiersz tabeli — & oddziela komórki (jak <td>), \\ kończy wiersz
\hline
Pozioma linia — jak border-top. Dwa razy = podwójna linia
\cline{2-4}
Linia tylko przez kolumny 2–4
\multicolumn{3}{c}{tekst}
Komórka łącząca 3 kolumny — jak colspan="3"
\multirow{2}{*}{tekst}
Komórka łącząca 2 wiersze — jak rowspan="2" (pakiet multirow)
Pełna tabela: Opakuj tabular w środowisko \begin{table}[h] ... \caption{} \label{} \end{table} żeby dodać podpis i etykietę.
Środowisko table (float)
\begin{table}[h] ... \end{table}
Kontener pływający — LaTeX sam decyduje o miejscu. Parametry: h=tutaj, t=góra, b=dół, p=osobna strona
\caption{Opis tabeli}
Podpis tabeli — LaTeX automatycznie numeruje
\label{tab:moja}
Etykieta do odsyłaczy — jak id="" w HTML
\centering
Wyśrodkowanie tabeli w środowisku table
Wstawianie obrazów
\usepackage{graphicx}
Pakiet do wstawiania grafik — jak <img> (dodaj do preambuły)
\includegraphics[width=0.8\textwidth]{plik}
Wstaw obraz — jak <img src="plik">. Plik bez rozszerzenia (LaTeX wybierze .pdf/.png/.jpg)
[width=5cm]
Szerokość w centymetrach
[scale=0.5]
Skalowanie (0.5 = połowa rozmiaru) — jak transform: scale()
[angle=90]
Obrót obrazu o 90 stopni
[height=3cm]
Ustal tylko wysokość (szerokość skaluje się automatycznie)
Konwencja: Trzymaj obrazki w folderze /images/ i użyj \graphicspath{{images/}} w preambule.
Środowisko figure
\begin{figure}[h] ... \end{figure}
Pływający kontener dla obrazu — LaTeX sam wybiera miejsce (jak position: float)
\caption{Opis rysunku}
Podpis — automatycznie numeruje "Rysunek 1:", "Figure 1:" itp.
\centering
Wyśrodkuj obraz wewnątrz środowiska figure
\begin{wrapfigure}{r}{0.4\textwidth} ... \end{wrapfigure}
Obraz z opływaniem tekstu — jak float: right w CSS. Pakiet: wrapfig
Odsyłacze wewnętrzne
\label{klucz}
Tworzy zakotwiczenie — jak id="" w HTML. Umieszcza się przy sekcji, rysunku, równaniu.
\ref{klucz}
Odwołuje się do etykiety — wstawia numer sekcji/rysunku/tabeli. Jak <a href="#id">
\pageref{klucz}
Numer strony, na której jest etykieta
\eqref{klucz}
Odsyłacz do równania — jak \ref ale w nawiasach: (1)
Konwencja nazewnictwa kluczy: fig:nazwa dla rysunków, tab:nazwa dla tabel, sec:nazwa dla sekcji, eq:nazwa dla równań.
Bibliografia i cytowania
\cite{klucz}
Cytowanie — wstawia [1] lub [Kowalski2020] w tekście
\cite[str.~15]{klucz}
Cytowanie z numerem strony: [1, str. 15]
\bibliography{literatura}
Wstawia bibliografię z pliku literatura.bib (BibTeX)
\bibliographystyle{plain}
Styl bibliografii: plain, alpha, ieee, apa
\begin{thebibliography}{99} \bibitem{} ... \end{thebibliography}
Ręczna bibliografia bez BibTeXa — prostsze dla małych dokumentów
Nowoczesna alternatywa: Pakiet biblatex z backendem biber — potężniejszy i bardziej elastyczny niż BibTeX.
Hyperlinki (hyperref)
\usepackage{hyperref}
Dodaje klikalne linki i PDF zakładki — dodaj jako ostatni pakiet w preambule
\href{https://...}{tekst}
Link tekstowy — jak <a href="...">
\url{https://...}
Wyświetla URL jako klikalny link — jak <a> bez tekstu
\hyperref[label]{tekst}
Klikalny odsyłacz wewnętrzny
Po dodaniu hyperref odsyłacze \ref, cytowania \cite i spis treści stają się automatycznie klikalne w PDF!
Język i kodowanie (MUST HAVE)
\usepackage[T1]{fontenc}
Kodowanie fontów — pozwala na poprawne polskie znaki i łamanie wyrazów
\usepackage[utf8]{inputenc}
Kodowanie wejścia UTF-8 — możesz pisać ąęóźż bezpośrednio (w XeLaTeX/LuaLaTeX niepotrzebne)
\usepackage[polish]{babel}
Polskie reguły językowe — łamanie wyrazów, nazwy ("Rysunek" zamiast "Figure")
\usepackage[pl]{datetime}
Polska data przy \today
Kolejność ma znaczenie: fontenc → inputenc → babel
Układ strony (geometry)
\usepackage[margin=2.5cm]{geometry}
Ustawia marginesy — jak margin: 2.5cm w CSS @page
\usepackage[top=3cm, bottom=2.5cm, left=3cm, right=2cm]{geometry}
Różne marginesy z każdej strony — jak margin-top/right/bottom/left
\usepackage{setspace}
Kontrola interliniowania
\doublespacing
Podwójne interliniowanie (z pakietem setspace) — jak line-height: 2
\onehalfspacing
1,5 interliniowania — popularne w pracach akademickich
\linespread{1.3}
Niestandardowe interliniowanie bez pakietu
Kod źródłowy (listings)
\usepackage{listings}
Wstawianie kodu źródłowego z kolorowaniem składni — jak <pre><code>
\begin{lstlisting}[language=Python] ... \end{lstlisting}
Blok kodu z podświetlaniem — języki: Python, C, Java, HTML, SQL, bash...
\lstinputlisting[language=C]{plik.c}
Dołącz kod bezpośrednio z pliku — jak <script src="">
\begin{verbatim} ... \end{verbatim}
Tekst dosłowny bez kolorowania — jak <pre>. Wszystkie znaki specjalne są traktowane literalnie.
\verb|tekst|
Inline verbatim — jak <code>. Między | wpisz co chcesz.
Nagłówki i stopki (fancyhdr)
\usepackage{fancyhdr}
Niestandardowe nagłówki i stopki stron — jak position: fixed; top: 0
\pagestyle{fancy}
Włącz styl fancy na wszystkich stronach
\lhead{lewa strona}
Lewa część nagłówka (l=left, c=center, r=right)
\rfoot{\thepage}
Numer strony w prawej stopce — \thepage = aktualny numer
\renewcommand{\headrulewidth}{0.4pt}
Grubość linii pod nagłówkiem (0pt = brak linii)
Inne przydatne pakiety
amsmath
Rozszerzona matematyka — środowiska align, gather, cases i dziesiątki komend
amssymb
Dodatkowe symbole matematyczne ℝ ℕ ℤ ∅ i inne
booktabs
Eleganckie tabele — komendy \toprule, \midrule, \bottomrule
siunitx
Jednostki SI — \SI{9.81}{m/s^2} poprawnie formatuje liczby z jednostkami
tikz
Rysunki wektorowe bezpośrednio w LaTeX — jak SVG ale w kodzie LaTeX
pgfplots
Wykresy naukowe — jak Chart.js ale w LaTeX, na bazie TikZ
enumitem
Pełna kontrola nad wyglądem list — odstępy, etykiety, wcięcia
multicol
Wielokolumnowy układ tekstu w dowolnym miejscu dokumentu
tcolorbox
Kolorowe ramki i bloki — idealne do definicji, twierdzeń, uwag
todonotes
Komentarze i notatki "TODO" widoczne podczas pisania
Własne komendy
\newcommand{\skrót}{rozwinięcie}
Definiuje skrót — jak function lub zmienna CSS. Np. \newcommand{\R}{\mathbb{R}}
\newcommand{\nazwa}[2]{#1 i #2}
Komenda z 2 argumentami — #1, #2 jak parametry funkcji
\renewcommand{\komenda}{nowa definicja}
Nadpisanie istniejącej komendy LaTeX — jak override
Numerowanie stron
\thepage
Aktualny numer strony
\pagenumbering{arabic}
Cyfry arabskie: 1, 2, 3...
\pagenumbering{roman}
Cyfry rzymskie: i, ii, iii... (do wstępu/spisu treści)
\pagenumbering{alph}
Litery: a, b, c...
\setcounter{page}{5}
Ustaw ręcznie numer strony
\pagestyle{empty}
Brak nagłówka i stopki (np. na stronie tytułowej)
Środowiska i grupowanie
\begin{minipage}{0.5\textwidth} ... \end{minipage}
Ministrona — jak <div style="width:50%">. Używana do kolumn obok siebie.
{ komenda }
Klamry ograniczają zasięg — jak scope w CSS. Cokolwiek wewnątrz nie "wycieka" na zewnątrz.
\begin{quote} ... \end{quote}
Cytat — wcięty blok tekstu, jak <blockquote>
\begin{quotation} ... \end{quotation}
Dłuższy cytat — z wcięciem pierwszego wiersza każdego akapitu
\begin{verse} ... \end{verse}
Środowisko dla poezji — specjalne łamanie wierszy
Jednostki długości
cm
Centymetry — najprostsza, fizyczna jednostka. width=5cm = dosłownie 5 cm na wydruku
mm
Milimetry — jak cm, ale drobniejsze. width=50mm = to samo co 5cm
in
Cale — 1in = 2.54cm. Używane głównie w ustawieniach marginesów dla US Letter
pt
Punkt typograficzny — 1pt ≈ 0.35mm. Historyczna jednostka typografii, używana przy czcionkach i odstępach
em
Em — szerokość litery "M" w bieżącej czcionce — jak em w CSS. Skaluje się razem z rozmiarem tekstu. 1em ≈ bieżący rozmiar czcionki
ex
Ex — wysokość litery "x" w bieżącej czcionce — jak ex w CSS. Mniejsze niż em
px
Piksele — działają w LaTeX, ale odradzane. 1px = 0.75pt (zależy od DPI). Nie używaj do druku!
bp
Big point — punkt PostScript. 1bp = 1/72 cala. Używany przy plikach PDF/EPS
Zasada prosta: Do obrazków i marginesów używaj cm. Do odstępów przy tekście używaj em lub pt. Nigdy nie mieszaj cm i pt bez kalkulatora.
Wymiary względne (jak % w CSS)
\textwidth
Pełna szerokość obszaru tekstu — jak 100% rodzica. Najczęściej używane!
0.5\textwidth
Połowa szerokości tekstu — jak 50%. Możesz pisać dowolny mnożnik: 0.3, 0.75, 1.2...
\linewidth
Szerokość bieżącej linii — prawie zawsze równa \textwidth, ale różni się w minipage i wielokolumnowych układach
\columnwidth
Szerokość kolumny (w układzie dwukolumnowym = połowa \textwidth)
\textheight
Pełna wysokość obszaru tekstu — jak 100vh minus marginesy
\paperwidth
Fizyczna szerokość strony (np. 210mm dla A4)
\paperheight
Fizyczna wysokość strony (np. 297mm dla A4)
\baselineskip
Bieżący odstęp między liniami tekstu — jak line-height w CSS
Złota zasada: Prawie zawsze używaj width=0.8\textwidth zamiast sztywnych cm — wtedy obrazek automatycznie dostosuje się do każdego formatu strony i marginesów.
Rozmiar obrazka — opcje []
\includegraphics[width=8cm]{obraz}
Ustaw szerokość na 8cm. Wysokość skaluje się automatycznie zachowując proporcje — jak width: 8cm; height: auto
\includegraphics[height=5cm]{obraz}
Ustaw wysokość na 5cm, szerokość automatyczna — jak height: 5cm; width: auto
\includegraphics[width=0.6\textwidth]{obraz}
60% szerokości tekstu — najlepszy sposób na responsywne obrazki. Zawsze wygląda dobrze niezależnie od formatu strony
\includegraphics[scale=0.5]{obraz}
Skaluj do 50% oryginalnego rozmiaru — jak transform: scale(0.5). Wartość 1.0 = oryginalny rozmiar, 2.0 = podwójny
\includegraphics[width=6cm, height=4cm]{obraz}
Ustal oba wymiary — uwaga: rozciąga obraz jeśli proporcje się nie zgadzają (jak object-fit: fill)
\includegraphics[width=6cm, height=4cm, keepaspectratio]{obraz}
Ustaw max-wymiary zachowując proporcje — jak object-fit: contain. Obrazek nie będzie większy niż 6cm×4cm, ale nie zostanie rozciągnięty
\includegraphics[angle=90]{obraz}
Obrót o 90° — jak transform: rotate(90deg). Wartości: 90, 180, 270, -45 itd.
\includegraphics[angle=45, width=5cm]{obraz}
Można łączyć opcje — obróć i ustaw szerokość jednocześnie
\includegraphics[trim=1cm 2cm 1cm 2cm, clip]{obraz}
Przytnij obraz — wartości: lewo dół prawo góra (jak clip-path lub crop). Bez clip przycinanie nie działa!
Najpopularniejsza kombinacja do pracy: [width=0.8\textwidth] — obrazek zajmie 80% szerokości i będzie wyglądał profesjonalnie na każdym formacie strony.
Odstępy — vspace i hspace
\vspace{1cm}
Pionowy odstęp 1cm — jak margin-bottom: 1cm lub pusty <div> z height
\vspace{-0.5cm}
Ujemny odstęp — zmniejsza istniejący odstęp. Przydatne do korekty rozkładu strony
\hspace{2em}
Poziomy odstęp 2em — jak padding-left: 2em lub &nbsp;&nbsp;
\vspace*{1cm}
Gwiazdka = wymuszony odstęp nawet na początku strony (zwykły \vspace jest tam ignorowany)
\smallskip
Mały pionowy odstęp (≈3pt) — predefiniowany skrót
\medskip
Średni pionowy odstęp (≈6pt)
\bigskip
Duży pionowy odstęp (≈12pt) — jak dodatkowy akapit
\hfill
Elastyczny poziomy odstęp — wypełnia całą dostępną przestrzeń. Jak justify-content: space-between. Np. Tekst lewy\hfill Tekst prawy
\vfill
Elastyczny pionowy odstęp — rozsuwa zawartość strony. Używane na stronie tytułowej do równomiernego rozkładu
Skalowanie dowolnej treści (graphicx)
\scalebox{0.7}{dowolny tekst lub cokolwiek}
Skaluje cokolwiek — tekst, wzory, tabele — do 70% rozmiaru. Nie tylko obrazki!
\resizebox{5cm}{!}{treść}
Dopasuj do szerokości 5cm, wysokość automatyczna (! = zachowaj proporcje). Jak width: 5cm; height: auto dla dowolnej treści
\resizebox{\textwidth}{!}{treść}
Rozciągnij do pełnej szerokości tekstu — przydatne dla szerokich tabel które nie mieszczą się na stronie
\rotatebox{45}{tekst}
Obróć dowolną treść o 45° — działa też na tekst w nagłówkach tabel!
Trick z tabelą: Jeśli tabela jest za szeroka, owiń ją w \resizebox{\textwidth}{!}{ \begin{tabular}...\end{tabular} } — dopasuje ją do strony zachowując proporcje.
Specyfikatory pozycji [h t b p !]
[h]
here — postaw float w tym miejscu w kodzie. LaTeX spróbuje, ale jeśli nie pasuje, przeniesie dalej. Często zawodzi sam.
[t]
top — na górze bieżącej lub następnej strony. Najczęściej używane w pracach naukowych.
[b]
bottom — na dole strony. LaTeX rzadko to respektuje jeśli mało miejsca.
[p]
page — osobna strona tylko z floatami. Używane gdy float jest bardzo duży.
[!]
override — wymusza zluzowanie wewnętrznych reguł LaTeXa (ile floatów na stronie, ile miejsca zostawić itp.). Nie zmusza do konkretnej pozycji — tylko rozluźnia ograniczenia.
[H]
HERE absolutnie — wymusza pozycję dokładnie tu, bez żadnych negocjacji. Wymaga pakietu float. Najsilniejsza opcja.
Jak to działa: LaTeX traktuje figury/tabele jak "pływające obiekty" (floaty) — sam decyduje gdzie je postawić żeby strona wyglądała ładnie. Specyfikatory to tylko sugestie lub ograniczenia, nie nakazy (poza [H]).
Kombinacje specyfikatorów
[ht]
Tu lub góra — najpierw spróbuj here, jeśli nie wyjdzie to top. Dobry kompromis dla małych floatów.
[htb]
Tu, góra lub dół — LaTeX ma trzy opcje do wyboru. Dobre dla średnich floatów.
[htbp]
Wszystkie opcje — LaTeX ma pełną swobodę. Domyślne zachowanie. Daje najładniejszy wynik ogólny.
[!ht]
Wymuś tu lub góra, ignorując ograniczenia — częste w pracach gdzie zależy na kolejności z tekstem.
[!htbp]
Pełna swoboda ale z rozluźnionymi regułami — LaTeX bardziej agresywnie stara się umieścić float blisko kodu.
[H]
Absolutnie tutaj — float staje się częścią tekstu, nie pływa. Może dawać brzydkie strony, ale pozycja jest gwarantowana.
Kolejność liter nie ma znaczenia — [ht] i [th] to to samo. Liczy się tylko które litery są podane, nie ich kolejność.
Kontrola przepływu floatów
\clearpage
Wydrukuj wszystkie oczekujące floaty, potem zacznij nową stronę. Najpotężniejsze narzędzie gdy floaty uciekają za daleko.
\cleardoublepage
Jak \clearpage ale następna treść zaczyna się na stronie nieparzystej (dla dwustronnego druku)
\FloatBarrier
Bariera — floaty nie mogą jej przekroczyć (pakiet placeins). Nie wstawia nowej strony — tylko wymusza kolejność.
\suppressfloats
Zabrania nowych floatów na bieżącej stronie — przenoszone na następną
\setcounter{topnumber}{5}
Ile floatów max na górze strony (domyślnie 2). Zwiększ jeśli LaTeX nie chce stawiać floatów.
\renewcommand{\topfraction}{0.9}
Max jaka część strony może być zajęta przez floaty na górze (domyślnie 0.7 = 70%). Zwiększ gdy float "nie pasuje".
Overfull / Underfull hbox
Overfull \hbox (Xpt too wide)
Co to: Tekst lub element wystaje poza margines — LaTeX nie znalazł dobrego miejsca na złamanie linii. Widoczne jako czarny prostokąt na marginesie w PDF.
Underfull \hbox (badness 10000)
Co to: Linia ma za duże odstępy między słowami — LaTeX musiał rozciągnąć spacje żeby wyjustować. Zwykle nieszkodliwe wizualnie.
Przyczyny Overfull: długie słowo bez łącznika, URL w tekście, zbyt wąska kolumna.

Rozwiązania:
• Dodaj \usepackage[polish]{babel} — automatyczne dzielenie wyrazów
• Użyj \sloppy (lub środowisko \begin{sloppypar}) — LaTeX dopuszcza większe odstępy zamiast wystawać
• Dodaj \- w słowie jako wskazówkę gdzie można przenieść: nie\-spo\-dzie\-wa\-ny
• Dla URL użyj \url{} z pakietem hyperref — umie łamać adresy
Undefined reference / Citation
LaTeX Warning: Reference `tab:x' on page 3 undefined
Co to: Używasz \ref{tab:x} ale nigdzie nie ma \label{tab:x}. W PDF pojawi się ?? zamiast numeru.
LaTeX Warning: Citation `kowalski2020' undefined
Co to: Używasz \cite{kowalski2020} ale tego klucza nie ma w pliku .bib lub bibliografia nie jest dołączona.
Przyczyny: Literówka w kluczu (wielkość liter ma znaczenie!), brakujące \label, nie skompilowano wystarczająco wiele razy, brakujący plik .bib.

Rozwiązanie: Skompiluj dwukrotnie (dla \ref) lub w kolejności: pdflatex → bibtex → pdflatex → pdflatex (dla \cite z BibTeXem). Dlaczego dwukrotnie? Bo przy pierwszym przebiegu LaTeX zbiera etykiety, dopiero przy drugim może je wstawić.
Missing $ inserted / Math mode errors
! Missing $ inserted
Co to: LaTeX natknął się na symbol matematyczny (_, ^, \frac itd.) poza trybem math. Próbuje się ratować dodając $ sam — i zwykle to kaskadowo psuje resztę dokumentu.
! Bad math environment delimiter
Co to: Niezamknięte lub źle zagnieżdżone środowisko matematyczne — np. $$wzór$ zamiast $$wzór$$.
Najczęstsze przyczyny:
• Podkreślnik _ w zwykłym tekście (np. w nazwie pliku) — napisz \_
• Znak ^ w tekście — napisz \^{} lub \textasciicircum
• Zapomniane zamknięcie $
\frac, \sum itp. użyte poza $ $

Sposób debugowania: Błąd jest podany z numerem linii — ale często LaTeX zgłasza go kilka linii za miejscem rzeczywistego problemu.
Too many unprocessed floats
! LaTeX Error: Too many unprocessed floats
Co to: LaTeX ma kolejkę maksymalnie ~18 floatów czekających na umieszczenie i ta kolejka się zapchała. Zdarza się gdy masz dużo obrazków/tabel z nieelastycznym pozycjonowaniem [h] i mało tekstu między nimi.
Przyczyny: Za dużo floatów z [h] lub [!h] w krótkim fragmencie, LaTeX nie może ich nigdzie postawić i kolejka pęka.

Rozwiązania:
• Dodaj \clearpage co kilka obrazków — opróżnia kolejkę
• Zmień [h] na [htbp] — daj LaTeXowi swobodę
• Użyj pakietu placeins z \FloatBarrier zamiast walczyć z [h]
• Użyj [H] z pakietem float — float nie trafia do kolejki, jest od razu "w tekście"
File not found / Missing package
! LaTeX Error: File `rysunek.pdf' not found
Co to: \includegraphics{rysunek} nie może znaleźć pliku. LaTeX szuka go w folderze dokumentu.
! LaTeX Error: File `pakiet.sty' not found
Co to: Pakiet z \usepackage{pakiet} nie jest zainstalowany w systemie TeX.
Dla brakujących plików graficznych:
• Sprawdź czy plik jest w tym samym folderze co .tex
• Nie podawaj rozszerzenia: \includegraphics{rysunek}, nie {rysunek.jpg}
• Albo podaj pełną ścieżkę: \includegraphics{images/rysunek}
• Ustaw ścieżkę globalnie: \graphicspath{{images/}{figures/}}

Dla brakujących pakietów: W TeX Live: tlmgr install nazwapakietu. W Overleaf — wszystkie pakiety są dostępne od razu.
Polskie znaki nie działają
! Package inputenc Error: Unicode char ą (U+105)
Co to: Piszesz polskie litery bezpośrednio, ale LaTeX nie wie jak je obsłużyć. Brakuje pakietów do kodowania.
ą ę ó ź ż wyświetlają się jako pudełka lub ??
Co to: Font nie zawiera polskich znaków — brakuje fontenc lub użyto złego kodowania fontu.
Rozwiązanie dla klasycznego LaTeX / pdfLaTeX:
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[polish]{babel}

Rozwiązanie dla XeLaTeX / LuaLaTeX (nowocześniejsze silniki):
\usepackage{fontspec} (zastępuje fontenc+inputenc)
\usepackage[polish]{babel}

Dlaczego T1? Domyślne kodowanie OT1 ma tylko 128 znaków — brak polskich liter. T1 ma 256 znaków i zawiera ogonki.
Runaway argument / Missing brace
! Runaway argument? ... ! Paragraph ended before \X was complete
Co to: Komenda oczekuje argumentu w klamrach, ale natrafiła na koniec akapitu (pustą linię) zanim znalazła zamykającą }. Zwykle oznacza brakującą klamrę gdzieś wcześniej.
! Missing } inserted
Co to: Niezamknięta klamra — LaTeX doszedł do miejsca gdzie musi już zamknąć i sam wstawia }. Błąd realny może być wiele linii wcześniej.
! \begin{X} ended by \end{Y}
Co to: Środowiska nie są poprawnie zagnieżdżone — otworzyłeś X, ale zamykasz Y. Jak <div></span> w HTML.
Strategia debugowania:
• Numer linii w błędzie jest często za późny — błąd jest wcześniej
• Użyj edytora który podświetla dopasowanie klamr (VS Code + LaTeX Workshop)
• Komentuj połowę dokumentu % żeby metodą bisekcji znaleźć błąd
• Każde \begin{} musi mieć swoje \end{} — jak otwierające i zamykające tagi HTML
Rysunek/tabela wylądował 3 strony dalej
\begin{figure}[h] ... \end{figure}
Problem: Wstawiasz rysunek z [h] ale LaTeX i tak przenosi go gdzieś indziej — bo na tej stronie jest za mało miejsca na float + wymagany tekst pod nim.
Dlaczego LaTeX to robi? Ma wbudowane estetyczne reguły: float nie może zajmować więcej niż 70% strony, musi być co najmniej 20% tekstu itp. Gdy [h] nie pasuje do tych reguł — float leci dalej.

Rozwiązania od najmniej do najbardziej inwazyjnych:
1. Zmień na [!ht] — rozluźnia reguły
2. Zmniejsz obraz: [width=0.7\textwidth] zamiast 0.9
3. Użyj [H] z pakietem float — absolutna pozycja
4. Dodaj \clearpage przed rysunkiem
5. Dodaj więcej tekstu po rysunku — LaTeX chętniej stawia float gdy jest co "opłynąć"
Inne częste irytacje
Spis treści się nie zaktualizował
Przyczyna: LaTeX buduje spis treści w dwóch przebiegach. Kompiluj zawsze dwukrotnie po zmianach w sekcjach.
Numeracja stron zaczyna się od złej liczby
Przyczyna: Strona tytułowa i strony ze spisem treści też są liczone. Użyj \pagenumbering{roman} dla wstępu, potem \pagenumbering{arabic} przed pierwszym rozdziałem.
Pierwszy akapit sekcji nie ma wcięcia
Przyczyna: To celowe zachowanie LaTeXa — konwencja typograficzna mówi że wcięcie sygnalizuje kontynuację, nie początek. Możesz to zmienić pakietem indentfirst.
Cudzysłów wygląda jak ""tekst""
Przyczyna: Nie używaj klawisza ". W LaTeX cudzysłów to ``tekst'' (dwa grawisy na początku, dwa apostrofy na końcu). Polskie: \quotedblbase tekst\textquotedblright lub pakiet csquotes.
Tekst wychodzi poza stronę w tabelce
Przyczyna: Kolumna typu l/c/r nie łamie tekstu — jest nieskończenie szeroka. Użyj p{3cm} zamiast l — kolumna o stałej szerokości z zawijaniem tekstu.
Matematyka: zbyt małe nawiasy przy ułamkach
Przyczyna: Pisanie (\frac{1}{2}) daje małe nawiasy przy dużym ułamku. Zawsze używaj \left( \frac{1}{2} \right) — automatyczne skalowanie.