Clean up after the hot garbage.
This commit is contained in:
parent
41ebaf6a01
commit
a5195adf4b
Binary file not shown.
|
@ -4,7 +4,7 @@
|
|||
|
||||
\title{\texorpdfstring{{\scshape\huge DustArch\\\vspace{\parskip}}}{DustArch: }DustVoice’s Arch Linux from scratch}
|
||||
\author{David Holland}
|
||||
\date{2020-05-18}
|
||||
\date{2020-05-19}
|
||||
|
||||
\begin{document}
|
||||
\maketitle
|
||||
|
@ -679,8 +679,8 @@ In all cases, you now have to create the main \texttt{grub.cfg} configuration fi
|
|||
|
||||
But before we actually generate it, we’ll make some changes to the default \texttt{grub} settings, which the \texttt{grub.cfg} will be generated from.
|
||||
|
||||
\subsubsubsection{Adjust the timeout}
|
||||
\label{sec:adjust-the-timeout}
|
||||
\paragraph{Adjust the timeout}
|
||||
\label{par:adjust-the-timeout}
|
||||
|
||||
First of all, I want my \texttt{grub} menu to wait indefinitely for my command to boot an OS.
|
||||
|
||||
|
@ -702,8 +702,8 @@ GRUB_SAVEDEFAULT="true"
|
|||
\end{minted}
|
||||
\end{NOTE}
|
||||
|
||||
\subsubsubsection{Enable the recovery}
|
||||
\label{sec:enable-the-recovery}
|
||||
\paragraph{Enable the recovery}
|
||||
\label{par:enable-the-recovery}
|
||||
|
||||
After that I also want the recovery option showing up, which means that besides the standard and fallback images, also the recovery one would show up.
|
||||
|
||||
|
@ -711,8 +711,8 @@ After that I also want the recovery option showing up, which means that besides
|
|||
GRUB_DISABLE_RECOVERY=false
|
||||
\end{minted}
|
||||
|
||||
\subsubsubsection{NVIDIA fix}
|
||||
\label{sec:nvidia-fix}
|
||||
\paragraph{NVIDIA fix}
|
||||
\label{par:nvidia-fix}
|
||||
|
||||
Now, as I’m using the binary NVIDIA driver for my graphics card, I also want to make sure, to revert \texttt{grub} back to text mode, after I select a boot entry, in order for the NVIDIA driver to work properly.
|
||||
You might not need this
|
||||
|
@ -721,8 +721,8 @@ You might not need this
|
|||
GRUB_GFXPAYLOAD_LINUX=text
|
||||
\end{minted}
|
||||
|
||||
\subsubsubsection{Add power options}
|
||||
\label{sec:add-power-options}
|
||||
\paragraph{Add power options}
|
||||
\label{par:add-power-options}
|
||||
|
||||
I also want to add two new menu entries, to enable me to shut down the PC, or reboot it, right from the \texttt{grub} menu.
|
||||
|
||||
|
@ -736,13 +736,13 @@ menuentry '=> Reboot' {
|
|||
}
|
||||
\end{minted}
|
||||
|
||||
\subsubsubsection{Installing \texttt{memtest}}
|
||||
\label{sec:installing-memtest}
|
||||
\paragraph{Installing \texttt{memtest}}
|
||||
\label{par:installing-memtest}
|
||||
|
||||
As I want all possible options to possibly troubleshoot my PC right there in my \texttt{grub} menu, without the need to boot into a live OS, I also want to have a memory tester there.
|
||||
|
||||
\subsubsubsubsection{\texttt{BIOS}}
|
||||
\label{sec:installing-memtest-bios}
|
||||
\subparagraph{\texttt{BIOS}}
|
||||
\label{par:installing-memtest-bios}
|
||||
|
||||
\begin{packagetable}
|
||||
\texttt{extra} & \texttt{memtest86+} \\
|
||||
|
@ -750,8 +750,8 @@ As I want all possible options to possibly troubleshoot my PC right there in my
|
|||
|
||||
For a \texttt{BIOS} setup, you’ll simply need to install the \texttt{memtest86+} package, with no further configuration.
|
||||
|
||||
\subsubsubsubsection{\texttt{UEFI}}
|
||||
\label{sec:installing-memtest-uefi}
|
||||
\subparagraph{\texttt{UEFI}}
|
||||
\label{par:installing-memtest-uefi}
|
||||
|
||||
\begin{packagetable}
|
||||
\texttt{AUR} & \texttt{memtest86-efi} \\
|
||||
|
@ -765,8 +765,8 @@ For a \texttt{UEFI} setup, you’ll first need to install the package and then t
|
|||
|
||||
Now select option 3, to install it as a \texttt{grub2} menu item.
|
||||
|
||||
\subsubsubsection{Enabling hibernation}
|
||||
\label{sec:enabling-hibernation}
|
||||
\paragraph{Enabling hibernation}
|
||||
\label{par:enabling-hibernation}
|
||||
|
||||
We need to add the \texttt{resume} kernel parameter to \textit{/etc/default/grub}, containing my \texttt{swap} partition \texttt{UUID}, in my case
|
||||
|
||||
|
@ -775,11 +775,11 @@ GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 quiet resume=UUID=097c6f11-f246-40eb-a702
|
|||
\end{minted}
|
||||
|
||||
\begin{NOTE}
|
||||
If you have to change anything, like the \texttt{swap} partition \texttt{UUID}, inside the \texttt{grub} configuration files, you’ll always have to rerun \texttt{grub-mkconfig} as explained in \nameref{sec:generating-the-grub-config} config.
|
||||
If you have to change anything, like the \texttt{swap} partition \texttt{UUID}, inside the \texttt{grub} configuration files, you’ll always have to rerun \texttt{grub-mkconfig} as explained in the paragraph \nameref{par:generating-the-grub-config} of the section \nameref{sec:grub-config}.
|
||||
\end{NOTE}
|
||||
|
||||
\subsubsubsection{Generating the \texttt{grub} config}
|
||||
\label{sec:generating-the-grub-config}
|
||||
\paragraph{Generating the \texttt{grub} config}
|
||||
\label{par:generating-the-grub-config}
|
||||
|
||||
Now we can finally generate our \textit{grub.cfg}
|
||||
|
||||
|
@ -830,7 +830,7 @@ You will also need to use \texttt{systemd} hooks from now on, for example \textt
|
|||
\end{itemize}
|
||||
|
||||
\begin{NOTE}
|
||||
You can find all purposes of the hooks, as well as the \texttt{busybox}/\texttt{systemd} equivalent of each one in the \hreffn{https://wiki.archlinux.org/index.php/Mkinitcpio\#Common\_hooks}{ArchWiki}.
|
||||
You can find all purposes of the individual hooks, as well as the \texttt{busybox} / \texttt{systemd} equivalent of each one in the \hreffn{https://wiki.archlinux.org/index.php/Mkinitcpio\#Common\_hooks}{ArchWiki}.
|
||||
\end{NOTE}
|
||||
|
||||
\section{Hibernation}
|
||||
|
@ -904,7 +904,7 @@ bcdedit /set {bootmgr} path \EFI\grub\shimx64.efi
|
|||
|
||||
Now you will be greeted by \texttt{MokManager} everytime you update your bootloader or kernel.
|
||||
|
||||
Just choose \texttt{Enroll hash from disk} and enroll your bootloader (\textit{grubx64.efi}) and kernel (\texttt{vmlinuz-linux}).
|
||||
Just choose \textbf{Enroll hash from disk} and enroll your bootloader (\textit{grubx64.efi}) and kernel (\textit{vmlinuz-linux}).
|
||||
|
||||
Reboot and your system should fire up just fine.
|
||||
|
||||
|
@ -947,8 +947,8 @@ First off, we have to generate our \texttt{Secure Boot} keys.
|
|||
|
||||
These will be used to sign any binary which will be executed by the firwmare.
|
||||
|
||||
\subsubsubsection{\texttt{GUID}}
|
||||
\label{sec:guid}
|
||||
\paragraph{\texttt{GUID}}
|
||||
\label{par:guid}
|
||||
|
||||
Let’s create a \texttt{GUID} first to use with the next commands.
|
||||
|
||||
|
@ -956,8 +956,8 @@ Let’s create a \texttt{GUID} first to use with the next commands.
|
|||
[root@archiso ~/sb]# uuidgen --random > GUID.txt
|
||||
\end{minted}
|
||||
|
||||
\subsubsubsection{\texttt{PK}}
|
||||
\label{sec:pk}
|
||||
\paragraph{\texttt{PK}}
|
||||
\label{par:pk}
|
||||
|
||||
We can now generate our \texttt{PK} (Platform Key)
|
||||
|
||||
|
@ -974,8 +974,8 @@ In order to allow deletion of the \texttt{PK}, for firmwares which do not provid
|
|||
[root@archiso ~/sb]# sign-efi-sig-list -g "$(< GUID.txt)" -k PK.key -c PK.crt PK /dev/null rm_PK.auth
|
||||
\end{minted}
|
||||
|
||||
\subsubsubsection{\texttt{KEK}}
|
||||
\label{sec:kek}
|
||||
\paragraph{\texttt{KEK}}
|
||||
\label{par:kek}
|
||||
|
||||
We proced in a similar fashion with the \texttt{KEK} (Key Exchange Key)
|
||||
|
||||
|
@ -986,8 +986,8 @@ We proced in a similar fashion with the \texttt{KEK} (Key Exchange Key)
|
|||
[root@archiso ~/sb]# sign-efi-sig-list -g "$(< GUID.txt)" -k PK.key -c PK.crt KEK KEK.esl KEK.auth
|
||||
\end{minted}
|
||||
|
||||
\subsubsubsection{\texttt{DB}}
|
||||
\label{sec:db}
|
||||
\paragraph{\texttt{DB}}
|
||||
\label{par:db}
|
||||
|
||||
And finally the \texttt{DB} (Signature Database) key.
|
||||
|
||||
|
@ -1021,14 +1021,14 @@ No need to sign the Windows boot loader.
|
|||
|
||||
In order to ensure a smooth operation, with actual security, we need to move some stuff around.
|
||||
|
||||
\subsubsubsection{Kernel, \texttt{initramfs}, microcode}
|
||||
\label{sec:kernel-initramfs-microcode}
|
||||
\paragraph{Kernel, \texttt{initramfs}, microcode}
|
||||
\label{par:kernel-initramfs-microcode}
|
||||
|
||||
\texttt{pacman} will put its unsigned and unencrypted kernel, \texttt{initramfs} and microcode images into \textit{/boot}, which is, why it will be no longer a good idea, to leave your EFI System Partition mounted there.
|
||||
Instead we will create a new mount point under \textit{/efi} and modify our \texttt{fstab} accordingly.
|
||||
|
||||
\subsubsubsection{Keys}
|
||||
\label{sec:keys}
|
||||
\paragraph{Keys}
|
||||
\label{par:keys}
|
||||
|
||||
As you probably want to automate signing sooner or later and only use the ultimately necessary keys for this process, as well as store the other more important keys somewhere more safe and secure than your \texttt{root} home directory, we will move the necessary keys.
|
||||
|
||||
|
@ -1041,8 +1041,8 @@ All the keys will get packed into a \texttt{tar} archive and encrypted with a st
|
|||
Signing is the process of, well, signing your \texttt{EFI} binaries, in order for them to be allowed to be executed, by the motherboard firmware.
|
||||
At the end of the day, that’s why you’re doing all this, to prevent an attack by launching unknown code.
|
||||
|
||||
\subsubsubsection{Manual signing}
|
||||
\label{sec:manual-signing}
|
||||
\paragraph{Manual signing}
|
||||
\label{par:manual-signing}
|
||||
|
||||
Of course, you can sign images yourself manually.
|
||||
In my case, I used this, to sign the boot loader, kernel and \texttt{initramfs} of my USB installation of Arch Linux.
|
||||
|
@ -1052,7 +1052,7 @@ In my case, I used this, to sign the boot loader, kernel and \texttt{initramfs}
|
|||
|
||||
If I update my kernel, boot loader, or create an updated \texttt{initramfs} on my Arch Linux USB installation, I have to sign those files again, in order to be able to boot it on my PC.
|
||||
|
||||
Of course you can always script and automate stuff, but if you want something more easy for day to day use, I really recommend that you try out \texttt{sbupdate}, which I will explain in the next section \nameref{sec:sbupdate}.
|
||||
Of course you can always script and automate stuff, but if you want something more easy for day to day use, I really recommend that you try out \texttt{sbupdate}, which I will explain in the next paragraph \nameref{par:sbupdate}.
|
||||
\end{NOTE}
|
||||
|
||||
For example, if I want to sign the kernel image of my USB installation, where I mounted the boot partition to \textit{/mnt/dustarchusb/boot}, I would have to do the following
|
||||
|
@ -1061,8 +1061,8 @@ For example, if I want to sign the kernel image of my USB installation, where I
|
|||
[root@archiso ~/sb]# sbsign --key /etc/efi-keys/db.key --cert /etc/efi-keys/db.crt --output /boot/vmlinuz-linux /boot/vmlinuz-linux
|
||||
\end{minted}
|
||||
|
||||
\subsubsubsection{\texttt{sbupdate}}
|
||||
\label{sec:sbupdate}
|
||||
\paragraph{\texttt{sbupdate}}
|
||||
\label{par:sbupdate}
|
||||
|
||||
\begin{packagetable}
|
||||
\texttt{AUR} & \texttt{sbupdate-git} \\
|
||||
|
@ -1185,7 +1185,7 @@ DustArch% sudo systemctl restart NetworkManager.service
|
|||
|
||||
and then try \texttt{ping}ing again.
|
||||
|
||||
If you’re trying to utilize a Wi-Fi connection, use \texttt{nmcli}, the \texttt{NetworkManager}'s command line tool, or \texttt{nmtui}, the \texttt{NetworkManager} terminal user interface, to connect to a Wi-Fi network.
|
||||
If you're trying to utilize a Wi-Fi connection, use \texttt{nmcli}, the \texttt{NetworkManager}'s command line tool, or \texttt{nmtui}, the \texttt{NetworkManager} terminal user interface, to connect to a Wi-Fi network.
|
||||
|
||||
\begin{NOTE}
|
||||
I never got \texttt{nmtui} to behave like I wanted it to, in my particular case at least, which is the reason why I use \texttt{nmcli} or the GUI tools.
|
||||
|
@ -2633,8 +2633,8 @@ You might consider using \texttt{vlc}
|
|||
|
||||
You can also make use of the plugins provided in the package list above.
|
||||
|
||||
\subsubsubsection{Showing keystrokes}
|
||||
\label{sec:showing-keystrokes}
|
||||
\paragraph{Showing keystrokes}
|
||||
\label{par:showing-keystrokes}
|
||||
|
||||
\begin{packagetable}
|
||||
\texttt{AUR} & \texttt{screenkey} \\
|
||||
|
|
145
dustdoc.cls
145
dustdoc.cls
|
@ -8,33 +8,38 @@
|
|||
|
||||
\RequirePackage[a5paper,margin=15mm]{geometry}
|
||||
|
||||
\RequirePackage{color}
|
||||
\RequirePackage{tcolorbox}
|
||||
|
||||
\RequirePackage{epstopdf}
|
||||
|
||||
\RequirePackage{amsmath}
|
||||
\RequirePackage{amssymb}
|
||||
\RequirePackage{amsthm}
|
||||
|
||||
\RequirePackage{array}
|
||||
\RequirePackage{caption}
|
||||
\RequirePackage{color}
|
||||
\RequirePackage{epstopdf}
|
||||
\RequirePackage{fix-cm}
|
||||
\RequirePackage{fontspec}
|
||||
\RequirePackage{graphicx}
|
||||
\RequirePackage[pdfpagelabels]{hyperref}
|
||||
\RequirePackage{hyphenat}
|
||||
\RequirePackage{microtype}
|
||||
\RequirePackage[newfloat]{minted}
|
||||
\RequirePackage{tcolorbox}
|
||||
\RequirePackage{titling}
|
||||
\RequirePackage{titlesec}
|
||||
\RequirePackage{titletoc}
|
||||
\RequirePackage{wrapfig}
|
||||
|
||||
\RequirePackage{longtable}
|
||||
\RequirePackage{tabu}
|
||||
|
||||
\RequirePackage{fix-cm}
|
||||
\RequirePackage{fontspec}
|
||||
|
||||
|
||||
\RequirePackage{graphicx}
|
||||
\RequirePackage{wrapfig}
|
||||
\graphicspath{ {images/} }
|
||||
\DeclareGraphicsExtensions{.png, .jpg, jpeg, .pdf}
|
||||
|
||||
%\pagecolor{black}
|
||||
\RequirePackage[newfloat]{minted}
|
||||
|
||||
\RequirePackage{microtype}
|
||||
\RequirePackage{hyphenat}
|
||||
|
||||
\RequirePackage{titling}
|
||||
\RequirePackage{titlesec}
|
||||
\RequirePackage{titletoc}
|
||||
|
||||
\RequirePackage[pdfpagelabels]{hyperref}
|
||||
|
||||
\hypersetup{
|
||||
colorlinks=true,
|
||||
|
@ -46,41 +51,12 @@
|
|||
\setminted{breaklines=true,breakanywhere=true,breakbytoken=false,breakbytokenanywhere=false,tabsize=4,frame=single,framesep=.5em,samepage=false}
|
||||
\setmintedinline{breaklines=true,breakanywhere=true,breakbytoken=false,breakbytokenanywhere=false}
|
||||
|
||||
|
||||
|
||||
\newcommand{\admonition}[2]{\textbf{#1}: {#2}}
|
||||
\newcommand{\rolered}[1]{ \textcolor{red}{#1} }
|
||||
\newcommand{\roleblue}[1]{ \textcolor{blue}{#1} }
|
||||
|
||||
\renewenvironment{quotation}
|
||||
{ \leftskip 4em \begin{em} }
|
||||
{\end{em}\par }
|
||||
|
||||
\def\signed#1{{\leavevmode\unskip\nobreak\hfil\penalty50\hskip2em
|
||||
\hbox{}\nobreak\hfil\raise-3pt\hbox{(#1)}%
|
||||
\parfillskip=0pt \finalhyphendemerits=0 \endgraf}}
|
||||
|
||||
\newsavebox\mybox
|
||||
|
||||
\newenvironment{aquote}[1]
|
||||
{\savebox\mybox{#1}\begin{quotation}}
|
||||
{\signed{\usebox\mybox}\end{quotation}}
|
||||
|
||||
\newenvironment{tquote}[1]
|
||||
{ {\bf #1} \begin{quotation} \\ }
|
||||
{ \end{quotation} }
|
||||
|
||||
\newenvironment{asciidocbox}
|
||||
{\leftskip6em\rightskip6em\par}
|
||||
{\par}
|
||||
|
||||
\newenvironment{titledasciidocbox}[1]
|
||||
{\leftskip6em\rightskip6em\par{\bf #1}\vskip-0.6em\par}
|
||||
{\par}
|
||||
|
||||
\newenvironment{preamble}
|
||||
{}
|
||||
{}
|
||||
\newtheorem{example}{Example}
|
||||
\newtheorem{note}{Note}
|
||||
|
||||
\newenvironment{sidebar}[2]
|
||||
{\begin{tcolorbox}
|
||||
|
@ -90,19 +66,6 @@
|
|||
\\#2}
|
||||
{\end{tcolorbox}}
|
||||
|
||||
\newenvironment{comment*}
|
||||
{\leftskip6em\rightskip6em\par}
|
||||
{\par}
|
||||
|
||||
\newenvironment{remark*}
|
||||
{\leftskip6em\rightskip6em\par}
|
||||
{\par}
|
||||
|
||||
\let\Contentsline\contentsline
|
||||
\renewcommand\contentsline[3]{\Contentsline{#1}{#2}{}}
|
||||
|
||||
|
||||
|
||||
\colorlet{admonitionBG}{black!5!white}
|
||||
\definecolor{draculaBlue}{HTML}{6272a4}
|
||||
\definecolor{draculaYellow}{HTML}{f1fa8c}
|
||||
|
@ -113,23 +76,23 @@
|
|||
\definecolor{draculaBG}{HTML}{282a36}
|
||||
|
||||
\newenvironment{NOTE}
|
||||
{\begin{tcolorbox}[before upper={\setlength{\parskip}{8pt}},colback=admonitionBG,coltitle=draculaFG,colframe=draculaBlue,colbacktitle=draculaBlue,title=NOTE]}
|
||||
{\begin{tcolorbox}[before upper={\setlength{\parskip}{0.5em}}, colback=admonitionBG,coltitle=draculaFG,colframe=draculaBlue,colbacktitle=draculaBlue,title=NOTE]}
|
||||
{\end{tcolorbox}}
|
||||
|
||||
\newenvironment{TIP}
|
||||
{\begin{tcolorbox}[before upper={\setlength{\parskip}{8pt}},colback=admonitionBG,coltitle=draculaBG,colframe=draculaYellow,colbacktitle=draculaYellow,title=TIP]}
|
||||
{\begin{tcolorbox}[before upper={\setlength{\parskip}{0.5em}},colback=admonitionBG,coltitle=draculaBG,colframe=draculaYellow,colbacktitle=draculaYellow,title=TIP]}
|
||||
{\end{tcolorbox}}
|
||||
|
||||
\newenvironment{IMPORTANT}
|
||||
{\begin{tcolorbox}[before upper={\setlength{\parskip}{8pt}},colback=admonitionBG,coltitle=draculaFG,colframe=draculaRed,colbacktitle=draculaRed,title=IMPORTANT]}
|
||||
{\begin{tcolorbox}[before upper={\setlength{\parskip}{0.5em}},colback=admonitionBG,coltitle=draculaFG,colframe=draculaRed,colbacktitle=draculaRed,title=IMPORTANT]}
|
||||
{\end{tcolorbox}}
|
||||
|
||||
\newenvironment{WARNING}
|
||||
{\begin{tcolorbox}[before upper={\setlength{\parskip}{8pt}},colback=admonitionBG,coltitle=draculaBG,colframe=draculaOrange,colbacktitle=draculaOrange,title=WARNING]}
|
||||
{\begin{tcolorbox}[before upper={\setlength{\parskip}{0.5em}},colback=admonitionBG,coltitle=draculaBG,colframe=draculaOrange,colbacktitle=draculaOrange,title=WARNING]}
|
||||
{\end{tcolorbox}}
|
||||
|
||||
\newenvironment{CAUTION}
|
||||
{\begin{tcolorbox}[before upper={\setlength{\parskip}{8pt}},colback=admonitionBG,coltitle=draculaBG,colframe=draculaPink,colbacktitle=draculaPink,title=CAUTION]}
|
||||
{\begin{tcolorbox}[before upper={\setlength{\parskip}{0.5em}},colback=admonitionBG,coltitle=draculaBG,colframe=draculaPink,colbacktitle=draculaPink,title=CAUTION]}
|
||||
{\end{tcolorbox}}
|
||||
|
||||
\newenvironment{packagetable}
|
||||
|
@ -138,63 +101,25 @@
|
|||
|
||||
\newenvironment{mintedlisting}{\captionsetup{format=plain,width=.75\textwidth,type=listing}}{}
|
||||
|
||||
|
||||
|
||||
\setcounter{secnumdepth}{5}
|
||||
\setcounter{tocdepth}{5}
|
||||
|
||||
\titleclass{\subsubsubsection}{straight}[\subsection]
|
||||
\newcounter{subsubsubsection}[subsubsection]
|
||||
\renewcommand\thesubsubsubsection{\thesubsubsection.\arabic{subsubsubsection}}
|
||||
\titleformat{\subsubsubsection}[hang]{\normalfont\normalsize\bfseries}{\thesubsubsubsection}{1em}{}
|
||||
\titlespacing*{\subsubsubsection}{0pt}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex}
|
||||
|
||||
\titleclass{\subsubsubsubsection}{straight}[\subsection]
|
||||
\newcounter{subsubsubsubsection}[subsubsubsection]
|
||||
\renewcommand\thesubsubsubsubsection{\thesubsubsubsection.\arabic{subsubsubsection}}
|
||||
\titleformat{\subsubsubsubsection}[hang]{\normalfont\normalsize\bfseries}{\thesubsubsubsubsection}{1em}{}
|
||||
\titlespacing*{\subsubsubsubsection}{0pt}{3.25ex plus 1ex minus .2ex}{1.5ex plus .2ex}
|
||||
|
||||
\renewcommand\theparagraph{\thesubsubsubsubsection.\arabic{paragraph}}
|
||||
|
||||
\makeatletter
|
||||
\renewcommand\paragraph{\@startsection{paragraph}{6}{\z@}%
|
||||
{3.25ex \@plus1ex \@minus.2ex}%
|
||||
{-1em}%
|
||||
{\normalfont\normalsize\bfseries}}
|
||||
\renewcommand\subparagraph{\@startsection{subparagraph}{7}{\parindent}%
|
||||
{3.25ex \@plus1ex \@minus .2ex}%
|
||||
{-1em}%
|
||||
{\normalfont\normalsize\bfseries}}
|
||||
\def\toclevel@subsubsubsection{4}
|
||||
\def\toclevel@subsubsubsubsection{5}
|
||||
\def\toclevel@paragraph{6}
|
||||
\def\toclevel@subparagraph{7}
|
||||
\makeatother
|
||||
|
||||
\newcommand{\chapterbreak}{\clearpage}
|
||||
\newcommand{\sectionbreak}{\clearpage}
|
||||
\newcommand{\subsectionbreak}{\clearpage}
|
||||
\newcommand{\subsubsectionbreak}{\clearpage}
|
||||
\newcommand{\subsubsubsectionbreak}{\clearpage}
|
||||
\newcommand{\subsubsubsubsectionbreak}{\clearpage}
|
||||
\dottedcontents{chapter}[1.2em]{}{1.2em}{1pc}
|
||||
\dottedcontents{section}[3.6em]{}{2.4em}{1pc}
|
||||
\dottedcontents{subsection}[6.0em]{}{3.6em}{1pc}
|
||||
\dottedcontents{subsubsection}[8.4em]{}{4.8em}{1pc}
|
||||
\dottedcontents{subsubsubsection}[10.8em]{}{6.0em}{1pc}
|
||||
\dottedcontents{subsubsubsubsection}[13.2em]{}{7.2em}{1pc}
|
||||
|
||||
|
||||
|
||||
\newcommand{\hreffn}[2]{\href{#1}{#2}\footnote{#1}}
|
||||
|
||||
\setlength{\parindent}{0pt}
|
||||
\setlength{\parskip}{8pt}
|
||||
\setlength{\parindent}{0.0pt}
|
||||
\setlength{\parskip}{0.5em}
|
||||
|
||||
\setcounter{secnumdepth}{3}
|
||||
\setcounter{tocdepth}{3}
|
||||
|
||||
\pagenumbering{gobble}
|
||||
|
||||
|
||||
|
||||
\renewcommand\maketitle{
|
||||
\begin{titlingpage}
|
||||
\begin{center}
|
||||
|
|
Loading…
Reference in New Issue