%
% Hlavičkový papír MFF UK (LaTeXová šablona)
%		Autoři: Martin Trčka, Martin Mareš
%		Verze:  2021-09-07
%
% Použití šablony:
%
%		- Pro zpracování šablony je potřeba použít XeTeX (XeLaTeX) nebo LuaLaTeX, protože
%			pomocí nich (resp. balíčku fontspec) se načítá font Cambria (font je součástí
%			např. MS Office verze 2007 a novější). Pokud font Cambria není ve vašem systému
%			nainstalovaný, použije se substituční font.
%
%			Pokud font Cambria v systému nemáte, nebo ho nechcete použít, je možné odpovídající
%			příkazy	zakomentovat a pro zpracování použít jen LaTeX. Jde o tyto dva příkazy:
%				\RequirePackage{fontspec}
%				\IfFontExistsTF{Cambria}{...}{}
%
%		- Přesuňte se níže do části označené "TEXT DOPISU" (je úplně dole) a tam začněte psát.
%
%		- Kódování textu je UTF-8.
%
%		- Šablona používá tyto balíčky: babel, fontenc, fontspec, graphicx, xcolor, fancyhdr,
%			geometry (některé z nich možná budete potřebovat doinstalovat).
%
%		- Součástí šablony je i logo (soubor logotyp_mff_cs.pdf), které má být ve stejném
%			adresáři jako *.tex soubor. Pokud vám toto umístění nevyhovuje, lze ho pomocí makra
%			\graphicspath změnit - viz ukázka u samotného makra níže.
%
% ====================================================================
% PŘEDPISY
% ====================================================================
%
% Pravidla jednotného vizuálního stylu Univerzity Karlovy (verze 4. 1. 2017)
%		(dále jen "PJVSUK")
%
%		Kodifikace červené barvy (str. 5):
%			RGB: R = 210, G = 45, B = 64
%
%		5.2.2 Dopisní papír – fakulty a další součásti s vlastním znakem (str. 52):
%			- průměr znaku 25 mm
%			- umístění výhradně v levém horním rohu dopisního papíru
%			- ochranná zóna 9 mm
%			- Pro text dopisu je vhodné užít písmo Cambria (viz s. 44).
%
%		5.2 Dopisní papír: slavnostní varianta (str. 43-47):
%			- vlastní text dopisu je psán písmem Cambria ve velikosti 11,5 bodu
%			- s řádkovým prokladem 1,3 (resp. 15 pt)
%			- text je zarovnán vlevo, nikoli do bloku, a má aktivováno dělení slov
%			- odstavce se neoddělují prázdnými řádky, ale odstavcovou zarážkou o velikosti 6 mm
%			- pravý a levý okraj 20 mm
%			- mezera mezi vodorovnou čárou a textem 15 mm, odsazení zápatí také 15 mm
%
% ====================================================================
% PÍSMO, JAZYK, BALÍČKY
% ====================================================================

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{mff}[2021-09-07 Hlavickovy papir MFF]

\newif\ifmffcolor

\DeclareOption{color}{\mffcolortrue}
\DeclareOption{mono}{\mffcolorfalse}

\DeclareOption*{
  \ClassWarning{mff}{Unknown option '\CurrentOption'}
}

\ExecuteOptions{color}

\ProcessOptions\relax

\LoadClass[12pt]{article}
% výchozí nastavení dokumentu ať odpovídá 12pt, doladění viz níže
% TeX umí jen celočíselné velikosti (10pt, 11pt, 12pt)
% TeX pt (1/72.27 in) je o něco málo menší než Word pt (1/72 in)

%
% Pomocné balíčky pro češtinu a kódování
%
\RequirePackage[czech]{babel}   % základní podpora pro češtinu, mj. správné dělení slov
\RequirePackage[T1]{fontenc}    % kódování fontů - podpora pro znaky s diakritikou
\RequirePackage[utf8]{inputenc} % vstupní kódování je UTF-8

%
% Písmo (font)
%
\RequirePackage{fontspec}       % řeší zahrnutí správných fontů pro LuaLaTeX a XeLaTeX
\IfFontExistsTF{Cambria}{\setmainfont[Ligatures=NoCommon]{Cambria}}{}
  % pokud je v systému dostupné písmo Cambria, použije se
  % důvod vypnutí běžných slitků (fi, ff, ...): s nimi bohužel funguje špatně
  % vyhledávání a kopírování textu ve výsledném PDF (a slitky u fontu
  % Cambria zde stejně nefungují)
  % základní velikost písma (12pt) je definována už v rámci \documentclass nahoře

%
% Pomocné balíčky pro grafiku
%
\RequirePackage{graphicx}       % pro načtení loga MFF
\graphicspath{{./}{./img}}             % cesta relativní k hlavnímu souboru *.tex (změňte, je-li třeba)

\RequirePackage{xcolor}         % možnost definice vlastních barev
\ifmffcolor
\definecolor{barvauk}{RGB}{210,45,64}   % barva dle PJVSUK
\else
\definecolor{barvauk}{RGB}{0,0,0}
\fi

\RequirePackage[]{geometry}     % pro definici formátu stránky a okrajů

% ====================================================================
%		ZÁHLAVÍ A ZÁPATÍ
% ====================================================================

%
% Makro \zahlavi - vykreslí záhlaví první stránky (logotyp MFF)
%
\def\zahlavi{
	\def\logomff{   % obrázek loga MFF
		\includegraphics[scale=0.70]{logotyp_mff_\ifmffcolor color\else bw\fi_cs}
			% faktor zmenšení 0.70 odpovídá průměru loga 25 mm (PJVSUK)
	}
	\vbox to 16mm{
		\kern-16mm  % vertikální posun loga (nahoru)
		\logomff
		\vss
	}
	\thispagestyle{fancy}  % nastaví jiné zápatí první stránky (adresa pracoviště)
}

%
% Makro \zapatí - vykreslí zápatí první stránky (info pracoviště)
%
\def\zapati{%
	% pomocné makro
	\def\pracoviste{% pracoviště - je doplněno PHP skriptem	(CMS MFF)
		@PRAC \\
		@ADRESA \\
		@MAIL \\
		@TEL
	}
	% zápatí
	{%
		\vspace{1\baselineskip}%  % odsazení od textu je o jeden řádek větší
		\footnotesize\textsf{%    % malé písmo, sans-serif
			\pracoviste
		}
	}
}

%
% Změna velikosti zápatí po první stránce (prodloužení o 2 cm)
%		Autor: Oldřich Ulrych
%
{% změny (zejm. catcode) budou jen lokální
	\catcode`\@=11% zavináč je písmeno (aby šlo udělat proměnnou zaloha@makecol)
	\global\let\zaloha@makecol=\@makecol% zapamatování staré sekvence makecol
	\global\def\@makecol{% nový makecol je...
		\zaloha@makecol% starý makecol a poté...
		\global\advance \textheight by 2cm% změna velikosti zápatí (stránky)
		\global\let\@makecol=\zaloha@makecol% návrat k původnímu makecol
	}%
}%

%
% Nastavení zápatí (fancyhdr)
%
\RequirePackage{fancyhdr}
\fancyhf{} % odstranit vše ze záhlaví a zápatí
\renewcommand{\headrulewidth}{0pt} % odstranit i čáry
\renewcommand{\footrulewidth}{0pt} % odstranit i čáry
\headheight=15pt % aby fancyhdr nehlásil warning o nedostatečné výšce
\fancyfoot[L]{
	\zapati
}

% ====================================================================
%		ADRESA, DATUMACJ
% ====================================================================

%
% Makro \adresa - vykreslí (naformátuje) adresu (tj. včetně rámečku a linky pod ní)
%		parametr: text pro vykreslení
%
%		Rámeček je dle vzoru v PJVSUK:
%			- šířka rámečku cca 80 mm
%			- čáry rámečku délka 8 mm
%
%		Další parametry zvoleny odhadem:
%			- tloušťka čar 0.75pt
%			- výška rámečku (vzdálenost od čáry) 53mm
%

\newcommand{\adresa}[1]{
	% pomocná makra
	\def\vcaravodorovna{{\color{barvauk}\vrule height 0.75pt width 8mm depth 0pt}}%
	\def\vcaradolu{{\color{barvauk}\vrule height 0cm width 0.75pt depth 8mm}}%
	\def\mezera{\kern5mm}% mezera mezi rámečkem a textem
	\def\hneviditelna{\hrule height 0pt depth 0pt\relax}% neviditelná hrule, aby se měla o co "opřít" mezera
	% box aby šlo zarovnat rámeček s adresou doprava
	\hbox to \hsize{%
		\hfil   % výplň vlevo
		\vbox to 59mm{\hsize=82mm% | box pro horní čáry a pod nimi obsah			
			\hbox to 82mm{% - box pro - čáru, mezeru a - čáru
				\vcaravodorovna \hfil \vcaravodorovna
			}%
			\nointerlineskip
			\hbox to 82mm{% - box pro | čáru, mezeru, obsah, mezeru | čáru
				\vcaradolu%
				\mezera%
				\vtop{\hsize=70mm%
					\parskip=0pt\parindent=0pt\baselineskip=15pt%
					\hneviditelna  % opora mezery
					\mezera
					#1% text adresy
				}%
				\hss    % \hsize je o tloušťku čar větší - kompenzace
				\mezera
				\vcaradolu
			}
			\vfil
		}%
	}%
	\nointerlineskip
	% vodorovná červená linka
	\hbox{%
		{\color{barvauk}\vrule height 0.75pt depth 0pt width 20cm}   % až za okraj papíru
		\hss% kompenzace nadměrné délky linky
	}
	\vspace{2mm}    % odsazení data a č. j. od čáry
}

%
% Makro \datumacj - vykreslí (naformátuje) datum a číslo jednací
%		parametr: text pro vykreslení
%
\newcommand{\datumacj}[1]{
	{
		\parskip=0pt
		\rightskip=0pt
		\parfillskip=0pt   % glue na poslední řádek
		\leftskip=0pt plus 1fill\relax   % zarovnání doprava
		\baselineskip=1.5\baselineskip
		#1\relax
		\par
	}
	\bigskip
}

% ====================================================================
%		FORMÁTOVÁNÍ STRÁNKY A TEXTU
% ====================================================================

%
% Formát stránky, okraje
%
\geometry{
	a4paper,
	top=2cm,
	right=2.1cm,
	bottom=5cm, % pro první stránku, pak se zmenší (viz makecol)
	left=2.9cm,
}

%
% Formátování odstavců
%
% \linespread{1.25}      % řádkování
\parindent=0mm           % bez odsazení prvního řádku odstavce
\parskip=12pt            % mezera mezi odstavci
\raggedright	         % zarovnání textu doleva

%
% Trocha typografie...
%
\clubpenalty=10000   % zákaz osamocených řádků na konci stránky (sirotky)
\widowpenalty=10000  % zákaz osamocených řádků na začátku stránky (vdovy)