Vous ne pouvez pas sélectionner plus de 25 sujets
			Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
		
		
		
		
		
			
		
			
				
					
					
						
							1003 lignes
						
					
					
						
							31 KiB
						
					
					
				
			
		
		
	
	
							1003 lignes
						
					
					
						
							31 KiB
						
					
					
				| 
 | |
| %!TEX ROOT = ctutest.tex
 | |
| 
 | |
| \ProvidesExplFile{ctuth-pkg.tex}%
 | |
| 	{2016/04/04}{0.1 t1604041107}%MY TIMESTAMP HERE {0.1}
 | |
| 	{"Packages"\space part\space of\space the\space class\space ctuthesis}
 | |
| 
 | |
| % A lot of the code here is not latex3, but rather the good'ol latex2e code. The reason is that
 | |
| % it heavily depends on l2e packages, and we decided not to mix the code together too much.
 | |
| 
 | |
| \RequirePackage{lmodern}
 | |
| %\RequirePackage{cfr-lm}
 | |
| \RequirePackage[T1]{fontenc}
 | |
| \RequirePackage{microtype}
 | |
| \RequirePackage{graphicx}
 | |
| \RequirePackage{pdfpages}
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| %%% BABEL -- LANGUAGE HANDLING
 | |
| 
 | |
| % The loading of the languages is a bit wicked, but it works this way. We load the main language once more
 | |
| % to make it the default one.
 | |
| \RequirePackage[\seq_use:Nn \g_ctuthesis_languages_seq {,},\g_ctuthesis_field_mainlanguage_tl]{babel}
 | |
| 
 | |
| % Used for setting title, main or second language
 | |
| \NewDocumentCommand \selectctulanguage { m } {
 | |
| 	\exp_args:Nx \selectlanguage { \ctuthesis_field_use:n { #1 language } }
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| %%% COLORS, TEXT FLOW
 | |
| 
 | |
| \RequirePackage{xcolor}
 | |
| 
 | |
| % Define the colors, first in monochrome, then in colour.
 | |
| \ctuifswitch { savetoner } {
 | |
| 	% savetoner: true
 | |
| 	\definecolor { ctublue } { CMYK } { 100, 43, 0, 0 }
 | |
| 	\definecolor { ctulightblue } { RGB }{ 172, 214, 238 }
 | |
| 	\colorlet    { ctubluetext } { ctublue }
 | |
| 	\colorlet    { ctubluerule } { ctulightblue }
 | |
| 	\colorlet    { ctubluedarkbg } { white }
 | |
| 	\colorlet    { ctubluedarkfg } { ctublue!50!black }
 | |
| 	\colorlet    { ctubluedot } { white }%ctulightblue }
 | |
| 	\colorlet    { ctubluebg } { white }
 | |
| 	\colorlet    { ctulstbg } { ctubluebg }
 | |
| 	\colorlet    { ctublueitemi } { ctublue }
 | |
| 	\colorlet    { ctublueitemii } { ctulightblue }
 | |
| 	\colorlet    { ctugray } { gray }
 | |
| 	\definecolor { ctuorange } { Hsb } { 22, 0.5, 1 }
 | |
| } {
 | |
| 	\ctuifswitch { monochrome } {
 | |
| 		% savetoner: false, monochrome: true
 | |
| 		\definecolor { ctublue } { gray } { 0.8 }
 | |
| 		\definecolor { ctulightblue } { gray } { 0.9 }
 | |
| 		\definecolor { ctubluetext } { gray } { 0.4 }
 | |
| 		\definecolor { ctubluerule } { gray } { 0.4 }
 | |
| 		\definecolor { ctubluedarkbg } { gray } { 0.2 }
 | |
| 		\definecolor { ctubluedarkfg } { gray } { 1 }
 | |
| 		\definecolor { ctubluedot } { gray } { 0.9 }
 | |
| 		\definecolor { ctubluebg } { gray } { 0.95 }
 | |
| 		\definecolor { ctulstbg } { gray } { 0.95 }
 | |
| 		\definecolor { ctublueitemi } { gray } { 0.4 }
 | |
| 		\definecolor { ctublueitemii } { gray } { 0.4 }
 | |
| 		\definecolor { ctugray } { gray } { 0.5 }
 | |
| 		\definecolor { ctuorange } { gray } { 0.9 }
 | |
| 	} {
 | |
| 		% savetoner: false, monochrome: false
 | |
| 		\definecolor { ctublue } { cmyk } { 1, .43, 0, 0 }
 | |
| 		\definecolor { ctulightblue } { cmyk }{ .3, .13, 0, 0 }
 | |
| 		\colorlet    { ctubluetext } { ctublue }
 | |
| 		\colorlet    { ctubluerule } { ctublue }
 | |
| 		\colorlet    { ctubluedarkbg } { ctublue }
 | |
| 		\colorlet    { ctubluedot } { ctulightblue }
 | |
| 		\colorlet    { ctubluebg } { ctulightblue!50!white }
 | |
| 		\colorlet    { ctulstbg } { ctulightblue!50!white }
 | |
| 		\colorlet    { ctublueitemi } { ctublue }
 | |
| 		\colorlet    { ctublueitemii } { ctulightblue }
 | |
| 		\colorlet    { ctugray } { gray }
 | |
| 		\definecolor { ctuorange } { cmyk } { 0, .51, 1, 0 }
 | |
| 	}
 | |
| }
 | |
| 
 | |
| \setlength{\parskip}{0pt plus 1pt}
 | |
| 
 | |
| \setlength{\parindent}{11.2pt}
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| %%% FRONT MATTER --- TWOCOLUMN HANDLING
 | |
| 
 | |
| % This is a "ToC macro" for the twocolumn context
 | |
| % Arguments: 1) suffix, 2) ToC name
 | |
| \cs_new:Nn \ctuthesis_maketoc_twocol:nn {
 | |
| 	% Start the chapter
 | |
| 	\chapter* { #2 }
 | |
| 	% locally make rugged pages
 | |
| 	\begingroup
 | |
| 	\raggedbottom
 | |
| 	% We use this trick to add nothing, but also to make sure that
 | |
| 	% any \addvspace for less than 20pt is going to be ignored.
 | |
| 	\vspace*{-20pt}\addvspace{20pt}
 | |
| 	% call the original \@starttoc
 | |
| 	\@starttoc { #1 }
 | |
| 	\newpage
 | |
| 	\endgroup
 | |
| }
 | |
| 
 | |
| % Environment for the twocolumn frontmatter. It can appear more times in a row
 | |
| % and should handle it nicely
 | |
| \NewDocumentEnvironment{ twocolumnfrontmatterpage } { } {
 | |
| 	% Set the page geometry to the title one (it's a bit wider)
 | |
| 	\ctuthesis_geometry_title:
 | |
| 	\newpage
 | |
| 	\pagestyle{twocol}
 | |
| 	\onecolumn\relax %ADDED (??)
 | |
| 	% Start the twocolumn.
 | |
| %	\twocolumn[]\relax
 | |
| 	% We are narrow, so we wanna be sloppy
 | |
| %	\sloppy % CHANGED REMOVED
 | |
| 	% Chapter behaves differently. Both the [] argument and the star * are ignored.
 | |
| %	\DeclareDocumentCommand\chapter{ s o m }{\relax
 | |
| %		% Vertical adjustment
 | |
| %		\vspace* { -\baselineskip }
 | |
| %		\nointerlineskip
 | |
| %		% Zero measure vertical box, the contents are raised by something and typeset
 | |
| %		\vbox to 0pt{\noindent\leavevmode\smash{\raise6pt\hbox to \linewidth{%
 | |
| %			% In the first column its right-aligned, in the second left-aligned.
 | |
| %			% It can't be more than one line.
 | |
| %			\if@firstcolumn\hfil\fi
 | |
| %			\color{ctubluetext}\LARGE\bfseries\sffamily##3
 | |
| %			\if@firstcolumn\else\hfil\fi
 | |
| %		}}}
 | |
| %		\everypar{\noindent}
 | |
| %	}
 | |
| 	\DeclareDocumentCommand\chapter{ s~o~m }{\relax
 | |
| 		% Compute the vertical adjustment
 | |
| 		\skip_gset:Nn \g_ctuthesis_tempa_skip { - \box_ht:N \strutbox }
 | |
| 		{ \LARGE \skip_gsub:Nn \g_ctuthesis_tempa_skip { \box_ht:N \strutbox + \box_dp:N \strutbox } }
 | |
| 		% Space used if not at the beginning of a column
 | |
| 		\skip_vertical:n { 12pt - \g_ctuthesis_tempa_skip }
 | |
| 		% Add the space below the chapter title to the adjustment
 | |
| 		\skip_gsub:Nn \g_ctuthesis_tempa_skip { 2pt }
 | |
| 		% Vertical adjustment
 | |
| 		\vspace* { \g_ctuthesis_tempa_skip }
 | |
| 		% Zero measure vertical box, the contents are raised by something and typeset
 | |
| 		\noindent \leavevmode
 | |
| 		\hbox_to_wd:nn \linewidth {
 | |
| 			% In the first column its right-aligned, in the second left-aligned.
 | |
| 			% It can't be more than one line.
 | |
| 			%\if@firstcolumn\hfil\fi
 | |
| 			\leavevmode\color{ctubluetext}\LARGE\strut\bfseries\sffamily##3
 | |
| 			%\if@firstcolumn\else\hfil\fi
 | |
| 		}\par
 | |
| 		\skip_vertical:n { 2pt }
 | |
| 		\everypar{\noindent}
 | |
| 	}
 | |
| 	\DeclareDocumentCommand \tableofcontents {  }{ \ctuthesis_maketoc_twocol:nn { toc } { \contentsname } }
 | |
| 	\DeclareDocumentCommand \listoffigures {  }{ \ctuthesis_maketoc_twocol:nn { lof } { \listfigurename } }
 | |
| 	\DeclareDocumentCommand \listoftables {  }{ \ctuthesis_maketoc_twocol:nn { lot } { \listtablename } }
 | |
| } {
 | |
| 	\ctuthesis_geometry_plain:
 | |
| 	\clearpage
 | |
| 	\onecolumn
 | |
| 	\pagestyle{plain}
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| %%% LANGUAGES
 | |
| 
 | |
| % For every of the languages below, if it's initialized, add the
 | |
| % custom captions of the class
 | |
| \@ifundefined{captionsenglish}{}{\g@addto@macro\captionsenglish{\ctucaptionsenglish}}
 | |
| \@ifundefined{captionsczech}{}{\g@addto@macro\captionsczech{\ctucaptionsczech}}
 | |
| \@ifundefined{captionsslovak}{}{\g@addto@macro\captionsslovak{\ctucaptionsslovak}}
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| %%% GEOMETRY
 | |
| 
 | |
| % The ratios of inner:outer margins
 | |
| % Needs to be separate as this to make the colon ":" have the right catcode
 | |
| \cs_new:Nx \ctuthesis_geometry_hmarginratio: {2\string :3} %4\string :6
 | |
| 
 | |
| % Target textwidth is 33*basesize (10pt to 12pt)
 | |
| \dim_const:Nn \g_ctuthesis_geometry_textwidth_dim { \tl_use:N \g_ctuthesis_fontsize_tl * 39 } %33
 | |
| 
 | |
| % Text occupies 75% of the height of the page by default, less if layout-short is active
 | |
| % The vmargin ratio is set here in the same manner as the hmargin one above
 | |
| \ctuifswitch { layout-short } {
 | |
| 	\dim_const:Nn \g_ctuthesis_geometry_textheight_dim { 1.5\g_ctuthesis_geometry_textwidth_dim }
 | |
| 	\cs_new:Nx \ctuthesis_geometry_vmarginratio: {4\string :3}
 | |
| } {
 | |
| 	\dim_const:Nn \g_ctuthesis_geometry_textheight_dim { 0.75\paperheight }
 | |
| 	\cs_new:Nx \ctuthesis_geometry_vmarginratio: {5\string :6}
 | |
| }
 | |
| 
 | |
| % Loading the geometry package.
 | |
| % Almost the same setting appears again in \ctuthesis_geometry_plain:
 | |
| \RequirePackage [ a4paper ,
 | |
| 	hmarginratio = \ctuthesis_geometry_hmarginratio: ,
 | |
| 	textwidth = \g_ctuthesis_geometry_textwidth_dim ,
 | |
|  	textheight = \g_ctuthesis_geometry_textheight_dim ,
 | |
| 	vmarginratio = \ctuthesis_geometry_vmarginratio: , ignoreheadfoot ,
 | |
| 	% Should be at least \baselineskip
 | |
| 	headheight = 16pt ,
 | |
| 	marginparsep = 10pt ,
 | |
| ] { geometry }
 | |
| 
 | |
| % Inner margin is 1in + \oddsidemargin. We wanna preserve this value through all
 | |
| % the different page geometries
 | |
| \dim_const:Nn \g_ctuthesis_geometry_innermargin_dim { 1in + \the\oddsidemargin }
 | |
| 
 | |
| % The frontmatter pages are a bit wider
 | |
| \cs_new:Nn \ctuthesis_geometry_title: {
 | |
| 	\newgeometry {
 | |
| 		% Use the stored innermargin value
 | |
| 		inner = \g_ctuthesis_geometry_innermargin_dim ,
 | |
| 		% Increase the width by 20%, but do not exceed 420pt
 | |
| 		textwidth = \dim_min:nn { 420pt } { 1.2 \g_ctuthesis_geometry_textwidth_dim } ,
 | |
| 	 	textheight = \g_ctuthesis_geometry_textheight_dim ,
 | |
| 		vmarginratio = \ctuthesis_geometry_vmarginratio: ,
 | |
| 		headheight = 16pt ,
 | |
| 		ignoreheadfoot ,
 | |
| 		columnsep=30pt ,
 | |
| 	}
 | |
| }
 | |
| 
 | |
| \cs_new:Nn \ctuthesis_geometry_plain: {
 | |
| 	\newgeometry {
 | |
| 		% Use the stored innermargin value
 | |
| 		inner = \dim_use:N \g_ctuthesis_geometry_innermargin_dim ,
 | |
| 		% Otherwise it's the same as in \RequirePackage[...]{geometry}
 | |
| 		textwidth = \dim_use:N \g_ctuthesis_geometry_textwidth_dim ,
 | |
| 	 	textheight = \g_ctuthesis_geometry_textheight_dim ,
 | |
| 		vmarginratio = \ctuthesis_geometry_vmarginratio: , ignoreheadfoot ,
 | |
| 		headheight = 16pt ,
 | |
| 		marginparsep = 10pt ,
 | |
| 	}
 | |
| 	% Compute the marginparwidth so that we leave 40pt from the page boundary
 | |
| 	\marginparwidth \dimexpr \evensidemargin + 1in - \marginparsep - 40pt
 | |
| }
 | |
| 
 | |
| % Re-initialize the geometry
 | |
| \ctuthesis_geometry_plain:
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| %%% TITLES
 | |
| 
 | |
| \usepackage{titlesec}
 | |
| % two basic parameters: the rule width and distance
 | |
| \newlength \ctu@title@rulewidth
 | |
| \newlength \ctu@title@rulesep
 | |
| \setlength \ctu@title@rulewidth {11pt}
 | |
| \setlength \ctu@title@rulesep {11pt}
 | |
| % box used all the time
 | |
| \newbox\ctu@title@box
 | |
| % macro that boxifies the header and adds the rule
 | |
| \long\def\ctu@title@boxify#1#2#3#4{
 | |
| 	\sffamily
 | |
| 	\bfseries
 | |
| 	\setbox\ctu@title@box\vbox{\hsize\dimexpr\linewidth-\ctu@title@rulewidth-\ctu@title@rulesep\relax
 | |
| 		\vskip#1
 | |
| 		\raggedright
 | |
| 		#3
 | |
| 		\vskip#2
 | |
| 	}
 | |
| 	#4
 | |
| 	\noindent\begin{tabular}{@{}l@{\hspace*{\ctu@title@rulesep}}l@{}}
 | |
| 		\color{ctubluerule}\rule[-\dp\ctu@title@box]{\ctu@title@rulewidth}{\dimexpr\ht\ctu@title@box+\dp\ctu@title@box}
 | |
| 	&
 | |
| 		\box\ctu@title@box
 | |
| 	\end{tabular}\hspace*{-10pt}
 | |
| 	\par
 | |
| }
 | |
| \long\def\ctu@title@boxify@x#1#2#3#4#5{
 | |
| 	\sffamily
 | |
| 	\bfseries
 | |
| 	\setbox\ctu@title@box\vbox{\parskip0pt\hsize\dimexpr\linewidth-\ctu@title@rulewidth-\ctu@title@rulesep\relax
 | |
| 		\vskip#1
 | |
| 		\raggedright
 | |
| 		#4
 | |
| 		\vskip#2
 | |
| 	}
 | |
| 	#5
 | |
| 	\noindent\begin{tabular}{@{}l@{\hspace*{\ctu@title@rulesep}}l@{}}
 | |
| 		\color{ctubluerule}
 | |
| 		\rule
 | |
| 			[\dimexpr\ht\ctu@title@box-#3-#1]
 | |
| 			{\ctu@title@rulewidth}
 | |
| 			{\dimexpr#1+#3}
 | |
| 	&
 | |
| 		\box\ctu@title@box
 | |
| 	\end{tabular}\hspace*{-10pt}
 | |
| 	\par
 | |
| }
 | |
| % the part style, very simply organized
 | |
| \def\ttlh@ctupt#1#2#3#4#5#6#7#8{
 | |
| 	\bool_gset_true:N \g_ctuthesis_title_haspart_bool
 | |
| 	\ctu@title@boxify{#5}{#3}{
 | |
| 		{#1\strut\ifttl@label#2\fi\par}
 | |
| 		\vskip30pt
 | |
| 		{\color{ctubluetext}#4\strut#8\strut\par}
 | |
| 	}{\dp\ctu@title@box\dimexpr\textheight-\ht\ctu@title@box-\baselineskip\relax
 | |
| 	}
 | |
| }
 | |
| \def\ttlh@ctuch#1#2#3#4#5#6#7#8{
 | |
| 	\vspace{-\parskip}
 | |
| 	% If the chapter is starred, we still want to \chaptermark it, just we use the variant \chapterstarmark.
 | |
| 	\ifttl@label\else\chapterstarmark{#8}\fi
 | |
| 	% If the chapter is starred, we still want it in the ToC.
 | |
| 	\ifttl@label\else\addcontentsline{toc}{chapter}{#8}\fi
 | |
| 	\ctu@title@boxify{#5}{#3}{
 | |
| 		{#1\strut\ifttl@label#2\fi\par}
 | |
| 		\medskip
 | |
| 		{\color{ctubluetext}#4\strut#8\strut\par}
 | |
| 	}{}
 | |
| }
 | |
| % The section style, very simply organized, subsection style differs only by a missing check for star variant and mark inclusion
 | |
| % Comments to the chapter style apply here too.
 | |
| \def\ttlh@ctus#1#2#3#4#5#6#7#8{
 | |
| 	\vspace{-.2em}
 | |
| 	\ifttl@label\else\sectionstarmark{#8}\fi	
 | |
| 	\ifttl@label\else\addcontentsline{toc}{section}{#8}\fi
 | |
| 	\ctu@title@boxify@x{#5}{0pt}{#3}{ \vspace{-1pt} #1{\ifttl@label#2\fi\strut\color{ctubluetext}#8\strut} }{}
 | |
| 	\par\nobreak
 | |
| 	\vspace{-.5em}
 | |
| }
 | |
| \def\ttlh@ctuss#1#2#3#4#5#6#7#8{
 | |
| 	\vspace{-.2em}
 | |
| 	\ifttl@label\else\addcontentsline{toc}{subsection}{#8}\fi
 | |
| 	\ctu@title@boxify@x{#5}{0pt}{#3}{ #1{\ifttl@label#2\fi\strut\color{ctubluetext}#8\strut} }{}
 | |
| 	\par\nobreak
 | |
| 	\vspace{-.5em}
 | |
| }
 | |
| \def\ttlh@ctusss#1#2#3#4#5#6#7#8{
 | |
| 	\vspace{-.2em}
 | |
| 	\ifttl@label\else\addcontentsline{toc}{subsubsection}{#8}\fi
 | |
| 	\ctu@title@boxify@x{#5}{0pt}{#3}{ \vspace{-1pt} #1{\ifttl@label#2\fi\strut\color{ctubluetext}#8\strut} }{}
 | |
| 	\par\nobreak
 | |
| 	\vspace{-.5em}
 | |
| }
 | |
| % Modified \ttl@page@ii to use \cleardoublepage instead of some idiocy
 | |
| \def\ttl@page@ii#1#2#3#4#5#6#7{%
 | |
|   \ttl@assign\@tempskipa#3\relax\beforetitleunit
 | |
|   \if@openright
 | |
|     \cleardoublepage
 | |
|   \else
 | |
|     \clearpage
 | |
|   \fi
 | |
|   \@ifundefined{ttl@ps@#6}%
 | |
|     {\thispagestyle{plain}}%
 | |
|     {\thispagestyle{\@nameuse{ttl@ps@#6}}}%
 | |
|   \if@twocolumn
 | |
|     \onecolumn
 | |
|     \@tempswatrue
 | |
|   \else
 | |
|     \@tempswafalse
 | |
|   \fi
 | |
|   \vspace*{\@tempskipa}%
 | |
|   \@afterindenttrue
 | |
|   \ifcase#5 \@afterindentfalse\fi
 | |
|   \ttl@assign\@tempskipb#4\relax\aftertitleunit
 | |
|   \ttl@select{#6}{#1}{#2}{#7}%
 | |
|   \ttl@finmarks
 | |
|   \@ifundefined{ttlp@#6}{}{\ttlp@write{#6}}%
 | |
|   \vspace{\@tempskipb}%
 | |
|   \cleardoublepage
 | |
|   \if@tempswa
 | |
|     \twocolumn
 | |
|   \fi
 | |
|   \ignorespaces}
 | |
| % Part title setting
 | |
| \bool_new:N \g_ctuthesis_title_haspart_bool
 | |
| \titleformat \part [ctupt] {\Huge} {{\huge\partname\nobreakspace}\thepart} {0pt} {\huge} [0.6\textheight]
 | |
| \titlespacing* \part {0pt} {0pt} {0pt}
 | |
| % Tweak into titlesec to make part number contain \numberline. They did not include it for some reason.
 | |
| \def\ttl@tocpart{\def\ttl@a{\protect\numberline{\thepart}}}
 | |
| % Chapter title setting
 | |
| \titleformat \chapter [ctuch] {\huge} {{\LARGE\chaptertitlename\ }\thechapter} {-0\dp\strutbox} {\LARGE} [40pt]
 | |
| \titlespacing* \chapter {0pt} {0pt} {15pt} % CHANGED was {0pt} {40pt} {15pt}
 | |
| % Section title setting
 | |
| \titleformat \section [ctus] {\Large} {\thesection\quad} {14pt} {} [2pt]
 | |
| \titleformat \subsection [ctuss] {\large} {\thesubsection\quad} {11pt} {} [0pt]
 | |
| \titleformat \subsubsection [ctusss] {\normalsize} {\thesubsubsection\quad} {10pt} {} [0pt]
 | |
| % Paragraph title setting: runin, with a dot.
 | |
| \cs_new:Nn \ctuthesis_title_adddot:n {#1\@addpunct.\ignorespaces}
 | |
| \titleformat \paragraph [runin] {\normalfont\normalsize\bfseries\sffamily} {\theparagraph} {1em} {\ctuthesis_title_adddot:n}
 | |
| \titleformat \subparagraph [runin] {\normalfont\normalsize\itshape} {\thesubparagraph} {1em} {\ctuthesis_title_adddot:n}
 | |
| \titlespacing* \paragraph {0pt} {2.25ex plus 1ex minus .2ex} {1em plus 0.3em minus 0.2em}
 | |
| \titlespacing* \subparagraph {\parindent} {1.75ex plus 0.5ex minus .2ex} {0.7em plus 0.3em minus 0.15em}
 | |
| 
 | |
| % Subsections are the lowest numbered titles, and also the lowest included in ToC.
 | |
| \setcounter{secnumdepth}{2}
 | |
| \setcounter{tocdepth}{2}
 | |
| 
 | |
| % Appendix treatment: Even if a chapter in appendix has a star, it will get a number (letter in this case), since
 | |
| % once you get any appendix, it doesn't make sense not to number some of them.
 | |
| % Users can use \chapter** if-need-be to get an unnumbered chapter in appendix, but we think it's ridiculous.
 | |
| \cs_set_eq:NN \ctuthesis_title_orig_appendix: \appendix
 | |
| \cs_set_eq:NN \ctuthesis_title_orig_chapter: \chapter
 | |
| \cs_set_eq:NN \ctuthesis_title_orig_makeschapterhead: \@makeschapterhead
 | |
| % an \if that is true only after \appendix
 | |
| \newif\ifctu@app \ctu@appfalse
 | |
| % The new \appendix
 | |
| \DeclareDocumentCommand \appendix { s~s~} {
 | |
| 	\ctu@apptrue
 | |
| 	% Call the old \appendix
 | |
| 	\ctuthesis_title_orig_appendix:
 | |
| 	% If the document has \part division, let's make "Appendices" a part on their own
 | |
| 	\bool_if:NT \g_ctuthesis_title_haspart_bool { 
 | |
| 		% But only make the notice in ToC if * is used
 | |
| 		\IfBooleanTF { #2 } {
 | |
| 			% Two stars: If nothing in ToC, at least put there a space.
 | |
| 			\addtocontents{toc}{\vskip 2ex plus 0.2pt}
 | |
| 		} {
 | |
| 			\IfBooleanTF { #1 } {
 | |
| 				% One star: Only add "Appendices" in ToC
 | |
| 				\cleardoublepage
 | |
| 				\addcontentsline { toc } { part } { \appendicesname }
 | |
| 			} {
 | |
| 				% Zero stars: Make "Appendices" page (will be in ToC implicitly
 | |
| 				\part*{ \appendicesname }
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 	% \chapter ignores one star, so that things like {thebibliography} are numbered
 | |
| 	\DeclareDocumentCommand \chapter { s~} { \ctuthesis_title_orig_chapter: }
 | |
| 	% another \appendix will generate a warning and be silently ignored
 | |
| 	\DeclareDocumentCommand \appendix { s~s~} {
 | |
| 		\msg_warning:nn { ctuthesis } { appendix-twice }
 | |
| 	}
 | |
| }
 | |
| 
 | |
| \msg_new:nnn { ctuthesis } { appendix-twice } { The~macro~ \token_to_str:N \appendix\ should~
 | |
| 	be~used~only~once.~Silently~ignoring. }
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| %%% TABLE OF CONTENTS, LISTS OF FIGURES AND TABLES
 | |
| 
 | |
| % Right margin in TOC, note that it need not be wider than the page numbers, so we're fine with 1em.
 | |
| \def\@tocrmarg{1em}
 | |
| 
 | |
| % New dottedtocline, differs from the default by having numberline variable-width and accomodating to the number
 | |
| \def\ctu@dottedtocline#1#2#3#4#5{\ifnum #1>\c@tocdepth \else
 | |
| 	\addvspace{0pt plus .2pt}
 | |
| 	{
 | |
| 	\leftskip #2\relax
 | |
| 	\rightskip\dimexpr\@tocrmarg plus 1fil
 | |
| 	\parfillskip -\rightskip
 | |
| 	\parindent #3\relax
 | |
| 	\@afterindenttrue
 | |
| 	\interlinepenalty\@M
 | |
| 	\leavevmode
 | |
| 	\null
 | |
| 	\nobreak
 | |
| 	\hskip -\leftskip
 | |
| 	\def\numberline##1{##1\ }
 | |
| 	{#4}
 | |
| 	\nobreak
 | |
| 	\leaders \hbox {$\m@th \mkern 2mu\hbox {.}\mkern 2mu$}\hfill
 | |
| 	\nobreak
 | |
| 	{\kern0.5em#5}
 | |
| 	\par
 | |
| 	}
 | |
| \fi}
 | |
| 
 | |
| % Part in ToC: centered, with no pagenumber, bf sf, and with nice space above.
 | |
| \def\l@part#1#2{
 | |
| 	\addvspace{2ex plus .2pt}
 | |
| 	{
 | |
| 	\centering
 | |
| 	\@afterindenttrue
 | |
| 	\interlinepenalty\@M
 | |
| 	\leavevmode
 | |
| 	\null
 | |
| 	\nobreak
 | |
| 	\def\numberline##1{\partname \nobreakspace ##1\\}%
 | |
| 	\sffamily \bfseries
 | |
| 	#1
 | |
| 	\par
 | |
| 	}\penalty10000\relax
 | |
| }
 | |
| % Chapter in ToC: bf sf, no leaders, completely left-aligned, the numberline is variable-width,
 | |
| % nice space above the chapter line
 | |
| \def\l@chapter#1#2{
 | |
| 	\addvspace{1ex plus .2pt}
 | |
| 	{
 | |
| 	\raggedright
 | |
| 	\rightskip\dimexpr\@tocrmarg plus 1fil
 | |
| 	\parfillskip -\rightskip
 | |
| 	\@afterindenttrue
 | |
| 	\interlinepenalty\@M
 | |
| 	\leavevmode
 | |
| 	\null
 | |
| 	\nobreak
 | |
| 	\def\numberline##1{##1\hspace*{0.5em}}
 | |
| 	\sffamily \bfseries
 | |
| 	#1
 | |
| 	\nobreak
 | |
| 	\hfill
 | |
| 	\nobreak
 | |
| 	{\kern0.5em#2}
 | |
| 	\par
 | |
| 	}\penalty9999\relax
 | |
| }
 | |
| % The section and lower in Toc. We hope nobody would put `\paragraph`s in ToC
 | |
| \def\l@section{\ctu@dottedtocline{1}{0.6em}{0em}}
 | |
| \def\l@subsection{\ctu@dottedtocline{2}{1.2em}{1.2em}}
 | |
| \def\l@subsubsection{\ctu@dottedtocline{3}{1.8em}{2.4em}}
 | |
| % Figures and tables in LoF and LoT exactly as sections, just the level is set to -2 so that they're always shown
 | |
| \def\l@figure{\ctu@dottedtocline{-2}{0.6em}{0em}}
 | |
| \let\l@table\l@figure
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| %%% FANCY HEADERS
 | |
| 
 | |
| \RequirePackage{fancyhdr}
 | |
| 
 | |
| % Spacial pagestyle for twocolumnpages in the frontmatter: includes centered pagenumber in the bottom
 | |
| % and we abuse \fancyhead[C] to include the dividing rule
 | |
| \fancypagestyle{twocol}{
 | |
| 	\fancyhf { }
 | |
| 	\fancyfoot [ RO, LE ] { \texttt { \ctufield { preprint } } }
 | |
| 	\fancyfoot [ C ] { \thepage }
 | |
| 	
 | |
| 	% CHANGED removed the blue rule
 | |
| 	
 | |
| %	\fancyhead [ C ] {
 | |
| %		\leavevmode
 | |
| %		\smash {
 | |
| %			\color{ctubluerule}
 | |
| %			\rule [ \dimexpr - \textheight - \headsep - 6pt ]{ 11pt }{ \textheight } 
 | |
| %		}
 | |
| %	}
 | |
| 	\renewcommand { \headrulewidth } { 0pt }
 | |
| 	\renewcommand { \footrulewidth } { 0pt }
 | |
| 	\dim_set_eq:NN \headwidth \textwidth
 | |
| }
 | |
| 
 | |
| \fancypagestyle { cleardoublepage } {
 | |
| 	% On \cleardoublepage (without star), we want the page number, but nothing else,
 | |
| 	% that is, the same as plain pagestyle
 | |
| 	\ps@plain
 | |
| }
 | |
| 
 | |
| % Plain pagestyle for chapter and part titles: no rules, just the page number
 | |
| \fancypagestyle { plain } {
 | |
| 	\fancyhf { }
 | |
| 	\fancyfoot [ RO, LE ] { \texttt { \ctufield { preprint } } }
 | |
| 	\fancyfoot [ C ] { \thepage }
 | |
| 	\renewcommand \headrulewidth { 0pt }
 | |
| 	\renewcommand \footrulewidth { 0pt }
 | |
| 	% reset headwidth to the global textwidth
 | |
| 	\dim_set_eq:NN \headwidth \g_ctuthesis_geometry_textwidth_dim
 | |
| }
 | |
| 
 | |
| % Headings pagestyle for standard text pages
 | |
| \fancypagestyle { headings } {
 | |
| 	% Copy the plain pagestyle
 | |
| 	\ps@plain
 | |
| 	% Include the left/rightmark and leaders
 | |
| 	\fancyhead [ LE ] { \ctuthesis_fancy_xlap:nn { right } { \leftmark \ctuthesis_fancy_leaders:n { l } } }
 | |
| 	\fancyhead [ RO ] { \ctuthesis_fancy_xlap:nn { left } { \ctuthesis_fancy_leaders:n { r } \rightmark } }
 | |
| }
 | |
| 
 | |
| % The leaders macro for the fancyhead: nice little boxes. We make three of them: left, right and center-aligned
 | |
| 
 | |
| \box_new:N \g_ctuthesis_fancy_bluerule_l_box
 | |
| \hbox_set_to_wd:Nnn \g_ctuthesis_fancy_bluerule_l_box { 10.5pt } {
 | |
| 	{ \color{ctubluedot} \smash{\fontsize{28.88}{0}\fontfamily{lmss}\bfseries.} }
 | |
| 	\hfil
 | |
| }
 | |
| 
 | |
| \box_new:N \g_ctuthesis_fancy_bluerule_r_box
 | |
| \hbox_set_to_wd:Nnn \g_ctuthesis_fancy_bluerule_r_box { 10.5pt } {
 | |
| 	\hfil
 | |
| 	{ \color{ctubluedot} \smash{\fontsize{28.88}{0}\fontfamily{lmss}\bfseries.} }
 | |
| }
 | |
| 
 | |
| \box_new:N \g_ctuthesis_fancy_bluerule_c_box
 | |
| \hbox_set_to_wd:Nnn \g_ctuthesis_fancy_bluerule_c_box { 10.5pt } {
 | |
| 	\hfil
 | |
| 	{ \color{ctubluedot} \smash{\fontsize{28.88}{0}\fontfamily{lmss}\bfseries.} }
 | |
| 	\hfil
 | |
| }
 | |
| 
 | |
| % The leaders macro for the fancyhead: nice little boxes,
 | |
| % the parameter #1 chooses one of the boxes above
 | |
| \cs_new:Nn \ctuthesis_fancy_leaders:n {
 | |
| 	\hspace*{-1pt}
 | |
| 	\leaders \box_use:c {g_ctuthesis_fancy_bluerule_#1_box} \hfill
 | |
| 	\hspace*{-1pt}
 | |
| }
 | |
| 
 | |
| % This macro works as follows: The width of the material is actually zero. We use \hbox_overlap_left/right
 | |
| % to make the headers as wide as we wish, the direction is in #1. In #2 is the contents, and we suppose
 | |
| % that it contains \ctuthesis_fancy_leaders: and \left/rightmark in desired order; it's typeset gray sf it
 | |
| \cs_new:Nn \ctuthesis_fancy_xlap:nn {
 | |
| 	\color{ctugray} \sffamily\itshape
 | |
| 	\leavevmode \use:c { hbox_overlap_#1:n } {
 | |
| 		\hbox_to_wd:nn { \paperwidth - 1in - \evensidemargin + 1em } { #2 }
 | |
| 	}
 | |
| }
 | |
| 
 | |
| % We rename the original \mark... commands and disable them; we do it ourselves
 | |
| \cs_set_eq:NN \ctuthesis_fancy_markboth_orig:nn \markboth
 | |
| \cs_set_eq:NN \ctuthesis_fancy_markright_orig:n \markright
 | |
| \let\markboth\@gobbletwo
 | |
| \let\markright\@gobble
 | |
| 
 | |
| % New chapter and section marks with no \MakeUppercase
 | |
| \renewcommand \chaptermark [1] { \ctuthesis_fancy_markboth_orig:nn { \thechapter.\ #1 }{ \thechapter.\ #1 } }
 | |
| \renewcommand \sectionmark [1] { \ctuthesis_fancy_markright_orig:n { \thesection.\ #1 } }
 | |
| 
 | |
| % Newly defined \chapter/sectionstarmark to be used with unnumbered chapters and sections.
 | |
| % Not that we like unnumbered ones, but if they need to be there, they sould be in headings, too.
 | |
| \newcommand \chapterstarmark [1] { \ctuthesis_fancy_markboth_orig:nn { #1 } { #1 } }
 | |
| \newcommand \sectionstarmark [1] { \ctuthesis_fancy_markright_orig:n { #1 } }
 | |
| 
 | |
| % Better \cleardoublepage that takes proper treatment of the empty pages.
 | |
| % The starred variant leaves the empty page inbetween really completely empty
 | |
| \DeclareDocumentCommand \cleardoublepage { s~} {
 | |
| 	\clearpage
 | |
| 	\if@twoside\ifodd\c@page\else
 | |
| %		\IfBooleanTF { #1 } {
 | |
| 			% Starred variant: completely empty page
 | |
| 			\leavevmode
 | |
| 			\thispagestyle{empty}
 | |
| %		} {
 | |
| 			% Non-starred variant: include page number
 | |
| 			\leavevmode
 | |
| 			\thispagestyle{cleardoublepage}
 | |
| %		}
 | |
| 		\newpage
 | |
| 		% In twocolumn, we need \newpage twice
 | |
| 		\if@twocolumn\hbox{}\newpage\fi
 | |
| 	\fi\fi
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| %%% FLOATS
 | |
| 
 | |
| \usepackage{float,caption}
 | |
| % default placement of all floats is `t`
 | |
| \floatplacement{figure}{t}
 | |
| \floatplacement{table}{t}
 | |
| \floatplacement{figure*}{t}
 | |
| \floatplacement{table*}{t}
 | |
| % minimum 70% of page height on float pages
 | |
| \renewcommand{\floatpagefraction}{0.7}
 | |
| % 2 floats on top, no on bottom
 | |
| \setcounter{topnumber}{2}
 | |
| \setcounter{bottomnumber}{0}
 | |
| \setcounter{totalnumber}{4}
 | |
| % up to 90% of floats on a mixed page, at least 7% of text
 | |
| \renewcommand{\topfraction}{0.7}
 | |
| \renewcommand{\bottomfraction}{0.7}
 | |
| \renewcommand{\textfraction}{0.2}
 | |
| % float caption: justification with extra margins on both sides
 | |
| \DeclareCaptionJustification{myjustify}{\leftskip.8em \rightskip.8em \parfillskip.8em plus 1fil}
 | |
| % float caption: special format
 | |
| \DeclareCaptionFormat{myformat}{%
 | |
|   % float name bf sf
 | |
|   \begingroup\sffamily\bfseries#1#2:~\endgroup
 | |
|   % float caption normal font
 | |
|   \begingroup#3\par\endgroup
 | |
| }
 | |
| \DeclareCaptionFormat{mysubformat}{%
 | |
|   % float name small caps
 | |
|   #1#2 %
 | |
|   % float caption normal font
 | |
|   \begingroup#3\par\endgroup
 | |
| }
 | |
| % plain float style is what we like, with captions at the bottom
 | |
| \floatstyle{plain}
 | |
| % restyle already existing floats
 | |
| \restylefloat{figure}
 | |
| \restylefloat{table}
 | |
| % set up the captions: no indent of captions, no seperator (seperator is handled by {myformat})
 | |
| \captionsetup{format=myformat,indent=0pt,labelsep=none,justification=myjustify,font={small},position=below}
 | |
| % float-caption distance
 | |
| \abovecaptionskip 8pt plus 3pt minus 1pt
 | |
| % graphics allowed: pdf, png, jpg
 | |
| \DeclareGraphicsExtensions{.pdf,.png,.jpg}
 | |
| % floats should be centered by default:
 | |
| \g@addto@macro{\@floatboxreset}{\centering}
 | |
| % nice table rules
 | |
| \usepackage{booktabs}
 | |
| \newcommand \Midrule { \midrule[\heavyrulewidth] }
 | |
| % colored tables
 | |
| \newenvironment{ctucolortab}{\begin{lrbox}{0}}{\end{lrbox}\ht0\dimexpr\ht0 + 2pt\relax{\fboxsep0pt\colorbox{ctubluebg}{\usebox{0}}}}
 | |
| \newenvironment{ctucolortab*}{\begin{lrbox}{0}}{\end{lrbox}{\fboxsep0pt\colorbox{ctubluebg}{\usebox{0}}}}
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| \iffalse
 | |
| 
 | |
| %%% LISTS
 | |
| 
 | |
| % Temp box
 | |
| \box_new:N \g_ctuthesis_tempa_box
 | |
| % Macro used to generate the itemize labels
 | |
| % parameters 1:depth, 2: raise (without ex), 3: scale, 4:color
 | |
| \cs_new:Nn \ctuthesis_list_prepare_labelitem:nnnn {
 | |
| 	% Each label stored in a box
 | |
| 	\box_new:c { g_ctuthesis_list_label_#1_box }
 | |
| 	% use the temp box to measure the symbol
 | |
| 	\hbox_gset:Nn \g_ctuthesis_tempa_box {
 | |
| 		\scalebox{#3}{\fontfamily{lmss}\bfseries\color{#4}.}
 | |
| 	}
 | |
| 	% The label is actually a shifted up, scaled, coloured lmss bf dot
 | |
| 	\hbox_gset:cn { g_ctuthesis_list_label_#1_box } {
 | |
| 		\box_move_up:nn { #2 ex } \hbox_to_wd:nn {
 | |
| 			\box_ht:N \g_ctuthesis_tempa_box
 | |
| 		} {
 | |
| 			\hss
 | |
| 			\scalebox{#3}{\fontfamily{lmss}\bfseries\color{#4}.}
 | |
| 			\hss
 | |
| 		}
 | |
| 	}
 | |
| 	\cs_set:cpn { labelitem #1 } { \box_use:c { g_ctuthesis_list_label_#1_box } }
 | |
| }
 | |
| % The four labels for itemize
 | |
| \ctuthesis_list_prepare_labelitem:nnnn { i~} { 0.18 } { 3.6 } { ctublueitemi }
 | |
| \ctuthesis_list_prepare_labelitem:nnnn { ii } { 0.18 } { 3.6 } { ctublueitemii }
 | |
| \ctuthesis_list_prepare_labelitem:nnnn { iii } { 0.36 } { 2.4 } { black }
 | |
| \ctuthesis_list_prepare_labelitem:nnnn { iv } { 0.48 } { 1.2 } { black }
 | |
| 
 | |
| % Macro for making the box with lmss bf dot "." scaled to the size of \strutbox
 | |
| % #1 is the width of the box (relative to the width of the resulting dot) and
 | |
| % #2 is the color of the box
 | |
| \cs_new:Nn \ctuthesis_list_enumdot:nn {
 | |
| 	\hbox_to_wd:nn { #1\ht\strutbox + #1\dp\strutbox } {
 | |
| 		\hss
 | |
| 		\raisebox{-\dp\strutbox}{
 | |
| 			\resizebox{!}{\dimexpr\ht\strutbox+\dp\strutbox}{
 | |
| 				\fontfamily{lmss}\bfseries\color{#2}.
 | |
| 			}
 | |
| 		}
 | |
| 		\hss		
 | |
| 	}
 | |
| }
 | |
| 
 | |
| % \itembox takes 5 parameters.
 | |
| % (#1)(#2) are the left and right padding
 | |
| % [#3][#4] are the box color and text color
 | |
| % #5 is the text
 | |
| \DeclareDocumentCommand \itembox { D(){0.15em} D(){0.15em} >{\TrimSpaces}O{ctubluebg} >{\TrimSpaces}O{black} >{\TrimSpaces}m } {
 | |
| 	\ooalign{
 | |
| 		\hfil \ctuthesis_list_enumdot:nn {1} {#3}
 | |
| 	\cr
 | |
| 		\ctuthesis_list_enumdot:nn {1} {#3} \hfil
 | |
| 	\cr
 | |
| 		\skip_horizontal:n { 0.34\ht\strutbox + 0.34\dp\strutbox }
 | |
| 		\cleaders \ctuthesis_list_enumdot:nn {0.34} {#3} \hfil
 | |
| 		\skip_horizontal:n { 0.34\ht\strutbox + 0.34\dp\strutbox }
 | |
| 	\cr
 | |
| 		\hfil
 | |
| 		\hbox:n { \hspace{#1} { \color{#4} #5 } \hspace{#2} }
 | |
| 		\hfil
 | |
| 	}
 | |
| }
 | |
| 
 | |
| % Redefine the enumerate labels. The first two levels are boxed,
 | |
| % the other two are not.
 | |
| \def\labelenumi{{\normalfont\itembox[ctubluedarkbg][white]{\bfseries\theenumi.}}}
 | |
| 
 | |
| \iffalse
 | |
| 
 | |
| \def\labelenumi{{\normalfont\itembox{\theenumi.}}}
 | |
| \def\labelenumii{{\normalfont\itembox(0.1em)(0.1em){\theenumii.}}}
 | |
| \def\labelenumiii{{\normalfont(\theenumiii)}}
 | |
| \def\labelenumiv{{\normalfont(\theenumiv)}}
 | |
| 
 | |
| \fi
 | |
| 
 | |
| \leftmargini22.2pt
 | |
| \labelsep6pt
 | |
| 
 | |
| 
 | |
| \fi
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| %%% MATH, THEOREMS
 | |
| 
 | |
| \usepackage{amsmath,amssymb,amsfonts}
 | |
| 
 | |
| % Optional loading of amsthm
 | |
| \ctuthesis_if_switch:nT { pkg-amsthm } {
 | |
| 
 | |
| 	\usepackage{amsthm}
 | |
| 
 | |
| 	% Redefine standard styles: plain is slanted, definition is normal, note has an italic head (like proof)
 | |
| 	\newtheoremstyle{plain}{3pt plus 1pt}{3pt plus 1pt}{\slshape}{}{\bfseries\sffamily}{.}{.5em}{}
 | |
| 	\newtheoremstyle{plainit}{3pt plus 1pt}{3pt plus 1pt}{\slshape}{}{\bfseries\sffamily}{.}{.5em}{}
 | |
| 	\newtheoremstyle{definition}{3pt plus 1pt}{3pt plus 1pt}{}{}{\bfseries\sffamily}{.}{.5em}{}
 | |
| 	\newtheoremstyle{note}{3pt plus 1pt}{3pt plus 1pt}{}{}{\itshape}{.}{.5em}{}
 | |
| 
 | |
| 	% Default style: plain
 | |
| 	\theoremstyle{plain}
 | |
| 	
 | |
| 	% We redefine proof to include a more reasonable spacing above it.
 | |
| 	\DeclareDocumentEnvironment { proof } { O{\proofname} } {
 | |
| 		\par
 | |
| 		\pushQED{\qed}
 | |
| 		\normalfont \topsep0pt plus 1pt
 | |
| 		\trivlist
 | |
| 		\item[
 | |
| 			\hskip\labelsep
 | |
| 		    \itshape
 | |
| 			#1\@addpunct{.}
 | |
| 		]
 | |
| 		\ignorespaces
 | |
| 	}{
 | |
| 		\popQED\endtrivlist\@endpefalse
 | |
| 	}
 | |
| 
 | |
| }	
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| %%% INDEX
 | |
| 
 | |
| \ctuthesis_if_switch:nT { pkg-makeidx } {
 | |
| 
 | |
| 	% Initialize makeindex
 | |
| 	\usepackage{makeidx}
 | |
| 	\makeindex
 | |
| 
 | |
| 	% We use multicol rather than twocolumn for the index
 | |
| 	\usepackage{multicol}
 | |
| 	
 | |
| 	% Redefine the index environment to just make the header and start the multicols* envrionment
 | |
| 	% (starred because we don't want to balance the columns), then redefine \item as in original theindex
 | |
| 	\DeclareDocumentEnvironment { theindex } { } {
 | |
| 		\chapter* {\indexname }
 | |
| 		%CHANGED commented out begin & end
 | |
| 	%	\begin{multicols*}{2}
 | |
| 		\let\item\@idxitem
 | |
| 		% Do not put index sections in ToC. We save the tocdepth and set it to zero, only to restore it after.
 | |
| 		\addtocontents{toc}{\protect\ctu@savetocdepth}
 | |
| 		\addtocontents{toc}{\protect\setcounter{tocdepth}{0}}
 | |
| 		% Inside index, the sections are tighter together
 | |
| 		\titlespacing*\section{}{10pt}{4pt}
 | |
| 	} {
 | |
| 		\addtocontents{toc}{\protect\ctu@restoretocdepth}
 | |
| 	%	\end{multicols*}
 | |
| 		\clearpage
 | |
| 	}
 | |
| 	
 | |
| 	% How does this work: in \ctu@tocdepth we save the current tocdepth
 | |
| 	\newcommand\ctu@savetocdepth{\xdef\ctu@saved@tocdepth{\the\c@tocdepth}}
 | |
| 	% This macro restores the saved value.
 | |
| 	\newcommand\ctu@restoretocdepth{\global\c@tocdepth\ctu@saved@tocdepth\relax}
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| %%% LISTINGS
 | |
| 
 | |
| \ctuthesis_if_switch:nT { pkg-listings } {
 | |
| 	\RequirePackage{listings}
 | |
| 	\lstset{
 | |
| 		backgroundcolor = \color{ctubluebg},
 | |
| 		basicstyle = \ttfamily,
 | |
| 		columns = fullflexible,
 | |
| 		keepspaces = true,
 | |
| 		tabsize = 4,
 | |
| %		frame = leftline,
 | |
| %		framesep = 0pt,
 | |
| %		framexleftmargin = 3pt,
 | |
| %		framerule = 0.667pt,
 | |
| %		rulecolor = \color{ctubluerule},
 | |
| 		frame = single,
 | |
| 		framesep = 0pt,
 | |
| 		framexleftmargin = 2pt,
 | |
| 		framerule = 2pt,
 | |
| 		rulecolor = \color{ctubluebg},
 | |
| 		framexrightmargin = 2pt,
 | |
| 		xleftmargin = 4pt,
 | |
| 		xrightmargin = 4pt,
 | |
| 	}
 | |
| 	\cs_new_eq:NN \ctuthesis_lst_orig_lstinline:w \lstinline
 | |
| 	\newsavebox \ctuthesis_lst_box
 | |
| 	\newcommand* \ctulstsep {0.2em}
 | |
| 	\DeclareDocumentCommand \ctuthesis_lst_do_ctulstinline:nnw { m m m v~} {
 | |
| 		\leavevmode
 | |
| 		\microtypesetup{activate=false}
 | |
| 		\begin{lrbox}{\ctuthesis_lst_box}
 | |
| 		\ctuthesis_lst_orig_lstinline:w[#2]#3#4#3
 | |
| 		\end{lrbox}
 | |
| 		\str_if_eq:xnTF {#1} {none}
 | |
| 			{{ \hbox:n {\strut\hspace*{\ctulstsep}\box\ctuthesis_lst_box\hspace*{\ctulstsep}} }}
 | |
| 			{{ \fboxsep0pt\colorbox{#1} {\strut\hspace*{\ctulstsep}\box\ctuthesis_lst_box\hspace*{\ctulstsep}} }}
 | |
| 		\microtypesetup{activate=true}
 | |
| 	}
 | |
| 	\DeclareDocumentCommand \ctulst { D(){\g_ctuthesis_ctulstbg_tl} O{} m } {
 | |
| 		\ctuthesis_lst_do_ctulstinline:nnw { #1 } { #2 } { #3 } #3
 | |
| 	}
 | |
| 	\DeclareDocumentCommand \ctulstbr { D(){ctulstbg} O{} m } {
 | |
| 		\leavevmode
 | |
| 		\begin{lrbox}{\ctuthesis_lst_box}
 | |
| 		\ctuthesis_lst_orig_lstinline:w[#2]{#3}
 | |
| 		\end{lrbox}
 | |
| 		\colorbox{#1}{\box\ctuthesis_lst_box}
 | |
| 	}
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| %%% HYPERREF
 | |
| 
 | |
| \ctuifswitch { pkg-hyperref } {
 | |
| 	\usepackage[
 | |
| 		unicode,
 | |
| 		pdfpagelayout=TwoPageRight, % Correct twopage layout with recto on the right
 | |
| 	]{hyperref}
 | |
| 	% Links with orange borders, in ToC only the page is linked
 | |
| 	\hypersetup{
 | |
| 		colorlinks=false,
 | |
| 		linktocpage=true,
 | |
| 		allbordercolors=ctuorange,
 | |
| 	}
 | |
| 	% Prepare PDFinfo
 | |
| 	\cs_new:Nx \ctuthesis_hyperref_pdfinfo: {
 | |
| 		pdfinfo = {
 | |
| 			Title = \ctuthesis_field_use:n {pdftitle},
 | |
| 			Author = \ctuthesis_field_use:n {pdfauthor},
 | |
| 		}
 | |
| 	} 
 | |
| 	\exp_args:NV \hypersetup \ctuthesis_hyperref_pdfinfo:
 | |
| }{}
 | |
| 
 | |
| %\ctuifswitch { pkg-hyperref } {
 | |
| %	\hypersetup{colorlinks=false,linktocpage=true,linkbordercolor=0 122 195}
 | |
| %}
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| %%% VARIOUS TWEAKS
 | |
| 
 | |
| % Provide \phantomsection and \texorpdfstring to make them available in case hyperref wasn't loaded
 | |
| \providecommand\phantomsection{}
 | |
| \providecommand\texorpdfstring[2]{#1}
 | |
| % Provide \microtypesetup to make it available in case microtype wasn't loaded
 | |
| \providecommand\microtypesetup[1]{}
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| \endinput
 | |
| 
 |