pdf: headers, table of contents
[librarian.git] / librarian / pdf / wl.cls
1 % -*- coding: utf-8 -*-
2 \NeedsTeXFormat{LaTeX2e}
3 \ProvidesClass{wl}[2011/11/28 wolnelektury.pl book style]
4
5 % PDF customizations
6 %
7 % nofootnotes - disable generation of footnotes
8 % nothemes - disable generation of themes
9 % defaultleading - default leading
10 % onehalfleading - leading of 1.5 (interlinia)
11 % doubleleading - double leading (interlinia)
12 % a4paper,... - paper size as required by LaTeX
13 % nowlfont - don't use customized WL font
14
15 \RequirePackage{fixltx2e}
16 \RequirePackage{setspace}
17 \RequirePackage{type1cm}
18 \DeclareOption{13pt}{%
19 \AtEndOfClass{%
20 % font size definitions, similar to ones in /usr/share/texmf-texlive/tex/latex/base/
21 \renewcommand\normalsize{%
22    \@setfontsize\normalsize{13pt}{14.5pt}%
23    \abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@
24    \abovedisplayshortskip \z@ \@plus3\p@
25    \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
26    \belowdisplayskip \abovedisplayskip
27    \let\@listi\@listI}\normalsize%
28 \renewcommand\footnotesize{%
29    \@setfontsize\footnotesize\@xpt\@xiipt
30    \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
31    \abovedisplayshortskip \z@ \@plus3\p@
32    \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
33    \def\@listi{\leftmargin\leftmargini
34                \topsep 6\p@ \@plus2\p@ \@minus2\p@
35                \parsep 3\p@ \@plus2\p@ \@minus\p@
36                \itemsep \parsep}%
37    \belowdisplayskip \abovedisplayskip
38 }%
39 }%
40 }
41
42 %% \DeclareOption{14pt}{\renewcommand{\normalsize}{\AtEndOfClass{\fontsize{14}{17}\selectfont}}}
43
44 \DeclareOption{defaultleading}{}
45 \DeclareOption{doubleleading}{\AtBeginDocument{\doublespacing}}%\setlength{\leading}{1em plus 0.5ex minus 0.2ex}}
46 \DeclareOption{onehalfleading}{\AtBeginDocument{\onehalfspacing}}%\setlength{\leading}{1em plus 0.5ex minus 0.2ex}}
47
48 %% This does not really work, since dvipdfm(x) will use it's configuration in /etc/texmf/dvipdfm(x) and force a global paper size setting.
49 \DeclareOption{a5paper}{%
50       \setlength{\paperheight}{210mm}%
51       \setlength{\paperwidth}{148mm}}
52
53
54 \newif\ifshowfootnotes \showfootnotestrue
55 \DeclareOption{nofootnotes}{\showfootnotesfalse}
56
57 \newif\ifshowthemes \showthemestrue
58 \DeclareOption{nothemes}{\showthemesfalse}
59
60 \newif\ifenablewlfont \enablewlfonttrue
61 \DeclareOption{nowlfont}{\enablewlfontfalse}
62
63 \newif\ifshowtoc \showtoctrue
64 \DeclareOption{notoc}{\showtocfalse}
65
66 \DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}}
67 \ProcessOptions\relax
68 \LoadClass[a4paper,oneside]{book}
69
70
71 \usepackage{trace}
72
73 \usepackage[MeX]{polski}
74
75 \usepackage[xetex]{graphicx}
76 \usepackage{fontspec}
77 \usepackage{xunicode}
78 \usepackage{xltxtra}
79
80 \usepackage{longtable}
81 \usepackage{tabu}
82 \usepackage{unicode-math}
83 \setmathfont{Latin Modern Math}
84
85 \usepackage[overload]{textcase}
86 \usepackage{scalefnt}
87 \usepackage[colorlinks=true,linkcolor=black,setpagesize=false,urlcolor=black,xetex]{hyperref}
88
89 \newfontfamily\alien[
90 SmallCapsFeatures = {Letters={SmallCaps,UppercaseSmallCaps}},
91 Numbers=OldStyle,
92 Scale=0.85,
93 LetterSpace=-1.0
94 ] {DejaVu Serif}
95
96 \ifenablewlfont
97 \setmainfont [
98 %ExternalLocation,
99 UprightFont = JunicodeWL-Regular,
100 ItalicFont = JunicodeWL-Italic,
101 BoldFont = JunicodeWL-Regular,
102 BoldItalicFont = JunicodeWL-Italic,
103 SmallCapsFont = JunicodeWL-Regular,
104 SmallCapsFeatures = {Letters={SmallCaps,UppercaseSmallCaps}},
105 Numbers=OldStyle,
106 Scale=1.04,
107 LetterSpace=-1.0
108 ] {JunicodeWL}
109
110 \defaultfontfeatures{
111 SizeFeatures={
112   {Size={-10.5}, FakeStretch=1.02, LetterSpace=2.0 },
113   {Size={10.5-12}, FakeStretch=2.00, LetterSpace=0.0 },
114   {Size={12-}, FakeStretch=0.98, LetterSpace=-2.0 }
115 }
116 }
117
118 \renewcommand{\textsc}[1]{%
119 {\addfontfeature{
120 SizeFeatures={
121   {Size={-10.5}, Scale=1.2, FakeStretch=1.02, LetterSpace=8.0 },
122   {Size={10.5-12}, Scale=1.2, FakeStretch=1.02, LetterSpace=8.0 },
123   {Size={12-}, FakeStretch=1.0, LetterSpace=8.0 }
124 },
125 Letters={SmallCaps,UppercaseSmallCaps}
126 }
127 #1}
128 }
129 \fi% enablewlfont
130
131 %{\Itshape JunicodeWL-Italic.ttf }
132 %{\bfseries Junicode-Bold.ttf }
133 %{\bfseries\itshape Junicode-BoldItalic.ttf }
134
135 \pagestyle{plain}
136 \usepackage{fancyhdr}
137 \usepackage{marginnote}
138
139
140 \makeatletter
141
142 % bottom figure below footnotes
143 \usepackage{fnpos}
144 \makeFNabove
145
146 \usepackage{color}
147 \definecolor{theme}{gray}{.3}
148
149 \setlength{\marginparsep}{2em}
150 \setlength{\marginparwidth}{8.5em}
151 \setlength{\oddsidemargin}{0pt}
152 \setlength{\voffset}{0pt}
153 \setlength{\topmargin}{0pt}
154 \setlength{\headheight}{0pt}
155 \setlength{\headsep}{0pt}
156 \setlength{\textheight}{24cm}
157
158 \pagestyle{fancy}
159 \fancyhf{}
160 \renewcommand{\headrulewidth}{0pt}
161 \renewcommand{\footrulewidth}{0pt}
162 \lfoot{{\footnotesize \textsc{\@author} \emph{\@title}}}
163 \cfoot{}
164 \rfoot{{\footnotesize \thepage}}
165
166 \clubpenalty=100000
167 \widowpenalty=100000
168
169
170 % see http://osdir.com/ml/tex.xetex/2005-10/msg00003.html
171 \newsavebox{\ximagebox}\newlength{\ximageheight}
172 \newsavebox{\xglyphbox}\newlength{\xglyphheight}
173 \newcommand{\xbox}[1]
174 {\savebox{\ximagebox}{#1}\settoheight{\ximageheight}{\usebox {\ximagebox}}%
175 \savebox{\xglyphbox}{\char32}\settoheight{\xglyphheight}{\usebox {\xglyphbox}}%
176 \raisebox{\ximageheight}[0pt][0pt]{%\raisebox{-\xglyphheight}[0pt] [0pt]{%
177 \makebox[0pt][l]{\usebox{\xglyphbox}}}%}%
178 \usebox{\ximagebox}%
179 \raisebox{0pt}[0pt][0pt]{\makebox[0pt][r]{\usebox{\xglyphbox}}}}
180
181 \newcommand{\makecover}[2]{
182         \pdfpagewidth=#1
183         \pdfpageheight=#2
184
185         \thispagestyle{empty}
186         \newlength{\PictHOffset}
187         \newlength{\PictVOffset}
188         \setlength{\PictHOffset}{1in}
189         \addtolength{\PictHOffset}{\hoffset}
190         \addtolength{\PictHOffset}{\oddsidemargin}
191
192         \setlength{\PictVOffset}{1in}
193         \addtolength{\PictVOffset}{\voffset}
194         \addtolength{\PictVOffset}{\topmargin}
195         \addtolength{\PictVOffset}{\headheight}
196         \addtolength{\PictVOffset}{\headsep}
197         \addtolength{\PictVOffset}{\topskip}
198         \addtolength{\PictVOffset}{-\pdfpageheight}
199
200         \noindent\hspace*{-\PictHOffset}%
201         \raisebox{\PictVOffset}[0pt][0pt]{\makebox[0pt][l]{%
202             \includegraphics[height=\pdfpageheight,width=\pdfpagewidth]{cover.png}}}
203         \clearpage
204
205         \setlength{\pdfpagewidth}{210mm}
206         \setlength{\pdfpageheight}{297mm}
207 }
208
209
210 \renewcommand{\maketitle}{
211     {
212     \thispagestyle{empty}
213     \footnotesize
214     \color{theme}
215
216     \noindent \begin{minipage}[t]{.35\textwidth}\vspace{0pt}
217         \href{http://www.wolnelektury.pl}{\xbox{\includegraphics[width=\textwidth]{wl-logo.png}}}
218     \end{minipage}
219     \begin{minipage}[t]{.65\textwidth}\vspace{0pt}
220
221     \ifflaglessadvertising
222     \else
223         \href{\bookurl}{Ta lektura}, podobnie jak tysiące innych, jest dostępna on-line na stronie
224         \href{http://www.wolnelektury.pl/}{wolnelektury.pl}.
225         \vspace{.5em}
226     \fi
227
228     \ifdefined\thanknote
229         \thanknote
230         \vspace{.5em}
231     \fi
232
233     Utwór opracowany został w ramach projektu \href{http://www.wolnelektury.pl/}{Wolne Lektury}
234     przez \href{http://nowoczesnapolska.org.pl}{fundację Nowoczesna Polska}.
235
236     \end{minipage}
237     \noindent \rule{\linewidth}{0.4pt}
238
239     \vspace{.6em}
240     \color{black}
241     }
242 }
243
244 \newcommand{\editorialsection}{
245   \begin{figure}[b!]
246   {
247     \footnotesize
248     \color{theme}
249     \noindent \rule{\linewidth}{0.4pt}
250
251     \ifdefined\sponsors
252         \marginnote{%
253             \centering%
254             \sponsors%
255         }
256     \fi
257
258     \rightsinfo
259     \vspace{.6em}
260
261     Źródło: \href{\bookurl}{\bookurl}
262
263     \vspace{.6em}
264     \sourceinfo
265
266     \publisherinfo
267
268     \description
269     \vspace{.6em}
270
271     \editors
272
273     \ifdefined\funders
274         \vspace{.6em}
275         \funders
276     \fi
277
278     \ifdefined\coverby
279         \vspace{.6em}
280         \coverby
281     \fi
282
283     \ifdefined\isbn
284         \vspace{.6em}
285         \isbn
286     \fi
287
288     \vspace{.6em}
289     \emph{Wesprzyj Wolne Lektury!}
290
291     Wolne Lektury to projekt fundacji Nowoczesna Polska – organizacji
292     pożytku publicznego działającej na rzecz wolności korzystania
293     z dóbr kultury.
294
295     Co roku do domeny publicznej przechodzi twórczość kolejnych autorów.
296     Dzięki Twojemu wsparciu będziemy je mogli udostępnić wszystkim bezpłatnie.
297
298     \vspace{.6em}
299     \emph{Jak możesz pomóc?}
300
301     Przekaż 1\% podatku na rozwój Wolnych Lektur:
302     Fundacja Nowoczesna Polska, KRS 0000070056.
303
304     Pomóż uwolnić konkretną książkę, wspierając
305     \href{http://www.wolnelektury.pl/wesprzyj/}{zbiórkę na stronie wolnelektury.pl}.
306
307     Przekaż darowiznę na konto:
308     \href{http://nowoczesnapolska.org.pl/pomoz-nam/wesprzyj-nas/}{szczegóły na stronie Fundacji}.
309
310     \color{black}
311   }
312   \end{figure}
313 }
314
315
316 \newcommand{\typosubsubsection}[1]{%
317 {\textsc{#1}}
318 }
319
320 \newcommand{\typosubsection}[1]{%
321 {\addfontfeature{
322 SizeFeatures={
323   {Size={-10}, Scale=1.2, FakeStretch=1.00, LetterSpace=8.0 },
324   {Size={10.5-12}, Scale=1.2, FakeStretch=1.00, LetterSpace=8.0 },
325   {Size={12-}, FakeStretch=1.0, LetterSpace=8.0 }
326 },
327 Letters={Uppercase}
328 }
329 \MakeUppercase{#1}}
330 }
331
332 \newcommand{\typosection}[1]{%
333 {\addfontfeature{FakeStretch=0.96, LetterSpace=-4.0}\emph{\scalefont{2}#1}}
334 %{\addfontfeature{Scale=2.0, FakeStretch=0.98, LetterSpace=-2.0}\emph{#1}}
335 }
336
337
338 \DeclareRobustCommand\authortoctext[1]{%
339 {\addvspace{10pt}\nopagebreak\leftskip0em\relax
340 \rightskip \@tocrmarg\relax
341 \noindent\itshape#1\par}}
342
343 \newcommand\authortoc[1]{%
344   \gdef\chapterauthor{#1}%
345   \addtocontents{toc}{\authortoctext{#1}}}
346
347
348 \newcommand{\tytul}[1]{%
349 #1%
350 \vspace{1em}%
351 }
352
353 \newcommand{\nazwapodutworu}[2]{%
354 \vspace{10ex}%
355 \section*{\typosection{#1}}%
356 \addcontentsline{toc}{section}{#2}%
357 }
358
359 \newcommand{\autorutworu}[1]{%
360 \subsection*{\typosubsection{#1}}%
361 }
362
363 \newcommand{\autorpodutworu}[1]{%
364 \subsection*{\typosubsection{#1}}%
365 \authortoc{#1}%
366 }
367
368 \newcommand{\dzielonadrzedne}[1]{%
369 \subsection*{\typosubsubsection{#1}}%
370 }
371
372 \newcommand{\nazwautworu}[1]{%
373 \vspace{10ex}%
374 \section*{\typosection{#1}}%
375 }
376
377 \newcommand{\podtytul}[1]{%
378 \subsection*{\typosubsubsection{#1}}%
379 }
380
381 \newcommand{\translator}[1]{%
382 \subsection*{\typosubsubsection{tłum. #1}}%
383 }
384
385
386 \newcommand{\powiesc}[1]{#1}
387 \newcommand{\opowiadanie}[1]{#1}
388 \newcommand{\lirykal}[1]{#1}
389 \newcommand{\lirykalp}[1]{#1}
390 \newcommand{\dramatwierszowanyl}[1]{#1}
391 \newcommand{\dramatwierszowanylp}[1]{#1}
392 \newcommand{\dramatwspolczesny}[1]{#1}
393
394 \newcommand{\nota}[1]{%
395 \par{\raggedleft \emph{#1}}%
396 \vspace{10ex}%
397 }
398
399 \newcommand{\dedykacja}[1]{%
400 \begin{em}%
401 \begin{flushright}%
402 #1%
403 \end{flushright}%
404 \end{em}%
405 }
406
407 \newlength{\fboxhsep}
408 \newlength{\fboxvsep}
409
410 \newlength{\fboxtoprule}
411 \newlength{\fboxbottomrule}
412 \newlength{\fboxleftrule}
413 \newlength{\fboxrightrule}
414
415 \setlength{\fboxhsep}{5\fboxsep}
416 \setlength{\fboxvsep}{20\fboxsep}
417
418 \setlength{\fboxtoprule}{\fboxrule}
419 \setlength{\fboxleftrule}{\fboxrule}
420 \setlength{\fboxrightrule}{\fboxrule}
421 \setlength{\fboxbottomrule}{\fboxrule}
422
423
424
425 \def\@frameb@xother#1{%
426   \@tempdima\fboxtoprule
427   \advance\@tempdima\fboxvsep
428   \advance\@tempdima\dp\@tempboxa
429   \hbox{%
430     \lower\@tempdima\hbox{%
431       \vbox{%
432         \hrule\@height\fboxtoprule
433         \hbox{%
434           \vrule\@width\fboxleftrule
435           #1%
436           \vbox{%
437             \vskip\fboxvsep
438             \box\@tempboxa
439             \vskip\fboxvsep}%
440           #1%
441           \vrule\@width\fboxrightrule}%
442         \hrule\@height\fboxbottomrule}%
443     }%
444   }%
445 }
446
447
448 \long\def\fboxother#1{%
449   \leavevmode
450   \setbox\@tempboxa\hbox{%
451     \color@begingroup
452     \kern\fboxhsep{#1}\kern\fboxhsep
453     \color@endgroup}%
454   \@frameb@xother\relax}
455
456 \newcommand{\myfbox}[3]{%
457   \begingroup
458   \setlength{\fboxhsep}{#1}
459   \setlength{\fboxvsep}{#2}
460   \fboxother{#3}
461
462   \endgroup
463 }
464
465 \newcommand{\ramka}[1]{%
466 \par\vspace{1em}%
467 \edef\myindent{\the\parindent}%
468 \noindent\myfbox{1em}{1em}{%
469 \parbox{\dimexpr \textwidth - 2\fboxhsep - 2\fboxrule\relax}{%
470 \setlength{\parindent}{\myindent}%
471 #1%
472 }}%
473 \vspace{1em}%
474 }
475
476 \newcommand{\dlugicytat}[1]{%
477 \begin{quotation}%
478 #1%
479 \end{quotation}%
480 }
481
482 \newcommand{\poezjacyt}[1]{%
483 \begin{verse}%
484 #1%
485 \end{verse}%
486 }
487 \newcommand{\motto}[1]{%
488 \begin{em}%
489 #1%
490 \end{em}%
491 }
492 \newcommand{\listaosob}[2]{%
493 \par{#1}%
494 \begin{itemize}%
495 #2%
496 \end{itemize}%
497 }
498
499 \newcommand{\nagloweklisty}[1]{%
500 \typosubsubsection{#1}%
501 }
502
503 \newcommand{\listaosoba}[1]{%
504 \item[]{#1}%
505 }
506
507 \newcommand{\kwestia}[1]{%
508 \par{#1}%
509 }
510
511 \newcommand{\naglowekakt}[2]{%
512 \pagebreak
513 \subsection*{\typosubsection{\huge #1}}%
514 \addcontentsline{toc}{subsection}{#2}%
515 \vspace{10ex}%
516 }
517 \newcommand{\naglowekczesc}[2]{%
518 \pagebreak
519 \subsection*{\typosubsection{\huge #1}}%
520 \addcontentsline{toc}{subsection}{#2}%
521 \vspace{10ex}%
522 }
523 \newcommand{\srodtytul}[1]{%
524 \subsection*{\typosubsection{#1}}%
525 }
526
527 \newcommand{\naglowekscena}[2]{%
528 \subsubsection*{\typosubsubsection{\LARGE #1}}%
529 \addcontentsline{toc}{subsubsection}{#2}%
530 \vspace{5ex}%
531 }
532 \newcommand{\naglowekrozdzial}[2]{%
533 \subsubsection*{\typosubsubsection{\LARGE #1}}%
534 \addcontentsline{toc}{subsubsection}{#2}%
535 \vspace{5ex}%
536 }
537
538 \newcommand{\naglowekosoba}[1]{%
539 \medskip%
540 \par{\textsc{\MakeLowercase{#1}}}\nopagebreak%
541 }
542 \newcommand{\naglowekpodrozdzial}[1]{%
543 \vspace{5ex}\par{#1}\nopagebreak%
544 }
545
546 \newcommand{\miejsceczas}[1]{%
547 \par{\emph{#1}}%
548 }
549 \newcommand{\didaskalia}[1]{%
550 \par{\emph{#1}}%
551 }
552
553 \usepackage{intcalc}
554 \usepackage{color}
555 \definecolor{gray}{RGB}{200,200,200}
556 %\newcounter{parnum}
557 \newlength{\parnumwidth}
558 \setlength{\parnumwidth}{3em}
559 \newcommand{\N}{%
560   \leavevmode\refstepcounter{parnum}\reversemarginpar%
561   \marginnote{\textcolor{gray}{\small{\theparnum}}}%
562   \reversemarginpar}
563 \newcommand{\Nw}{%
564   \leavevmode\refstepcounter{parnum}\reversemarginpar%
565   \ifnum\intcalcMod{\value{parnum}}{5}=0%
566   \marginnote{\textcolor{gray}{\small{\theparnum}}}%
567   \fi\reversemarginpar}
568 \renewcommand{\N}{}
569 \renewcommand{\Nw}{}
570
571 \newcommand{\akap}[1]{%
572 \par{\N#1}%
573 }
574 \newcommand{\akapdialog}[1]{%
575 \par{\N#1}%
576 }
577 \newcommand{\akapcd}[1]{%
578 \par{\N#1}%
579 }
580
581 \newcommand{\mottopodpis}[1]{%
582 \begin{em}%
583 \begin{flushright}%
584 #1%
585 \end{flushright}%
586 \end{em}%
587 }
588
589 \newcommand{\strofa}[1]{%
590 \par{\noindent{\ignorespaces#1\vspace{1em}}}%
591 }
592
593 \newcommand{\wers}[1]{\Nw#1}
594
595 \newcommand{\wersakap}[1]{%
596 \Nw\hspace*{1em}#1%
597 }
598 \newcommand{\werscd}[1]{%
599 \Nw\hspace*{8em}#1%
600 }
601 \newcommand{\werswciety}[2][1em]{%
602 \Nw\hspace*{#1}#2%
603 }
604 \newcommand{\wersdoprawej}[1]{%
605 \Nw\hspace*{\fill}#1%
606 }
607
608 \ifshowfootnotes
609   \newcommand{\pa}[1]{\NoCaseChange{\footnote{#1 [przypis autorski]}}}
610   \newcommand{\pe}[1]{\NoCaseChange{\footnote{#1 [przypis edytorski]}}}
611   \newcommand{\pr}[1]{\NoCaseChange{\footnote{#1 [przypis redakcyjny]}}}
612   \newcommand{\pt}[1]{\NoCaseChange{\footnote{#1 [przypis tłumacza]}}}
613 \else
614   \newcommand{\pa}[1]{}
615   \newcommand{\pe}[1]{}
616   \newcommand{\pr}[1]{}
617   \newcommand{\pt}[1]{}
618 \fi
619
620 \newcommand{\mat}[1]{$#1$}
621
622 \newcommand{\didasktekst}[1]{%
623 \emph{#1}%
624 }
625 \newcommand{\slowoobce}[1]{%
626 \emph{#1}%
627 }
628 \newcommand{\tytuldziela}[1]{%
629 \emph{#1}%
630 }
631 \newcommand{\wyroznienie}[1]{%
632 \emph{#1}%
633 }
634 \newcommand{\indeksdolny}[1]{%
635 \textsubscript{#1}%
636 }
637 \newcommand{\wiekszeodstepy}[1]{%
638 \spaceskip 3\fontdimen2\font plus 3\fontdimen3\font minus 3\fontdimen4\font \relax%
639 #1%
640 \spaceskip \fontdimen2\font plus \fontdimen3\font minus \fontdimen4\font \relax%
641 }
642
643 \newcommand{\osoba}[1]{%
644 {\scshape \MakeLowercase{#1}}%
645 }
646
647 \newcommand{\sekcjaswiatlo}{%
648 \vspace{30pt}%
649 }
650
651 \newcommand{\sekcjaasterysk}{%
652 \vspace{10pt}%
653 \begin{center}%
654 \par{*}%
655 \end{center}%
656 }
657
658 \newcommand{\separatorlinia}{%
659 \vspace{10pt}%
660 \hrule{}%
661 \vspace{10pt}%
662 }
663
664 \newcommand{\motyw}[2][0]{%
665 \ifshowthemes
666 \mbox{}%
667 \marginpar{%
668 \vspace{-8pt}%
669 \vspace{-#1\baselineskip}%
670 \raggedright{\hspace{0pt}%
671 \footnotesize{\color{theme}{#2}}}%
672 \vspace{\baselineskip}%
673 }%
674 \fi
675 }
676
677 \newcommand{\ilustr}[2]{%
678 \vspace{1em}%
679 \par{\noindent\includegraphics[width=\linewidth]{#1}}%
680 \vspace{1em}
681 }