dr.tex

Parę osób pytało mnie ostatnio o szablon doktoratu w LaTeXu. W końcu wziąłem mój doktorat, poświęciłem kwadrans na przejrzenie preambuły i oto rezultat.

Uwaga!!!

Doświadczenie uczy, że większość osób przekleja cudzy kod do własnych dokumentów, w ogóle go nie czytając (por. cargo cult programming). Dlatego tutaj zastosowałem specjalne zabezpieczenie: poniższy kod nie będzie działał, jeśli nie poświęci się tych 20 minut na jego przeczytanie (i skasowanie rzeczy, które mnie się przydały, ale innym będą zupełnie zbędne; jeśli nie rozumiesz jakiegoś fragmentu, to możliwe, że jest Ci niepotrzebny; z drugiej strony, jest tu sporo użytecznych konstrukcji, które mogą się przydać wielu osobom – w razie wątpliwości najlepiej mnie zapytać). (Tym razem będę brutalny: jeśli ktoś sądzi, że może poświęcić kilka lat na napisanie doktoratu, a szkoda mu poświęcić czasu rzędu pół godziny, żeby tenże doktorat wyglądał przyzwoicie, to proszę bardzo – ale ja mu pomagać nie będę. Ile razy trzeba powtarzać, że forma naprawdę ma znaczenie?!) Jakby co, to ostrzegałem, tak?

Uwaga 2

W Wolnym Czasie™ mam zamiar trochę tu pogrzebać (np. dodać objaśnienia do ciekawszych konstrukcji), więc niewykluczone, że ktoś uzna, że warto śledzić zmiany na tej stronie.

%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%          Rozprawa doktorska
%%%%%%%%%%%%%%%%

\documentclass[oneside,12pt]{mwbk}

%%%%%%%% Packages
\usepackage{amsmath}
\usepackage{amsthm}
%\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{polski}
\usepackage[utf8]{inputenc}% nieszczęśni użytkownicy Windows powinni
                           % zmienić utf8 na cp1250
\usepackage[nobysame,initials]{amsrefs}
\usepackage{enumitem}
\usepackage{setspace}

%%%%%%%% Math symbols
%%%%%% Sets
\newcommand{\Rset}{{\mathbb{R}}}
\newcommand{\Rtwo}{\Rset^2}
\newcommand{\Rtwomax}{{\pair{\Rset^2,\norm\cdot_\infty}}}
\newcommand{\Rthreemax}{{\pair{\Rset^3,\norm\cdot_\infty}}}
\newcommand{\Rplus}{\interval[0,+\infty)}
\newcommand{\extRplus}{\interval[0,+\infty]}
%\newcommand{\extRplus}{{\overline{\Rset}_+}}
\newcommand{\Nset}{{\mathbb{N}}}
\newcommand{\Nzero}{{\Nset\join\set0}}
% \newcommand{\famF}{{\mathcal{F}}}
% \newcommand{\famT}{{\mathcal{T}}}
\newcommand{\famS}{\Sigma}
% \newcommand{\eX}{{\eps X}}
% \newcommand{\eeX}{{\eps\eps X}}
% \newcommand{\eK}{{\eps K}}
\newcommand{\spaceC}{\mathcal{C}}
\newcommand{\famA}{\mathcal{A}}
\newcommand{\interval}{}% void definition;)
\newcommand{\set}[1]{\{#1\}}
\newcommand{\bigset}[1]{\bigl\{#1\bigr\}}
\newcommand{\Bigset}[1]{\Bigl\{#1\Bigr\}}
\newcommand{\dset}[2]{\set{#1:#2}}
\newcommand{\iset}[2]{\set{#1}_{#2}}
\newcommand{\oset}[2]{\langle #1\rangle_{#2}}% ordered set
\newcommand{\bigdset}[2]{\bigset{#1:#2}}
\newcommand{\Bigdset}[2]{\Bigset{#1:#2}}
\newcommand{\bigiset}[2]{\bigset{#1}_{#2}}
\newcommand{\bigoset}[2]{\bigl\langle #1\bigr\rangle_{#2}}% ordered set
\newcommand{\limA}{{A_\infty}}
\newcommand{\limK}{{K_\infty}}
\newcommand{\calX}{\mathcal{X}}
\newcommand{\calU}{\mathcal{U}}
\newcommand{\uc}{\calU_c}
\newcommand{\uck}{\uc^\kappa}
%%%%%% Functions
\newcommand{\norm}[1]{\protect\lVert#1\protect\rVert}
\newcommand{\bignorm}[1]{\bigl\|#1\bigr\|}
\newcommand{\abs}[1]{\mathopen|#1\mathclose|}
\newcommand{\bigabs}[1]{\bigl|#1\bigr|}
\newcommand{\Bigabs}[1]{\Bigl|#1\Bigr|}
\newcommand{\biggabs}[1]{\biggl|#1\biggr|}
\newcommand{\supdset}[2]{\sup\dset{#1}{#2}}
\newcommand{\infdset}[2]{\inf\dset{#1}{#2}}
\newcommand{\seqlim}[1][n]{\lim_{#1\to\infty}}
\DeclareMathOperator{\diam}{diam}
% \DeclareMathOperator{\cov}{cov}
% \DeclareMathOperator{\re}{Re}
% \DeclareMathOperator{\im}{Im}
\DeclareMathOperator{\conv}{conv}
\newcommand{\clconv}[1]{\closure{\conv{#1}}}
\DeclareMathOperator{\adm}{adm}
\DeclareMathOperator{\Hconv}{Hconv}
\DeclareMathOperator{\esssup}{ess\,sup}
\DeclareMathOperator{\card}{card}
% \DeclareMathOperator{\id}{id}
\DeclareMathOperator{\Fix}{Fix}
\newcommand{\closure}[1]{\overline{#1}}
\newcommand{\boundary}[1]{\partial #1}
\newcommand{\join}{\cup}
\newcommand{\meet}{\cap}
\renewcommand{\Join}{\bigcup}
\newcommand{\Meet}{\bigcap}
\newcommand{\superpos}{\circ}
\newcommand{\ti}{\times}
% \DeclareMathOperator{\adm}{\mathcal{A}}
% \DeclareMathOperator{\Hc}{\mathcal{H}}
\newcommand{\projection}{P}
\newcommand{\pc}[1][C]{\projection_{#1}}
% \newcommand{\powerset}[1][X]{{\mathcal{P}(#1)}}
\newcommand{\powerset}[1][X]{{2^{#1}}}
\newcommand{\nepowerset}[1][X]{{\powerset[#1]\setminus\set\emptyset}}% nonempty
\newcommand{\bounded}[1][X]{{\mathcal{B}(#1)}}
\newcommand{\compact}[1][X]{{\mathcal{K}(#1)}}
\DeclareMathOperator{\dist}{dist}
\newcommand{\segment}[2]{[#1,#2]}
\newcommand{\ray}[2]{[#1,#2\protect\rangle}
\newcommand{\raypc}[1]{\ray{\pc(#1)}{#1}}
\newcommand{\hyq}[1][q]{h_{y,#1}}
\newcommand{\uq}[1][q]{u_{#1}}
\newcommand{\inv}{^{-1}}
% \newcommand{\mseg}[3][d]{[#2,#3]_{#1}}
\def\gmseg[#1,#2]#3{[#1,#2]_{#3}}% general metric segment
\def\mseg[#1,#2]{\gmseg[#1,#2]d}
\newcommand{\restricted}[1]{|_{#1}}
\newcommand{\exth}{{\widetilde h}}
%%%%%% Relations
\let\subset=\subseteq
\let\nsubset=\nsubseteq
\let\subsetne=\varsubsetneq
%\let\supset=\supseteq
\let\preceq=\preccurlyeq
\newcommand{\eqdef}{\mathrel{\mathop:}=} % równe z definicji
\newcommand{\qedef}{=\mathrel{\mathop:}} % równe z definicji
%%%%%% Accented letters
\newcommand{\extf}{{\tilde{f}}}
% \newcommand{\exti}{{\tilde{\imath}}}
% \newcommand{\extT}{{\widetilde{T}}}
% \newcommand{\extHomeo}{\widetilde{H}}% homeomorfizm
% \newcommand{\maxA}{{\mathchoice
%   {{\widetilde{A}}}
%   {{\widetilde{A}}}
%   {{\tilde{A}}}
%   {{\tilde{A}}}}}
% \newcommand{\maxY}{{\widetilde{Y}}}% tylko w Hahn--Banach Theorem --
%                                 % bez ind.
% \newcommand{\minH}{{\widetilde{H}}}% nie potrzeba głębokich indeksów!
% \let\minA=\maxA % ekstremalny, obojętnie -- min czy max
% \newcommand{\extr}{{\tilde{r}}}
% \newcommand{\hatf}{{\hat{f}}}
% \newcommand{\hatT}{{\hat{T}}}
% \newcommand{\hatA}{{\hat{A}}}
% \newcommand{\barB}{{\bar{B}}}
\newcommand{\intX}{{\widetilde{X}}}
% \newcommand{\complA}{{\widetilde{A}}}
\newcommand{\ball}{{\overline{B}}}
%%%%%% Greek and calligraphic letters
\newcommand{\eps}{\varepsilon}
\newcommand{\de}{\delta}
% \newcommand{\z}{\zeta}
% \newcommand{\ga}{\gamma}
% \newcommand{\Ga}{\Gamma}
\newcommand{\la}{\lambda}
\newcommand{\La}{\Lambda}
\newcommand{\Om}{\Omega}
\newcommand{\clOm}{{\closure\Om}}
\newcommand{\bOm}{{\boundary\Om}}
\newcommand{\I}{[0,1]}
%%%%%% Other
\newcommand{\limb}{{b_\infty}}
\newcommand{\limx}{{x_\infty}}
\newcommand{\limy}{{y_\infty}}
\newcommand{\map}[2]{\colon #1\to #2}
% \newcommand{\XtoRplus}[1][X]{\colon #1\to\Rplus}
\newcommand{\selfmap}[1]{\map{#1}{#1}}
\newcommand{\seq}[2][n=1]{\langle #2\rangle_{#1}^\infty}
\newcommand{\bigseq}[2][n=1]{\bigl\langle #2\bigr\rangle_{#1}^\infty}
\newcommand{\ordset}[1]{\protect\langle #1\protect\rangle}
\newcommand{\pair}[1]{\ordset{#1}}
\newcommand{\tuple}[1]{\ordset{#1}}
\newcommand{\Rhfragile}{$\mathbb{R}$\nobreakdash}% do R-drzew
\newcommand{\Rh}{\protect\Rhfragile}
% \newcommand{\spe}{\suppos e}% superpozycja z $e$
\newcommand{\iI}{{i\in I}}
\newcommand{\lL}{{\la\in\La}}
% \newcommand{\gG}{{\ga\in\Ga}}
\newcommand{\nN}[1][n]{{#1\in\Nset}}
% \newcommand{\li}{{\la,i}}
% \newcommand{\ipj}{i\preceq j}
\newcommand{\nempty}{\ne\emptyset}
% \newcommand{\intab}{\int_a^b}
% \newcommand{\F}[1]{F\bigl(#1\bigr)}
% \newcommand{\Kf}[1]{K(t,s)f\bigl(#1\bigr)}
% \newcommand{\astb}{a\le s\le t\le b}
% \newcommand{\intat}{\int_a^t}

%%%%%%%% Other definitions and declarations
\onehalfspacing
\allowdisplaybreaks[3]
\hyphenation{Hahna Zor-na}
\let\tu=\textup
\setenumerate[1]{label=\tu{\arabic*.},nolistsep}
\newenvironment{UWAGA}{
  \begin{quotation}\noindent\bfseries\textit{Uwaga!}}
  {\end{quotation}}
\let\defd=\emph % definiendum

\newcommand{\polishendash}{\unskip\discretionary{--}{--}{--}\nolinebreak}% do
                                % Kuratowskiego \polishendash Zorna itp.
\newcommand{\nquad}{\hskip -1em\relax}
\newcommand{\nqquad}{\hskip -2em\relax}
\let\articleit=\emph
\let\journalit=\emph

%%%%%%%% Theorem environments
\theoremstyle{plain}
\newtheorem{theorem}{Twierdzenie}[chapter]
\newtheorem{lemma}[theorem]{Lemat}
\newtheorem{proposition}[theorem]{Stwierdzenie}
\newtheorem{corollary}[theorem]{Wniosek}
\theoremstyle{definition}
\newtheorem{definition}{Definicja}[chapter]
\newtheorem{example}{Przykład}[chapter]
\theoremstyle{remark}
\newtheorem{remark}{Uwaga}[chapter]

\newcommand{\krok}[2]{%
  \par\noindent\textit{\textbf{Krok~#1.}\ #2.\ \ignorespaces}}
\newcommand{\wlasnosc}[2]{%
  \par\indent\textit{Własność~#1}.\ #2\par}
%%%%%%%% List environments
\newenvironment{alternatives}{%
  \begin{enumerate}[nolistsep,label=\textup{(\roman*)}]%
}{%
  \end{enumerate}
}
\newenvironment{equivconditions}{%
  \begin{enumerate}[label=\textup{(\arabic*)}]%
}{%
  \end{enumerate}
}
\newenvironment{simulconditions}{%
  \begin{enumerate}[label={$\arabic*^\circ$}]%
}{%
  \end{enumerate}
}
\newenvironment{simulconditionsresume}{%
  \begin{enumerate}[label={$\arabic*^\circ$},resume]%
}{%
  \end{enumerate}
}

%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%% Document body
%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}

\setlength{\abovedisplayskip}{3pt plus 3pt minus 1pt}
\setlength{\belowdisplayskip}{3pt plus 3pt minus 1pt}
% Z nieznanych mi przyczyn, te parametry są najwyraźniej resetowane przez
% \begin{document}.

%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%% Titlepage
\thispagestyle{empty}
\begin{center}
  \begin{LARGE}
    Uniwersytet im. Adama Mickiewicza w~Poznaniu\\
    Wydział Matematyki i~Informatyki\\
    \vspace{2.5cm}
    \begin{huge}
      Antoni Utor\\
    \end{huge}
    \vspace{2.5cm}
    \begin{Huge}
      \leftskip=-3cm plus 1fil\rightskip=-3cm plus 1fil
      Analiza kleksalna\par
    \end{Huge}% uwaga na spacje!!!
    \vspace{2.5cm}
    \begin{flushleft}
      \leftskip=0.5\hsize
      \Large
      Rozprawa doktorska\\
      napisana pod kierunkiem\\
      prof. dra hab.\\
      Ambrożego Kleksa\\
    \end{flushleft}
    \vspace{2.5cm}
    Poznań 1410
  \end{LARGE}  
\end{center}
\newpage


%%%%%% Podziękowania
\thispagestyle{empty}
\begin{flushright}
  \null\vfill
  \Large
  \itshape
  \rightskip=-1cm
  Składam serdeczne podziękowania\\
  Panu Doktorowi\\Paj-Chi-Wo\\
  za okazaną życzliwość\\
  oraz wskazówki udzielone mi podczas pisania pracy.\\
  \vspace{1cm}
\end{flushright}

%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%% Numeracja od początku
\newpage
\setcounter{page}{1}

%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%% TOC
\tableofcontents

%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%% Wstęp
\chapter*{Wstęp}
Bla, bla, bla...

%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%
\chapter{Preliminaria}
\label{cha:prelim}

Ple, ple, ple...


%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%% Bibliografia
\begin{bibchapter}
\raggedright
\begin{biblist}
  \bib{art00}{article}{
    author={Uthor, Alexander},
    title={A fascinating paper},
    journal={Journal of Useless Theories},
    volume={3},
    number={92},
    year={1415},
    pages={65--358},
  }
\end{biblist}
\end{bibchapter}


%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%% End
%%%%%%%%%%%%%%%%%%%%%%%%
\end{document}

KategoriaTeX, KategoriaLaTeX