\documentclass{article}
\usepackage{hulipsum} %helykitöltő szöveg
\usepackage{graphicx} %képek beszúrása
\usepackage[magyar]{babel}
\usepackage{t1enc} %vagy \usepackage[T1]{fontenc}
\usepackage[section]{placeins} % float-ok maradjanak a saját fejezetükben! % \FloatBarrier - ezen nem tudnak "átúszni" a float-ok
\usepackage{array} %táblázatok testreszabása
\usepackage{multirow} % cellák függőleges összevonása
\usepackage{xcolor}
\usepackage{listings}

\begin{document}
\listoffigures

%\bigskip
\section{Kép}

\hulipsum[1-3]

Itt helyeztük el \aref{abra:zold_domb}. ábrát, de nem fért ki a lap aljára, a LaTeX algoritmus áthelyezte.

\begin{figure}[hbt!] %LaTeX dinaminkusan áthelyezi nekünk a képet, hogy jól nézzen ki
% elhelyezési opciók: h = itt, b = lap alja, t = lap teteje, p = csak úszó objektumokat tartalmazó oldalon
% mi beírunk egy betűkombinációt = preferált opciók, algoritmus ezekből próbál válogatni - de nem mindig sikerül, vannak rejtett tényezők
% !: erősebben kérjük
% néha érdemes kódban kézzel átrakni a figure blokkot
\centering %középre zárás
\caption{Kép felirata} % csak a figure-ön belül létezik ilyen parancs!
\label{abra:zold_domb}
\includegraphics[width=10cm]{szines} % kép beszúrása
\end{figure}

\hulipsum[4-5]

\section{Táblázat}

% táblázat formázása: nem úszik, nincs caption
% kötelező argumentum: milyen oszlopok? betűk szerint: igazítás, oszopok száma, sorrendje: betűsorozat
% l = balra zárt, r = jobbra, c = középre -- automatikus szélesség
% p{3cm} = fix széles, csak ez a többsoros cella
% pl. egy 4 oszlopos táblázat:
% soron belül új cella: &
% új sor: \\

\begin{table}%táblázatok úszó környezete - külön számozzuk a figure-től
\caption{oszloptípusok}
\begin{tabular}{lcrp{1cm}}
bal & közép & jobb & fix szélességű oszlop \\
l & c & r & p \\
mi történik, ha nem tördelt oszlopba nagyon hosszú szöveget teszünk? \\ %nem muszáj az összes & jelet kipakolni, hamarabb be lehet fejezni a sort
% l & c & r & p & ... -> túl sok &, hiba !
\end{tabular}
\end{table}

\begin{table}
\caption{Sortörés, array}
\centering
\begin{tabular}{l|c||r|||m{1cm}}% array csomaggal p lecserélhető m verzióra: függőlegesen középre zár
% b: alulra zár
% függőleges rácsozás: oszlopok betűjelei közé | jelek
\hline\hline
bal & közép & jobb & fix szélességű oszlop \\ \hline %vízszintes rácsvonal
l & c & r & p \\ \cline{1-2}\cline{1-2}
l & c & r & a \newline b \newline c \\ % p cellán belül sortörés: \newline
\cline{1-2} \cline{4-4}
% p cella: függőlegesen föntre igazít
l & c & r & p \\
\end{tabular}
\end{table}

\begin{table}
\caption{cellák összevonása}
\begin{tabular}{l|c||r|||m{1cm}}
\hline\hline
bal & közép & jobb & fix szélességű oszlop \\ \hline 
\multicolumn{3}{c|||}{3 oszlop lcr összevont} & 4. oszlop \\  \cline{1-2}\cline{1-2}
%cellák összevonása vízszintesen, avagy több oszlopot betöltő cella
% kevesebb & kell !
\multirow{2.5}{*}{ll} & c & r & a \newline b \newline c \\ %első argumentum: hány szövegsor magas legyen, nem feltétlen az összevont sorok száma - tört is lehet! szemmérték
\cline{2-2} \cline{4-4} %multirow-hoz rácsvonal korrekció kézzel!!
 & c & r & p \\ %alsó sorban hagyjuk ki a multirow-nak az üres cellát!!
\end{tabular}
\end{table}

\begin{table}
\caption{Függőleges ÉS vízszintes cella egyesítés + ozslopőre érvényes formázás}
\centering
2x2-es cella: multicolumn hasába multirow ; későbbi sorokban hagyjuk ki neki a üres cellákat! ; ha szükséges, soronként multicolumn-nel korrigáljuk a rácsvonalakat + vízszintes rácsot kézzel.

\begin{tabular}{>{\color{red}}l|c||r|||m{1cm}}% 
% >{kód}l : l oszlop minden cellájába, a tartalom elé beszúrja a {kód}-ot
% oszlop utánra kód: l<{kód}, pl. r<{\%} - %-jel beszúrása számok után "automatikusan".
\hline\hline
bal & közép & jobb & fix szélességű oszlop \\ \hline 
l & \multicolumn{2}{c|||}{%
\multirow{4}{*}{2x2-es cella}} & p \\ \cline{1-1}
l & \multicolumn{2}{c|||}{} & a \newline b \newline c \\ 
\cline{1-2} \cline{4-4}
l & c & r & p \\
\end{tabular}
\end{table}

\section{Programkód beszúrása}

előtte szöveg... \begin{verbatim}
"nyers", feldolgozatlan szöveg, tartalmazhat LaTeX kódot is
\begin{itemize}
	\item ...
\end{itemize}
\end{verbatim} utána szöveg... = verbatim környezet

inline, sorközi verbatim: \verb|\textcolor| -- b utáni tetszőleges speciális karakter a határoló,  a következő olyanig olvas.

szebben formázott programkód: listings csomag

\begin{lstlisting}[language=Python,float=hbt,%
caption=Bináris keresés Pythonban,label={py:bin_ker}]
def binary_search(arr, val, start, end):
	if start == end:
		if arr[start] > val:
			return start
		else:
			return start+1
	elif start > end:
		return start
	else: 
		mid = (start+end)/2
		if arr[mid] < val:
			return binary_search(arr, val, mid+1, end)
		elif arr[mid] > val:
			return binary_search(arr, val, start, mid-1)
		else: # arr[mid] = val
			return mid
			
def insertion_sort(arr):
    for i in xrange(1, len(arr)):
        val = arr[i]
        j = binary_search(arr, val, 0, i-1)
        arr = arr[:j] + [val] + arr[j:i] + arr[i+1:]
    return arr
\end{lstlisting}

\begin{lstlisting}[language=Python,title=Bináris keresés Pythonban még egyszer]
def binary_search(arr, val, start, end):
	if start == end:
		if arr[start] > val:
			return start
		else:
			return start+1
	elif start > end:
		return start
	else: 
		mid = (start+end)/2
		if arr[mid] < val:
			return binary_search(arr, val, mid+1, end)
		elif arr[mid] > val:
			return binary_search(arr, val, start, mid-1)
		else: # arr[mid] = val
			return mid
			
def insertion_sort(arr):
    for i in xrange(1, len(arr)):
        val = arr[i]
        j = binary_search(arr, val, 0, i-1)
        arr = arr[:j] + [val] + arr[j:i] + arr[i+1:]
    return arr
\end{lstlisting}

Mondat közepére \lstinline[language=Python]|return| bla bla.. 

\end{document}