% \iffalse meta-comment -*- doctex -*-
%
% Copyright 2000-2003,2008-2009,2017 by Marcin Woli\'nski
%
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.2
% of this license or (at your option) any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.2 or later is part of all distributions of LaTeX
% version 1999/12/01 or later.
%
% \fi
% \CheckSum{3809}
%
% \iffalse
% \section{Identification}
%
% These document classes can only be used with \LaTeXe, so we make
% sure that an appropriate message is displayed when another \TeX{}
% format is used.
% \begin{macrocode}
%\NeedsTeXFormat{LaTeX2e}[1995/12/01]
% \end{macrocode}
%
% Announce the Class name and its version:
% \begin{macrocode}
%\ProvidesClass{mwart}
%\ProvidesClass{mwrep}
%\ProvidesClass{mwbk}
%<10pt&!bk>\ProvidesFile{mw10.clo}
%<11pt&!bk>\ProvidesFile{mw11.clo}
%<12pt&!bk>\ProvidesFile{mw12.clo}
%<10pt&bk>\ProvidesFile{mwbk10.clo}
%<11pt&bk>\ProvidesFile{mwbk11.clo}
%<12pt&bk>\ProvidesFile{mwbk12.clo}
%<*driver>
\ProvidesFile{mwcls.drv}
%
[2017/05/13 v0.75
% A LaTeX document class (MW)]
%<10pt|11pt|12pt> A document class size option (MW)]
%\typeout{*** Beta version. Formatting may change}
%\typeout{*** in future versions of this class.}
% \end{macrocode}
%
% \section{A driver for this document}
%
% The next bit of code contains the documentation driver file for
% \TeX{}, i.e., the file that will produce the documentation you are
% currently reading. It will be extracted from this file by the
% {\sc docstrip} program.
%
% \begin{macrocode}
%<*driver>
]
\documentclass[sfheadings]{mwart}
\usepackage{doc}
\usepackage{polski}
\usepackage[utf8]{inputenc}
\usepackage[hidelinks]{hyperref}
% \end{macrocode}
%
% We don't want everything to appear in the index
% \begin{macrocode}
\DoNotIndex{\',\.,\@M,\@@input,\@Alph,\@alph,\@addtoreset,\@arabic}
\DoNotIndex{\@badmath,\@centercr,\@cite}
\DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue}
\DoNotIndex{\@input,\@ixpt,\@m,\@minus,\@mkboth}
\DoNotIndex{\@ne,\@nil,\@nomath,\@plus,\roman,\@set@topoint}
\DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb}
\DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt}
\DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt}
\DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace}
\DoNotIndex{\advance,\ast,\begin,\begingroup,\bfseries,\bgroup,\box}
\DoNotIndex{\bullet}
\DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption}
\DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass}
\DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist}
\DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup}
\DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter}
\DoNotIndex{\fbox}
\DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef}
\DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule}
\DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi}
\DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi}
\DoNotIndex{\input}
\DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark}
\DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright}
\DoNotIndex{\month,\newcommand,\newcounter,\newenvironment}
\DoNotIndex{\NeedsTeXFormat,\newdimen}
\DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number}
\DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@}
\DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip}
\DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions}
\DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright}
\DoNotIndex{\refstepcounter,\relax,\renewcommand}
\DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily}
\DoNotIndex{\secdef,\selectfont,\setbox,\setcounter,\setlength}
\DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space}
\DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase}
\DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt}
\DoNotIndex{\viipt,\vipt,\vskip,\vspace}
\DoNotIndex{\wd,\xiipt,\year,\z@}
% \end{macrocode}
% We do want an index, using linenumbers
% \begin{macrocode}
\EnableCrossrefs
\CodelineIndex
\RecordChanges
% \end{macrocode}
% We use so many \file{docstrip} modules that we set the
% \texttt{StandardModuleDepth} counter to 1.
% \begin{macrocode}
\setcounter{StandardModuleDepth}{1}
% \end{macrocode}
% The following command retrieves the date and version information
% from the file.
% \begin{macrocode}
\GetFileInfo{mwcls.drv}
% \end{macrocode}
% Some commonly used abbreviations
% \changes{v1.2w}{1994/12/01}{Use \cs{newcommand*}}
% \begin{macrocode}
\newcommand*{\Lopt}[1]{\textsf {#1}}
\newcommand*{\file}[1]{\texttt {#1}}
\newcommand*{\Lcount}[1]{\textsl {\small#1}}
\newcommand*{\pstyle}[1]{\textsl {#1}}
\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
\newcommand*\env{\texttt}
% \end{macrocode}
% We also want the full details.
% \begin{macrocode}
\begin{document}
\MakeShortVerb{\|} \catcode`\^^A=14
^^A inputenc makes ^^A active!!!??!!???
\DocInput{mwcls.dtx}
\PrintIndex
\PrintChanges
\end{document}
%
% \end{macrocode}
%
% \fi ^^A End of meta-comment.
%
%
% \title{\texttt{mwcls.dtx}\\
% \textbf{M}y O\textbf{w}n Document \textbf{Cl}a\textbf{s}ses
% for \LaTeX{}\\
% \textbf{M}oje \textbf{w}łasne \textbf{kl}a\textbf{s}y dokumentów}
% \date{version/wersja \fileversion\ (\filedate)}
% \author{\textbf{M}arcin \textbf{W}oliński}
% \maketitle
%
% \textbf{METAUWAGA:} Ten plik jest dziełem w~trakcie powstawania.
% Zacząłem od najświeższego pliku classes.dtx i stopniowo go
% modyfikuję. Miejsca, które już odwiedziłem są znamienne pojawieniem
% się fragmentów dokumentacji po polsku. [Koniec metauwagi]
%
% \tableofcontents
%
%
% \StopEventually{} ^^A
%
%
%
% Niniejsze klasy powstały poprzez stopniową modyfikację standardowych
% klas \LaTeX a. Ponieważ nigdy nie istniały dla \LaTeX a 2.09,
% zacząłem od wyrzucenia wszystkich fragmentów zwązanych z~trybem
% kompatybilności.
%
% Podobnie jak w~przypadku klas standardowych, właściwe pliki klas
% (\texttt{mwart.cls}, \texttt{mwrep.cls}, \texttt{mwbk.cls},
% \texttt{mw10.clo}, \texttt{mw11.clo} i~\texttt{mw12.clo}) są
% generowane z~niniejszego dokumentu przy pomocy programu DOCSTRIP.
% Pozwala to nie tylko opatrzyć program obfitymi komentarzami (nie,
% żebym miał taki zamiar \texttt{:-)}), ale i~wygenerować powtarzające
% się fragmenty definicji z~jednego źródła. Fragmenty te są
% oznakowane dla DOCSTRIPa następującymi flagami:
% \begin{center}
% \begin{tabular}{ll}
% article & klasa `artykuł'\\
% report & klasa `raport'\\
% book & klasa `książka'\\
% size10 & kod obsługujący opcję \texttt{10pt}\\
% size11 & kod obsługujący opcję \texttt{11pt}\\
% size12 & kod obsługujący opcję \texttt{12pt}\\
% bk10 & produce the book class option for 10pt\\
% bk11 & produce the book class option for 11pt\\
% bk12 & produce the book class option for 12pt\\
% driver & kod pozwalający przetworzyć plik \texttt{mwcls.dtx} jako
% dokument \LaTeX a\\
% \end{tabular}
% \end{center}
%
% \section{Initial Code}
%
% In this part we define a few commands that are used later on.
%
% \begin{macro}{\@ptsize}
% To makro w klasach standardowych przechowuje drugą cyfrę
% podstawowego stopnia pisma dokumentu. Autorzy \LaTeX a sądzą, że
% istnieją pakiety, którym zależy na tej informacji. Dlatego też
% (bez przekonania) zachowujemy to makro.
% \begin{macrocode}
%<*article|report|book>
\newcommand\@ptsize{}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\if@restonecol}
% To jest przełącznik wskazujący konieczność przywrócenia układu
% dwułamowego (po jakiejś wstawce wymagającej jednego łamu).
% \begin{macrocode}
\newif\if@restonecol
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\if@titlepage}
% A switch to indicate if a titlepage has to be produced. For the
% article document class the default is not to make a separate
% titlepage.
% \begin{macrocode}
\newif\if@titlepage
%\@titlepagefalse
%\@titlepagetrue
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\if@openright}
% A switch to indicate if chapters must start on a right-hand page.
% The default for the report class is no; for the book class it's
% yes.
% \begin{macrocode}
%\newif\if@openright
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\if@mainmatter}
% Przełącznik |\if@mainmatter|, używany w~klasie book, wskazuje czy
% jesteśmy w~głownej części książki.
% \begin{macrocode}
%\newif\if@mainmatter \@mainmattertrue
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ifHeadingNumbered}
% Ten przełącznik służy do sygnalizowania, czy dany nagłówek ma być
% poprzedzony numerem.
% \begin{macrocode}
\newif\ifHeadingNumbered
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\l@nohyphenation}
% Tutaj upewniamy się, że jest zdefiniowany ,,język'' bez wzorców
% przenoszenia. Taki ,,język'' jest bardzo użyteczny do lokalnego
% wyłączania przenoszenia wyrazów.
% \begin{macrocode}
\ifx\l@nohyphenation\@undefined
\newlanguage\l@nohyphenation
\fi
% \end{macrocode}
% \end{macro}
%
% \section{Opcje klasy}
%
%
% \subsection*{Formaty papieru}
%
% [Przydało by się tu coś dodać]
% The variables |\paperwidth| and |\paperheight| should reflect the
% physical paper size after trimming. For desk printer output this
% is usually the real paper size since there is no post-processing.
% Classes for real book production will probably add other paper
% sizes and additionally the production of crop marks for trimming.
% \begin{macrocode}
\DeclareOption{a4paper}
{\setlength\paperheight {297mm}%
\setlength\paperwidth {210mm}}
\DeclareOption{a5paper}
{\setlength\paperheight {210mm}%
\setlength\paperwidth {148mm}}
\DeclareOption{a6paper}
{\setlength\paperheight {148mm}%
\setlength\paperwidth {105mm}}
\DeclareOption{b4paper}
{\setlength\paperheight {353mm}%
\setlength\paperwidth {250mm}}
\DeclareOption{b5paper}
{\setlength\paperheight {250mm}%
\setlength\paperwidth {176mm}}
\DeclareOption{b6paper}
{\setlength\paperheight {176mm}%
\setlength\paperwidth {125mm}}
\DeclareOption{letterpaper}
{\setlength\paperheight {11in}%
\setlength\paperwidth {8.5in}}
\DeclareOption{legalpaper}
{\setlength\paperheight {14in}%
\setlength\paperwidth {8.5in}}
\DeclareOption{executivepaper}
{\setlength\paperheight {10.5in}%
\setlength\paperwidth {7.25in}}
% \end{macrocode}
%
% The option \Lopt{landscape} switches the values of |\paperheight|
% and |\paperwidth|, assuming the dimensions were given for portrait
% paper.
% \begin{macrocode}
\DeclareOption{landscape}
{\setlength\@tempdima {\paperheight}%
\setlength\paperheight {\paperwidth}%
\setlength\paperwidth {\@tempdima}}
% \end{macrocode}
% Opcja \Lopt{wide} powoduje stosowanie minimalnych marginesów.
% \begin{macrocode}
\newif\if@wide
\DeclareOption{wide}
{\@widetrue}
% \end{macrocode}
% Opcje \Lopt{withmarginpar} i~\Lopt{withoutmarginpar} decydują, czy
% zostawiamy na stronie miejsce na marginalia.
% \begin{macrocode}
\newif\if@marginparsused
\DeclareOption{withmarginpar}
{\@marginparsusedtrue}
\DeclareOption{withoutmarginpar}
{\@marginparsusedfalse}
% \end{macrocode}
%
% \subsection*{Wybór podstawowego stopnia pisma}
%
% \begin{macrocode}
\newcommand\mw@usedd{\p@=1dd
\def\@vpt{5dd}%
\def\@vipt{6dd}%
\def\@viipt{7dd}%
\def\@viiipt{8dd}%
\def\@ixpt{9dd}%
\def\@xpt{10dd}%
\def\@xipt{11dd}%
\def\@xiipt{12dd}%
\def\@xivpt{14dd}%
\def\@xviipt{16dd}%
\def\@xxpt{18dd}%
\def\@xxvpt{24dd}%
}
\DeclareOption{10pt}{\renewcommand\@ptsize{0}\def\@basesize{10}}
\DeclareOption{10dd}{\renewcommand\@ptsize{0}\def\@basesize{10}\@usedd}
\DeclareOption{11pt}{\renewcommand\@ptsize{1}\def\@basesize{11}}
\DeclareOption{12pt}{\renewcommand\@ptsize{2}\def\@basesize{12}}
% \end{macrocode}
%
%
% \subsection*{Two-side or one-side printing}
%
% For two-sided printing we use the switch |\if@twoside|. In
% addition we have to set the |\if@mparswitch| to get any margin
% paragraphs into the outside margin.
% \begin{macrocode}
\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
% \end{macrocode}
%
%
% \subsection*{Draft option}
%
% If the user requests \Lopt{draft} we show any overfull boxes.
% We could probably add some more interesting stuff to this option.
% \begin{macrocode}
\DeclareOption{draft}{\setlength\overfullrule{5pt}}
\DeclareOption{final}{\setlength\overfullrule{0pt}}
% \end{macrocode}
%
% \subsection*{Titlepage option}
% An article usually has no separate titlepage, but the user can
% request one.
% \begin{macrocode}
\DeclareOption{titlepage}{\@titlepagetrue}
\DeclareOption{notitlepage}{\@titlepagefalse}
% \end{macrocode}
%
% \subsection*{openright option}
% This option determines whether or not a chapter must start on
% a right-hand page.
% \begin{macrocode}
%\@openrighttrue
%\DeclareOption{openright}{\@openrighttrue}
%\DeclareOption{openany}{\@openrightfalse}
% \end{macrocode}
%
% \subsection*{Twocolumn printing}
%
% Two-column and one-column printing is again realized via a switch.
% \begin{macrocode}
\DeclareOption{onecolumn}{\@twocolumnfalse}
\DeclareOption{twocolumn}{\@twocolumntrue}
% \end{macrocode}
%
% \subsection*{Equation numbering on the left}
%
% The option \Lopt{leqno} can be used to get the equation numbers
% on the left side of the equation. It loads code which is generated
% automatically from the kernel files when the format is built.
% If the equation number does get a special formatting then instead
% of using the kernel file the class would need to provide the code
% explicitly.
% \begin{macrocode}
\DeclareOption{leqno}{\input{leqno.clo}}
% \end{macrocode}
%
% \subsection*{Flush left displays}
%
% The option \Lopt{fleqn} redefines the displayed math environments
% in such a way that they come out flush left, with an indentation
% of |\mathindent| from the prevailing left margin. It loads
% code which is generated
% automatically from the kernel files when the format is built.
% \begin{macrocode}
\DeclareOption{fleqn}{\input{fleqn.clo}}
% \end{macrocode}
%
% \subsection*{Open bibliography}
%
% The option \Lopt{openbib} produces the ``open'' bibliography
% style, in which each block starts on a new line, and succeeding
% lines in a block are indented by |\bibindent|.
% \begin{macrocode}
\DeclareOption{openbib}{%
% \end{macrocode}
% First some hook into the bibliography environment is filled.
% \begin{macrocode}
\AtEndOfPackage{%
\renewcommand\@openbib@code{%
\advance\leftmargin\bibindent
\itemindent -\bibindent
\listparindent \itemindent
\parsep \z@
}%
% \end{macrocode}
% In addition the definition of |\newblock| is overwritten.
% \begin{macrocode}
\renewcommand\newblock{\par}}%
}
% \end{macrocode}
%
% \subsection*{Krój pisma tytulariów}
% Następne opcje służą do wyboru kroju (rodziny fontów), którym
% składane będą nagłówki rozdziałów.
% \changes{0.74}{2009/09/27}{Zmiana nazw poleceń \cs{...setup} na
% \cs{...settings} dla kompatydebilności z caption.sty}
% \begin{macrocode}
\newcommand*\sectsettings{\bfseries}
\newcommand*\titlesettings{}
\DeclareOption{rmheadings}{%
\def\sectsettings{\rmfamily\bfseries}%
\def\titlesettings{\rmfamily}%
}
\DeclareOption{sfheadings}{%
\def\sectsettings{\sffamily\bfseries}%
\def\titlesettings{\sffamily}%
}
% \end{macrocode}
%
% \subsection*{Stopień pisma w~środowiskach przemieszczalnych}
%
% \begin{macrocode}
\newcommand*\captionsettings{\small}
\DeclareOption{floatssmall}{%
\def\figuresettings{\small}%
\def\tablesettings{\small}%
}
\DeclareOption{floatsnormalsize}{%
\def\figuresettings{\normalsize}%
\def\tablesettings{\normalsize}%
}
% \end{macrocode}
%
%
% \subsection*{Kolejność informacji w tytule}
% Te opcje sterują kolejnością umieszczenia na karcie tytułowej
% autora i tytułu publikacji.
% \begin{macrocode}
\newif\if@authorfirst
\DeclareOption{authortitle}{\@authorfirsttrue}
\DeclareOption{titleauthor}{\@authorfirstfalse}
% \end{macrocode}
%
% \subsection*{Wciecia po tytułach}
% \begin{macrocode}
\DeclareOption{indentfirst}{\@afterindenttrue}
\DeclareOption{noindentfirst}{\@afterindentfalse}
% \end{macrocode}
%
% \subsection*{Opcje domyślne}
%
% Dla wszystkich klas domyślny jest skład jednołamowy pismem
% 10-punktowym na papierze formatu A4. Dla książki domyślny jest
% druk dwustronny.
% \begin{macrocode}
%<*article>
\ExecuteOptions{a4paper,10pt,oneside,onecolumn,%
final,authortitle,withoutmarginpar,indentfirst,floatsnormalsize}
%
%<*report>
\ExecuteOptions{a4paper,10pt,oneside,onecolumn,%
final,openany,authortitle,withoutmarginpar,indentfirst,floatsnormalsize}
%
%<*book>
\ExecuteOptions{a4paper,10pt,twoside,onecolumn,%
final,openright,authortitle,withoutmarginpar,indentfirst,floatsnormalsize}
%
% \end{macrocode}
%
% \begin{macrocode}
\ProcessOptions
% \end{macrocode}
% Now that all the options have been executed we can load the
% chosen class option file that contains all size dependent code.
% \begin{macrocode}
%\input{mw\@basesize.clo}
%\input{mwbk\@basesize.clo}
%
% \end{macrocode}
%
% \section{Przeróbki w~kernelu \LaTeX a}
%
% \begin{macro}{\markboth}
% Dla naszych celów konieczne jest aby w~makrze \cs{@themark}
% przechowywana była rozwinięta postać argumentów (chcemy bowiem
% pewne wartości wprowadzać przez chwilowo definiowane nazwy
% symboliczne). Nie narusza to kompatybilności, bo argumenty i~tak były
% rozwijane w~momencie wykonania \cs{mark}a.
%
% W~jądrze \LaTeX a z~datą 2000/06/01 nastąpiły pożądane przez nas
% zmiany. Można by więc wyrzucić nasze definicje. Aby jednak
% umożliwić używanie zarówno starszego formatu jak i~nowego
% zapożyczamy definicje z~nowego kernela. (Wyrzucimy je za rok).
% \changes{v0.52}{2001/10/04}{Definicje markright/both pobrane
% z~nowego kernela}
% \begin{macrocode}
%<*article|report|book>
\def\markboth#1#2{%
\begingroup
\let\label\relax \let\index\relax \let\glossary\relax
\unrestored@protected@xdef\@themark {{#1}{#2}}%
\@temptokena \expandafter{\@themark}%
\mark{\the\@temptokena}%
\endgroup
\if@nobreak\ifvmode\nobreak\fi\fi}
\def\markright#1{%
\begingroup
\let\label\relax \let\index\relax \let\glossary\relax
\expandafter\@markright\@themark {#1}%
\@temptokena \expandafter{\@themark}%
\mark{\the\@temptokena}%
\endgroup
\if@nobreak\ifvmode\nobreak\fi\fi}
\def\@markright#1#2#3{\@temptokena {#1}%
\unrestored@protected@xdef\@themark{{\the\@temptokena}{#3}}}
% \def\markboth#1#2{{%
% \let\protect\@unexpandable@protect
% \let\label\relax \let\index\relax \let\glossary\relax
% \xdef\@themark{{#1}{#2}}%
% \mark{\@themark}}\if@nobreak\ifvmode\nobreak\fi\fi}
% \def\markright#1{{\let\protect\@unexpandable@protect
% \let\label\relax \let\index\relax \let\glossary\relax
% \expandafter\@markright\@themark
% {#1}\mark{\@themark}}\if@nobreak\ifvmode\nobreak\fi\fi}
% \def\@markright#1#2#3{\xdef\@themark{{#1}{#3}}}
%
% \end{macrocode}
% \end{macro}
%
% \section{Projekt typograficzny dokumentu}
% \label{sec:maincode}
%
% In this section we are finally dealing with the nasty typographical
% details.
%
% \subsection{Stopnie pisma}
%
% \LaTeX\ offers the user commands to change the size of the font,
% relative to the `main' size. Each relative size changing command
% |\size| executes the command
% |\@setfontsize||\size|\meta{font-size}\meta{baselineskip} where:
%
% \begin{description}
% \item[\meta{font-size}] The absolute size of the font to use from
% now on.
%
% \item[\meta{baselineskip}] The normal value of |\baselineskip|
% for the size of the font selected. (The actual value will be
% |\baselinestretch| * \meta{baselineskip}.)
% \end{description}
%
% A number of commands, defined in the \LaTeX{} kernel, shorten the
% following definitions and are used throughout. They are:
% \begin{center}
% \begin{tabular}{ll@{\qquad}ll@{\qquad}ll}
% \verb=\@vpt= & 5 & \verb=\@vipt= & 6 & \verb=\@viipt= & 7 \\
% \verb=\@viiipt= & 8 & \verb=\@ixpt= & 9 & \verb=\@xpt= & 10 \\
% \verb=\@xipt= & 10.95 & \verb=\@xiipt= & 12 & \verb=\@xivpt= & 14.4\\
% ...
% \end{tabular}
% \end{center}
%
% \begin{macro}{\normalsize}
% \begin{macro}{\@normalsize}
% The user level command for the main size is |\normalsize|.
% Internally \LaTeX{} uses |\@normalsize| when it refers to the
% main size. |\@normalsize| will be defined to work like
% |\normalsize| if the latter is redefined from its default
% definition (that just issues an error message). Otherwise
% |\@normalsize| simply selects a 10pt/12pt size.
%
% The |\normalsize| macro also sets new values for\\
% |\abovedisplayskip|, |\abovedisplayshortskip| and
% |\belowdisplayshortskip|.
%
% \begin{macrocode}
%<*10pt|11pt|12pt>
\renewcommand\normalsize{%
%<*10pt>
\@setfontsize\normalsize\@xpt\@xiipt
\abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
%10pt>
%<*11pt>
\@setfontsize\normalsize\@xipt{13.6}%
\abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
%11pt>
%<*12pt>
\@setfontsize\normalsize\@xiipt{14.5}%
\abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
%12pt>
% \end{macrocode}
% The |\belowdisplayskip| is always equal to the
% |\abovedisplayskip|.
% \begin{macrocode}
\belowdisplayskip \abovedisplayskip
}
% \end{macrocode}
%
% Teraz wywołamy właśnie zdefiniowane polecenie \cs{normalsize},
% aby móc się dalej odwoływać do wartości rejestru
% \cs{baselineskip}, oraz by jednostka \texttt{em} uzyskała
% właściwą interpretację.
% \begin{macrocode}
\normalsize
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\small}
% This is similar to |\normalsize|.
% \begin{macrocode}
\newcommand\small{%
%<*10pt>
\@setfontsize\small\@ixpt{11}%
\abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@
\abovedisplayshortskip \z@ \@plus2\p@
\belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
%10pt>
%<*11pt>
\@setfontsize\small\@xpt\@xiipt
\abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
%11pt>
%<*12pt>
\@setfontsize\small\@xipt{13.6}%
\abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
%12pt>
\belowdisplayskip \abovedisplayskip
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\footnotesize}
% This is similar to |\normalsize|.
% \begin{macrocode}
\newcommand\footnotesize{%
%<*10pt>
\@setfontsize\footnotesize\@viiipt{9.5}%
\abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@
\abovedisplayshortskip \z@ \@plus\p@
\belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
%10pt>
%<*11pt>
\@setfontsize\footnotesize\@ixpt{11}%
\abovedisplayskip 8\p@ \@plus2\p@ \@minus4\p@
\abovedisplayshortskip \z@ \@plus\p@
\belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
%11pt>
%<*12pt>
\@setfontsize\footnotesize\@xpt\@xiipt
\abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
%12pt>
\belowdisplayskip \abovedisplayskip
}
%10pt|11pt|12pt>
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\scriptsize}
% \begin{macro}{\tiny}
% \begin{macro}{\large}
% \begin{macro}{\Large}
% \begin{macro}{\LARGE}
% \begin{macro}{\huge}
% \begin{macro}{\Huge}
% These are all much simpler than the previous macros, they just
% select a new fontsize, but leave the parameters for displays and
% lists alone.
% \begin{macrocode}
%<*10pt>
\newcommand\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt}
\newcommand\tiny{\@setfontsize\tiny\@vpt\@vipt}
\newcommand\large{\@setfontsize\large\@xiipt{14}}
\newcommand\Large{\@setfontsize\Large\@xivpt{18}}
\newcommand\LARGE{\@setfontsize\LARGE\@xviipt{22}}
\newcommand\huge{\@setfontsize\huge\@xxpt{25}}
\newcommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
%10pt>
%<*11pt>
\newcommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
\newcommand\tiny{\@setfontsize\tiny\@vipt\@viipt}
\newcommand\large{\@setfontsize\large\@xiipt{14}}
\newcommand\Large{\@setfontsize\Large\@xivpt{18}}
\newcommand\LARGE{\@setfontsize\LARGE\@xviipt{22}}
\newcommand\huge{\@setfontsize\huge\@xxpt{25}}
\newcommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
%11pt>
%<*12pt>
\newcommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}}
\newcommand\tiny{\@setfontsize\tiny\@vipt\@viipt}
\newcommand\large{\@setfontsize\large\@xivpt{18}}
\newcommand\Large{\@setfontsize\Large\@xviipt{22}}
\newcommand\LARGE{\@setfontsize\LARGE\@xxpt{25}}
\newcommand\huge{\@setfontsize\huge\@xxvpt{30}}
\let\Huge=\huge
%12pt>
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
%
% \begin{macro}{\secondarysize}
% Wedle polskich zwyczajów nie tylko przypisy (notki) ale i
% wszystkie poboczne części tekstu jak bibliografia, spisy treści,
% tabel, rysunków, skorowidz itp. są składane pismem o jeden lub
% dwa stopnie mniejszym od podstwowego. Ten stopień pisma włącza
% polecenie \cs{secondarysize}. Domyślnie ustawiamy je na jeden
% stopień mniejsze.
% \begin{macrocode}
\def\secondarysize{\small}
% \end{macrocode}
% \end{macro}
%
% \subsection{Parametry akapitów}
%
% \begin{macro}{\lineskip}
% \begin{macro}{\normallineskip}
% Wartości \cs{lineskip} i \cs{lineskiplimit} ustawiamy jak zwykle:
% \begin{macrocode}
%<*article|report|book>
\setlength\lineskip{1\p@}
\setlength\normallineskip{1\p@}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\baselinestretch}
% Makro \cs{baselinestretch} służy jako mnożnik \cs{baselineskip}
% do uzyskiwania ,,podwójnego odstępu''. Domyślnie jest puste.
% \begin{macrocode}
\renewcommand\baselinestretch{}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\parskip}
% \begin{macro}{\parindent}
% W naszych klasach stosujemy klasyczny układ akapitów z~wcięciem
% pierwszego wiersza i bez odstępów między akapitami. Zgodnie
% z~polskimi zaleceniami wcięcie akapitowe powinno wynosić 1 do 1,5
% fireta. Zatem w~układzie dwułamowym stosujemy 1em, w
% jednołamowym 1,5em wcięcia (być może lepiej byłoby uzależnić
% wcięcie bezpośrednio od szerokości łamu).
% \begin{macrocode}
\setlength\parskip{\z@}
\if@twocolumn
\setlength\parindent{1em}
\else
\setlength\parindent{1.5em}
\fi
\newdimen\@parindent
%%\parindent32pt % wartość testowa. Wyrzucic!
\@parindent\parindent
%
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\smallskipamount}
% \begin{macro}{\medskipamount}
% \begin{macro}{\bigskipamount}
% Te wartości ustawiamy odpowiednio na ćwierć, pół i całą
% podstawową interlinię (zatem wartość zależy od podstawowego
% stopnia pisma dokumentu).
% \begin{macrocode}
%<*10pt|11pt|12pt>
\setlength\smallskipamount{.25\baselineskip \@plus.125\baselineskip
\@minus.0625\baselineskip}
\setlength\medskipamount{.5\baselineskip \@plus.25\baselineskip
\@minus.125\baselineskip}
\setlength\bigskipamount{1\baselineskip \@plus.5\baselineskip
\@minus.25\baselineskip}
%10pt|11pt|12pt>
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\@lowpenalty}
% \begin{macro}{\@medpenalty}
% \begin{macro}{\@highpenalty}%
% The commands |\nopagebreak| and |\nolinebreak| put in penalties
% to discourage these breaks at the point they are put in.
% They use |\@lowpenalty|, |\@medpenalty| or |\@highpenalty|,
% dependent on their argument.
% \begin{macrocode}
%<*article|report|book>
\@lowpenalty 51
\@medpenalty 151
\@highpenalty 301
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\hyphenpenalty}
% \begin{macro}{\exhyphenpenalty}
% Wartość \cs{hyphenpenalty} ustawiamy na 100 --- nieco więcej niż
% w~klasach standardowych. Natomiast \cs{exhyphenpenalty} na
% 10000. Uzasadnienie tej ostatniej wartości jest takie:
% łamanie wiersza na dywizie wymaga powtórzenia go na początku
% następnego wiersza. Takiego zachowania nie da się w~sensowny
% sposób uzyskać przy pomocy znaku \texttt{-}. Dlatego blokujemy
% łamanie na takim dywizie, jak również na myślniku --- po polsku
% myślnik ma po sobie łamliwą spację.
% \begin{macrocode}
\hyphenpenalty=100
\exhyphenpenalty=10000
% \end{macrocode}
% \end{macro}
% \end{macro}
% \begin{macro}{\clubpenalty}
% \begin{macro}{\widowpenalty}
% Bękarty są wedle polskich zwyczajów błędem składu. Dlatego
% stosujemy wartość \cs{widowpenalty} zabraniającą takiego łamania
% strony. Szewce formalnie nie są błędem, ale też staramy się ich
% unikać.
% \begin{macrocode}
\widowpenalty 10000
\clubpenalty 5000
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\displaywidowpenalty}
% \begin{macro}{\predisplaypenalty}
% \begin{macro}{\postdisplaypenalty}
% Discourage (but not so much) widows in front of a math display
% and forbid breaking directly in front of a display. Allow break
% after a display without a penalty.
% \begin{macrocode}
\displaywidowpenalty 5000
% \predisplaypenalty 10000
% \postdisplaypenalty 0
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\interlinepenalty}
% Nie stosujemy dodatkowych grzywien pomiędzy zwykłymi liniami
% akapitu.
% \begin{macrocode}
% \interlinepenalty 0
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\brokenpenalty}
% We allow the breaking of a page after a hyphenated line.
% \begin{macrocode}
% \brokenpenalty 100
% \end{macrocode}
% \end{macro}
%
% \subsection{Różne drobiazgi}
%
% \begin{macro}{\@fnsymbol}
% Znaki produkowane przez liczniki w~stylu \texttt{fnsymbol} nikomu
% w~Polsce nie kojarzą się z~niczym (prócz śmierci). Dlatego
% zamieniamy je
% na jedną, dwie i trzy gwiazdki (zatem w~tym stylu można liczyć do
% trzech!).
% \begin{macrocode}
\def\@fnsymbol#1{\ensuremath{\ifcase#1\or *\or **\or *{*}*
\else\@ctrerr\fi}}
%
% \end{macrocode}
% \end{macro}
%
% \subsection{Układ strony}
%
% \subsubsection{Wymiary pionowe}
%
% \begin{macro}{\headheight}
% \begin{macro}{\headsep}
% \begin{macro}{\topskip}
% Wartość \cs{headheight} --- wysokość paska przeznaczonego na
% główkę strony --- ustalamy na jeden wiersz tekstu. Między główką
% i łamem stosujemy jeden wiersz odstępu (!!!mało?). \cs{topskip}
% tradycyjnie ustawiamy równy stopniowi pisma.
% \begin{macrocode}
%<*10pt|11pt|12pt>
\setlength\headheight{\baselineskip}
\setlength\headsep{\baselineskip}
\addtolength\headsep{2pt}
\setlength\topskip{\@basesize\p@}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\footskip}
% Wartość \cs{footskip} określa odległość linii bazowej stopki
% strony od dołu łamu. Rozmiar ten ma zatem zmieścić w~sobie
% wysokość stopki i światło. Ustawiamy ją na podwojoną wartość
% interlinii.
% \begin{macrocode}
\setlength\footskip{2\baselineskip}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\maxdepth}
% The \TeX\ primitive register |\maxdepth| has a function that is
% similar to that of |\topskip|. The register |\@maxdepth| should
% always contain a copy of |\maxdepth|. This is achieved by setting
% it internally at |\begin{document}|. In both plain \TeX\ and
% \LaTeX~2.09 |\maxdepth| had a fixed value of \texttt{4pt}; in
% native \LaTeX2e\ mode we let the value depend on the typesize. We
% set it so that |\maxdepth| $+$ |\topskip| $=$ typesize $\times
% 1.5$. As it happens, in these classes |\topskip| is equal to the
% typesize, therefore we set |\maxdepth| to half the value of
% |\topskip|.
% \begin{macrocode}
\setlength\maxdepth{.5\topskip}
% \end{macrocode}
% \end{macro}
%
% \subsubsection{Wymiary poziome}
%
% \begin{macro}{\marginparwidth}
%
% \begin{macrocode}
\if@marginparsused
\setlength\marginparsep{1cc}
\setlength\marginparwidth{4cc}
\setlength\marginparpush{.5\baselineskip}
\else
\setlength\marginparsep{0cc}
\setlength\marginparwidth{0cc}
\def\marginpar{\ClassError{mwcls}{Marginpars are disabled by
default in this class.\MessageBreak Use `withmarginpar'
option to enable}{}\global\let\marginpar\@gobble}
\fi
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\columnsep}
% This gives the distance between two columns in two column mode.
% \begin{macrocode}
\setlength\columnsep{2cc}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\columnseprule}
% This gives the width of the rule between two columns in two
% column mode. We have no visible rule.
% \begin{macrocode}
\setlength\columnseprule{0\p@}
% \end{macrocode}
% \end{macro}
%
% \subsubsection{Rozmiary kolumny}
% \begin{macro}{\textwidth}
% Szerokość kolumny wyznaczamy w~następujący pokrętny sposób.
% Najpierw obliczamy ile miejsca pozostaje po pomniejszeniu
% szerokości papieru o~minimalne marginesy (2cm) i~ewentualną
% przestrzeń na marginalia.
% \begin{macrocode}
\setlength\@tempdima{\paperwidth}
\addtolength\@tempdima{-4cm}
\addtolength\@tempdima{-\marginparsep}
\addtolength\@tempdima{-\marginparwidth}
% \end{macrocode}
% Następnie w~rejestrze \cs{@tempdimb} umieszczamy największą
% szerokość łamu dopuszczalną ze względu na czytelność
% (zapożyczyliśmy te wartości z~klas standardowych --- być może są
% one zbyt małe).
% \begin{macrocode}
%<10pt> \setlength\@tempdimb{345\p@}
%<11pt> \setlength\@tempdimb{360\p@}
%<12pt> \setlength\@tempdimb{390\p@}
% \end{macrocode}
% Następnie uwzględniamy, że powyższy limit w~układzie dwułamowym
% powinien dotyczyć pojedynczego łamu.
% \begin{macrocode}
\if@twocolumn
\addtolength\@tempdimb{\@tempdimb}
\addtolength\@tempdimb{\columnsep}
\fi
% \end{macrocode}
% Teraz możemy wreszcie ustalić szerokość kolumny. Przy obecności
% opcji \Lopt{wide} ustalamy ją na maksymalną dopuszczalną
% wielkość, czyli \cs{@tempdima}. Bez tej opcji --- na mniejszą
% z~wartości \cs{@tempdima} i~\cs{@tempdimb}.
% \begin{macrocode}
\if@wide
\setlength\textwidth{\@tempdima}
\else
\ifdim\@tempdima>\@tempdimb
\setlength\textwidth{\@tempdimb}
\else
\setlength\textwidth{\@tempdima}
\fi
\fi
% \end{macrocode}
%
% Here we modify the width of the text a little to be a whole
% number of points. (Po co to???)
% \begin{macrocode}
\@settopoint\textwidth
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\textheight}
% Teraz wyznaczymy wysokość kolumny. W~tym celu wysokość strony
% zmniejszamy o~4cm na marginesy i~o~wysokość główki strony
% (zakładamy, że stopka zawiera co najwyżej paginę zwykłą, która
% nie wlicza się do wysokości kolumny).
% \begin{macrocode}
\setlength\@tempdima{\paperheight}
\addtolength\@tempdima{-4cm}
\addtolength\@tempdima{-\headheight}
\addtolength\@tempdima{-\headsep}
% \addtolength\@tempdima{-\footskip}
% \end{macrocode}
% Teraz zechcemy wyznaczyć, jaka liczba pełnych wierszy tekstu
% zmieści się na stronie (w~zaokrągleniu).
% \begin{macrocode}
\advance\@tempdima-.5\baselineskip
\divide\@tempdima\baselineskip
\@tempcnta=\@tempdima
% \end{macrocode}
% Na tej podstawie wyznaczamy \cs{textheight}, dodając \cs{topskip}
% dla pierwszej linii, którą obcięliśmy w~zaokrągleniu powyżej.
% \begin{macrocode}
\setlength\textheight{\@tempcnta\baselineskip}
\addtolength\textheight{\topskip}
% \end{macrocode}
% \end{macro}
%
%
% \subsubsection{Marginesy}
%
% Marginesy obliczamy na podstawie wartości wyznaczonych
% uprzednio.
%
% \begin{macro}{\oddsidemargin}
% \begin{macro}{\evensidemargin}
% Szerokość strony pomniejszamy o~szerokość kolumny, szerokość łamu
% na marginalia i~odstęp od łamu głównego. Wynik rozdzielamy równo
% na lewy i~prawy margines.
% \begin{macrocode}
\setlength\@tempdima{\paperwidth}
\addtolength\@tempdima{-\textwidth}
\addtolength\@tempdima{-\marginparwidth}
\addtolength\@tempdima{-\marginparsep}
\divide\@tempdima by2
% \end{macrocode}
% Przy druku jednostronnym centrujemy kolumnę (prawy margines równy
% lewemu). Przy druku dwustronnym stosujemy proporcję wewnętrznego
% marginesu do zewnętrznego jak 2:3 (czy to ,,ładna'' wartość?).
% \begin{macrocode}
\setlength\oddsidemargin{\@tempdima}
\setlength\evensidemargin{\@tempdima}
\if@twoside
\addtolength\oddsidemargin{-.1\@tempdima}
\addtolength\evensidemargin{.1\@tempdima}
\fi
% \end{macrocode}
% Wreszcie zmniejszamy obliczone marginesy o~1~cal, ponieważ dla
% \TeX a strona zaczyna się o~cal w~prawo w~dół.
% \begin{macrocode}
\addtolength\oddsidemargin{-1in}
\addtolength\evensidemargin{-1in}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\topmargin}
% Margines górny obliczamy tak, aby kolumnę wraz z~miejscem na
% główkę i~stopkę
% scentrować na stronie. Jest to chyba najlepsze, co możemy zrobić
% nie wiedząc nic o~obecności główki i~stopki. Dla żywej paginy na
% górze da to dolny margines nieco więksy od górnego (i dobrze).
% Gorzej będzie z~paginacją na dole.
% \begin{macrocode}
\setlength\topmargin{\paperheight}
\addtolength\topmargin{-\headheight}
\addtolength\topmargin{-\headsep}
\addtolength\topmargin{-\textheight}
\addtolength\topmargin{-\footskip}
\divide\topmargin by2
% \end{macrocode}
% Przesunięcie o~cal podobnie jak dla marginesu lewego.
% \begin{macrocode}
\addtolength\topmargin{-1in}
% \@settopoint\topmargin
% \end{macrocode}
% \end{macro}
%
%
% \subsubsection{Przypisy}
%
% \begin{macro}{\footnotesep}
% |\footnotesep| is the height of the strut placed at the beginning
% of every footnote. It equals the height of a normal
% |\footnotesize| strut in this
% class, thus no extra space occurs between footnotes.
% \begin{macrocode}
%<10pt>\setlength\footnotesep{6.65\p@}
%<11pt>\setlength\footnotesep{7.7\p@}
%<12pt>\setlength\footnotesep{8.4\p@}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\footins}
% |\skip\footins| is the space between the last line of the main
% text and the top of the first footnote.
% \begin{macrocode}
%<10pt>\setlength{\skip\footins}{9\p@ \@plus 4\p@ \@minus 2\p@}
%<11pt>\setlength{\skip\footins}{10\p@ \@plus 4\p@ \@minus 2\p@}
%<12pt>\setlength{\skip\footins}{10.8\p@ \@plus 4\p@ \@minus 2\p@}
%10pt|11pt|12pt>
% \end{macrocode}
% \end{macro}
%
% \subsubsection{Float placement parameters}
%
% All float parameters are given default values in the \LaTeXe{}
% kernel. For this reason parameters that are not counters
% need to be set with |\renewcommand|.
%
% \paragraph{Limits for the placement of floating objects}
%
% \begin{macro}{\c@topnumber}
% The \Lcount{topnumber} counter holds the maximum number of
% floats that can appear on the top of a text page.
% \begin{macrocode}
%<*article|report|book>
\setcounter{topnumber}{2}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\topfraction}
% This indicates the maximum part of a text page that can be
% occupied by floats at the top.
% \begin{macrocode}
\renewcommand\topfraction{.7}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\c@bottomnumber}
% The \Lcount{bottomnumber} counter holds the maximum number of
% floats that can appear on the bottom of a text page.
% \begin{macrocode}
\setcounter{bottomnumber}{1}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\bottomfraction}
% This indicates the maximum part of a text page that can be
% occupied by floats at the bottom.
% \changes{v1.0h}{1993/12/18}{Replaced \cs{newcommand} with
% \cs{renewcommand}. ASAJ.}
% \begin{macrocode}
\renewcommand\bottomfraction{.3}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\c@totalnumber}
% This indicates the maximum number of floats that can appear on
% any text page.
% \begin{macrocode}
\setcounter{totalnumber}{3}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\textfraction}
% This indicates the minimum part of a text page that has to be
% occupied by text.
% \changes{v1.0h}{1993/12/18}{Replaced \cs{newcommand} with
% \cs{renewcommand}. ASAJ.}
% \begin{macrocode}
\renewcommand\textfraction{.2}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\floatpagefraction}
% This indicates the minimum part of a page that has to be
% occupied by floating objects before a `float page' is produced.
% \changes{v1.0h}{1993/12/18}{Replaced \cs{newcommand} with
% \cs{renewcommand}. ASAJ.}
% \begin{macrocode}
\renewcommand\floatpagefraction{.5}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\c@dbltopnumber}
% The \Lcount{dbltopnumber} counter holds the maximum number of
% two column floats that can appear on the top of a two column text
% page.
% \begin{macrocode}
\setcounter{dbltopnumber}{2}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\dbltopfraction}
% This indicates the maximum part of a two column text page that
% can be occupied by two column floats at the top.
% \changes{v1.0h}{1993/12/18}{Replaced \cs{newcommand} with
% \cs{renewcommand}. ASAJ.}
% \begin{macrocode}
\renewcommand\dbltopfraction{.7}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\dblfloatpagefraction}
% This indicates the minimum part of a page that has to be
% occupied by two column wide floating objects before a `float
% page' is produced.
% \changes{v1.0h}{1993/12/18}{Replaced \cs{newcommand} with
% \cs{renewcommand}. ASAJ.}
% \begin{macrocode}
\renewcommand\dblfloatpagefraction{.5}
%
% \end{macrocode}
% \end{macro}
%
% \paragraph{Floats on a text page}
%
% \begin{macro}{\floatsep}
% \begin{macro}{\textfloatsep}
% \begin{macro}{\intextsep}
% When a floating object is placed on a page with text, these
% parameters control the separation between the float and the other
% objects on the page. These parameters are used for both
% one-column mode and single-column floats in two-column mode.
%
% |\floatsep| is the space between adjacent floats that are moved
% to the top or bottom of the text page.
%
% |\textfloatsep| is the space between the main text and floats
% at the top or bottom of the page.
%
% |\intextsep| is the space between in-text floats and the text.
% \begin{macrocode}
%<*10pt>
\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@}
%10pt>
%<*11pt>
\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@}
%11pt>
%<*12pt>
\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\intextsep {14\p@ \@plus 4\p@ \@minus 4\p@}
%12pt>
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\dblfloatsep}
% \begin{macro}{\dbltextfloatsep}
% When floating objects that span the whole |\textwidth| are placed
% on a text page when we are in twocolumn mode the separation
% between the float and the text is controlled by |\dblfloatsep|
% and |\dbltextfloatsep|.
%
% |\dblfloatsep| is the space between adjacent floats that are moved
% to the top or bottom of the text page.
%
% |\dbltextfloatsep| is the space between the main text and floats
% at the top or bottom of the page.
%
% \begin{macrocode}
%<*10pt>
\setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
%10pt>
%<*11pt>
\setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
%11pt>
%<*12pt>
\setlength\dblfloatsep {14\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
%12pt>
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \paragraph{Floats on their own page or column}
%
% \begin{macro}{\@fptop}
% \begin{macro}{\@fpsep}
% \begin{macro}{\@fpbot}
% When floating objects are placed on separate pages the layout of
% such pages is controlled by these parameters. At the top of the
% page |\@fptop| amount of stretchable whitespace is inserted, at
% the bottom of the page we get an |\@fpbot| amount of stretchable
% whitespace. Between adjacent floats the |\@fpsep| is inserted.
%
% These parameters are used for the placement of floating objects
% in one column mode, or in single column floats in two column
% mode.
%
% Note that at least one of the two parameters |\@fptop| and
% |\@fpbot| should contain a |plus ...fil| to allow filling the
% remaining empty space.
% \begin{macrocode}
%<*10pt>
\setlength\@fptop{0\p@ \@plus 1fil}
\setlength\@fpsep{8\p@ \@plus 2fil}
\setlength\@fpbot{0\p@ \@plus 1fil}
%10pt>
%<*11pt>
\setlength\@fptop{0\p@ \@plus 1fil}
\setlength\@fpsep{8\p@ \@plus 2fil}
\setlength\@fpbot{0\p@ \@plus 1fil}
%11pt>
%<*12pt>
\setlength\@fptop{0\p@ \@plus 1fil}
\setlength\@fpsep{10\p@ \@plus 2fil}
\setlength\@fpbot{0\p@ \@plus 1fil}
%12pt>
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\@dblfptop}
% \begin{macro}{\@dblfpsep}
% \begin{macro}{\@dblfpbot}
% Double column floats in two column mode are handled with similar
% parameters.
% \begin{macrocode}
%<*10pt>
\setlength\@dblfptop{0\p@ \@plus 1fil}
\setlength\@dblfpsep{8\p@ \@plus 2fil}
\setlength\@dblfpbot{0\p@ \@plus 1fil}
%10pt>
%<*11pt>
\setlength\@dblfptop{0\p@ \@plus 1fil}
\setlength\@dblfpsep{8\p@ \@plus 2fil}
\setlength\@dblfpbot{0\p@ \@plus 1fil}
%11pt>
%<*12pt>
\setlength\@dblfptop{0\p@ \@plus 1fil}
\setlength\@dblfpsep{10\p@ \@plus 2fil}
\setlength\@dblfpbot{0\p@ \@plus 1fil}
%12pt>
%<*article|report|book>
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsection{Predefiniowane style nagłówków i stopek}
%
% Style nagłówków i stopek (\cs{pagestyle}) zostały zdefiniowane
% w~sposób bardziej skomplikowany, niż ma to miejsce
% w~standardowych klasach \LaTeX a.
%
% Standardowe klasy zawsze używają stylu \pstyle{plain} na
% początkowych stronach rozdziałów. To uproszczone rozwiązanie nie
% da się zastosować w~naszym przypadku, ponieważ np. w~stylu
% \pstyle{outer} pierwsze strony rozdziałów zachowują ten styl.
% Dlatego zastosowałem rozwiązanie bardziej ogólne, wprowadzając
% trzy rodzaje stylów. Gdyby projektować system stylów od początku,
% należałoby go tak zrealizować, aby nie nakładały się pojęcia.
% Tutaj jednak aby uniknąć zbytnich ingerencji w kernel \LaTeX a
% stosuję rozwiązanie ździebko pokrętne.
%
% Wprowadzone zostają następujące style funkcjonalne, których
% definicja zmienia się w~zależności od wybranego stylu
% ,,prawdziwego'':
% \begin{description}
% \item[normal] używany na większości kolumn tekstowych,
% \item[opening] używany na kolumnach spuszczonych (pusty nagłówek),
% \item[closing] stosowany na kolumnach niepełnych (pusta stopka),
% \item[blank] dla strony tytułowej i stron rozpoczynających części
% (\cs{part}s) dokumentu (pusty zarówno nagłówek jak i stopka).
% \end{description}
%
% Kolejny poziom definicji stylów stanowią makra o nazwach typu
% \cs{hf@empty}. Stanowią one podstawowe cegiełki zmieniające
% zawartość nagłówka i stopki.
%
% Wreszcie zasadnicze definicje stylów wymienionych w~dokumentacji
% użytkowej wiążą z~poszczególnymi stylami funkcjonalnymi cegiełki
% wspomniane wyżej oraz definiują odpowiednio polecenia
% \cs{...mark}.
%
% \subsubsection{Style składowe}
%
% Zestaw stylów\dywiz cegiełek odpowiada (z~grubsza) zestwowi
% stylów stron.
% \begin{macro}{\hf@empty}
% Najprostszy jest styl pusty:
% \begin{macrocode}
\newcommand\hf@empty{%
\let\@oddhead\@empty \let\@oddfoot\@empty
\let\@evenhead\@empty \let\@evenfoot\@empty}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\hf@plain}
% Styl \pstyle{plain} zawiera numer strony wycentrowany w~stopce:
% \begin{macrocode}
\newcommand\hf@plain{%
\let\@oddhead\@empty
\def\@oddfoot{\reset@font\hfil\thepage\hfil}%
\let\@evenhead\@empty
\let\@evenfoot\@oddfoot}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\hf@outer}
% W stylu \pstyle{outer} paginacja znajduje się w~stopce po stronie
% zewnętrznego marginesu:
% \begin{macrocode}
\newcommand\hf@outer{%
\let\@oddhead\@empty
\def\@oddfoot{\reset@font\hfil\thepage}%
\let\@evenhead\@empty
\def\@evenfoot{\reset@font\thepage\hfil}}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\hf@headings}
% Teraz przechodzimy do stylów zawierających żywą paginę w~główce
% strony:
% \begin{macrocode}
\newcommand\heading@font{\small\itshape}
\newcommand\hf@headings{%
\def\@oddhead{\reset@font{\heading@font\rightmark}\hfil\thepage}%
\let\@oddfoot\@empty
\def\@evenhead{\reset@font\thepage\hfil\heading@font\leftmark}%
\let\@evenfoot\@empty
}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\hf@uheadings}
% Wariant poprzedniego z~linią podkreślającą główkę. Linia jest
% zaprogramowana tak, aby nie zajmować miejsca --- lokuje się
% wewnątrz odstępu \cs{headsep}.
% \begin{macrocode}
\newcommand\hf@uheadings{%
\def\@oddhead{\vtop{%
\hb@xt@\textwidth{%
\reset@font{\heading@font\rightmark}\hfil\thepage\strut}%
\vskip2pt\hrule\vskip-2.4pt}}%
\let\@oddfoot\@empty
\def\@evenhead{\vtop{%
\hb@xt@\textwidth{%
\reset@font\strut\thepage\hfil\heading@font\leftmark}%
\vskip2pt\hrule\vskip-2.4pt}}%
\let\@evenfoot\@empty
}
% \end{macrocode}
% \end{macro}
%
% \subsubsection{Style stron}
%
% Przyszła pora zdefiniować prawdziwe style stron (czyli makra
% \cs{ps@}\pstyle{nazwa stylu}. Makra te zajmują się również
% problemem generowania żywej paginy. Dokładniejszy opis
% filozoficzny można znaleźć w~dokumentacji angielskich klas
% dokumentów.
%
% \begin{macro}{\ps@empty}
% Styl pusty w każdej funkcji używa pustych nagłówków i stopek.
% Polecenia \cs{...mark} sa ignorowane.
% \begin{macrocode}
\def\ps@empty{%
\let\@mkboth\@gobbletwo
\let\ps@normal\hf@empty
\let\ps@opening\hf@empty
\let\ps@closing\hf@empty
\let\ps@blank\hf@empty
\ps@normal}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ps@plain}
% Styl \pstyle{plain} nie ma paginacji na stronach tytułowych i
% niepełnych kolumnach(??).
% \begin{macrocode}
\def\ps@plain{%
\let\@mkboth\@gobbletwo
\let\ps@normal\hf@plain
\let\ps@opening\hf@plain
\let\ps@closing\hf@empty
\let\ps@blank\hf@empty
\ps@normal}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ps@outer}
% Styl \pstyle{outer} jest zdefiniowany analogicznie.
% \begin{macrocode}
\def\ps@outer{%
\let\@mkboth\@gobbletwo
\let\ps@normal\hf@outer
\let\ps@opening\hf@outer
\let\ps@closing\hf@empty
\let\ps@blank\hf@empty
\ps@normal}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ps@headings}
% Definicja stylu \pstyle{headings} zależy od tego, czy stosujemy
% druk dwustronny oraz od klasy dokumentu. Żywa pagina jest
% generowana automatycznie (\cs{@mkboth}).
% \begin{macrocode}
\if@twoside
\def\ps@headings{%
\let\@mkboth\markboth
\let\ps@normal\hf@headings
\let\ps@opening\hf@empty
\let\ps@closing\hf@headings
\let\ps@blank\hf@empty
\ps@normal
% \end{macrocode}
%
% For the article document class we define |\sectionmark| to clear
% the right mark and put the number of the section (when it is
% numbered) and its title in the left mark. The rightmark is set by
% |\subsectionmark| to contain the subsection titles.
%
% Note the use of |##1| for the parameter of the |\sectionmark|
% command, which will be defined when |\ps@headings| is executed.
%
% \begin{macrocode}
%<*article>
\def\sectionmark##1{%
\markboth{%
\ifHeadingNumbered \thesection.\enspace \fi
##1}{}}%
\def\subsectionmark##1{%
\markright{%
\ifHeadingNumbered \thesubsection.\enspace \fi
##1}}}
%
% \end{macrocode}
%
% In the report and book document classes we use the |\chaptermark|
% and |\sectionmark| macros to fill the running heads.
%
% \begin{macrocode}
%<*report|book>
\def\chaptermark##1{%
\markboth{%
\ifHeadingNumbered
% \if@mainmatter
% \@chapapp\
\thechapter.\enspace
% \fi
\fi
##1}{}}%
\def\sectionmark##1{%
\markright{%
\ifHeadingNumbered \thesection.\enspace \fi
##1}}}
%
% \end{macrocode}
%
% The definition of |\ps@headings| for one sided printing can be
% much simpler, because we treat even and odd pages the same.
% \begin{macrocode}
\else
\def\ps@headings{%
\let\@mkboth\markboth
\let\ps@normal\hf@headings
\let\ps@opening\hf@empty
\let\ps@closing\hf@headings
\let\ps@blank\hf@empty
\ps@normal
% \end{macrocode}
% We use |\markright| now instead of |\markboth| as we did for two
% sided printing.
% \begin{macrocode}
%<*article>
\def\sectionmark##1{%
\markright{%
\ifHeadingNumbered \thesection.\enspace \fi
##1}}}
%
% \end{macrocode}
%
% \begin{macrocode}
%<*report|book>
\def\chaptermark##1{%
\markright{%
\ifHeadingNumbered
% \if@mainmatter
% \@chapapp\
\thechapter.\enspace
% \fi
\fi
##1}}}
%
\fi
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ps@myheadings}
% Początek definicji jest taki, jak dla stylu \pstyle{headings},
% \begin{macrocode}
\def\ps@myheadings{%
\let\ps@normal\hf@headings
\let\ps@opening\hf@empty
\let\ps@closing\hf@headings
\let\ps@blank\hf@empty
\ps@normal
% \end{macrocode}
% ale komendy \cs{...mark} w~nagłówkach rozdziałów są ignorowane.
% \begin{macrocode}
\let\@mkboth\@gobbletwo
% \let\chaptermark\@gobble
\let\sectionmark\@gobble
% \let\subsectionmark\@gobble
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ps@uheadings}
% Definicja stylu \pstyle{uheadings} różni się od \pstyle{headings}
% tylko innym stylem bazowym.
% \begin{macrocode}
\if@twoside
\def\ps@uheadings{%
\let\@mkboth\markboth
\let\ps@normal\hf@uheadings
\let\ps@opening\hf@empty
\let\ps@closing\hf@uheadings
\let\ps@blank\hf@empty
\ps@normal
%<*article>
\def\sectionmark##1{%
\markboth{%
\ifHeadingNumbered \thesection.\enspace \fi
##1}{}}%
\def\subsectionmark##1{%
\markright{%
\ifHeadingNumbered \thesubsection.\enspace \fi
##1}}}
%
%<*report|book>
\def\chaptermark##1{%
\markboth{%
\ifHeadingNumbered
% \if@mainmatter
% \@chapapp\
\thechapter.\enspace
% \fi
\fi
##1}{}}%
\def\sectionmark##1{%
\markright{%
\ifHeadingNumbered \thesection.\enspace \fi
##1}}}
%
% \end{macrocode}
% I dla druku jednostronnego:
% \begin{macrocode}
\else
\def\ps@uheadings{%
\let\@mkboth\markboth
\let\ps@normal\hf@uheadings
\let\ps@opening\hf@empty
\let\ps@closing\hf@uheadings
\let\ps@blank\hf@empty
\ps@normal
%<*article>
\def\sectionmark##1{%
\markright{%
\ifHeadingNumbered \thesection.\enspace \fi
##1}}}
%
%<*report|book>
\def\chaptermark##1{%
\markright{%
\ifHeadingNumbered
% \if@mainmatter
% \@chapapp\
\thechapter.\enspace
% \fi
\fi
##1}}}
%
\fi
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ps@myuheadings}
% Podobnie ma się \pstyle{myuheadings} do \pstyle{uheadings}.
% \begin{macrocode}
\def\ps@myuheadings{%
\let\ps@normal\hf@uheadings
\let\ps@opening\hf@empty
\let\ps@closing\hf@uheadings
\let\ps@blank\hf@empty
\ps@normal
\let\@mkboth\@gobbletwo
% \let\chaptermark\@gobble
\let\sectionmark\@gobble
% \let\subsectionmark\@gobble
}
% \end{macrocode}
% \end{macro}
%
% \section{Document Markup}
%
% \subsection{Karta tytułowa}
%
% \begin{macro}{\title}
% \begin{macro}{\author}
% \begin{macro}{\date}
% These three macros are provided by \file{latex.dtx} to provide
% information about the title, author(s) and date of the document.
% The information is stored away in internal control sequences.
% It is the task of the |\maketitle| command to use the
% information provided. The definitions of these macros are shown
% here for information.
% \begin{macrocode}
% \newcommand*{\title}[1]{\gdef\@title{#1}}
% \newcommand*{\author}[1]{\gdef\@author{#1}}
% \newcommand*{\date}[1]{\gdef\@date{#1}}
% \end{macrocode}
% Umieszczanie daty w tytule dokumentu po polsku nie wydaje się być
% zbyt rozpowszechnione, więc domyślnie \cs{date} jest puste.
% \begin{macrocode}
\let\@date\@empty
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\maketitle}
% Definicja \cs{maketitle} jest zależna od tego, czy tytuł ma być
% umieszczony na oddzielnej stronie.
%
% When we are making a title page, we locally redefine
% |\footnotesize| and |footnoterule| to change the appearance of
% the footnotes that are produced by the |\thanks| command;
% these changes affect all footnotes.
% \begin{macrocode}
\if@titlepage
\newcommand\maketitle{\begin{titlepage}%
\let\footnotesize\small
\let\footnoterule\relax
\let \footnote \thanks
% \end{macrocode}
%
% \begin{macrocode}
\null\vfill
% \end{macrocode}
% Kolejność umieszczenia autora i tytułu zależy od przełącznika
% \cs{if@authorfirst}.
% \begin{macrocode}
\begin{center}%
\titlesettings
{\large
\if@authorfirst\else
{\LARGE \@title \par}%
\vskip6ex \fi
{\normalsize
\begin{tabular}[t]{c}%
\Large\strut\@author
\end{tabular}\par}%
\if@authorfirst
\vskip6ex
{\LARGE \@title \par}\fi
}%
\end{center}\par
% \end{macrocode}
% Then we call |\@thanks| to print the information that goes into
% the footnote and finish the page.
% \begin{macrocode}
\vfill\vfill
{\centering\normalsize \@date \par}
\@thanks
\end{titlepage}%
% \end{macrocode}
% We reset the \Lcount{footnote} counter, disable |\thanks| and
% |\maketitle| and save some storage space by emptying the internal
% information macros.
% \begin{macrocode}
\setcounter{footnote}{0}%
\global\let\thanks\relax
\global\let\maketitle\relax
\global\let\@thanks\@empty
\global\let\@author\@empty
\global\let\@date\@empty
\global\let\@title\@empty
% \end{macrocode}
% After the title is set the declaration commands |\title|, etc.\
% can vanish.
% The definition of |\and| makes only sense within the argument of
% |\author| so this can go as well.
% \begin{macrocode}
\global\let\title\relax
\global\let\author\relax
\global\let\date\relax
\global\let\and\relax
}
% \end{macrocode}
% Gdy tytuł zajmuje oddzielną stronę nazwiska autorów umieszczamy
% jedno pod drugim:
% \begin{macrocode}
\def\and{\\\Large\strut}
% \end{macrocode}
% When the title is not on a page of its own, the layout of the
% title is a little different. We use symbols to mark the footnotes
% and we have to deal with two column documents.
%
% Therefore we first start a new group to keep changes local. Then
% we redefine |\thefootnote| to use |\fnsymbol|.
% \begin{macrocode}
\else
\newcommand\maketitle{\par
\begingroup
\renewcommand\thefootnote{\@fnsymbol\c@footnote}%
\long\def\@makefntext##1{
\parindent\@parindent
\@textsuperscript{\normalfont\@thefnmark}\enspace##1}%
% \end{macrocode}
% If this is a twocolumn document we start a new page in twocolumn
% mode, with the title set to the full width of the text. The
% actual printing of the title information is left to
% |\@maketitle|.
% \begin{macrocode}
\if@twocolumn
\ifnum \col@number=\@ne
\@maketitle
\else
\twocolumn[\@maketitle]%
\fi
\else
% \end{macrocode}
% When this is not a twocolumn document we just start a new page,
% prevent floating objects from appearing on the top of this page
% and print the title information.
% \begin{macrocode}
\newpage
\global\@topnum\z@ % Prevents figures from going at top of page.
\@maketitle
\fi
% \end{macrocode}
% This page gets a \pstyle{plain} layout. We call |\@thanks| to
% produce the footnotes.
% \begin{macrocode}
\thispagestyle{opening}\@thanks
% \end{macrocode}
% Now we can close the group, reset the \Lcount{footnote} counter,
% disable |\thanks|, |\maketitle| and |\@maketitle| and save some
% storage space by emptying the internal information macros.
% \begin{macrocode}
\endgroup
\setcounter{footnote}{0}%
\global\let\thanks\relax
\global\let\maketitle\relax
\global\let\@maketitle\relax
\global\let\@thanks\@empty
\global\let\@author\@empty
\global\let\@date\@empty
\global\let\@title\@empty
\global\let\title\relax
\global\let\author\relax
\global\let\date\relax
\global\let\and\relax
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@maketitle}
% This macro takes care of formatting the title information when we
% have no separate title page.
%
% \begin{macrocode}
\def\@maketitle{%
\newpage
\null
\vskip 2\baselineskip
\begin{center}%
\let \footnote \thanks
\titlesettings\large
\if@authorfirst\else
{\LARGE \@title \par}%
\vskip\baselineskip \fi
{\normalsize
\begin{tabular}[t]{c}%
\large\strut\@author
\end{tabular}\par}%
\if@authorfirst
\vskip\baselineskip
{\LARGE \@title \par}\fi
\ifx\@date\@empty\else
\vskip \baselineskip
{\normalsize\@date}\fi
\end{center}%
\par
\vskip 2\baselineskip
}
% \end{macrocode}
% W tym przypadku umieszczamy nazwiska autorów obok siebie
% oddzielone firetem.
% \begin{macrocode}
\def\and{% % \begin{tabular}
\end{tabular}%
\quad
\begin{tabular}[t]{c}%
\large\strut}% % \end{tabular}
\fi
% \end{macrocode}
% \end{macro}
%
% \subsection{Chapters and Sections}
%
% \subsubsection{Building blocks}
% Następujące dalej definicje używają makra \cs{@startsection}
% zdefiniowanego w~kernelu \LaTeX a. Niestety musimy wprowadzić do
% niego niejakie modyfikacje.
%
% \begin{macro}{\@sect}
% To jest część \cs{@startsection} odpowiedzialna za formatowanie
% numerowanych tytułów podrozdziałów.
% \begin{macrocode}
\def\@sect#1#2#3#4#5#6[#7]#8{%
\ifnum #2>\c@secnumdepth
\let\@svsec\@empty
\else
\refstepcounter{#1}%
\protected@edef\@svsec{\@seccntformat{#1}\relax}%
\fi
\@tempskipa #5\relax
\ifdim \@tempskipa>\z@
\begingroup
\normalfont\sectsettings#6{%
\language\l@nohyphenation \raggedright
\interlinepenalty \@M
\leftskip #3\noindent
\@svsec\ignorespaces
#8\@@par}%
\endgroup
\csname #1mark\endcsname{#7}%
\addcontentsline{toc}{#1}{%
\ifnum #2>\c@secnumdepth \else
\protect\numberline{\csname the#1\endcsname.}%
\fi
#8}%
\else
\def\@svsechd{%
\normalfont\sectsettings#6{\hskip #3\relax
\@svsec\ignorespaces #8}%
\csname #1mark\endcsname{#7}%
\addcontentsline{toc}{#1}{%
\ifnum #2>\c@secnumdepth \else
\protect\numberline{\csname the#1\endcsname.}%
\fi
#8}}%
\fi
\@xsect{#5}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@ssect}
% A to dla podrozdziałów nienumerowanych.
% \begin{macrocode}
\def\@ssect#1#2#3#4#5{%
\@tempskipa #3\relax
\ifdim \@tempskipa>\z@
\begingroup
\normalfont\sectsettings#4{%
\language\l@nohyphenation \raggedright
\interlinepenalty \@M
\leftskip #1\noindent\ignorespaces
#5\@@par}%
\endgroup
\else
\def\@svsechd{\normalfont\sectsettings#4{\hskip #1\relax #5}}%
\fi
\@xsect{#3}}
% \end{macrocode}
% \end{macro}
%
% Wedle polskich zwyczajów po tytułach stosuje się normalne wcięcie
% akapitowe. Następujące hakerstwo wyłącza mechanizm wyłączający
% wcięcia po tytułach.
% \begin{macrocode}
% \let\@afterindentfalse\@afterindenttrue
% \@afterindenttrue
% \end{macrocode}
%
% \subsubsection{Polecenia \cs{...mark}}
%
% \begin{macro}{\chaptermark}
% \begin{macro}{\sectionmark}
% \begin{macro}{\subsectionmark}
% \begin{macro}{\subsubsectionmark}
% \begin{macro}{\paragraphmark}
% \begin{macro}{\subparagraphmark}
% Default initializations of |\...mark| commands. These commands
% are used in the definition of the page styles. Most of them are
% already defined by \file{latex.ltx}, so they are only shown here.
%
% \begin{macrocode}
\newcommand*\partmark[1]{\markboth{}{}}
%\newcommand*\chaptermark[1]{}
% \newcommand*\sectionmark[1]{}
% \newcommand*\subsectionmark[1]{}
% \newcommand*\subsubsectionmark[1]{}
% \newcommand*\paragraphmark[1]{}
% \newcommand*\subparagraphmark[1]{}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsubsection{Define Counters}
%
% \begin{macro}{\c@secnumdepth}
% The value of the counter \Lcount{secnumdepth} gives the depth of
% the highest-level sectioning command that is to produce section
% numbers.
% \begin{macrocode}
%\setcounter{secnumdepth}{3}
%\setcounter{secnumdepth}{2}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\c@part}
% \begin{macro}{\c@chapter}
% \begin{macro}{\c@section}
% \begin{macro}{\c@subsection}
% \begin{macro}{\c@subsubsection}
% \begin{macro}{\c@paragraph}
% \begin{macro}{\c@subparagraph}
% These counters are used for the section numbers. The macro\\
% |\newcounter{|\meta{newctr}|}[|\meta{oldctr}|]|\\
% defines\meta{newctr} to be a counter, which is reset to zero when
% counter \meta{oldctr} is stepped. Counter \meta{oldctr} must
% already be defined.
%
% \begin{macrocode}
\newcounter {part}
%\newcounter {section}
%<*report|book>
\newcounter {chapter}
\newcounter {section}[chapter]
%
\newcounter {subsection}[section]
\newcounter {subsubsection}[subsection]
\newcounter {paragraph}[subsubsection]
\newcounter {subparagraph}[paragraph]
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\thepart}
% \begin{macro}{\thechapter}
% \begin{macro}{\thesection}
% \begin{macro}{\thesubsection}
% \begin{macro}{\thesubsubsection}
% \begin{macro}{\theparagraph}
% \begin{macro}{\thesubparagraph}
% For any counter \Lcount{CTR}, |\theCTR| is a macro that defines
% the printed version of counter \Lcount{CTR}. It is defined in
% terms of the following macros:
%
% |\arabic{|\Lcount{COUNTER}|}| prints the value of
% \Lcount{COUNTER} as an arabic numeral.
%
% |\roman{|\Lcount{COUNTER}|}| prints the value of
% \Lcount{COUNTER} as a lowercase roman numberal.
%
% |\Roman{|\Lcount{COUNTER}|}| prints the value of
% \Lcount{COUNTER} as an uppercase roman numberal.
%
% |\alph{|\Lcount{COUNTER}|}| prints the value of \Lcount{COUNTER}
% as a lowercase letter: $1 =$~a, $2 =$~ b, etc.
%
% |\Alph{|\Lcount{COUNTER}|}| prints the value of \Lcount{COUNTER}
% as an uppercase letter: $1 =$~A, $2 =$~B, etc.
%
% Actually to save space the internal counter repesentations
% and the commands operating on those are used.
% \begin{macrocode}
\renewcommand \thepart {\@Roman\c@part}
%\renewcommand \thesection {\@arabic\c@section}
%<*report|book>
\renewcommand \thechapter {\@arabic\c@chapter}
\renewcommand \thesection {\thechapter.\@arabic\c@section}
%
\renewcommand\thesubsection {\thesection.\@arabic\c@subsection}
\renewcommand\thesubsubsection{\thesubsection .\@arabic\c@subsubsection}
\renewcommand\theparagraph {\thesubsubsection.\@arabic\c@paragraph}
\renewcommand\thesubparagraph {\theparagraph.\@arabic\c@subparagraph}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\...@level}
%
% \begin{macrocode}
\def\part@level{-1}
%\def\chapter@level{0}
\def\section@level{1}
\def\subsection@level{2}
\def\subsubsection@level{3}
\def\paragraph@level{4}
\def\subparagraph@level{5}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@chapapp}
% |\@chapapp| is initially defined to be `|\chaptername|'. The
% |\appendix| command redefines it to be `|\appendixname|'.
%
% \begin{macrocode}
%\newcommand\@chapapp{\chaptername}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@seccntformat}
% Na potrzeby polskości zmieniamy zdefiniowane przez jądro makro
% \cs{@seccntformat}: dodajemy kropkę i zmieniamy odstęp na pół
% fireta.
% \begin{macrocode}
\renewcommand*\@seccntformat[1]{\csname the#1\endcsname.\enspace}
% \end{macrocode}
% \end{macro}
%
% \subsubsection{Front Matter, Main Matter, and Back Matter}
%
% \begin{macro}{\cleardoublepage}
% Przedefiniowujemy zdefiniowane w~kernelu makro
% \cs{cleardoublepage} tak, aby ewentualna pusta strona nie miała
% paginacji.
% \begin{macrocode}
\def\cleardoublepage{\clearpage
\if@twoside
\ifodd\c@page\else
\hbox{}\thispagestyle{blank}\newpage
\if@twocolumn\hbox{}\newpage\fi
\fi
\fi}
% \end{macrocode}
% \end{macro}
%
% A book contains these three (logical) sections. The switch
% |\@mainmatter| is true iff we are processing Main Matter. When
% this switch is false, the |\chapter| command does not print
% chapter numbers.
%
% Here we define the commands that start these sections.
% \begin{macro}{\frontmatter}
% This command starts Roman page numbering and turns off chapter
% numbering. Since this restarts the page numbering from 1, it
% should also ensure that a recto page is used.
% \begin{macrocode}
%<*book>
\newcommand\frontmatter{%
\cleardoublepage
\@mainmatterfalse
\pagenumbering{Roman}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\mainmatter}
% This command clears the page, starts arabic page numbering and
% turns on chapter numbering. Since this restarts the page numbering
% from 1, it should also ensure that a recto page is used.
% \begin{macrocode}
\newcommand\mainmatter{%
\cleardoublepage
\@mainmattertrue
\pagenumbering{arabic}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\backmatter}
% This clears the page, turns off chapter numbering and leaves page
% numbering unchanged.
% \begin{macrocode}
\newcommand\backmatter{%
\if@openright
\cleardoublepage
\else
\clearpage
\fi
\@mainmatterfalse}
%
% \end{macrocode}
% \end{macro}
%
% \subsubsection{Cegiełki składowe}
%
% \begin{macro}{\if@HeadingRunIn}
% Reprezentacja flag, które mogą pojawić się w~tytulariach.
% Odpowiadają one za a)~nagłówki rozpoczynające akapit
% (\emph{run-in}) (r/v), b)~wymuszenie łamania strony przed (jak
% w~\cs{chapter}) (b/n), c)~wymuszenie łamania strony po (jak
% w~\cs{part}) (b/n), d)~czy tytuł zajmuje wszystkie łamy, czy tylko
% bieżący (w/c).
% \begin{macrocode}
%\newif\if@HeadingRunIn
%\newif\if@HeadingBreakBefore
%\newif\if@HeadingBreakAfter
%\newif\if@HeadingWholeWidth
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\mw@getflags}
% Powyższe flagi dla poszczególnych poziomów tytulariów są
% przechowywane w~postaci czterech znaków stanowiących treść makra
% \cs{...@flags}. Poniższe makro ustawia flagi na podstawie tej
% upakowanej postaci.
% \begin{macrocode}
\newcommand*\mw@getflags[1]{%
\expandafter\expandafter\expandafter
\mw@getflagsx\csname#1@flags\endcsname}
\newcommand*\mw@getflagsx[4]{%
\def\mw@HeadingRunIn{1#1}%
\def\mw@HeadingBreakBefore{1#2}%
\def\mw@HeadingBreakAfter{1#3}%
\def\mw@HeadingWholeWidth{1#4}%
}
\newcommand*\mw@setflags[1]{%
\expandafter\edef\csname#1@flags\endcsname{%
\if\mw@HeadingRunIn 1\else 0\fi
\if\mw@HeadingBreakBefore 1\else 0\fi
\if\mw@HeadingBreakAfter 1\else 0\fi
\if\mw@HeadingWholeWidth 1\else 0\fi
}
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\mw@section}
% Argument: nazwa poziomu podziału
% \begin{macrocode}
\newcommand*\mw@section[1]{%
\mw@getflags{#1}%
% \end{macrocode}
% \cs{@noskipsec} jest prawdziwe jeśli w~dokumencie przed danym
% nagłówkiem wystąpił bezodstępowy
% nagłówek (\cs{paragraph}) sekcji bez treści. \cs{leavevmode}
% wprowadza nowy pusty akapit, żeby się wypróżniło \cs{everypar}.
% \begin{macrocode}
\if@noskipsec \leavevmode \fi
\par
\if@nobreak \everypar{}\fi
\@ifstar
{\HeadingNumberedfalse\@dblarg{\mw@sectionx{#1}}}%
{\HeadingNumberedtrue\@dblarg{\mw@sectionx{#1}}}}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\mw@step@sectioning@counter}
% This macro advances sectioning counter used for numbered
% headings. Hyperref hijacks \cs{refstepcounter} to add a link to the
% title, so we have to be extra careful to avoid pagebreaks between
% this and the heading.
% \begin{macrocode}
\def\mw@step@sectioning@counter{%
\ifHeadingNumbered
\refstepcounter{\mw@HeadingType}%
\protected@edef\HeadingNumber{\expandafter\noexpand
\csname the\mw@HeadingType\endcsname\relax}%
\else
\mw@hyperref@phantom{\mw@HeadingType}%
\let\HeadingNumber\@empty
\fi
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\mw@sectionx}
%
% \begin{macrocode}
\def\mw@sectionx#1[#2]{%
\@dblarg{\mw@sectionxx{#1}{#2}}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\mw@sectionxx}
% \changes{0.67}{2004/09/26}{dodałem ea-noe w definicji
% HeadingNumber, żeby dawało się lokalnie przedefiniować
% the-cośtam (np. Część pierwsza, a w paginie
% inaczej).}\changes{0.72}{2009/08/30}{Przesunięte ewentualne
% łamanie strony przed \cs{refstepcounter}, którego hyperref
% używa do wstawienia odsyłacza. Dotychczasowa wersja knociła
% odsyłacze do rozdziałów.}
% \begin{macrocode}
\def\mw@sectionxx#1#2[#3]#4{%
\if\mw@HeadingBreakBefore
\if@specialpage\else\thispagestyle{closing}\fi
% \if@openright\cleardoublepage\else
\clearpage
% \fi
\if\mw@HeadingBreakAfter
\thispagestyle{blank}\else
\thispagestyle{opening}\fi
% \end{macrocode}
% Then we prevent floats from appearing at the top of this page
% because it looks weird to see a floating object above a chapter
% title.
% \begin{macrocode}
\global\@topnum\z@
\fi
\edef\mw@HeadingLevel{\csname #1@level\endcsname
\space}% space delimits level number!
\ifHeadingNumbered
\ifnum \mw@HeadingLevel>\c@secnumdepth \HeadingNumberedfalse \fi
% \if@mainmatter\else \HeadingNumberedfalse \fi
\fi
\def\HeadingRHeadText{#2}%
\def\HeadingTOCText{#3}%
\def\HeadingText{#4}%
\def\mw@HeadingType{#1}%
%%
\if\mw@HeadingRunIn
\mw@runinheading
\else
\if\mw@HeadingWholeWidth
\if@twocolumn
% \end{macrocode}
% When we are making a two column document, this will be a one
% column page. We use |@tempswa| to remember to switch back to two
% columns.
% \begin{macrocode}
\if\mw@HeadingBreakAfter
\onecolumn
\mw@normalheading
\pagebreak\relax
% \end{macrocode}
% Then, when we are in twosided mode, we produce a completely blank
% page.
% \begin{macrocode}
\if@twoside
\null
\thispagestyle{blank}%
\newpage
\fi
\twocolumn
\else
\@topnewpage[\mw@normalheading]%
\mw@markandtoc
\fi
\else
\mw@normalheading
\if\mw@HeadingBreakAfter\pagebreak\relax\fi
\fi
\else
\mw@normalheading
\if\mw@HeadingBreakAfter\pagebreak\relax\fi
\fi
\fi
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\mw@markandtoc}
%
% \begin{macrocode}
\newcommand*\mw@markandtoc{%
% \ifHeadingNumbered
\csname \mw@HeadingType mark\endcsname{\HeadingRHeadText}%
\ifnum \mw@HeadingLevel>\c@tocdepth \else
\expandafter\ifx\csname \mw@HeadingType @toc\endcsname\relax
\addcontentsline{toc}{\mw@HeadingType }{\ifHeadingNumbered
\protect\numberline{\mw@seccntformat{\HeadingNumber}}\fi
\HeadingTOCText}%
\else
\csname \mw@HeadingType @toc\endcsname
\fi
\fi
% \fi
}%
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\mw@seccntformat}
%
% \begin{macrocode}
\def\mw@seccntformat#1{#1.\enspace}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\mw@normalheading}
%
% \begin{macrocode}
\newcommand*\mw@normalheading{%
\if\mw@HeadingBreakBefore \hrule\@height\z@\nobreak
\else \addpenalty\@secpenalty \fi
\addvspace{\csname \mw@HeadingType @preskip\endcsname}%
\mw@step@sectioning@counter
\bgroup\language\l@nohyphenation
\raggedright
\interlinepenalty\@M
\normalfont\sectsettings
\csname \mw@HeadingType @head\endcsname
\@@par
\egroup
% \end{macrocode}
% \cs{mw@markandtoc} ma się wykonać za wyjątkiem wypadku
% \cs{@topnewpage}, który ma to polecenie dodane osobno, więc
% dostalibyśmy
% podwojone wpisy do spisu treści, a~marki zadane tutaj i~tak nie
% zdołałyby przemigrować do
% głównej listy pionowej.\changes{0.71}{2009/06/18}{błąd żywej
% paginy rozdziałów w~układzie dwułamowym wskazany
% przez Michała Rudolfa}
% \begin{macrocode}
\ifnum0<%
\if@twocolumn0\else1\fi
\if\mw@HeadingWholeWidth0\else1\fi
\if\mw@HeadingBreakAfter1 \else0 \fi
\mw@markandtoc\fi
\nobreak
\vskip\csname\mw@HeadingType @postskip\endcsname
\@afterheading
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\mw@runinheading}
% To ma służyć do składu \cs{paragraph}ów
% i~\cs{subparagraph}ów.
% \begin{macrocode}
\newcommand*\mw@runinheading{%
\addvspace{\csname \mw@HeadingType @preskip\endcsname}%
\@nobreakfalse
\global\@noskipsectrue
\everypar{%
\if@noskipsec
\global\@noskipsecfalse
{\setbox\z@\lastbox}%
\clubpenalty\@M
\mw@step@sectioning@counter
\bgroup\language\l@nohyphenation
\normalfont\sectsettings
\csname \mw@HeadingType @head\endcsname
\egroup
\mw@markandtoc
\hspace{\csname\mw@HeadingType @postskip\endcsname}%
\else
\clubpenalty \@clubpenalty
\everypar{}%
\fi}
}
% \end{macrocode}
% \end{macro}
%
% \subsubsection{Szablony nagłówków}
%
% \begin{macro}{\FormatBlockHeading}
%
% \begin{macrocode}
\let\@titleindent\z@
%\let\@titleindent\@parindent
\newcommand*\FormatBlockHeading[1]{%
\leftskip\@titleindent
#1{\noindent
\ifHeadingNumbered\mw@seccntformat\HeadingNumber\fi
\ignorespaces\HeadingText\@@par}
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\FormatHangHeading}
%
% \begin{macrocode}
\newcommand*\FormatHangHeading[1]{%
#1{%
\@hangfrom{\hskip\@titleindent
\ifHeadingNumbered\mw@seccntformat\HeadingNumber\fi}%
\ignorespaces\HeadingText\@@par}%
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\FormatChapterHeading}
%
% \begin{macrocode}
\newcommand*\FormatChapterHeading[3]{%
\ifHeadingNumbered
#2\HeadingNumber\par\nobreak
\vspace{#1}%
\fi
#3\HeadingText\par\nobreak
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\FormatRigidChapterHeading}
%
% \begin{macrocode}
\newcommand*\FormatRigidChapterHeading[4]{%
\nointerlineskip
\vbox to#1{\color@begingroup
\vfil
\ifHeadingNumbered
#3\HeadingNumber\par\nobreak
\vspace{#2}%
\fi
#4\HeadingText\par\nobreak
\color@endgroup
}%
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\FormatRunInHeading}
%
% \begin{macrocode}
\newcommand*\FormatRunInHeading[1]{%
\hskip\@titleindent
#1{%
\ifHeadingNumbered\mw@seccntformat\HeadingNumber\fi
\ignorespaces\HeadingText\unskip}%
}
% \end{macrocode}
% \end{macro}
%
% \subsubsection{The bright new sectioning API}
%
%
% \begin{macro}{\SetSectionFormatting}
%
% \begin{macrocode}
\newcommand*\SetSectionFormatting[5][default]{%
\def\mw@HeadingRunIn{10}\def\mw@HeadingBreakBefore{10}%
\def\mw@HeadingBreakAfter{10}\def\mw@HeadingWholeWidth{10}%
\mw@processflags#1,\relax
\expandafter\def\csname #2\endcsname{\mw@section{#2}}%
\expandafter\def\csname #2@preskip\endcsname{#3}%
\expandafter\def\csname #2@head\endcsname{#4}%
\expandafter\def\csname #2@postskip\endcsname{#5}%
\mw@setflags{#2}%
}
% backward compatibility:
\newcommand*\DeclareSectioningCommand[3][default]{%
\SetSectionFormatting[#1]{#2}}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\mw@processflags}
%
% \begin{macrocode}
\def\mw@processflags#1,#2\relax{%
\expandafter\ifx\csname sec@@flag@#1\endcsname\relax
\ClassError{mwcls}{Unknown sectioning flag `#1'}{}\else
\csname sec@@flag@#1\endcsname\fi
\if,#2,\else \mw@processflags#2\relax \fi
}
\def\sec@@flag@default{}
\def\sec@@flag@runin{\def\mw@HeadingRunIn{11}}
\def\sec@@flag@breakbefore{\def\mw@HeadingBreakBefore{11}}
\def\sec@@flag@breakafter{\def\mw@HeadingBreakAfter{11}}
\def\sec@@flag@wholewidth{\def\mw@HeadingWholeWidth{11}}
% \end{macrocode}
% \end{macro}
%
%
% \subsubsection{Cz\k{e}\'sci}
%
%
% \begin{macro}{\part}
%
% \begin{macrocode}
%<*article>
\SetSectionFormatting{part}
{3\baselineskip plus \baselineskip}
{\FormatChapterHeading{12\p@}%
{\large\partname\space}{\LARGE}}
{3ex}
%
%<*report|book>
\SetSectionFormatting[breakbefore,breakafter,wholewidth]{part}
{0\p@ plus1fil}
{\FormatChapterHeading{20\p@}%
{\centering\large\partname\space}%
{\centering\LARGE}}
{0\p@ plus1fil}
%
% \end{macrocode}
% \end{macro}
%
% \subsubsection{Rozdziały}
%
% \begin{macro}{\chapter}
% Właściwy układ tytułów rozdziałów łatwo uzyskujemy przy pomocy
% wcześniej przygotowanych szablonów:
% \begin{macrocode}
%<*book>
\SetSectionFormatting[breakbefore,wholewidth]{chapter}
{0\p@}
{\FormatRigidChapterHeading{6.4\baselineskip}{12\p@}%
{\large\@chapapp\space}{\LARGE}}
{1.6\baselineskip}
%
%<*report>
\SetSectionFormatting[breakbefore,wholewidth]{chapter}
{56\p@}
{\FormatBlockHeading{\LARGE}}
{24\p@}
%
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\chapter@prehead}
% Ponieważ rozdział zawsze zaczyna się od nowej strony,
% wykorzystujemy makro \cs{chapter@prehead} do dodania stosownych
% poleceń przed nagłówkiem. Zaczynamy od ustawienia stylu dla
% ostatniej strony poprzedniego rozdziału na \pstyle{closing} (ale
% tylko jeśli na tej stronie nie użyto jeszcze polecenia
% \cs{thispagestyle} --- w~szczególności jednostronicowe rozdziały
% mają jednak styl \pstyle{opening}). Następnie kończymy stronę,
% ewentualnie wypuszczamy jedną pustą, wreszcie ustawiamy styl
% pierwszej strony nowego rozdziału na \pstyle{opening}.
% \begin{macrocode}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\chapter@toc}
%
% \begin{macrocode}
\newcommand*\chapter@toc{%
\ifHeadingNumbered\typeout{\@chapapp\space\thechapter.}\fi
\addcontentsline{toc}{chapter}{%
\ifHeadingNumbered
% \protect\numberline{\mw@seccntformat{\HeadingNumber}}%
% \mw@seccntformat{\@chapapp\ \HeadingNumber}%
\fi
\HeadingTOCText}%
\addtocontents{lof}{\protect\addvspace{10\p@}}%
\addtocontents{lot}{\protect\addvspace{10\p@}}%
}
% \end{macrocode}
% \end{macro}
%
% \begin{macrocode}
%
% \addcontentsline{toc}{chapter}{%
% % \protect\numberline{%
% % \@chapapp\
% \thechapter
% }%
% .\enspace
% \end{macrocode}
%
%
% \subsubsection{Nagłówki niższych rzędów}
%
% \begin{macro}{\section}
%
% \begin{macrocode}
\SetSectionFormatting{section}
{24\p@\@plus5\p@\@minus2\p@}
{\FormatHangHeading{\large}}
{10\p@\@plus3\p@}
%
\SetSectionFormatting{subsection}
{16\p@\@plus4\p@\@minus1\p@}
{\FormatHangHeading{}}
{6\p@\@plus2\p@}
%
\SetSectionFormatting{subsubsection}
{10\p@\@plus2\p@\@minus1\p@}
{\FormatHangHeading{}}
{4\p@\@plus1\p@}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\paragraph}
% This gives a run-in heading with white space above and to the
% right of the heading, the title set in |\normalsize\bfseries|.
% \begin{macrocode}
\SetSectionFormatting[runin]{paragraph}
{\bigskipamount}
{\FormatRunInHeading{}}
{.5em}
%
\SetSectionFormatting[runin]{subparagraph}
{\medskipamount}
{\FormatRunInHeading{}}
{.5em}
% \end{macrocode}
% \end{macro}
%
% \subsection{Środowiska listowe}
%
% \subsubsection{Parametry dotyczące wszystkich list}
%
% The following commands are used to set the default values for the list
% environment's parameters. See the \LaTeX{} manual for an explanation
% of the meanings of the parameters. Defaults for the list
% environment are set as follows. First, |\rightmargin|,
% |\listparindent| and |\itemindent| are set to 0pt. Then, for a Kth
% level list, the command |\@listK| is called, where `K' denotes `i',
% '`i', ... , `vi'. (I.e., |\@listiii| is called for a third-level
% list.) By convention, |\@listK| should set |\leftmargin| to
% |\leftmarginK|.
%
% \begin{macro}{\leftmargin}
% \begin{macro}{\leftmargini}
% \begin{macro}{\leftmarginii}
% \begin{macro}{\leftmarginiii}
% \begin{macro}{\leftmarginiv}
% \begin{macro}{\leftmarginv}
% \begin{macro}{\leftmarginvi}
% When we are in two column mode some of the margins are set somewhat
% smaller.
% \begin{macrocode}
%<*article|report|book>
\setlength\leftmargini{1\parindent}
% \end{macrocode}
% Until the whole of the parameter setting in these files is
% rationalised, we need to set the value of |\leftmargin| at this
% outer level.
% \begin{macrocode}
\leftmargin \leftmargini
% \end{macrocode}
% The following three are calculated so that they are larger than
% the sum of |\labelsep| and the width of the default labels (which
% are `(m)', `vii.' and `M.').
% \begin{macrocode}
\setlength\leftmarginii {\parindent}
\setlength\leftmarginiii {\parindent}
\setlength\leftmarginiv {\parindent}
\if@twocolumn
\setlength\leftmarginv {.5em}
\setlength\leftmarginvi {.5em}
\else
\setlength\leftmarginv {1em}
\setlength\leftmarginvi {1em}
\fi
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\labelsep}
% \begin{macro}{\labelwidth}
% |\labelsep| is the distance between the label and the text of an
% item; |\labelwidth| is the width of the label.
% \begin{macrocode}
\setlength \labelsep {.5em}
\setlength \labelwidth{\leftmargini}
\addtolength\labelwidth{-\labelsep}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\partopsep}
% When the user leaves a blank line before the environment an extra
% vertical space of |\partopsep| is inserted, in addition to
% |\parskip| and |\topsep|.
% \begin{macrocode}
\setlength\partopsep{0\p@}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@beginparpenalty}
% \begin{macro}{\@endparpenalty}
% These penalties are inserted before and after a list or paragraph
% environment. They are set to a bonus value to encourage page
% breaking at these points.
% \begin{macro}{\@itempenalty}
% This penalty is inserted between list items.
% \begin{macrocode}
\@beginparpenalty -\@lowpenalty
\@endparpenalty -\@lowpenalty
\@itempenalty -\@lowpenalty
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\@listi}
% Parametry dla pierwszego poziomu środowisk listowych, to znaczy
% list, które nie są zagnieżdżone wewnątrz innych list.
%
% W naszej tradycji typograficznej unika się pionowych świateł
% w~środowiskach listowych. Dlatego wszystkie parametry
% odpowiedzialne za odstępy pionowe zostały wyzerowane z~wyjątkiem
% małych odstępów wokół listy jako całości.
%
% \begin{macrocode}
\def\@listi{\leftmargin\leftmargini
\parsep \z@
\topsep .5\baselineskip plus .25\baselineskip minus
.125\baselineskip
% \partopsep .5\baselineskip
\itemsep \z@}
% \end{macrocode}
% We initialise the parameters although strictly speaking that
% is not necessary.
% \begin{macrocode}
\@listi
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@listii}
% \begin{macro}{\@listiii}
% \begin{macro}{\@listiv}
% \begin{macro}{\@listv}
% \begin{macro}{\@listvi}
% Parametry dla zagnieżdżonych list. Tutaj wszystkie odstępy
% pionowe wyzerowane.
% \begin{macrocode}
\def\@listii {\leftmargin\leftmarginii
\labelwidth\leftmarginii
\advance\labelwidth-\labelsep
\topsep \z@
\parsep \z@
\itemsep \z@}
\def\@listiii{\leftmargin\leftmarginiii
\labelwidth\leftmarginiii
\advance\labelwidth-\labelsep
\itemsep \z@}
\def\@listiv {\leftmargin\leftmarginiv
\labelwidth\leftmarginiv
\advance\labelwidth-\labelsep}
\def\@listv {\leftmargin\leftmarginv
\labelwidth\leftmarginv
\advance\labelwidth-\labelsep}
\def\@listvi {\leftmargin\leftmarginvi
\labelwidth\leftmarginvi
\advance\labelwidth-\labelsep}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsubsection{Środowisko \env{enumerate}}
%
% \begin{macro}{\enumerate}
% Dokonujemy drobnej zmiany w~definicji środowiska. Pomysł jest
% mianowicie taki: odstęp zadany przez \cs{topsep} będzie stosowany
% dla \env{enumerate} tylko, jeśli przed jego początkiem jest pusta
% linia, czyli jeśli środowisko zaczyna nowy akapit. W~przeciwnym
% przypadku uznajemy, że tekst wewnątrz \env{enumerate} jest
% częścią zdania rozpoczętego przed nim i odstęp jest
% niepotrzebny.
% \begin{macrocode}
\def\enumerate{%
\ifnum \@enumdepth >\thr@@\@toodeep\else
\advance\@enumdepth\@ne
\edef\@enumctr{enum\romannumeral\the\@enumdepth}%
\expandafter
\list
\csname label\@enumctr\endcsname
{\partopsep\topsep \topsep\z@ %MW
\usecounter\@enumctr\def\makelabel##1{##1\hfil}}%
\fi}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\enumerate*}
% Długa wersja \env{enumerate} --- zwykłe ponumerowane akapity.
% \begin{macrocode}
\newenvironment*{enumerate*}{%
\ifnum \@enumdepth >\thr@@\@toodeep\else
\advance\@enumdepth\@ne
\edef\@enumctr{enum\romannumeral\the\@enumdepth}%
\expandafter
\list
\csname label\@enumctr\endcsname
{\partopsep\topsep \topsep\z@ %MW
\leftmargin\z@ \labelwidth\z@
\itemindent\@parindent \advance\itemindent\labelsep
\usecounter\@enumctr\def\makelabel##1{##1\hfil}}%
\fi}
{\endlist}
% \end{macrocode}
% \end{macro}
%
% The enumerate environment uses four counters: \Lcount{enumi},
% \Lcount{enumii}, \Lcount{enumiii} and \Lcount{enumiv}, where
% \Lcount{enumN} controls the numbering of the Nth level
% enumeration.
%
% \begin{macro}{\theenumi}
% \begin{macro}{\theenumii}
% \begin{macro}{\theenumiii}
% \begin{macro}{\theenumiv}
% The counters are already defined in \file{latex.dtx}, but their
% representation is changed here.
%
% \begin{macrocode}
\renewcommand\theenumi{\@arabic\c@enumi}
\renewcommand\theenumii{\@alph\c@enumii}
\renewcommand\theenumiii{\@roman\c@enumiii}
\renewcommand\theenumiv{\@Alph\c@enumiv}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\labelenumi}
% \begin{macro}{\labelenumii}
% \begin{macro}{\labelenumiii}
% \begin{macro}{\labelenumiv}
% Wydaje się rozsądne numerowanie pierwszego poziomu wyliczeń
% 1., 2., 3., \dots a drugiego a), b), c), \dots. [Ale co dalej?]
% \begin{macrocode}
\newcommand\labelenumi{\theenumi.}
\newcommand\labelenumii{\theenumii)}
\newcommand\labelenumiii{\theenumiii.}
\newcommand\labelenumiv{\theenumiv.}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\p@enumii}
% \begin{macro}{\p@enumiii}
% \begin{macro}{\p@enumiv}
% The expansion of |\p@enumN||\theenumN| defines the output of a
% |\ref| command when referencing an item of the Nth level of an
% enumerated list.
% \begin{macrocode}
\renewcommand\p@enumii{\theenumi}
\renewcommand\p@enumiii{\theenumi\theenumii)}
\renewcommand\p@enumiv{\p@enumiii\theenumiii}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsubsection{Środowisko \env{itemize}}
%
% \begin{macro}{\itemize}
% Zmiana podobna jak dla \env{enumerate}.
% \begin{macrocode}
\def\itemize{%
\ifnum \@itemdepth >\thr@@\@toodeep\else
\advance\@itemdepth\@ne
\edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
\expandafter
\list
\csname\@itemitem\endcsname
{\partopsep\topsep \topsep\z@ %MW
\def\makelabel##1{##1\hfil}}%
\fi}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\itemize*}
%
% \begin{macrocode}
\newenvironment*{itemize*}{%
\ifnum \@itemdepth >\thr@@\@toodeep\else
\advance\@itemdepth\@ne
\edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
\expandafter
\list
\csname\@itemitem\endcsname
{\partopsep\topsep \topsep\z@ %MW
\leftmargin\z@ \labelwidth\z@
\itemindent\@parindent \advance\itemindent\labelsep
\def\makelabel##1{##1\hfil}}%
\fi}
{\endlist}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\labelitemi}
% \begin{macro}{\labelitemii}
% \begin{macro}{\labelitemiii}
% \begin{macro}{\labelitemiv}
% Itemization is controlled by four commands: |\labelitemi|,
% |\labelitemii|, |\labelitemiii|, and |\labelitemiv|, which define
% the labels of the various itemization levels.
% \begin{macrocode}
\newcommand\labelitemi{\textemdash}
\newcommand\labelitemii{\textemdash}
\newcommand\labelitemiii{\textemdash}
\newcommand\labelitemiv{\textemdash}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsubsection{Description}
%
% \begin{environment}{description}
%
% \begin{macrocode}
\newenvironment{description}
{\list{}{\partopsep\topsep \topsep\z@ %MW
\labelwidth\z@ \itemindent-\leftmargin
\let\makelabel\descriptionlabel}}
{\endlist}
% \end{macrocode}
% \end{environment}
%
% \begin{macro}{\descriptionlabel}
% To change the formatting of the label, you must redefine
% |\descriptionlabel|.
%
% \changes{v1.2k}{1994/05/06}{Inserted \cs{normalfont}}
% \changes{v1.2y}{1995/01/31}{made command short}
% \begin{macrocode}
\newcommand*\descriptionlabel[1]{\hspace\labelsep
\normalfont\bfseries #1}
%
% \end{macrocode}
% \end{macro}
%
% \subsection{Defining new environments}
%
% \subsubsection{Abstract}
%
% \begin{environment}{abstract}
% When we are producing a separate titlepage we also put the
% abstract on a page of its own. It will be centred vertically on
% the page.
%
% Note that this environment is not defined for books.
% \changes{v1.3e}{1995/06/19}{Added setting of \cs{@endparpenalty}
% to avoid page break after abstract heading.}
% \begin{macrocode}
% \changes{v1.3m}{1995/10/23}{Added setting of \cs{beginparpenalty} to
% discourage page break before abstract heading.}
%<*article|report>
\if@titlepage
\newenvironment{abstract}{%
\titlepage
\null\vfil
\@beginparpenalty\@lowpenalty
\begin{center}%
\bfseries \abstractname
\@endparpenalty\@M
\end{center}}%
{\par\vfil\null\endtitlepage}
% \end{macrocode}
% When we are not making a separate titlepage --the default for the
% article document class-- we have to check if we are in twocolumn
% mode. In that case the abstract is as a |\section*|, otherwise
% the quotation environment is used to typeset the abstract.
% \begin{macrocode}
\else
\newenvironment{abstract}{%
\if@twocolumn
\section*{\abstractname}%
\else
\small
\begin{center}%
{\bfseries \abstractname\vspace{-.5em}\vspace{\z@}}%
\end{center}%
\quotation
\fi}
{\if@twocolumn\else\endquotation\fi}
\fi
%
% \end{macrocode}
% \end{environment}
%
% \subsubsection{Verse}
%
% \begin{environment}{verse}
% The verse environment is defined by making clever use of the
% list environment's parameters. The user types |\\| to end a line.
% This is implemented by |\let|'ing |\\| equal |\@centercr|.
%
% \changes{v1.3j}{1995/08/16}{stop \cs{item} scanning for [ with
% \cs{relax}}
% \begin{macrocode}
\newenvironment{verse}
{\let\\\@centercr
\list{}{\itemsep \z@
\parsep \medskipamount
\itemindent -1.5em%
\listparindent\itemindent
\rightmargin \leftmargin
\advance\leftmargin 1.5em}%
\item\relax}
{\endlist}
% \end{macrocode}
% \end{environment}
%
% \subsubsection{Quotation}
%
% \begin{environment}{quotation}
% The quotation environment is also defined by making clever use of
% the list environment's parameters. The lines in the environment
% are set smaller than |\textwidth|. The first line of a paragraph
% inside this environment is indented.
%
% \changes{v1.3j}{1995/08/16}{stop \cs{item} scanning for [ with
% \cs{relax}}
% \begin{macrocode}
\newenvironment{quotation}
{\list{}{\listparindent 1.5em%
\itemindent \listparindent
\rightmargin \leftmargin
\parsep \z@ \@plus\p@}%
\item\relax}
{\endlist}
% \end{macrocode}
% \end{environment}
%
% \subsubsection{Quote}
%
% \begin{environment}{quote}
% The quote environment is like the quotation environment except
% that paragraphs are not indented.
%
% \changes{v1.3j}{1995/08/16}{stop \cs{item} scanning for [ with
% \cs{relax}}
% \begin{macrocode}
\newenvironment{quote}
{\list{}{\rightmargin\leftmargin}%
\item\relax}
{\endlist}
% \end{macrocode}
% \end{environment}
%
% \subsubsection{Środowiska definiowane poleceniem \cs{newtheorem}}
% W~tym punkcie przedefiniowujemy dwa makra pochodzące z~kernela
% \LaTeX a, aby dodać kropkę po numerze twierdzenia/definicji/czegotam.
% \begin{macrocode}
\def\@begintheorem#1#2{\trivlist
\item[\hskip \labelsep{\bfseries #1\ #2.}]\itshape}
\def\@opargbegintheorem#1#2#3{\trivlist
\item[\hskip \labelsep{\bfseries #1\ #2.\ (#3)}]\itshape}
% \end{macrocode}
%
% \subsubsection{Titlepage}
%
% \begin{environment}{titlepage}
% In the normal environments, the titlepage environment does nothing
% but start and end a page, and inhibit page numbers. In the report
% style, it also resets the page number to one, and then sets it
% back to one at the end.
% In two-column style, it still makes a
% one-column page.
% \begin{macrocode}
\newenvironment{titlepage}
{%
% \cleardoublepage
\if@twocolumn
\@restonecoltrue\onecolumn
\else
\@restonecolfalse\newpage
\fi
\thispagestyle{blank}%
\setcounter{page}\@ne
}%
{\if@restonecol\twocolumn \else \newpage \fi
% \end{macrocode}
% If we are not in two-side mode the first page after the title page
% should also get page number 1.
% \begin{macrocode}
\if@twoside\else
\setcounter{page}\@ne
\fi
}
% \end{macrocode}
% \end{environment}
%
% \subsubsection{Appendix}
%
% \begin{macro}{\appendix}
%
% The |\appendix| command is not really an environment, it is a
% macro that makes some changes in the way things are done.
%
% In the article document class the |\appendix| command must do the
% following:
% \begin{itemize}
% \item reset the section and subsection counters to zero,
% \item redefine |\thesection| to produce alphabetic appendix
% numbers. This redefinition is done globally to ensure that it
% survives even if |\appendix| is issued within an environment such
% as \texttt{multicols}.
% \end{itemize}
%
% \changes{1.3z}{1998/09/19}{Redefine \cs{thesection} globally (pr/2862)}
% \begin{macrocode}
%<*article>
\newcommand\appendix{\par
\setcounter{section}{0}%
\setcounter{subsection}{0}%
\gdef\thesection{\@Alph\c@section}}
%
% \end{macrocode}
%
% In the report and book document classes the |\appendix| command
% must do the following:
% \begin{itemize}
% \item reset the chapter and section counters to zero,
% \item set |\@chapapp| to |\appendixname| (for messages),
% \item redefine the chapter counter to produce appendix numbers,
% \item possibly redefine the |\chapter| command if appendix titles
% and headings are to look different from chapter titles and
% headings. This redefinition is done globally to ensure that it
% survives even if |\appendix| is issued within an environment such
% as \texttt{multicols}.
% \end{itemize}
%
% \begin{macrocode}
%<*report|book>
\newcommand\appendix{\par
\setcounter{chapter}{0}%
\setcounter{section}{0}%
\gdef\@chapapp{\appendixname}%
\gdef\thechapter{\@Alph\c@chapter}}
%
% \end{macrocode}
% \end{macro}
%
% \subsection{Setting parameters for existing environments}
%
% \subsubsection{Array and tabular}
%
% \begin{macro}{\arraycolsep}
% The columns in an array environment are separated by
% 2|\arraycolsep|.
% \begin{macrocode}
\setlength\arraycolsep{5\p@}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\tabcolsep}
% The columns in an tabular environment are separated by
% 2|\tabcolsep|.
% \begin{macrocode}
\setlength\tabcolsep{6\p@}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\arrayrulewidth}
% The width of rules in the array and tabular environments is given
% by\\ |\arrayrulewidth|.
% \begin{macrocode}
\setlength\arrayrulewidth{.4\p@}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\doublerulesep}
% The space between adjacent rules in the array and tabular
% environments is given by |\doublerulesep|.
% \begin{macrocode}
\setlength\doublerulesep{2\p@}
% \end{macrocode}
% \end{macro}
%
% \subsubsection{Tabbing}
%
% \begin{macro}{\tabbingsep}
% This controls the space that the |\'| command puts in. (See
% \LaTeX{} manual for an explanation.)
% \begin{macrocode}
\setlength\tabbingsep{\labelsep}
% \end{macrocode}
% \end{macro}
%
% \subsubsection{Minipage}
%
% \begin{macro}{\@minipagerestore}
% The macro |\@minipagerestore| is called upon entry to a minipage
% environment to set up things that are to be handled differently
% inside a minipage environment. In the current styles, it does
% nothing.
% \end{macro}
%
% \begin{macro}{\@mpfootins}
% Minipages have their own footnotes; |\skip||\@mpfootins| plays
% same r\^ole for footnotes in a minipage as |\skip||\footins| does
% for ordinary footnotes.
%
% \begin{macrocode}
\skip\@mpfootins = \skip\footins
% \end{macrocode}
% \end{macro}
%
% \subsubsection{Framed boxes}
%
% \begin{macro}{\fboxsep}
% The space left by |\fbox| and |\framebox| between the box and the
% text in it.
% \begin{macro}{\fboxrule}
% The width of the rules in the box made by |\fbox| and |\framebox|.
% \begin{macrocode}
\setlength\fboxsep{3\p@}
\setlength\fboxrule{.4\p@}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \subsubsection{Equation and eqnarray}
%
% \begin{macro}{\theequation}
% When within chapters, the equation counter will be reset at
% the beginning of a new chapter and the equation number will
% be prefixed by the chapter number.
% \changes{v1.3u}{1996/10/31}{Added test for non-zero chapter number}
%
% This code must follow the |\chapter| definition or, more exactly,
% the definition of the chapter counter.
% \begin{macrocode}
%\renewcommand \theequation {\@arabic\c@equation}
%<*report|book>
\@addtoreset {equation}{chapter}
\renewcommand\theequation
{\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@equation}
%
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\jot}
% |\jot| is the extra space added between lines of an eqnarray
% environment. The default value is used.
% \begin{macrocode}
% \setlength\jot{3pt}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@eqnnum}
% The macro |\@eqnnum| defines how equation numbers are to appear in
% equations. Again the default is used.
%
% \begin{macrocode}
% \def\@eqnnum{(\theequation)}
% \end{macrocode}
% \end{macro}
%
% \subsection{Floating objects}
%
% The file \file{latex.dtx} only defines a number of tools with
% which floating objects can be defined. This is done in the
% document class. It needs to define the following macros for each
% floating object of type \texttt{TYPE} (e.g., \texttt{TYPE} =
% figure).
%
% \begin{description}
% \item[\texttt{\bslash fps@TYPE}]
% The default placement specifier for floats of type
% \texttt{TYPE}.
%
% \item[\texttt{\bslash ftype@TYPE}]
% The type number for floats of type \texttt{TYPE}. Each
% \texttt{TYPE} has associated a unique positive \texttt
% {TYPE} number, which is a power of two. E.g., figures might
% have type number 1, tables type number 2, programs type
% number 4, etc.
%
% \item[\texttt{\bslash ext@TYPE}]
% The file extension indicating the file on which the contents
% list for float type \texttt{TYPE} is stored. For example,
% |\ext@figure| = `lof'.
%
% \item[\texttt{\bslash fnum@TYPE}]
% A macro to generate the figure number for a caption. For
% example, |\fnum@TYPE| == `Figure |\thefigure|'.
%
% \item[\texttt{\bslash @makecaption}{\meta{num}}{\meta{text}}]
% A macro to make a caption, with \meta{num} the value produced
% by |\fnum@...| and \meta{text} the text of the caption. It
% can assume it's in a |\parbox| of the appropriate width.
% This will be used for \emph{all} floating objects.
%
% \end{description}
%
% The actual environment that implements a floating object such as
% a figure is defined using the macros |\@float| and |\end@float|,
% which are defined in \file{latex.dtx}.
%
% An environment that implements a single column floating object is
% started with |\@float{|\texttt{TYPE}|}[|\meta{placement}|]| of type
% \texttt{TYPE} with \meta{placement} as the placement specifier.
% The default value of \meta{PLACEMENT} is defined by |\fps@TYPE|.
%
% The environment is ended by |\end@float|. E.g., |\figure| ==
% |\@float|{figure}, |\endfigure| == |\end@float|.
%
% \begin{macro}{\@floatboxreset}
% Przedefiniowujemy standardowe makro \cs{@floatboxreset} aby
% zmienić stopień (a~może i~inne atrybuty) pisma w~środowiskach
% przemieszczalnych.
% \begin{macrocode}
\def\@floatboxreset{%
\reset@font
\normalsize
\@setminipage
\csname\@captype settings\endcsname
}
% \end{macrocode}
% \end{macro}
%
% \subsubsection{Figure}
%
% Here is the implementation of the figure environment.
%
% \begin{macro}{\c@figure}
% First we have to allocate a counter to number the figures.
%
% In the report and book document classes figures within chapters are
% numbered per chapter.
% \changes{v1.3u}{1996/10/31}{Added test for non-zero chapter number}
% \begin{macrocode}
%<*article>
\newcounter{figure}
\renewcommand \thefigure {\@arabic\c@figure}
%
%<*report|book>
\newcounter{figure}[chapter]
\renewcommand \thefigure
{\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@figure}
%
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\fps@figure}
% \begin{macro}{\ftype@figure}
% \begin{macro}{\ext@figure}
% \begin{macro}{\num@figure}
% Here are the parameters for the floating objects of type `figure'.
% \begin{macrocode}
\def\fps@figure{tbp}
\def\ftype@figure{1}
\def\ext@figure{lof}
\def\fnum@figure{\figurename~\thefigure}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{environment}{figure}
% \begin{environment}{figure*}
% And the definition of the actual environment. The form with the
% |*| is used for double column figures.
% \begin{macrocode}
\newenvironment{figure}
{\@float{figure}}
{\end@float}
\newenvironment{figure*}
{\@dblfloat{figure}}
{\end@dblfloat}
% \end{macrocode}
% \end{environment}
% \end{environment}
%
% \subsubsection{Table}
%
% Here is the implementation of the table environment. It is very
% much the same as the figure environment.
%
% \begin{macro}{\c@table}
% First we have to allocate a counter to number the tables.
%
% In the report and book document classes tables within chapters are
% numbered per chapter.
% \changes{v1.3u}{1996/10/31}{Added test for non-zero chapter number}
% \begin{macrocode}
%<*article>
\newcounter{table}
\renewcommand\thetable{\@arabic\c@table}
%
%<*report|book>
\newcounter{table}[chapter]
\renewcommand \thetable
{\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@table}
%
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\fps@table}
% \begin{macro}{\ftype@table}
% \begin{macro}{\ext@table}
% \begin{macro}{\num@table}
% Here are the parameters for the floating objects of type `table'.
% \begin{macrocode}
\def\fps@table{tbp}
\def\ftype@table{2}
\def\ext@table{lot}
\def\fnum@table{\tablename~\thetable}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{environment}{table}
% \begin{environment}{table*}
% And the definition of the actual environment. The form with the
% |*| is used for double column tables.
% \begin{macrocode}
\newenvironment{table}
{\@float{table}}
{\end@float}
\newenvironment{table*}
{\@dblfloat{table}}
{\end@dblfloat}
% \end{macrocode}
% \end{environment}
% \end{environment}
%
% \subsubsection{Polecenie \sc{caption}}
%
% The |\caption| command calls |\@makecaption| to format the
% caption of floating objects. It gets two arguments,
% \meta{number}, the number of the floating object and \meta{text},
% the text of the caption. Usually \meta{number} contains a string
% such as `Figure 3.2'. The macro can assume it is called inside a
% |\parbox| of right width, with |\normalsize|.
%
% \begin{macro}{\centeredlast}
% Przy składzie podpisów będziemy stosować następujące makro
% składające akapit tak, że jego ostatnia linia jest scentrowana.
% \begin{macrocode}
\def\centeredlast{%
\let\\\@centercr
\rightskip\z@\@plus-.5fil
\leftskip\z@\@plus.5fil
\parindent\z@
\parfillskip\@flushglue
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\abovecaptionskip}
% \begin{macro}{\belowcaptionskip}
% These lengths contain the amount of white space to leave above
% and below the caption.
% \begin{macrocode}
\newlength\abovecaptionskip
\newlength\belowcaptionskip
\setlength\abovecaptionskip{.5\baselineskip}
\setlength\belowcaptionskip{.5\baselineskip}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\@caption}
% Modyfikujemy standardowe makro \cs{@caption} tak, aby w~spisach
% rysunków i~tabel pojawiała się kropka po numerze obiektu.
% Zmieniamy też stopień pisma.
% \begin{macrocode}
\long\def\@caption#1[#2]#3{%
\par
\addcontentsline{\csname ext@#1\endcsname}{#1}%
{\protect\numberline{\csname the#1\endcsname.}{\ignorespaces #2}}%
\begingroup
\@parboxrestore
\if@minipage
\@setminipage
\fi
\captionsettings
\@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
\endgroup}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\mw@caption@hyperref}
% Niestety pakiet hyperref przedefiniowuje caption dlatego musimy
% zasłonić jego redefinicję kolejną redefinicją zawierającą wersję
% hyperrefową z dodaną kropką i z \cs{captionsettings}.
% \begin{macrocode}
\long\def\mw@caption@hyperref#1[#2]#3{%
\expandafter\ifx\csname if@capstart\expandafter\endcsname
\csname iftrue\endcsname
\global\let\@currentHref\hc@currentHref
\else
\hyper@makecurrent{\@captype}%
\fi
\@ifundefined{NR@gettitle}{%
\def\@currentlabelname{#2}%
}{%
\NR@gettitle{#2}%
}%
\par\addcontentsline{\csname ext@#1\endcsname}{#1}{%
\protect\numberline{\csname the#1\endcsname.}{\ignorespaces #2}%
}%
\begingroup
\@parboxrestore
\if@minipage
\@setminipage
\fi
\captionsettings
\expandafter\ifx\csname if@capstart\expandafter\endcsname
\csname iftrue\endcsname
\global\@capstartfalse
\@makecaption{\csname fnum@#1\endcsname}{\ignorespaces#3}%
\else
\@makecaption{\csname fnum@#1\endcsname}{%
\ignorespaces
\ifHy@nesting
\expandafter\hyper@@anchor\expandafter{\@currentHref}{#3}%
\else
\Hy@raisedlink{%
\expandafter\hyper@@anchor\expandafter{%
\@currentHref
}{\relax}%
}%
#3%
\fi
}%
\fi
\par
\endgroup
}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\@makecaption}
% The definition of this macro is |\long| in order to allow more
% then one paragraph in a caption.
% \begin{macrocode}
\long\def\@makecaption#1#2{%
\addvspace\abovecaptionskip
% \end{macrocode}
% Formujemy podpis odmiennie niż w~klasach standardowych: jako
% akapit ze scentrowaną ostatnią (w~szczególności jedyną) linią.
% \begin{macrocode}
\bgroup\centeredlast
#1.\enspace#2\par
\egroup
\vskip\belowcaptionskip}
% \end{macrocode}
% \end{macro}
%
% \subsection{Font changing}
%
% Here we supply the declarative font changing commands that were
% common in \LaTeX\ version 2.09 and earlier. These commands work
% in text mode \emph{and} in math mode. They are provided for
% compatibility, but one should start using the |\text...| and
% |\math...| commands instead. These commands are defined using
% |\DeclareTextFontCommand|, a command with three arguments: the
% user command to be defined; \LaTeX\ commands to execute in text
% mode and \LaTeX\ commands to execute in math mode.
%
% \begin{macro}{\rm}
% \changes{v1.0f}{1993/12/08}{Macro added}
% \begin{macro}{\tt}
% \changes{v1.0f}{1993/12/08}{Macro added}
% \begin{macro}{\sf}
% \changes{v1.0f}{1993/12/08}{Macro added}
%
% The commands to change the family. When in compatibility mode we
% select the `default' font first, to get \LaTeX2.09 behviour.
% \begin{macrocode}
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\bf}
% The command to change to the bold series. One should use
% |\mdseries| to explicitly switch back to medium series.
% \begin{macrocode}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\sl}
% \begin{macro}{\it}
% \begin{macro}{\sc}
%
% And the commands to change the shape of the font. The slanted and
% small caps shapes are not available by default as math alphabets,
% so those changes do nothing in math mode. However, we do warn the
% user that the selection will not have any effect.One should use
% |\upshape| to explicitly change back to the upright shape.
% \begin{macrocode}
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\cal}
% \begin{macro}{\mit}
%
% The commands |\cal| and |\mit| should only be used in math mode,
% outside math mode they have no effect. Currently the New Font
% Selection Scheme defines these commands to generate warning
% messages. Therefore we have to define them `by hand'.
% \begin{macrocode}
\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \section{Cross Referencing}
% \subsection{Table of Contents, etc.}
%
% A |\section| command writes a
% |\contentsline{section}{|\meta{title}|}{|\meta{page}|}| command
% on the \file{.toc} file, where \meta{title} contains the
% contents of the entry and \meta{page} is the page number. If
% sections are being numbered, then \meta{title} will be of the
% form |\numberline{|\meta{num}|}{|\meta{heading}|}| where
% \meta{num} is the number produced by |\thesection|. Other
% sectioning commands work similarly.
%
% A |\caption| command in a `figure' environment writes
%
% |\contentsline{figure}{\numberline{|\meta{num}|}{|%
% \meta{caption}|}}{|\meta{page}|}|
%
% on the .\file{lof} file, where \meta{num} is the number produced
% by |\thefigure| and \meta{caption} is the figure caption. It
% works similarly for a `table' environment.
%
% The command |\contentsline{|\meta{name}|}| expands to
% |\l@|\meta{name}. So, to specify the table of contents, we must
% define |\l@chapter|, |\l@section|, |\l@subsection|, ... ; to
% specify the list of figures, we must define |\l@figure|; and so
% on. Most of these can be defined with the |\@dottedtocline|
% command, which works as follows.
%
% |\@dottedtocline{|\meta{level}|}{|\meta{indent}|}{|^^A
% \meta{numwidth}|}{|^^A
% \meta{title}|}{|\meta{page}|}|
%
% \begin{description}
% \item[\meta{level}] An entry is produced only if\meta{ level}
% $<=$ value of the \Lcount{tocdepth} counter. Note,
% |\chapter| is level 0, |\section| is level 1, etc.
% \item[\meta{indent}] The indentation from the outer left margin
% of the start of the contents line.
% \item[\meta{numwidth}] The width of a box in which the section
% number is to go, if \meta{title} includes a |\numberline|
% command.
% \end{description}
%
% \begin{macro}{\@pnumwidth}
% \begin{macro}{\@tocrmarg}
% \begin{macro}{\@dotsep}
% This command uses the following three parameters, which are set
% with a |\newcommand| (so em's can be used to make them depend upon
% the font).
% \begin{description}
% \item[\texttt{\bslash @pnumwidth}] The width of a box in which the
% page number is put.
% \item[\texttt{\bslash @tocrmarg}] The right margin for multiple
% line entries. One wants |\@tocrmarg| $\ge$ |\@pnumwidth|
% \item[\texttt{\bslash @dotsep}] Separation between dots, in mu
% units. Should be defined as a number like 2 or 1.7
% \end{description}
%
% \begin{macrocode}
\newcommand\@pnumwidth{1.55em}
\newcommand\@tocrmarg{2.55em plus 2cm}
\newcommand\@dotsep{4.5}
%\setcounter{tocdepth}{3}
%\setcounter{tocdepth}{2}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsubsection{Spis treści}
%
% \begin{macro}{\tableofcontents}
% Spis treści w wersji report i book jest zawsze składany jednołamowo.
%
% \begin{macrocode}
\newcommand\tableofcontents{%
%<*report|book>
\if@twocolumn
\@restonecoltrue\onecolumn
\else
\@restonecolfalse
\fi
%
% \end{macrocode}
% The title is set using the |\chapter*| command, making sure that
% the running head --if one is required-- contains the right
% information.
% \begin{macrocode}
{\@tempcnta=\c@tocdepth
\c@tocdepth=-1
%\chapter*%
% \section*%
{\contentsname}%
\protect\@mkboth{\contentsname}{\contentsname}%
\c@tocdepth=\@tempcnta
% \end{macrocode}
% The the actual table of contents is made by calling
% |\@starttoc{toc}|. After that we restore twocolumn mode if
% necessary.
% \begin{macrocode}
\secondarysize
\gdef\previous@toc@level{-1000}%
\@starttoc{toc}}%
% \if@restonecol\twocolumn\fi
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\mw@tocskip}
% Do dodawania odstępu w~spisie treści. Korzysta z~zapamiętanego
% poziomu poprzedniej pozycji, aby stosownie dobrać grzywnę za
% złamanie przed danym elementem. W~szczególności zabrania
% łamania, jeżeli poprzedni element był z~wyższego poziomu.\\
% 1 -- poziom, 2 -- odstęp pionowy
% \begin{macrocode}
\def\mw@tocskip#1#2{%
\ifnum#1>\previous@toc@level
\nobreak
\else\ifnum#1<\previous@toc@level
\addpenalty\@secpenalty % czy to dobra wartosc?
\fi\fi
\gdef\previous@toc@level{#1}%
\vskip #2\relax
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\mw@tocline}
% Trochę podrasowane \cs{@dottedtocline}. Drugi parametr to
% wcięcie pierwszego wiersza, trzeci to wcięcie
% ewentualnych następnych wierszy tej pozycji. Oba wcięcia liczone
% od marginesu (inaczej niż w~oryginale).
% \begin{macrocode}
\def\mw@tocline#1#2#3#4#5{%
\ifnum #1>\c@tocdepth \else
\mw@tocskip{#1}{\z@ \@plus.2\p@}%
{\leftskip #3\relax
\@tempdima #3\relax
\advance\@tempdima -#2\relax
\rightskip \@tocrmarg \parfillskip -\rightskip
\interlinepenalty\@M
\noindent\kern-\@tempdima{\ignorespaces#4}\nobreak
\leaders\hbox{$\m@th
\mkern \@dotsep mu\hbox{.}\mkern \@dotsep
mu$}\hfill
\nobreak
\hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5}%
\par}%
\fi}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\SetTOCIndents}
% Do wyznaczenia właściwych wartości wcięć posłuży następujące makro:
% \begin{macrocode}
\newcommand*\SetTOCIndents[1]{\bgroup
\reset@font\secondarysize
\setbox\@tempboxa\hbox{}%
\set@tocindentsX
%{i}%
%{}%
#1\relax
\egroup
}
\def\set@tocindentsX#1#2{%
\ifx\relax#2\expandafter\@gobble\else
\setbox\@tempboxa\hbox{\unhbox\@tempboxa#2}%
\expandafter\xdef\csname @tocindent#1\endcsname{\the\wd\@tempboxa}%
\expandafter\set@tocindentsX
\fi
{#1i}%
}
% \end{macrocode}
% Przy jego pomocy wyznaczamy wcięcia tak, aby mieściły się
% rozsądne numery podpunktów. W~klasie article zaczynamy od
% poziomu \cs{section} więc jest o~jeden mniej. \cs{part} rządzi
% się swoimi prawami --- tutaj nieuwzględnione.
% \begin{macrocode}
%\SetTOCIndents{{}{\bf9.\enspace}{9.10.\enspace}{9.9.10.\enspace}{\quad}{\quad}}
%\SetTOCIndents{{}{\bf9.\enspace}{9.10.\enspace}{9.9.10.\enspace}{9.9.9.10\enspace}{\quad}{\quad}}
%\SetTOCIndents{{}{\quad}{9.10.\enspace}{9.9.10.\enspace}{9.9.9.10.\enspace}{\quad}{\quad}}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\numberline}
%
% \begin{macrocode}
\def\numberline#1{\hb@xt@\@tempdima{#1\hfil}\ignorespaces}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\l@part}
% Each sectioning command needs an additional macro to format its
% entry in the table of contents, as described above. The macro for
% the entry for parts is defined in a special way.
%
% First we make sure that if a pagebreak should occur, it occurs
% \emph{before} this entry. Also a little whitespace is added and a
% group begun to keep changes local.
% \begin{macrocode}
\newcommand*\l@part[2]{%
\ifnum \c@tocdepth >-2\relax
\mw@tocskip{-1}{.6\baselineskip}%
\begingroup
% \end{macrocode}
% We set |\parindent| to 0pt and use |\rightskip| to leave
% enough room for the pagenumbers.\footnote{^^A
% We should really set \cs{rightskip} to \cs{@tocrmarg} instead
% of \cs{@pnumwidth} (no version of {\LaTeX} ever did this),
% otherwise the \cs{rightskip} is too small.
% Unfortunately this can't be changed in {\LaTeXe} as we don't
% want to create different versions of {\LaTeXe} which produce
% different typset output unless this is absolutely necessary;
% instead we suspend it for \LaTeX3.}
% To prevent overfull box messages the |\parfillskip| is set to a
% negative value.
% \begin{macrocode}
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
% \end{macrocode}
% Now we can set the entry, in a large bold font. We make sure to
% leave vertical mode, set the part title and add the pagenumber,
% set flush right.
% \begin{macrocode}
{\leavevmode\normalsize
\def\numberline##1{##1\enspace}%
\hfil\bfseries #1\hfil\null %\hb@xt@\@pnumwidth{\hss #2}%
}\par
% \end{macrocode}
% Prevent a pagebreak immediately after this entry, but use
% |\everypar| to reset the |\if@nobreak| switch. Finally we close
% the group.
% \begin{macrocode}
\nobreak
\global\@nobreaktrue
\everypar{\global\@nobreakfalse\everypar{}}%
\endgroup
\addvspace{.4\baselineskip}%
\fi}
% \end{macrocode}
% \end{macro}
%
% \begin{macrocode}
%<*report|book>
\newcommand*\l@chapter[2]{\addvspace{.3\baselineskip}%
\mw@tocline{0}{\@tocindent}{\@tocindenti}{\textbf{#1}}{#2}%
\addvspace{.2\baselineskip}}
\newcommand*\l@section{\mw@tocline{1}{\@tocindenti}{\@tocindentii}}
%
% \end{macrocode}
%
% \begin{macro}{\l@subsection}
% \begin{macro}{\l@subsubsection}
% \begin{macro}{\l@paragraph}
% \begin{macro}{\l@subparagraph}
% All lower level entries are defined using the macro
% |\mw@tocline| (see above).
% \begin{macrocode}
%<*article>
\newcommand*\l@section[2]{\addvspace{.3\baselineskip}%
\mw@tocline{1}{\@tocindenti}{\@tocindentii}{\textbf{#1}}{#2}%
}
%
\newcommand*\l@subsection{\mw@tocline{2}{\@tocindentii}{\@tocindentiii}}
\newcommand*\l@subsubsection{\mw@tocline{3}{\@tocindentiii}{\@tocindentiiii}}
\newcommand*\l@paragraph{\mw@tocline{4}{\@tocindentiiii}{\@tocindentiiiii}}
\newcommand*\l@subparagraph{\mw@tocline{5}{\@tocindentiiiii}{\@tocindentiiiiii}}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsubsection{List of figures}
%
% \begin{macro}{\listoffigures}
% This macro is used to request that \LaTeX{} produces a list of
% figures. It is very similar to |\tableofcontents|.
%
% \begin{macrocode}
\newcommand\listoffigures{%
%<*report|book>
\if@twocolumn
\@restonecoltrue\onecolumn
\else
\@restonecolfalse
\fi
\chapter*{\listfigurename}
%
% \section*{\listfigurename}
{\secondarysize
\gdef\previous@toc@level{-1000}%
\@starttoc{lof}}%
% \if@restonecol\twocolumn\fi
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\l@figure}
% This macro produces an entry in the list of figures.
% W~klasie report i~book rysunki są numerowane w~obrębie
% rozdziałów, więc numery zajmują więcej miejsca. [Czy to są
% rozsądne wartości???]
% \begin{macrocode}
%\newcommand*\l@figure{\mw@tocline{1}{0pt}{1.5em}}
%\newcommand*\l@figure{\mw@tocline{1}{0pt}{2.5em}}
% \end{macrocode}
% \end{macro}
%
% \subsubsection{List of tables}
%
% \begin{macro}{\listoftables}
% This macro is used to request that \LaTeX{} produces a list of
% tables. It is very similar to |\tableofcontents|.
%
% \begin{macrocode}
\newcommand\listoftables{%
%<*report|book>
\if@twocolumn
\@restonecoltrue\onecolumn
\else
\@restonecolfalse
\fi
\chapter*{\listtablename}
%
% \section*{\listtablename}
{\secondarysize
\gdef\previous@toc@level{-1000}%
\@starttoc{lot}}%
% \if@restonecol\twocolumn\fi
}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\l@table}
% This macro produces an entry in the list of tables.
% \begin{macrocode}
\let\l@table\l@figure
% \end{macrocode}
% \end{macro}
%
% \subsection{Bibliography}
%
% \begin{macro}{\bibindent}
% The ``open'' bibliography format uses an indentation of
% |\bibindent|.
% \begin{macrocode}
\newdimen\bibindent
\setlength\bibindent{1.5em}
% \end{macrocode}
% \end{macro}
%
% \begin{environment}{thebibliography}
% The `thebibliography' environment executes the following
% commands:
%
% |\renewcommand{\newblock}{\hskip.11em \@plus.33em \@minus.07em}|\\
% --- Defines the ``closed'' format, where the blocks (major units
% of information) of an entry run together.
%
% |\sloppy| --- Used because it's rather hard to do line breaks in
% bibliographies,
%
% |\sfcode`\.=1000\relax| ---
% Causes a `.' (period) not to produce an end-of-sentence space.
%
% The implementation of this environment is based on the generic
% list environment. It uses the \Lcount{enumiv} counter internally
% to generate the labels of the list.
%
% When an empty `thebibliography' environment is found, a warning
% is issued.
% \begin{macrocode}
\newenvironment{thebibliography}[1]{%
\def
% \sectionmark
% \chaptermark
##1{\@mkboth{##1}{##1}}%
% \section*{\refname}%
% \chapter*{\bibname}%
\list{\@biblabel{\@arabic\c@enumiv}}%
{\settowidth\labelwidth{\@biblabel{#1}}%
\leftmargin\labelwidth
\advance\leftmargin\labelsep
\@openbib@code
\usecounter{enumiv}%
\let\p@enumiv\@empty
\renewcommand\theenumiv{\@arabic\c@enumiv}%
\secondarysize}%
\sloppy
% \end{macrocode}
% This is setting the normal (non-infinite) value of
% |\clubpenalty| for the whole of this environment,
% so we must reset its stored value also.
% \begin{macrocode}
% \clubpenalty4000
% \@clubpenalty \clubpenalty
% \widowpenalty4000
\sfcode`\.\@m}
{\def\@noitemerr
{\@latex@warning{Empty `thebibliography' environment}}%
\endlist}
% \end{macrocode}
% \end{environment}
%
% \begin{macro}{\newblock}
% The default definition for |\newblock| is to produce a small space.
% \begin{macrocode}
\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@openbib@code}
% The default definition for |\@openbib@code| is to do nothing.
% It will be changed by the \Lopt{openbib} option.
% \begin{macrocode}
\let\@openbib@code\@empty
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@biblabel}
% The label for a |\bibitem[...]| command is produced by this
% macro. The default from \file{latex.dtx} is used.
% \begin{macrocode}
% \renewcommand*{\@biblabel}[1]{[#1]\hfill}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@cite}
% The output of the |\cite| command is produced by this macro. The
% default from \file{latex.dtx} is used.
% \begin{macrocode}
% \renewcommand*{\@cite}[1]{[#1]}
% \end{macrocode}
% \end{macro}
%
% \subsection{The index}
%
% \begin{environment}{theindex}
% The environment `theindex' can be used for indices. It makes an
% index with two columns, with each entry a separate paragraph. At
% the user level the commands |\item|, |\subitem| and |\subsubitem|
% are used to produce index entries of various levels. When a new
% letter of the alphabet is encountered an amount of |\indexspace|
% white space can be added.
%
%
% \changes{v1.0g}{1993/12/09}{Moved the setting of
% \cs{@restonecoltrue}}
% \begin{macrocode}
\newenvironment{theindex}
{\if@twocolumn
\@restonecolfalse
\else
\@restonecoltrue
\fi
\columnseprule \z@
\columnsep 35\p@
% \if@twocolumn\section*{\indexname}\else
\twocolumn
% [\section*{\indexname}]\fi
% \chapter*{\indexname}%
\@mkboth{\indexname}{\indexname}%
\thispagestyle{opening}\parindent\z@
\parskip\z@ \@plus .3\p@\relax
\let\item\@idxitem
\secondarysize}
% \end{macrocode}
% When the document continues after the index and it was a one
% column document we have to switch back to one column after the
% index.
% \begin{macrocode}
{\if@restonecol\onecolumn\else
% \clearpage
\fi}
% \end{macrocode}
% \end{environment}
%
% \begin{macro}{\@idxitem}
% \begin{macro}{\subitem}
% \begin{macro}{\subsubitem}
% These macros are used to format the entries in the index. ^^AA ???
% \begin{macrocode}
\newcommand\@idxitem{\par\hangindent 40\p@}
\newcommand\subitem{\@idxitem \hspace*{20\p@}}
\newcommand\subsubitem{\@idxitem \hspace*{30\p@}}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\indexspace}
% The amount of white space that is inserted between `letter
% blocks' in the index.
% \begin{macrocode}
\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}
% \end{macrocode}
% \end{macro}
%
% \subsection{Footnotes}
%
% \begin{macro}{\footnoterule}
% Polscy redaktorzy techniczni uwielbiają kreskę odzdzielającą
% przypisy o długości 4 cycer:
% \begin{macrocode}
\renewcommand\footnoterule{%
\kern-3\p@
\hrule\@width4pc
\kern2.6\p@}
% \end{macrocode}
% (Zgodnie z~\LaTeX ową konwencją makro \cs{footnoterule} ma
% produkować materiał w~sumie o zerowej wysokości).
% \end{macro}
%
% \begin{macro}{\c@footnote}
% Footnotes are numbered within chapters in the report and book
% document styles.
% \begin{macrocode}
%\@addtoreset{footnote}{chapter}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@makefntext}
% The footnote mechanism of \LaTeX{} calls the macro |\@makefntext|
% to produce the actual footnote. The macro gets the text of the
% footnote as its argument and should use |\@thefnmark| as the mark
% of the footnote. The macro |\@makefntext|is called when
% effectively inside a |\parbox| of width |\columnwidth| (i.e.,
% with |\hsize| = |\columnwidth|).
%
% An example of what can be achieved is given by the following piece
% of \TeX\ code.
% \begin{verbatim}
% \newcommand\@makefntext[1]{%
% \@setpar{\@@par
% \@tempdima = \hsize
% \advance\@tempdima-10pt
% \parshape \@ne 10pt \@tempdima}%
% \par
% \parindent 1em\noindent
% \hbox to \z@{\hss\@makefnmark}#1}
% \end{verbatim}
% The effect of this definition is that all lines of the footnote
% are indented by 10pt, while the first line of a new paragraph is
% indented by 1em. To change these dimensions, just substitute the
% desired value for `10pt' (in both places) or `1em'. The mark is
% flushright against the footnote.
%
% In these document classes we use a simpler macro, in which the
% footnote text is set like an ordinary text paragraph, with no
% indentation except on the first line of a paragraph, and the
% first line of the footnote. Thus, all the macro must do is set
% |\parindent| to the appropriate value for succeeding paragraphs
% and put the proper indentation before the mark.
%
% \begin{macrocode}
\newcommand\@makefntext[1]{%
\parindent\@parindent
\indent\@makefnmark\enspace#1}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\@makefnmark}
% The footnote markers that are printed in the text to point to the
% footnotes should be produced by the macro |\@makefnmark|. We use
% the default definition for it.
% \begin{macrocode}
%\renewcommand\@makefnmark{\hbox{\@textsuperscript
% {\normalfont\@thefnmark}}}
% \end{macrocode}
% \end{macro}
%
% \section{Initialization}
%
% \subsection{Words}
%
% This document class is for documents prepared in the English language.
% To prepare a version for another language, various English words must
% be replaced. All the English words that require replacement are
% defined below in command names. These commands may be redefined in
% any class or package that is customising \LaTeX\ for use with
% non-English languages.
% \changes{v1.3h}{1995/07/20}{Split up to save save stack /1742}
%
% \begin{macro}{\contentsname}
% \begin{macro}{\listfigurename}
% \begin{macro}{\listtablename}
% \begin{macrocode}
\newcommand\contentsname{Contents}
\newcommand\listfigurename{List of Figures}
\newcommand\listtablename{List of Tables}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\refname}
% \begin{macro}{\bibname}
% \begin{macro}{\indexname}
% \begin{macrocode}
%\newcommand\refname{References}
%\newcommand\bibname{Bibliography}
\newcommand\indexname{Index}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\figurename}
% \begin{macro}{\tablename}
% \begin{macrocode}
\newcommand\figurename{Figure}
\newcommand\tablename{Table}
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\partname}
% \begin{macro}{\chaptername}
% \begin{macro}{\appendixname}
% \begin{macro}{\abstractname}
% \begin{macrocode}
\newcommand\partname{Part}
%\newcommand\chaptername{Chapter}
\newcommand\appendixname{Appendix}
%\newcommand\abstractname{Abstract}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \subsection{Date}
%
% \begin{macro}{\today}
% This macro uses the \TeX\ primitives |\month|, |\day| and |\year|
% to provide the date of the \LaTeX-run.
%
% At |\begin{document}| this definition will be optimised
% so that the names of all the `wrong' months are not stored.
% This optimisation is not done here as that would `freeze'
% |\today| in any special purpose format made by loading the class
% file into the format file.
% \changes{v1.3j}{1995/08/16}{use \cs{edef} to save a lot of space}
% \changes{v1.3w}{1997/10/06}{use \cs{def} again, latex/2620}
% \begin{macrocode}
\def\today{\ifcase\month\or
January\or February\or March\or April\or May\or June\or
July\or August\or September\or October\or November\or December\fi
\space\number\day, \number\year}
% \end{macrocode}
% \end{macro}
%
% \subsection{Two column mode}
%
% We have \pstyle{plain} pages in the document classes article and
% report unless the user specified otherwise. In the `book'
% document class we use the page style \pstyle{headings} by
% default. We use arabic pagenumbers.
% \begin{macrocode}
%\pagestyle{plain}
%\pagestyle{headings}
\pagenumbering{arabic}
% \end{macrocode}
%
% Wszystkie kolumny muszą być tej samej długości.
% \begin{macrocode}
\flushbottom
% \end{macrocode}
% When the \Lopt{twocolumn} option was specified we call
% |\twocolumn| to activate this mode. We try to make each column as
% long as the others, but call |sloppy| to make our life easier.
% \begin{macrocode}
\if@twocolumn
\twocolumn
\sloppy
% \end{macrocode}
% Normally we call |\onecolumn| to initiate typesetting in one
% column.
% \begin{macrocode}
\else
\onecolumn
\fi
% \end{macrocode}
%
% \section{Przeciwkorby}
%
%
%\subsection{natbib}
%
% Przeciwkorby dla \texttt{natbib.sty}, który bardzo się upiera,
% żeby dostawić swoje trzy grosze w~nagłówku bibliografii:
% \begin{macrocode}
\AtBeginDocument{\@ifpackageloaded{natbib}{%
%\renewcommand\bibsection{\section*{\refname}}%
%\renewcommand\bibsection{\chapter*{\bibname}%
% \@mkboth{\bibname}{\bibname}}%
}{}}
% \end{macrocode}
%
%\subsection{hyperref}
%
% Przeciwkorby dla kompatybilności z~hyperrefem. Na razie dbamy
% o~odsyłacze do nienumerowanych poleceń podziału, ale znając
% hyperref, coś pewnie jeszcze wyskoczy.
% \begin{macrocode}
\let\mw@hyperref@phantom\@gobble
\AtBeginDocument{\@ifpackageloaded{hyperref}{%
\def\mw@hyperref@phantom#1{%
\Hy@GlobalStepCount\Hy@linkcounter
\xdef\@currentHref{#1*.\the\Hy@linkcounter}%
\Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}%
}%
\let\@caption\mw@caption@hyperref
}{%
\let\mw@caption@hyperref\@undefined
}%
}
% \end{macrocode}
%
% \subsection{\cs{clubpenalty}}
% \changes{0.70}{2009/03/07}{przeciwkorba dla \cs{clubpenalty}}
% Makro \cs{@doendpe} bywa używane w~kontekście, gdzie
% \cs{everypar} jest niepuste. Jedyny przypadek, który na razie
% wyskoczył: sekwencja sekcja run-in, dokładnie jeden akapit,
% środowisko listowe. W~tej sytuacji nie chce się odtworzyć
% wartość \cs{clubpenalty}. Problem zauważył Marcin Borkowski.
% Błąd jest też w~klasach standardowych.
%
% Ta przeciwkorba jest nieco siłowa, lepiej byłoby poprawić w~kernelu.
% \begin{macrocode}
\def\@doendpe{\@endpetrue
\clubpenalty\@clubpenalty
\def\par{\@restorepar\everypar{}\par\@endpefalse}%
\everypar{{\setbox\z@\lastbox}\everypar{}\@endpefalse}%
}
%
% \end{macrocode}
% \Finale
%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%% Digits \0\1\2\3\4\5\6\7\8\9
%% Exclamation \! Double quote \" Hash (number) \#
%% Dollar \$ Percent \% Ampersand \&
%% Acute accent \' Left paren \( Right paren \)
%% Asterisk \* Plus \+ Comma \,
%% Minus \- Point \. Solidus \/
%% Colon \: Semicolon \; Less than \<
%% Equals \= Greater than \> Question mark \?
%% Commercial at \@ Left bracket \[ Backslash \\
%% Right bracket \] Circumflex \^ Underscore \_
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
\endinput