From 14fbfdf38cb831a6970baba46e732d4545f43f71 Mon Sep 17 00:00:00 2001
From: Martin Mares <mj@ucw.cz>
Date: Mon, 13 May 2024 23:13:54 +0200
Subject: [PATCH] =?UTF-8?q?Aktualizace=20adsmac=20podle=20Pr=C5=AFvodce=20?=
 =?UTF-8?q?v2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 tex/adsmac.tex | 308 ++++++++++++++++++-------------------------------
 1 file changed, 113 insertions(+), 195 deletions(-)

diff --git a/tex/adsmac.tex b/tex/adsmac.tex
index e73ee25..d45daab 100644
--- a/tex/adsmac.tex
+++ b/tex/adsmac.tex
@@ -1,5 +1,4 @@
-% TeX macros for typesetting of the ADS book
-% (c) 2007--2019 Martin Mares <mj@ucw.cz>
+% (c) 2007--2022 Martin Mareš <mj@ucw.cz>
 % (c) 2014 Tomas Valla <tom@ucw.cz>
 
 % Inicializace luaTeXu, aby umel hledat bitmapove fonty
@@ -8,9 +7,10 @@
 \input ltluatex.tex
 \input luatex85.sty
 \input ucwmac2.tex
-\input ucw-paper.tex
+\ucwmodule{paper}
+\ucwmodule{verb}
+\ucwmodule{ref}
 \input lua-ofs.tex
-\input ucw-verb.tex
 \input amssym.tex
 \input pdf-trans.tex
 
@@ -31,8 +31,6 @@
 %		některá makra)
 % \modemobi	E-book v MOBI (navíc k předchozímu módu)
 
-\let\modeafive=\relax
-
 \newif\ifebook
 \newif\ifmobi
 \newif\ifprint
@@ -88,6 +86,8 @@
 \medskipamount=8bp plus 1pt minus 1pt
 \smallskipamount=2bp plus 1pt minus 0.5pt
 
+\preitemizepenalty=0
+\postitemizepenalty=0
 \preitemizeskip=0pt
 \postitemizeskip=0pt
 \interitemskip=\medskipamount
@@ -133,7 +133,7 @@
 \lefthyphenmin=2
 \righthyphenmin=2
 \automatichyphenmode=2
-\hyphenation{Quick-sort hay-stack}
+\hyphenation{Quick-sort Quick-sor-tu nej-men-ší-ho aby-chom}
 
 %%% Drobnosti %%%
 
@@ -158,7 +158,6 @@
 % Kaligraficka pismenka
 \protected\def\Bb{{\cal B}}
 \protected\def\Cc{{\cal C}}
-\protected\def\Uu{{\cal U}}
 
 % Booleovské operace
 \def\NOT{\cscop{not}}
@@ -183,17 +182,10 @@
 % Transpozice matice
 \def\T{^{\rm T}}
 
-% Otočení řetězce
-\def\rev{^{\rm R}}
-
-% Rozšířená přechodová funkce
-\def\dstar{\delta^*}
-
-% Svislá čárka jako normální operátor (\mid je relační)
-\def\alt{\mathop{\mid}}
-
 % Slozitostni tridy
 \protected\def\cc#1{\hbox{\setfonts[LMSans/]\rm #1}}
+\def\P{\cc{P}}
+\def\NP{\cc{NP}}
 
 % Viceznakove identifikatory (funguji jak v textovem, tak matematickem modu)
 \def\<#1>{\ifmmode\mathchoice
@@ -218,8 +210,8 @@
 % ... pokud je za displayed math:
 \def\qedmath{\vskip-\baselineskip\rightline{$\square$}}
 
-% Bit slice
-\def\slice#1{\!\left<#1\right>}
+% Velmi vhodné místo k lomu stránky (silnější verze \filbreak)
+\def\xfilbreak{\par\vfil\penalty-1000\vfilneg}
 
 % Poznamky pod carou
 \newcount\footcnt
@@ -251,12 +243,19 @@
 % Alias pro rovnítko, když ho potřebujeme použít v rejstříkovém hesle
 \protected\def\equals{=}
 
+% Odrážka "(x)" pro \numlist
+\def\nparenp{(\nnorm)}
+
 % Break radku
 \def\\{\hfil\break}
 
 % Značka pro stupeň
 \def\degree{^\circ}
 
+% Stupeň vrcholu
+\def\degin{\deg^{\rm in}}
+\def\degout{\deg^{\rm out}}
+
 % Rozdělitelná pomlčka (pozor, v algoritmech se \= předefinuje na přiřadítko)
 % Taktéž pozor, že explicitní pomlčky (ať už "-" nebo "\=") potlačují implicitní dělení slov.
 \def\={\discretionary{-}{-}{-}}
@@ -275,31 +274,10 @@
 \def\9{\|9|}
 \def\sp{\hbox{\tentt\char32}}
 
-% Gramatiky
-\def\grule{\rightarrow}
-\def\grev{\Relbar\shortjoinrel\Rightarrow}
-\def\grew{\mathrel{\ooalign{\hfil\raise 5pt\hbox{$\scriptstyle *$}\hskip 2pt\hfil\cr\hfil$\grev$\hfil\cr}}}
-\def\shortjoinrel{\mathrel{\mkern-7mu}}
-
-% Chomského hierarchie
-\def\Ell{{\cal L}}
-
-% Kódování dvojic
-\def\pair#1#2{\left<#1,#2\right>}
-
 % Předefinujeme vlnovku, aby byla \protected
 \let\plaintilde=~
 \protected\def~{\plaintilde}
 
-% Tabulka operací datové struktury
-\def\optable#1{$$
-\def\cr{\crcr\noalign{\smallskip}}
-\vbox{\halign{
-\hbox to 9em{##\hfil}&\vtop{\hsize=0.65\hsize\parindent=0pt\strut ##\unskip\strut}\crcr
-#1
-\noalign{\vskip-\smallskipamount}
-}}$$}
-
 %%% Fonty %%%
 
 \def\chapfont{\setfonts[LMSansDC/24]}
@@ -311,29 +289,6 @@
 
 \protected\def\captionfont{\setfonts[LMSans/9]\setmath[//]\fixsetmath\baselineskip=11bp}
 
-%%% Nepovinné argumenty %%%
-
-% Provedeme-li \def\a{\withoptarg\b}, chová se makro \a takto:
-%	\a[arg]		provede \def\optarg{arg} a expanduje \b
-%	\a		provede \let\optarg=\relax a expanduje \b
-\def\withoptarg#1{\let\xoptcall=#1\futurelet\next\xopt}
-\def\xopt{\ifx\next[\expandafter\xoptwith\else\let\optarg=\relax\expandafter\xoptcall\fi}
-\def\xoptwith[#1]{\def\optarg{#1}\xoptcall}
-
-% Zkratka pro definici maker s nepovinnými argumenty:
-% \optdef\makro se chová jako \def\domakro, přičemž \makro samotné je definováno
-% jako wrapper volající \domakro pomocí \withoptarg.
-\def\optdef#1{%
-	\edef\xoptname{\expandafter\eatbackslash\string#1}%
-	\edef#1{\noexpand\withoptarg\csname do\xoptname\endcsname}%
-	\expandafter\def\csname do\xoptname\endcsname
-}
-
-% Trik: \eatbackslash smaže následující backslash kategorie 12
-\begingroup\lccode`\+=`\\
-\lowercase{\endgroup\def\eatbackslash+{}}
-
-\def\optargorempty{\ifx\optarg\relax\else\optarg\fi}
 
 %%% Sazba algoritmu %%%
 
@@ -358,8 +313,8 @@
 \itemcount=0
 }
 \def\typedalgo#1#2{\algoinit {\bo #1\/} \alg{#2}}
-\def\algo#1{\typedalgo{Algorithm}{#1}\if"#1"\else\rr{algorithm/\alg{#1}}\fi}
-\def\proc#1{\typedalgo{Procedure}{#1}\if"#1"\else\rr{procedure/\alg{#1}}\fi}
+\def\algo#1{\typedalgo{Algoritmus}{#1}\if"#1"\else\rr{algoritmus/\alg{#1}}\fi}
+\def\proc#1{\typedalgo{Procedura}{#1}\if"#1"\else\rr{procedura/\alg{#1}}\fi}
 \def\headlessalgo{\algoinit}
 \def\endalgo{\goodbreak\endlist\endgroup}
 \let\endproc=\endalgo
@@ -385,9 +340,6 @@
 % Jmeno algoritmu v textu nebo ve formuli
 \protected\def\alg#1{\leavevmode\hbox{\csc #1}}
 
-% Jmena operaci datovych struktur sazime stejne jako jmena algoritmu
-\let\op=\alg
-
 %%% Konstrukce pouzivane v algoritmech %%%
 
 % Komentar
@@ -466,37 +418,58 @@
 \optdef\chapter#1{
 	\advance\chapcount by 1
 	\def\chaptername{#1}
-	\separatorpage{\the\chapcount~#1}
+	\separatorpage{\chapnumber~#1}
+	\seccount=0
+	\figcount=0
+	\ifebook\else\footcnt=0\fi
+	\addid{ch}{\chapnumber}
+	\addtoc\tocchapter{\chapnumber}{}{#1}
+	\chapterheading{\chapnumber~~#1}
+	\def\currentchapter{\chapnumber}
+	\mark{\currentchapter~#1}
+	\bigskip
+	\unparskip
+}
+
+\optdef\appendix#1{
+	\ifnum\chapcount<50 \chapcount=50\fi
+	\advance\chapcount by 1
+	\def\chaptername{#1}
+	\separatorpage{Dodatek \chapnumber\hfil\break #1}
 	\seccount=0
 	\figcount=0
 	\ifebook\else\footcnt=0\fi
-	\addid{ch}{\the\chapcount}
-	\addtoc\tocchapter{\the\chapcount}{}{#1}
-	\chapterheading{\the\chapcount~~#1}
-	\def\currentchapter{\the\chapcount}
+	\addid{ch}{\chapnumber}
+	\addtoc\tocchapter{\chapnumber}{}{#1}
+	\chapterheading{\chapnumber~~#1}
+	\def\currentchapter{\chapnumber}
 	\mark{\currentchapter~#1}
 	\bigskip
 	\unparskip
 }
 
+\def\chapnumber{\ifnum\chapcount < 50 \the\chapcount\else A\fi}
+
 \optdef\section#1{
 	\goodbreak\bigskip\bigskip
 	\advance\seccount by 1
-	\addid{sec}{\the\chapcount.\the\seccount}
-	\addtoc\tocsection{\the\chapcount.\the\seccount}{}{#1}
-	\sectionheading{\the\chapcount.\the\seccount~~#1}
-	\def\currentchapter{\the\chapcount.\the\seccount}
+	\addid{sec}{\chapnumber.\secnumber}
+	\addtoc\tocsection{\chapnumber.\secnumber}{}{#1}
+	\sectionheading{\chapnumber.\secnumber~~#1}
+	\def\currentchapter{\chapnumber.\secnumber}
 	\mark{\currentchapter~~\chaptername~--~#1}
 	\nobreak\bigskip\unparskip\nobreak
 }
 
+\def\secnumber{\the\seccount}
+
 \optdef\sectionstar#1{
 	\goodbreak\bigskip\bigskip
 	\advance\seccount by 1
-	\addid{sec}{\the\chapcount.\the\seccount}
-	\addtoc\tocsection{\the\chapcount.\the\seccount}{*}{#1}
-	\sectionheading{\the\chapcount.\the\seccount\kern1pt*~~#1}
-	\def\currentchapter{\the\chapcount.\the\seccount}
+	\addid{sec}{\chapnumber.\secnumber}
+	\addtoc\tocsection{\chapnumber.\secnumber}{*}{#1}
+	\sectionheading{\chapnumber.\secnumber\kern1pt*~~#1}
+	\def\currentchapter{\chapnumber.\secnumber}
 	\mark{\currentchapter\kern1pt*~~\chaptername~--~#1}
 	\nobreak\bigskip\unparskip\nobreak
 }
@@ -515,11 +488,13 @@
 \def\sectionheading#1{\leftline{\secfont #1}}
 \def\subsectionheading#1{\leftline{\subsecfont #1}}
 
-\ifsinglechapter
-	\def\endchapter{\csname bye\endcsname}  % Avoid problems with \outer
-\else
-	\let\endchapter\relax
-\fi
+\def\endchapter{
+	\let\doendchapter=\relax
+	\ifsinglechapter
+		\slet{doendchapter}{bye}  % Avoid problems with \outer
+	\fi
+	\doendchapter
+}
 
 %%% Cviceni %%%
 
@@ -536,12 +511,23 @@
 
 \def\endexercises{\endgroup}
 
+\def\exnumber{\chapnumber.\secnumber.\the\excount}
+
 \long\def\exwith#1#2{\par
-\advance\excount by 1
-\addid{ex}{\the\chapcount.\the\seccount.\the\excount}
-{\exnumber{#1}#2\par}}
+	\advance\excount by 1
+	\addid{ex}{\exnumber}
+	{
+		\exitem{#1}#2
+		\ifcsname hidx-\exnumber\endcsname
+			\unskip
+			\edef\currenthidx{\csname hidx-\exnumber\endcsname}
+			\parfillskip=0pt\allowbreak\hfill\nobreak {[\ref{hint}{\currenthidx}]}
+		\fi
+		\par
+	}
+}
 
-\def\exnumber#1{\>\llap{\hbox to 2.2em{\the\excount\rlap{\kern1pt #1}.\hfil}}}
+\def\exitem#1{\>\llap{\hbox to 2.2em{\the\excount\rlap{\kern1pt #1}.\hfil}}}
 
 % Cviceni obycejne a tezsi
 \optdef\ex{\exwith{}}
@@ -562,59 +548,22 @@
 	\long\def\solution##1{\par \>\em{Solution:} ##1}
 }
 
-\def\furtherexercises{\section{Further exercises}\initexercises}
+\def\furtherexercises{\section{Další cvičení}\initexercises}
 
 \def\excmt#1{{\leftskip=0pt\parindent=\normalparindent #1\smallskip}}
 
-%%% Odkazy na kapitoly a jine objekty %%%
-
-% Název aktuálního souboru (v PDF verzi vždy prázdný, v E-bookové se mění)
-\def\currentfile{}
+%%% Odkazy na kapitoly a jiné objekty pomocí ucw-link %%%
 
-% Poridime si soubor, do ktereho budeme zapisovat identifikatory
-\newwrite\ids
-\def\writeid#1#2{\immediate\write\ids{\string\iddef{#1}{#2}{\currentfile}}}
-\def\delayedwriteid#1#2{\write\ids{\string\iddef{#1}{#2}{\currentfile}}}
-
-\def\iddef#1#2#3{\ifcsname id#1\endcsname\immediate\write16{*** Warning: Reference #1 re-defined ***}\else
-\expandafter\def\csname id#1\endcsname{#2}%
-\expandafter\def\csname ff#1\endcsname{#3}%
-\fi}
-
-\immediate\openin\ids=ids.aux
-\ifeof\ids
-\else
-\input ids.aux
-\fi
-\immediate\closein\ids
-\immediate\openout\ids=ids.aux
-
-% Nízkoúrovňové rozhraní na sazbu odkazů: vysází klikací odkaz na identifikátor #1,
-% jeho obsah přechroustá makrem #2 (obvykle buď \relax, nebo \relativizeref)
-\def\reflink#1#2{\expandafter\ifx\csname id#1\endcsname\relax
-	{\bo ??}%
-	\immediate\write16{*** Warning: Reference #1 undefined ***}%
-\else
-	\ifprint\else
-		\pdfextension startlink\commonlinkargs goto name {#1}\relax
-	\fi
-	#2{\csname id#1\endcsname}%
-	\ifprint\else
-		\pdfextension endlink\relax
-	\fi
+\ifprint
+\clickablefalse
 \fi
-}
-
-\pdfvariable linkmargin=1pt
-\def\commonlinkargs{height 8pt depth 2pt attr {/C [0 0 0.5] /Border [0 0 2]}}
 
-\def\ref#1{\reflink{#1}\relax}
-\def\relref#1{\reflink{#1}\relativizeref}
+\def\relref#1#2{\reflink{#1}{#2}\relativizeref}
 
 \def\relativizeref#1{{%
 	\edef\xx{#1}%
 	\edef\xcs{\expandafter\splitab\xx.}%
-	\edef\thiscs{\the\chapcount.\the\seccount}%
+	\edef\thiscs{\chapnumber.\secnumber}%
 	\ifx\xcs\thiscs\expandafter\splitc\xx.\else\xx\fi
 }}
 
@@ -622,46 +571,15 @@
 \def\splitab#1.#2.#3.{#1.#2}
 \def\splitc#1.#2.#3.{#3}
 
-% Pojmenovavani objektu: vola se z maker s nepovinnym argumentem
-% jako \addid{prefix identifikatoru}{cislo objektu}
-% Nastavuje \currentid buď na ID s prefixem, nebo na \relax
-\def\addid#1#2{%
-	\ifx\optarg\relax
-		\let\currentid\relax
-	\else
-		\edef\currentid{#1\optarg}%
-		\writeid{\currentid}{#2}%
-		\ifprint\else
-			\pdfextension dest name {\currentid} xyz\relax
-		\fi
-	\fi
-}
-
-% Pojmenovani stranky
-\def\pageid#1{\delayedwriteid{page#1}{\the\count0}\ifprint\else\pdfextension dest name {page#1} fit\relax\fi}
-
 % Odkazovani na objekty
-\def\chapref#1{\ref{ch#1}}
-\def\secref#1{\ref{sec#1}}
-\def\exref#1{\relref{ex#1}}
-\def\itemref#1{\ref{item#1}}
-\def\figref#1{\ref{fig#1}}
-\def\pageref#1{\ref{page#1}}
+\def\chapref{\ref{ch}}
+\def\secref{\ref{sec}}
+\def\exref{\relref{ex}}
+\def\itemref{\ref{item}}
+\def\figref{\ref{fig}}
 
 % Skok na zadané číslo stránky (používá se u odkazů z obsahu a rejstříku, kde čísla stránek známe)
-\def\pagelink#1{\ifprint#1\else\pdfextension startlink\commonlinkargs goto page #1 {/Fit}\relax #1\pdfextension endlink\fi}
-
-% Klikací URL (jestli je budeme používat víc, bylo by hezké umět je zadávat bez escapování speciálnich znaků)
-\def\url#1{%
-	\ifprint\else
-		\pdfextension startlink\commonlinkargs user {/Subtype/Link /A << /Type/Action /S/URI /URI(#1) >>}\relax
-	\fi
-	\xurl #1^^X%
-	\ifprint\else
-		\pdfextension endlink\relax
-	\fi
-}
-\def\xurl#1:#2#3^^X{{\I #1:#2\ifx#2/\kern-0.1em\fi#3}}
+\def\pagelink#1{\linkpage{#1}{#1}}
 
 %%% Obrazky %%%
 
@@ -720,8 +638,8 @@
 }}
 
 % Popisek obrazku
-\def\figcaption#1{\captionfont Obrázek \the\chapcount.\the\figcount: #1}
-\def\newfig{\global\advance\figcount by 1\relax\addid{fig}{\the\chapcount.\the\figcount}}
+\def\figcaption#1{\captionfont Obrázek \chapnumber.\the\figcount: #1}
+\def\newfig{\global\advance\figcount by 1\relax\addid{fig}{\chapnumber.\the\figcount}}
 
 % Obrazek: \figure{soubor.epdf}{velikost}{popisek}
 \optdef\figure#1#2#3{\newfig\float{\rawfigure{#1}{#2}}{\figcaption{#3}}{\optargorempty}}
@@ -766,19 +684,17 @@
 \def\lemman#1{\s{Lemma (#1):} \sbody}
 \def\lemmax#1{\s{Lemma~#1:} \sbody}
 \def\lemmaxn#1#2{\s{Lemma~#1 (#2):} \sbody}
-\def\proof{\noindent\em{Důkaz:} }
-\def\proofofthm{\noindent\em{Důkaz věty:} }
-\def\proofoflemma{\noindent\em{Důkaz lemmatu:} }
-\def\proofsketch{\noindent\em{Náčrt důkazu:} }
+\def\proof{\noindent\em{\kern-0.5pt Důkaz:} }
+\def\proofofthm{\noindent\em{\kern-0.5pt Důkaz věty:} }
+\def\proofoflemma{\noindent\em{\kern-0.5pt Důkaz lemmatu:} }
+\def\proofsketch{\noindent\em{Náznak důkazu:} }
+\def\proofidea{\noindent\em{Myšlenka důkazu:} }
 \def\defn{\s{Definice:} \sbody}
 \def\obs{\s{Pozorování:} \sbody}
-\def\note{\s{Poznámka:} \sbody}
-\def\noten#1{\s{Poznámka (#1):} \sbody}
-\def\cor{\s{Důsledek:} \sbody}
-\def\corn#1{\s{Důsledek (#1):} \sbody}
-\def\corx#1{\s{Důsledek #1:} \sbody}
-\def\corxn#1#2{\s{Důsledek~#1 (#2):} \sbody}
-\def\nota{\s{Notace:} \sbody}
+\def\rem{\s{Poznámka:} \sbody}
+\def\remn#1{\s{Poznámka (#1):} \sbody}
+\def\corr{\s{Důsledek:} \sbody}
+\def\nota{\s{Značení:} \sbody}
 \def\example{\s{Příklad:} \sbody}
 \def\examplen#1{\s{Příklad (#1):} \sbody}
 \def\examples{\s{Příklady:} \sbody}
@@ -830,7 +746,7 @@
 \def\dfr#1#2{\rr{#2}\em{#1}}
 
 % Definice operace datové struktury
-\def\opdf#1{\rr{operace/#1=operace/\op{#1}}\op{#1}}
+\def\opdf#1{\rr{operace/#1=operace/\alg{#1}}\alg{#1}}
 
 % Zápis do souboru
 \newwrite\idxfile
@@ -856,7 +772,7 @@
 	\parindent=0pt
 	\leavevmode
 	\vrule width 0pt height 6pt depth 2pt
-	\setfonts[/7]\baselineskip=8pt
+	\setfonts[/7]\setmath[//]\baselineskip=8pt
 	\tt #1\par
 	\allowbreak
 }}
@@ -954,8 +870,8 @@
 	% Rozměry zrcadla
 	\dimen1=\leftmargin							% bot-left x
 	\dimen2=\bottommargin							% bot-left y
-	\dimen3=\dimexpr\pagewidth-\leftmargin-\rightmargin\relax		% width
-	\dimen4=\dimexpr\pageheight-\topmargin-\bottommargin\relax	% height
+	\dimen3=\dimexpr\luatexpagewidth-\leftmargin-\rightmargin\relax		% width
+	\dimen4=\dimexpr\luatexpageheight-\topmargin-\bottommargin\relax	% height
 	\ifodd\pageno\else\advance\dimen1 by \evenpageshift\fi
 	\ifcropmarks
 		\advance\dimen1 by \cropmargin
@@ -979,14 +895,14 @@
 		0 \tobp{\cropmargin} m \tobp{\dimexpr\cropmargin-\cropgap\relax} \tobp{\cropmargin} l S
 		\tobp{\cropmargin} 0 m \tobp{\cropmargin} \tobp{\dimexpr\cropmargin-\cropgap\relax} l S
 		% Bottom right
-		\tobp{\pagewidth} \tobp{\cropmargin} m \tobp{\dimexpr\pagewidth-\cropmargin+\cropgap\relax} \tobp{\cropmargin} l S
-		\tobp{\dimexpr\pagewidth-\cropmargin\relax} 0 m \tobp{\dimexpr\pagewidth-\cropmargin\relax} \tobp{\dimexpr\cropmargin-\cropgap\relax} l S
+		\tobp{\luatexpagewidth} \tobp{\cropmargin} m \tobp{\dimexpr\luatexpagewidth-\cropmargin+\cropgap\relax} \tobp{\cropmargin} l S
+		\tobp{\dimexpr\luatexpagewidth-\cropmargin\relax} 0 m \tobp{\dimexpr\luatexpagewidth-\cropmargin\relax} \tobp{\dimexpr\cropmargin-\cropgap\relax} l S
 		% Top left
-		0 \tobp{\dimexpr\pageheight-\cropmargin\relax} m \tobp{\dimexpr\cropmargin-\cropgap\relax} \tobp{\dimexpr\pageheight-\cropmargin\relax} l S
-		\tobp{\cropmargin} \tobp{\pageheight} m \tobp{\cropmargin} \tobp{\dimexpr\pageheight-\cropmargin+\cropgap\relax} l S
+		0 \tobp{\dimexpr\luatexpageheight-\cropmargin\relax} m \tobp{\dimexpr\cropmargin-\cropgap\relax} \tobp{\dimexpr\luatexpageheight-\cropmargin\relax} l S
+		\tobp{\cropmargin} \tobp{\luatexpageheight} m \tobp{\cropmargin} \tobp{\dimexpr\luatexpageheight-\cropmargin+\cropgap\relax} l S
 		% Top right
-		\tobp{\pagewidth} \tobp{\dimexpr\pageheight-\cropmargin\relax} m \tobp{\dimexpr\pagewidth-\cropmargin+\cropgap\relax} \tobp{\dimexpr\pageheight-\cropmargin\relax} l S
-		\tobp{\dimexpr\pagewidth-\cropmargin\relax} \tobp{\pageheight} m \tobp{\dimexpr\pagewidth-\cropmargin\relax} \tobp{\dimexpr\pageheight-\cropmargin+\cropgap\relax} l S
+		\tobp{\luatexpagewidth} \tobp{\dimexpr\luatexpageheight-\cropmargin\relax} m \tobp{\dimexpr\luatexpagewidth-\cropmargin+\cropgap\relax} \tobp{\dimexpr\luatexpageheight-\cropmargin\relax} l S
+		\tobp{\dimexpr\luatexpagewidth-\cropmargin\relax} \tobp{\luatexpageheight} m \tobp{\dimexpr\luatexpagewidth-\cropmargin\relax} \tobp{\dimexpr\luatexpageheight-\cropmargin+\cropgap\relax} l S
 		Q
 	}
 }}
@@ -994,7 +910,9 @@
 \let\background=\relax
 
 \ifprint
-\def\separatorbackground{}
+\def\separatorbackground{
+	\pdfliteral page{q 0 0 \tobp{\pagewidth} \tobp{\pageheight} re 0.75 g f Q}
+}
 \else
 \def\separatorbackground{
 	\pdfliteral page{q 0 0 \tobp{\pagewidth} \tobp{\pageheight} re 0.769 0.180 0.208 rg f Q}
@@ -1093,7 +1011,7 @@
 
 \directlua{
 	require('lua-pdfmeta.lua')
-	pdfmeta.set_info('Title', 'Úvod do automatů')
+	pdfmeta.set_info('Title', 'Úvod do kryptografie')
 	pdfmeta.set_info('Author', 'Martin Mareš')
 }
 
-- 
GitLab