diff options
author | Karl Berry <karl@freefriends.org> | 2014-05-09 22:02:03 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2014-05-09 22:02:03 +0000 |
commit | a4891ad9599b8379a84905c95d032860554335f9 (patch) | |
tree | 9efb768853e370966544f5b1d0f650dfede872ec /Master/texmf-dist/tex/generic/docbytex | |
parent | 3718baf0c743e1846d48839f867ad5924e79c8a3 (diff) |
docbytex (9may14)
git-svn-id: svn://tug.org/texlive/trunk@33943 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/docbytex')
-rw-r--r-- | Master/texmf-dist/tex/generic/docbytex/docby.tex | 1065 |
1 files changed, 1065 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/docbytex/docby.tex b/Master/texmf-dist/tex/generic/docbytex/docby.tex new file mode 100644 index 00000000000..85a603156c5 --- /dev/null +++ b/Master/texmf-dist/tex/generic/docbytex/docby.tex @@ -0,0 +1,1065 @@ +%% docby.tex, Petr Olsak, (C) 2008 +%% dokumentaci k docby.tex vytvorite prikazem csplain docby.d + +\def\dbtversion {Mar. 2011} % version of DocBy.TeX + +% Mar. 2011: - fnote: tiskne krátká slova místo dlouhých +% - index: netiskne závorky +% - \module umožní načíst název\_modulu s podtržítkem +% Jan. 2009: - ^^I vytiskne osm mezer, ne tri +% - pridano makro \part +% Nov. 2008: - fith nahrazeno xyz +% - přepínání stejných ns:, úprava makra \refns +% - vykostěmí mezer z \namespace, \endnamespace +% - run me twice -> run me again +% Oct. 2008: - první veřejná verze + +%%%%%%%%%%%%%%%%%%% Interní názvy + +\ifx\chyph\undefined % format: plain, anglicke nazvy + \def\titmodule{Module} + \def\tittoc{Table Of Contents} + \def\titindex{Index} + \def\titversion{version } + \def\opartname{>> PART} +\else % format: csplain, ceske nazvy + \def\titmodule{Modul} + \def\tittoc{Obsah} + \def\titindex{Rejstřík} + \def\titversion{verze } + \def\opartname{>> CAST} +\fi + +%%%%%%%%%%%%%%%%%% Vložené skupiny příkazů (hooks) + +\def\begtthook{} +\def\quotehook{} +\def\indexhook{} +\def\tochook{} +\def\bookmarkshook{} +\def\outputhook{} + +%%%%%%%%%%%%%%%%%% Příkaz \module a \ins + +\def\docsuffix {.d} % implicit filename extension (for \module command) +\def\module #1 {\endnamespace\namespace{##1./#1}\sec [m:#1] \titmodule\space #1 \par + \def\modulename{#1} \input #1\docsuffix\relax +} +\def\ins #1 #2 {\ifirst {\modulename.#1}{//: #2}{//:}{--}} + +%%%%%%%%%%%%%%%%%% Zelenající komentáře + +\ifx\mubyte\undefined + \def\setlinecomment#1{} + \def\setlrcomment#1#2{} +\else + \def\setlinecomment#1{\mubyte \linecomment ##0 #1\endmubyte} + \def\setlrcomment#1#2{\mubyte \leftcomment ##0 #1\endmubyte + \mubyte \rightcomment #2\endmubyte \gdef\rightcomment{#2\returntoBlack}} +\fi + +\def\linecomment {\let\Black=\Green \Green} +\def\leftcomment {\global\let\Black=\Green \Green} + +\def\returntoBlack {\global\let\Black=\oriBlack \Black} + +\setlinecomment{//} \setlrcomment{/*}{*/} + +%%%%%%%%%%%%%%%%%% Parametry a pomocná makra pro nastavení vzhledu + +\parindent=30pt + +\newdimen\nwidth \nwidth=\hsize \advance\nwidth by-2\parindent + +\raggedbottom +\exhyphenpenalty=10000 + +\font\bbf=csb10 at12pt +\font\bbbf=csb10 at14.4pt +\font\btt=cstt12 +\font\ttsmall=cstt8 +\font\rmsmall=csr8 +\font\itsmall=csti8 +\font\partfont=csb10 at80pt + +\def\setsmallprinting{\ttsmall \let\it=\itsmall \let\rm=\rmsmall + \def\ttstrut{\vrule height8pt depth3pt width0pt}% + \offinterlineskip \parskip=-1pt\relax +} +\def\setnormalprinting{\tt \baselineskip=0pt \hfuzz=4em + \def\ttstrut{\vrule height10pt depth3pt width0pt}% + \offinterlineskip \parskip=-1pt\relax +} + +\ifx\pdfoutput\undefined + \def\setcmykcolor#1{} +\else + \def\setcmykcolor#1{\special{PDF:#1 k}} +\fi +\def\Blue{\setcmykcolor{0.9 0.9 0.1 0}} +\def\Red{\setcmykcolor{0.1 0.9 0.9 0}} +\def\Brown{\setcmykcolor{0 0.85 0.87 0.5}} +\def\Green{\setcmykcolor{0.9 0.1 0.9 0.2}} +\def\Yellow{\setcmykcolor{0.0 0.0 0.3 0.03}} +\def\Black{\setcmykcolor{0 0 0 1}} +\let\oriBlack=\Black + +\ifx\pdfoutput\undefined + \def\rectangle#1#2#3#4{\vbox to0pt{\vss\hrule\kern-.3pt + \hbox to#3{\vrule height#1 depth#2\hss#4\hss\vrule}% + \kern-.3pt\hrule\kern-#2\kern-.1pt}} +\else + \def\rectangle#1#2#3#4{\vbox to0pt{\vss\hbox to#3{% + \rlap{\Yellow \vrule height#1 depth#2 width#3}% + \hss#4\Black\hss}\kern-#2}} +\fi + +\def\docbytex {\leavevmode\hbox{DocBy}.\TeX} + +%%%%%%%%%%%%%%%%%% Vzhled kapitol a podkapitol + +\def\printsec #1{\par + \removelastskip\bigskip\medskip + \noindent \makelinks + \rectangle{16pt}{9pt}{25pt}{\Brown\bbbf\ifsavetoc\the\secnum\else\emptynumber\fi}% + \kern5pt{\bbbf\let\_=\subori #1}\par +} +\def\printsecbelow {\nobreak\medskip} + +\def\printsubsec #1{\par + \removelastskip\bigskip + \noindent \makelinks + \vbox to0pt{\vss + \rectangle{16pt}{9pt}{25pt}{\Brown\bf + \ifsavetoc\the\secnum.\the\subsecnum\else\emptynumber\fi}\kern-5pt}% + \kern5pt{\bbf\let\_=\subori \let\tt=\btt #1}\par +} +\def\printsubsecbelow {\nobreak\smallskip} + +\def\printpart #1{\par + \removelastskip\bigskip\medskip + \noindent {\linkskip=60pt\makelinks}% + \rectangle{16pt}{9pt}{25pt}{}% + \kern-20pt{\Brown\partfont\thepart\Black}\kern10pt{\bbbf #1}\par +} +\def\printpartbelow {\nobreak\bigskip} + +\def\emptynumber{} + +%%%%%%%%%%%%%%%%%%%% Titul, autor + +\def\title{\def\tmpA{title}\futurelet\nextchar\secparam} +\ifx\pdfoutput\undefined + \def\iititle {\par + \ifx\headtitle\empty\edef\headtitle{\the\sectitle}\fi + \noheadline + \ifx\projectversion\empty \else + \line{\hss\rmsmall\titversion\projectversion}\nobreak\medskip\fi + \centerline{\bbbf \let\_=\subori\the\sectitle}\nobreak\medskip} +\else + \def\iititle {\par + \ifx\headtitle\empty\edef\headtitle{\the\sectitle}\fi + \noheadline + \indent\rlap{\rectangle{25pt}{15pt}{\nwidth}{\Black\let\_=\subori\bbbf\the\sectitle}}% + \ifx\projectversion\empty \else + \hbox to\nwidth{\hss + \raise26pt\hbox{\Brown\rmsmall\titversion\projectversion\Black}}\fi + \par\nobreak\vskip15pt} +\fi + +\ifx\projectversion\undefined \def\projectversion{}\fi + +\def\author #1\par{\centerline{\bf #1\unskip}\smallskip} + +%%%%%%%%%%%%%%%%%%%% Hlavičky, patičky + +\footline={\hss\rectangle{8pt}{2pt}{25pt}{\tenrm\Black\folio}\hss} + +\headline={\normalhead} +\def\normalhead {\savepglink \let\_=\subori + \vbox to0pt{\vss \baselineskip=7pt \lineskiplimit=0pt + \line{\indent\Black\tenit \firstmark \hss \headtitle\indent} + \line{\indent\Yellow\xleaders\headlinebox\hfil\indent\Black}}} + +\def\noheadline {\global\headline={\savepglink\hfil\global\headline={\normalhead}}} + +\ifx\headtitle\undefined \def\headtitle {}\fi + +\ifx\pdfoutput\undefined + \def\headlinebox{\hbox{\kern2pt\rectangle{4pt}{0pt}{4pt}{}\kern2pt}} +\else + \def\headlinebox{\hbox{\kern2pt\vrule height4pt depth0pt width4pt\kern2pt}} +\fi + +%%%%%%%%%%%%%%%%%%%% Tisk cíle odkazu a odkazů pod čarou + +\ifx\pdfoutput\undefined + \def\printdg#1#2#3{\leavevmode\hbox{\kern-.6pt + \vbox{\hrule\hbox{\vrule height8.5pt depth2.5pt \kern.2pt + \tt#2\kern.2pt\vrule}\hrule\kern-2.9pt}\kern-.6pt}} +\else + \def\printdg#1#2#3{\leavevmode \setbox0=\hbox{\tt#2}% + \Yellow\rlap{\vrule height8.7pt depth2.7pt width\wd0}% + \printdginside{#2}{\box0}} +\fi + +\def\printdginside#1#2{\ifnum\pgref[+#1]>-1 {\let\Blue=\Red \ilink[+#1]{#2}}% + \else \Red#2\relax\Black\fi} + +\def\printfnote #1#2#3#4{% + \specfootnote{{\let\Black=\oriBlack \ttsmall #1\Red #4\Black#3\rmsmall + \apinum=\pgref[+#2]\relax + \ifnum\apinum>-1 :~\lower1.4pt\vbox{\hbox{\pglink\apinum}\kern1pt\hrule}\fi + \undef{w:#2}\iftrue \setbox0=\hbox{}\else \dgnum=-1 \setbox0=\hbox{\listofpages{#2}}\fi + \ifdim\wd0=0pt \else + \ifnum\apinum>-1 , \else :~\fi + \unhbox0 + \fi}}% +} + +%%%%%%%%%%%%%%%%%%%% Tisk údaje v obsahu a rejstříku + +\def\ptocline #1#2#3{% + \if^^X#1^^X\advance\partnum by1 \medskip \fi + \line{\rectangle{8pt}{1pt}{25pt}{% + \if^^X#1^^X\ilink[sec:\thepart]{\bbbf \thepart}\else\ilink[sec:#1]{#1}\fi}\kern5pt + {\bf\let\_=\subori #2}\mydotfill\pglink#3}} +\def\ptocsubline #1#2#3{% + \line{\indent\rectangle{8pt}{1pt}{25pt}{\ilink[sec:#1]{#1}}\kern5pt + \let\_=\subori #2\mydotfill\pglink#3}} +\def\mydotfill{\leaders\hbox to5pt{\hss.\hss}\hfil} + +\def\ptocentry#1#2#3{\ifhmode,\hskip 7pt plus 20pt minus 3pt \fi + \noindent \hbox{\ttsmall \if+#1\apitext\fi \ilink[#1#2]{\ifx^^X#3^^X#2\else#3\fi}}% + \nobreak\myldots\pglink\pgref[#1#2]\relax +} +\def\myldots{\leaders\hbox to5pt{\hss.\hss}\hskip20pt\relax} + +\def\printindexentry #1{% + \expandafter \expandafter\expandafter \separeright \csname-#1\endcsname\end + \apinum=\pgref[+#1]\relax + \leavevmode\llap{\ttsmall \ifnum\apinum>-1 \apitext\fi\tmpa}% + {\tt \ilink[@#1]{#1}\tmpb}: {\bf\pglink\pgref[@#1]}% + \ifnum\apinum>-1 , $\underline{\pglink\apinum}$\fi + \dgnum=\pgref[@#1]\relax + \undef{w:#1}\iftrue \setbox0=\hbox{}\else \setbox0=\hbox{\it\listofpages{#1}}\fi + \ifdim\wd0=0pt \else, \unhbox0 \fi + \hangindent=2\parindent \hangafter=1 \par +} +\def\separeright #1\right#2\end{\def\tmpa{#1}\def\tmpb{#2}} + + +%%%%%%%%%%%%%%%%%%%% Tisk zdrojového textu + +\ifx\pdfoutput\undefined + \def\printiabove{\line{\leaders\specrule\hfill \kern2pt + {\ttsmall \Brown\inputfilename}\kern2pt \specrule width\parindent}\nobreak + \setsmallprinting} + \def\printibelow{\vskip2pt\hrule\medskip} + \def\specrule{\vrule height 2pt depth-1.6pt } + \def\printiline#1#2{\noindent\ttstrut + \hbox to\parindent{\hss#1:\kern.5em}{#2\par}\penalty11 } +\else + \def\printiabove{\smallskip \setsmallprinting} + \def\printibelow{\medskip} + \def\printiline #1#2{\noindent + \rlap{\Yellow \ttstrut width\hsize}% + \ifx\isnameprinted\undefined + \rlap{\line{\hss \raise8.5pt + \hbox{\ttsmall \Brown \vrule height5pt width0pt \inputfilename}}}% + \let\isnameprinted=\relax + \fi + \hbox to\parindent{\hss\Brown#1:\Black\kern.5em}{#2\par}\penalty11 } +\fi + +%%%%%%%%%%%%%%%%%%%% Tisk z prostředí \begtt, \endtt + +\ifx\pdfoutput\undefined + \def\printvabove{\smallskip\hrule\nobreak\smallskip\setnormalprinting} + \def\printvbelow{\nobreak\smallskip\hrule\smallskip} + \def\printvline#1#2{\hbox{\ttstrut\indent#2}\penalty12 } +\else + \def\printvabove{\medskip\Yellow\hrule height2pt \setnormalprinting\nobreak} + \def\printvbelow{\Yellow\hrule height2pt \Black\medskip} + \def\printvline#1#2{\noindent + \rlap{\hbox to\hsize{\Yellow\ttstrut width25pt\hfil + \vrule width25pt\Black}}\hbox{\indent#2}\par\penalty12 } +\fi + +%%%%%%%%%%%%%%%%%% Vložení obrázku + +\newdimen\figwidth \figwidth=\hsize \advance\figwidth by-\parindent + +\ifx\pdfoutput\undefined + \input epsf + \def\ifig #1 #2 {\bigskip\indent + \hbox{\epsfxsize=#1\figwidth\epsfbox{\figdir#2.eps}}\bigskip} +\else + \def\ifig #1 #2 {\bigskip\indent + \hbox{\pdfximage width#1\figwidth {\figdir#2.pdf}% + \pdfrefximage\pdflastximage}\bigskip} +\fi +\def\figdir{fig/} + +%%%%%%%%%%%%%%%%%%%%%%% Vycty + +\newcount\itemno +\def\begitems{\medskip\begingroup\advance\leftskip by\parindent \let\item=\dbtitem} +\def\dbtitem #1 {\par\advance\itemno by1 \noindent\llap{\ifx*#1$\bullet$\else#1\fi\kern3pt}} +\def\enditems{\medskip\endgroup} + + +%%%%%%%%%%%%%%%%%%%%%%% Pomocna makra + +\def\dbtwarning#1{\immediate\write16{DocBy.TeX WARNING: #1.}} + +\def\defsec#1{\expandafter\def\csname#1\endcsname} +\def\edefsec#1{\expandafter\edef\csname#1\endcsname} +\def\undef#1\iftrue{\expandafter\ifx\csname#1\endcsname\relax} + +{\catcode`\^^I=\active \gdef^^I{\space\space\space\space\space\space\space\space} + \catcode`\|=0 \catcode`\\=12 |gdef|nb{\}} +\bgroup + \catcode`\[=1 \catcode`]=2 \catcode`\{=12 \catcode`\}=12 \catcode`\%=12 + \gdef\obrace[{] \gdef\cbrace[}] \gdef\percent[%] +\egroup +\def\inchquote{"} + +\def\softinput #1 {\let\next=\relax \openin\infile=#1 + \ifeof\infile \dbtwarning{The file #1 does not exist, run me again} + \else \closein\infile \def\next{\input #1 }\fi + \next} + +\def\setverb{\def\do##1{\catcode`##1=12}\dospecials} + +%%%%%%%%%%%%%%%%%%%% Inicializace + +\immediate\write16{This is DocBy.TeX, version \dbtversion, modes: + \ifx\mubyte\undefined NO\fi enc+% + \ifx\pdfoutput\undefined DVI\else PDF\fi+% + \ifx\chyph\undefined \else cs\fi plain} + +\ifx\chyph\undefined \else \chyph \fi + +\ifx\mubyte\undefined + \dbtwarning{encTeX is not detected} + \message{ \space The documented words will be not recognized in source code.} + \message{ \space Use pdfetex -ini -enc format.ini to make + your format with encTeX support.} + \csname newcount\endcsname \mubytein + \def\enctextable#1#2{} + \def\noactive#1{} +\else + \def\enctextable#1#2{% + \def\tmp ##1,#1,##2\end{\ifx^^X##2^^X}% + \expandafter \tmp \owordbuffer ,#1,\end + \expandafter \mubyte \csname.#1\endcsname #1\endmubyte \fi + \expandafter \gdef \csname.#1\endcsname {#2}% + } + \def\noactive#1{\mubyte \emptysec ##0 #1\endmubyte} + \def\emptysec{} +\fi + +\def\sword#1{\ilink[@#1]{#1}\write\reffile{\string\refuseword{#1}{\the\pageno}}} + +\def\onlyactive #1#2#3{\enctextable{#1#2#3}{\oword{#1}{#2}{#3}}% + \def\tmp ##1,#2,##2\end{\ifx^^X##2^^X}% + \expandafter \tmp \owordbuffer ,#2,\end + \addtext #2,\to\owordbuffer \noactive{#2}\fi} +\def\owordbuffer{,} +\def\oword#1#2#3{#1\undef{.#2}\iftrue #2\else\csname.#2\endcsname\fi #3} + +\ifx\pdfoutput\undefined + \dbtwarning{pdfTeX is not detected} + \message{ \space The document will be without colors and hyperlinks.} + \message{ \space Use pdfTeX engine, it means: pdfetex command, for example. } +\else + \pdfoutput=1 +\fi + +%%%%%%%%%%%%%%%%%% Makra \ifirst, \inext, \ilabel + +\newcount\lineno +\newcount\ttlineno +\newif\ifcontinue +\newif\ifskipping \skippingtrue +\newread\infile + +\def\ifirst #1#2#3#4{\par\readiparamwhy#4..\end + \openin\infile=#1 \global\lineno=0 + \ifeof\infile + \dbtwarning {I am not able to open the file "#1" to reading} + \else + \xdef\inputfilename{#1} + \scaniparam #2^^X\tmpa\tmpA \scaniparam #3^^X\tmpb\tmpB + {\let~=\space \def\empty{^^B^^E}\let\end=\relax \uccode`\~=`\"\uppercase{\let~}"% + \noswords \xdef\act{\noexpand\insinternal {\tmpa}{\tmpb}}}\act + \fi +} +\def\inext #1#2#3{\par\readiparamwhy#3..\end + \ifx\inputfilename\undefined + \dbtwarning {use \string\ifirst\space before using of \string\inext} + \else + \ifeof\infile + \dbtwarning {the file "\inputfilename" is completely read} + \else + \scaniparam #1^^X\tmpa\tmpA \scaniparam #2^^X\tmpb\tmpB + {\let~=\space \def\empty{^^B^^E}\let\end=\relax \uccode`\~=`\"\uppercase{\let~}"% + \noswords \xdef\act{\noexpand\insinternal{\tmpa}{\tmpb}}}\act + \fi\fi +} +\def\noswords{\def\sword##1{##1}\def\lword##1{##1}\def\fword##1##2##3{##2}% + \let\flword=\fword \def\leftcomment{}\def\returntoBlack{}\def\linecomment{}} + +\def\readiparamwhy#1#2#3\end{\let\startline=#1\relax\let\stopline=#2\relax} + +\def\scaniparam{\futurelet\nextchar\scaniparamA} +\def\scaniparamA{\ifx\nextchar\count \expandafter\scaniparamB + \else \def\tmp{\scaniparamB \count=1 }\expandafter\tmp + \fi} +\def\scaniparamB \count{\afterassignment\scaniparamC\tempnum} +\def\scaniparamC #1^^X#2#3{\def#2{#1}\edef#3{\the\tempnum}} + +\def\insinternal #1#2{% + \bgroup + \printiabove % graficke zpracovani zacatku + \setverb \catcode`\"=12 \catcode`\^^M=9 \catcode`\^^I=\active + \mubytein=1 \obeyspaces \continuetrue \tempnum=\tmpA\relax + \def\testline##1#1##2\end{\ifx^^Y##2^^Y\else \nocontinue \fi}% + \ifx^^X#1^^X\def\testline##1\end{\nocontinue}\fi + \loop % preskakovani radku + \ifeof\infile \returninsinternal{Text "#1" not found (\string\count=\the\tempnum)}{}\fi + \readnewline + \expandafter \testline \expandafter^^B\etext ^^E#1\end + \ifcontinue \repeat + \let\lastline=\empty + \continuetrue \tempnum=\tmpB\relax + \def\testline##1#2##2\end{\ifx^^Y##2^^Y\else \nocontinue \fi}% + \ifx^^X#2^^X\def\testline##1\end{\nocontinue}\fi + \ifx+\startline \printilineA + \expandafter \testline \expandafter ^^B\etext ^^E#2\end + \ifcontinue\else\returninsinternal{}\fi + \readnewline + \else + \readnewline + \ifskipping\ifx\text\empty \readnewline \fi\fi + \fi + \loop % pretisk radku + \expandafter \testline \expandafter ^^B\etext ^^E#2\end + \ifcontinue + \printilineA + \ifeof\infile \returninsinternal{}\fi + \readnewline \repeat + \ifx+\stopline \printilineA + \ifx\lastline\relax \else \printiline{\lastline}{}\relax\fi + \fi + \global\let\Black=\oriBlack % pokud jsme skoncili vypis uvnitr komentare + \printibelow % graficke zpracovani konce + \egroup\gdef\ilabellist{}\Black +} +\def\nocontinue{\advance\tempnum by-1 \ifnum\tempnum<1 \continuefalse \fi} + +\def\returninsinternal #1#2#3\printibelow{% + \ifx^^X#1^^X\else + \dbtwarning{#1 in file \inputfilename}\fi + #2\fi\printibelow +} +\def\readnewline {\read\infile to\text \global\advance\lineno by1\relax + {\noswords \xdef\etext{\text}}} + +\def\printilineA {% + \ifskipping\else \ifx\text\empty \def\text{ }\fi\fi % trik pro pripad \skippingfalse + \ifx\text\empty + \ifx\lastline\empty % nacten prvni prazdny radek + \let\lastline=\relax + \else % nacten pozdejsi prazdny radek + \ifx\lastline\relax \else \printiline{\lastline}{}\relax\fi + \edef\lastline{\the\lineno}% + \fi + \else % nacten plny radek + \ifx\lastline\empty \let\lastline=\relax \fi + \ifx\lastline\relax \else \printiline{\lastline}{}\relax\fi + \printiline{\the\lineno}{\text}\relax + \let\lastline=\relax + \fi \ilabellist +} +\def\ilabellist {} +\def\ilabel [#1]#2{{\noswords\edef\act{\noexpand\ilabelee{#1}{#2}}\expandafter}\act} +\def\ilabelee #1#2{\expandafter\def\expandafter\ilabellist\expandafter{% + \ilabellist \expandafter\testilabel\etext\end{#1}{#2}} +} +\def\testilabel#1\end#2#3{% + \def\tmp ##1#3##2\end{\ifx^^Y##2^^Y\else + \undef{d:#2}\iftrue \defsec{d:#2}{}\labeltext[#2]{\the\lineno}\fi\fi} + \tmp^^B#1^^E#3\end +} + +%%%%%%%%%%%%%%%%%% Příkazy \begtt, \endtt + +\def\begtt {\bgroup\printvabove + \setverb \catcode`\"=12 \catcode`\^^M=12 \obeyspaces + \begtthook\relax \startverb} +{\catcode`\|=0 \catcode`\^^M=12 \catcode`\\=12 % + |gdef|startverb^^M#1\endtt{|runttloop#1|end^^M}% + |gdef|runttloop#1^^M{|ifx|end#1 |expandafter|endttloop% + |else|global|advance|ttlineno by1 % + |printvline{|the|ttlineno}{#1}|relax|expandafter|runttloop|fi}} % +\def\endttloop#1{\printvbelow\egroup\futurelet\nextchar\scannexttoken} +\long\def\scannexttoken{\ifx\nextchar\par\else\noindent\fi} + +%%%%%%%%%%%%%%%%%%%% Jmenne prostory + +\def\namespacemacro#1{} + +\def\namespace #1{% + \let\tmp=\namespacemacro + \gdef\namespacemacro##1{#1}% + \global\expandafter\let\csname no:\namespacemacro{@!}\endcsname\tmp + \ewrite{\string\refns{\namespacemacro{@!}}}% + \def\locword##1{% + \global\expandafter\let + \csname\namespacemacro{@!},##1\expandafter\endcsname\csname.##1\endcsname + \enctextable{##1}{\lword{##1}}}% + \csname ns:\namespacemacro{@!}\endcsname +} +\def\endnamespace{\if^^X\namespacemacro{@!}^^X\else + \def\locword##1{% + \global\expandafter\let + \csname.##1\expandafter\endcsname\csname\namespacemacro{@!},##1\endcsname + \undef{.##1}\iftrue \noactive{##1}\fi}% + \csname ns:\namespacemacro{@!}\endcsname + \ewrite{\string\refnsend{\namespacemacro{@!}}}% + \global\expandafter\let\expandafter\namespacemacro\csname no:\namespacemacro{@!}\endcsname + \fi +} +\def\ewrite#1{{\let\nb=\relax \edef\act{\write\reffile{#1}}\act}} + +\def\lword#1{\genlongword\tmp{#1}\ilink[@\tmp]{#1}% + \ewrite{\string\refuseword{\tmp}{\noexpand\the\pageno}}} +\def\genlongword#1#2{\expandafter\def\expandafter#1\expandafter{\namespacemacro{#2}}} + +\def\refns#1{\edefsec{o:#1}{\currns} + \edef\currns{#1}\undef{ns:\currns}\iftrue \defsec{ns:\currns}{}\fi} +\def\refnsend#1{\edef\currns{\csname o:#1\endcsname}} +\def\currns{} + +%%%%%%%%%%%%%%%%%%%% \dg a pratele + +\def\dg{\def\tmpA{dg}\dgpar} \def\dgn{\def\tmpA{dgn}\dgpar} \def\dgh{\def\tmpA{dgh}\dgpar} +\def\dl{\def\tmpA{dl}\dgpar} \def\dln{\def\tmpA{dln}\dgpar} \def\dlh{\def\tmpA{dlh}\dgpar} + +\def\dgpar {\futurelet\nextchar\dgparA} +\def\dgparA {\ifx\nextchar[\def\tmp{\dparam}\else\def\tmp{\dparam[]}\fi\tmp} + +\def\dparam [#1]#2 {% + \def\printbrackets{}% + \ifx^^X#2^^X\nextdparam{#1}\fi + \def\tmpa{#2}\def\tmpb{}% + \varparam,\tmpa, \varparam.\tmpa. \varparam;\tmpa; \varparam:\tmpa: + \expandafter\managebrackets\tmpa()\end + {\let\nb=\relax + \edef\act{\expandafter\noexpand \csname ii\tmpA\endcsname{#1}{\tmpa}{\printbrackets}}% + \expandafter}\act + \tmpb \if|\expandafter\ignoretwo\tmpA|\expandafter\maybespace\fi +} +\def\nextdparam#1#2\maybespace\fi{\fi\dparam[#1 ]} + +\def\varparam#1{\def\tmp ##1#1##2 {\def\tmpa{##1}\if^^X##2^^X\else + \expandafter\gobblelast\tmpb\end#1##2\fi}% + \expandafter\tmp} +\def\gobblelast#1\end#2{\def\tmp##1#2{\def\tmpb{#2##1#1}}\tmp} + +\def\managebrackets #1()#2\end{\def\tmpa{#1}% + \if|#2|\else\def\printbrackets{()}\fi} + +\def\maybespace{\futurelet\tmp\domaybespace} +\def\domaybespace{\let\next=\space + \ifx\tmp`\def\next##1{}\fi + \next} + +\def\iidg #1#2#3{% + \enctextable{#2}{\sword{#2}}% + \label [@#2]% + \write\reffile{\string\refdg{#1}{#2}{#3}{}}% + \printdg{#1}{#2}{#3}% + \printfnote{#1}{#2}{#3}{#2}% +} +\def\iidl #1#2#3{% + \genlongword\tmpB{#2}% + \ifx\tmpB\empty \dbtwarning{\string\dl\space#2 outside namespace, ignored}% + \else + \expandafter\label\expandafter [\expandafter @\tmpB]% + \ewrite{\string\refdg{#1}{\tmpB}{#3}{#2}}% + \printdg{#1}{#2}{#3}% + \printfnote{#1}{\tmpB}{#3}{#2}% + \fi +} +\def\iidgh#1#2#3{{\def\printdg##1##2##3{}\iidg{#1}{#2}{#3}}} +\def\iidlh#1#2#3{{\def\printdg##1##2##3{}\iidl{#1}{#2}{#3}}} + +\def\iidgn#1#2#3{\enctextable{#2}{\fword{#1}{#2}{#3}}} + +\def\fword#1#2#3{\iidgh{#1}{#2}{#3}\printdginside{#2}{#2}} + +\def\iidln#1#2#3{% + \global\expandafter\let\csname;#2\expandafter\endcsname\csname.#2\endcsname + \enctextable{#2}{\flword{#1}{#2}{#3}}} + +\def\flword#1#2#3{\iidlh{#1}{#2}{#3}\printdginside{#2}{#2}% + \global\expandafter\let\csname.#2\expandafter\endcsname\csname;#2\endcsname + \undef{.#2}\iftrue \noactive{#2}\fi} + +%%%%%%%%%%%%%%%%%% Specialni poznamky pod carou + +\let\footnote=\undefined + +\skip\footins=18pt +\dimen\footins=\vsize +\count\footins=200 + +\newcount\totalfoocount +\newdimen\totalfoodim + +\def\specfootnote#1{\insert\footins\bgroup + \let\tt=\ttsmall \rmsmall + \floatingpenalty=20000 \setbox0=\hbox{#1}% + \ht0=10pt \dp0=0pt \box0 \egroup + \global\advance\totalfoocount by1 +} + +\def\footnoterule \unvbox\footins { + \vskip-12pt \vfil + \moveright\parindent\vbox{\hsize=\nwidth \hrule + \setbox2=\vbox{\unvbox\footins \unskip + \setbox2=\lastbox + \global\setbox4=\hbox{\unhbox2} + \loop \unskip\unskip\unpenalty + \setbox2=\lastbox + \ifhbox2 \global\setbox4= + \hbox{\unhbox2 \penalty-300\hskip15pt plus5pt \unhbox4} + \repeat} + \setbox2=\vbox{\hbox{} \parskip=0pt + \lineskiplimit=0pt \baselineskip=10pt \raggedright \rightskip=0pt plus7em + \leftskip=0pt \hyphenpenalty=10000 \noindent \Black \unhbox4 } + \global\advance\totalfoodim by\ht2 \unvbox2} +} + +\def\refcoef#1#2#3{% + \ifnum#1=200 % jsme na zacatku tretiho pruchodu + \dimen0=#3 \divide\dimen0 by #2 + \multiply \dimen0 by100 + \afterassignment\gobblerest \count\footins=\the\dimen0 \end + \else \count\footins=#1 + \fi + \message{foot-coef: \the\count\footins} +} +\def\gobblerest #1\end{} + +\output={\setbox0=\makeheadline \def\makeheadline{\box0\nointerlineskip} + \let~=\relax \let\nb=\relax \let\TeX=\relax \let\docbytex=\relax \let\_=\relax \let\tt=\relax + \outputhook \plainoutput } + + +%%%%%%%%%%%%%%%%%% Kapitoly, podkapitoly + +\newcount\secnum +\newcount\subsecnum +\newtoks\sectitle +\newif\ifsavetoc \savetoctrue + +\def\sec{\def\tmpA{sec}\futurelet\nextchar\secparam} +\def\subsec{\def\tmpA{subsec}\futurelet\nextchar\secparam} + +\def\secparam{\ifx\nextchar[% + \def\tmp[##1]{\def\seclabel{##1}\futurelet\nextchar\secparamA}% + \expandafter\tmp + \else \def\seclabel{}\expandafter\secparamB\fi +} +\def\secparamA{\expandafter\ifx\space\nextchar + \def\tmp{\afterassignment\secparamB\let\next= }\expandafter\tmp + \else \expandafter\secparamB \fi +} +\def\secparamB #1\par{\nolastspace #1^^X ^^X\end} +\def\nolastspace #1 ^^X#2\end{\ifx^^X#2^^X\secparamC #1\else \secparamC #1^^X\fi} +\def\secparamC #1^^X{\sectitle={#1}\csname ii\tmpA\endcsname} + +\def\iisec{% + \ifsavetoc \global\advance\secnum by1 \global\subsecnum=0 \fi + \edef\makelinks{% + \ifsavetoc \noexpand\savelink[sec:\the\secnum]\fi + \if^^X\seclabel^^X\else \noexpand\labeltext[\seclabel]{\the\secnum}\fi} + \expandafter \printsec \expandafter{\the\sectitle}% vlozi horni mezeru, text, nakonec \par + \ifsavetoc + \ewrite {\string\reftocline{\the\secnum}{\the\sectitle}{\noexpand\the\pageno}}\fi + \mark{\ifsavetoc \the\secnum\space \else + \ifx\emptynumber\empty\else\emptynumber\space\fi\fi \the\sectitle} + \savetoctrue \printsecbelow +} +\def\iisubsec {% + \ifsavetoc \global\advance\subsecnum by1 \fi + \edef\makelinks{% + \ifsavetoc \noexpand\savelink[sec:\the\secnum.\the\subsecnum]\fi + \if^^X\seclabel^^X\else \noexpand\labeltext[\seclabel]{\the\secnum.\the\subsecnum}\fi} + \expandafter \printsubsec \expandafter{\the\sectitle}% vlozi horni mezeru, text, nakonec \par + \ifsavetoc \ewrite + {\string\reftocline{\the\secnum.\the\subsecnum}{\the\sectitle}{\noexpand\the\pageno}}\fi + \savetoctrue \printsubsecbelow +} + +%%%%%%%%%%%%%%%%%%%%%%% Part (doplneno leden 2009) + +\newcount\partnum +\def\thepart{\ifcase\partnum --\or A\or B\or C\or D\or E\or F\or G\or + H\or I\or J\or K\or L\or M\or N\or O\or P\or Q\or R\or S\or T\or + U\or V\or W\or X\or Y\or Z\else +\the\partnum\fi} + +\def\part{\def\tmpA{part}\futurelet\nextchar\secparam} +\def\iipart{% + \ifsavetoc \global\advance\partnum by1 \fi + \edef\makelinks{% + \ifsavetoc \noexpand\savelink[sec:\thepart]\fi + \if^^X\seclabel^^X\else \noexpand\labeltext[\seclabel]{\thepart}\fi} + \expandafter \printpart \expandafter{\the\sectitle}% vlozi horni mezeru, text, nakonec \par + \ifsavetoc + \ewrite {\string\reftocline{}{\the\sectitle}{\noexpand\the\pageno}}\fi + \savetoctrue \printpartbelow +} + +%%%%%%%%%%%%%%%%%%%%%%% Odkazy, reference + +\ifx\pdfoutput\undefined + \def\savelink[#1]{} + \def\ilink [#1]#2{#2} + \def\savepglink{} + \def\pglink{\afterassignment\dopglink\tempnum=} + \def\dopglink{\the\tempnum} + \def\ulink[#1]#2{#2} +\else + \def\savelink[#1]{\ifvmode\nointerlineskip\fi + \vbox to0pt{\def\nb{/_}\vss\pdfdest name{#1} xyz\vskip\linkskip}} + \def\ilink [#1]#2{{\def\nb{/_}\pdfstartlink height 9pt depth 3pt + attr{/Border[0 0 0]} goto name{#1}}\Blue#2\Black\pdfendlink} + \def\savepglink{\ifnum\pageno=1 \pdfdest name{sec::start} xyz\relax\fi % viz \bookmarks + \pdfdest num\pageno fitv\relax} + \def\pglink{\afterassignment\dopglink\tempnum=} + \def\dopglink{\pdfstartlink height 9pt depth 3pt + attr{/Border[0 0 0]} goto num\tempnum\relax\Blue\the\tempnum\Black\pdfendlink} + \def\ulink[#1]#2{\pdfstartlink height 9pt depth 3pt + user{/Border[0 0 0]/Subtype/Link/A << /Type/Action/S/URI/URI(#1)>>}\relax + \Green{\tt #2}\Black\pdfendlink} +\fi +\newdimen\linkskip \linkskip=12pt + +\def\reflabel #1#2#3{% + \undef{^^Y#1}\iftrue + \ifx^^X#2^^X\else\defsec{^^X#1}{#2}\fi + \defsec{^^Y#1}{#3}% + \else + \dbtwarning{The label [#1] is declared twice}% + \fi +} +\def\numref [#1]{\undef{^^X#1}\iftrue \else \csname^^X#1\endcsname\fi} +\def\pgref [#1]{\undef{^^Y#1}\iftrue-1000\else \csname^^Y#1\endcsname\fi} + +\def\labeltext[#1]#2{\savelink[#1]\writelabel[#1]{#2}} +\def\writelabel[#1]#2{\edef\tmp{\noexpand\writelabelinternal{#2}}\tmp{#1}} +\def\writelabelinternal#1#2{\write\reffile{\string\reflabel{#2}{#1}{\the\pageno}}} + +\def\label[#1]{\labeltext[#1]{}} + +\def\cite[#1]{\ifnum \pgref[#1]=-1000 + \dbtwarning{label [#1] is undeclared}\Red??\Black + \else \edef\tmp{\numref[#1]}% + \ifx\tmp\empty \edef\tmp{\pgref[#1]}\fi + \ilink[#1]{\tmp}% + \fi +} + +\def\api #1{\label[+#1]\write\reffile{\string\refapiword{#1}}} +\def\apitext{$\succ$} + +\def\bye{\par\vfill\supereject + \ifx\indexbuffer\empty \else % jsme ve druhem a dalsim pruchodu + \immediate\write\reffile{\string\refcoef + {\the\count\footins}{\the\totalfoocount}{\the\totalfoodim}} + \immediate\closeout\reffile + \setrefchecking \continuetrue \input \jobname.ref + \ifcontinue \indexbuffer \relax \fi + \ifcontinue \ifx\text\tocbuffer \else + \continuefalse \dbtwarning{toc-references are inconsistent, run me again}\fi + \fi + \ifcontinue \immediate\write16{DocBy.TeX: OK, all references are consistent.}\fi + \fi + \end +} +\def\setrefchecking{\catcode`\"=12 + \def\refcoef##1##2##3{} + \def\reflabel##1##2##3{\def\tmp{##3}\let\next=\relax + \expandafter\ifx\csname^^Y##1\endcsname \tmp + \ifx^^X##2^^X\else + \def\tmp{##2} \expandafter \ifx \csname^^X##1\endcsname \tmp \else + \continuefalse + \dbtwarning{text references are inconsistent, run me again} + \let\next=\endinput + \fi\fi + \else + \continuefalse + \dbtwarning{page references are inconsistent, run me again} + \let\next=\endinput + \fi\next} + \def\refuseword##1##2{\expandafter \ifx\csname -##1\endcsname \relax + \defsec{-##1}{##2}\else \edefsec{-##1}{\csname -##1\endcsname,##2}\fi} + \def\refdg##1##2##3##4{\addtext\ptocentry @{##2}{##4}\to\tocbuffer} + \let\text=\tocbuffer \def\tocbuffer{} + \def\,##1{\let##1=\relax}\indexbuffer + \def\,##1{\edef\tmp{\expandafter\ignoretwo \string ##1}% + \expandafter\ifx \csname w:\tmp\endcsname ##1\else + \continuefalse + \dbtwarning{auto-references are inconsistent, run me again} + \expandafter\ignoretorelax \fi} +} +\def\ignoretorelax #1\relax{} + +%%%%%%%%%%%%%%%%%% Tvorba obsahu a rejstriku + +\def\tocbuffer{} +\def\indexbuffer{} +\def\addtext #1\to#2{\expandafter\gdef\expandafter#2\expandafter{#2#1}} + +\def\reftocline#1#2#3{\def\currb{#1}% + \istocsec#1.\iftrue \def\currsecb{#1}\else \addbookmark\currsecb \fi + \addtext\dotocline{#1}{#2}{#3}\to\tocbuffer} + +\def\dotocline#1#2#3{\par + \istocsec#1.\iftrue \ptocline{#1}{#2}{#3}\else \ptocsubline{#1}{#2}{#3}\fi} +\def\istocsec#1.#2\iftrue{\if^^X#2^^X} + +\def\refdg#1#2#3#4{% + \edefsec{-#2}{#1\noexpand\right\if!#4!#3\fi} + \expandafter\addtext\csname-#2\endcsname,\to\indexbuffer + \addbookmark\currb + \addtext\ptocentry @{#2}{#4}\to\tocbuffer + \ifx^^X#4^^X\enctextable{#2}{\sword{#2}} % slovo je z \dg + \else \expandafter\def\csname ns:\currns % slovo je z \dl + \expandafter\expandafter\expandafter\endcsname + \expandafter\expandafter\expandafter + {\csname ns:\currns\endcsname \locword{#4}} + \fi +} +\def\refapiword#1{\addbookmark\currb \addtext\ptocentry +{#1}{}\to\tocbuffer} + +\def\dotoc{\bgroup \savetocfalse \sec \tittoc \par \smallskip + \leftskip=\parindent \rightskip=\parindent plus .5\hsize + \tochook \tocbuffer \par\egroup} + +\def\doindex {\par\penalty0 + \calculatedimone + \ifdim\dimen1<7\baselineskip \vfil\break \fi + \sec \titindex \par + \ifx\indexbuffer\empty + \dbtwarning {index is empty, run me again} + \else + \message{DocBy.TeX: sorting index...} + \sortindex + \indexhook + \vskip-\baselineskip + \begmulti 2 \rightskip=0pt plus5em \parfillskip=0pt plus2em + \widowpenalty=0 \clubpenalty=0 + \let\,=\doindexentry \indexbuffer \endmulti + \fi +} +\def\doindexentry #1{% + \edef\tmp{\expandafter\ignoretwo \string #1}% + \expandafter \remakebackslash \tmp\end + \expandafter \printindexentry \expandafter {\tmp}% +} +\def\remakebackslash#1#2\end{\if#1\nb \def\tmp{\nb#2}\fi} +\def\ignoretwo #1#2{} + +\def\addbookmark#1{\undef{bk:#1}\iftrue\defsec{bk:#1}{1}% + \else \tempnum=\csname bk:#1\endcsname\relax + \advance\tempnum by1 + \edefsec{bk:#1}{\the\tempnum} + \fi} +\def\currb{} % vychozi hodnota <uzel> pro jistotu + +\def\bookmarks{\ifx\pdfoutput\undefined \else + \bgroup + \def\dotocline##1##2##3{% + \undef{bk:##1}\iftrue \tempnum=0 \else \tempnum=\csname bk:##1\endcsname\relax\fi + \if^^X##1^^X\advance\partnum by1 + \setoutline[sec:\thepart]{##2}{\opartname\space\thepart: }% + \else \setoutline[sec:##1]{##2}{}\fi} + \def\ptocentry##1##2##3{\edef\tmpb{\ifx^^X##3^^X##2\else##3\fi}% + \tempnum=0 \setoutline[##1##2]{\tmpb}{}}% + \def\nb{\string\\}\def\TeX{TeX}\def\docbytex{DocBy.TeX}\def\_{_}\def\tt{}\def~{ }% + \def\unskip{}\bookmarkshook + \ifx\headtile\empty \else + \tempnum=0 \setoutline[sec::start]{...\headtitle\empty...}{}\fi % viz \savepglink + \tocbuffer + \egroup \fi +} +\def\setoutline[#1]#2#3{{\def\nb{/_}\xdef\tmp{#1}}% + \def\tmpa{\pdfoutline goto name{\tmp} count -\tempnum}% + \cnvbookmark{\tmpa{#3\nobraces#2{\end}}}% +} +\def\cnvbookmark#1{#1} % zadna konverze +\def\nobraces#1#{#1\nobrA} +\def\nobrA#1{\ifx\end#1\empty\else\nobraces#1\fi} + +%%%%%%%%%%%%%%%%%%%%%%%% Razeni podle abecedy + +\newif\ifAleB +\def\nullbuf{\def\indexbuffer{}} +\def\return#1#2\fi\relax{#1} \def\fif{\fi} + +\def\sortindex{\expandafter\nullbuf + \expandafter\mergesort\indexbuffer\end,\end +} +\def\mergesort #1#2,#3{% + \ifx,#1 % prazdna-skupina,neco, (#2=neco #3=pokracovani) + \addtext#2,\to\indexbuffer % dvojice skupin vyresena + \return{\fif\mergesort#3}% % \mergesort pokracovani + \fi + \ifx,#3 % neco,prazna-skupina, (#1#2=neco #3=,) + \addtext#1#2,\to\indexbuffer % dvojice skupin vyresena + \return{\fif\mergesort}% % \mergesort dalsi + \fi + \ifx\end#3 % neco,konec (#1#2=neco) + \ifx\empty\indexbuffer % neco=kompletni setrideny seznam + \edef\indexbuffer{\napercarky#1#2\end}% % vlozim \, mezi polozky + \return{\fif\fif\gobblerest}% % koncim + \else % neco=posledni skupina nebo \end + \return{\fif\fif \expandafter\nullbuf % spojim \indexbuffer+neco a cele znova + \expandafter\mergesort\indexbuffer#1#2,#3}% + \fi\fi % zatriduji: p1+neco1,p2+neco2, (#1#2=p1+neco1 #3=p2) + \isAleB #1#3\ifAleB % p1<p2 + \addtext#1\to\indexbuffer % p1 do bufferu + \return{\fif\mergesort#2,#3}% % \mergesort neco1,p2+neco2, + \else % p1>p2 + \addtext#3\to\indexbuffer % p2 do bufferu + \return{\fif\mergesort#1#2,}% % \mergesort p1+neco1,neco2, + \fi + \relax % zarazka, na ktere se zastavi \return +} +\def\isAleB #1#2{% + \edef\tmp{\expandafter\ignoretwo\string#1&0\relax\expandafter\ignoretwo\string#2&1\relax}% + \lowercase \expandafter {\expandafter \testAleB \tmp}% +} +\def\testAleB #1#2\relax #3#4\relax {% + \ifx #1#3\testAleB #2\relax #4\relax \else + \ifnum `#1<`#3 \AleBtrue \else \AleBfalse \fi + \fi +} +\def\napercarky#1{\ifx#1\end \else + \noexpand\,\noexpand#1\expandafter\napercarky + \fi +} + + +%%%%%%%%%% pageno transformations + +\def\refuseword#1#2{% + \expandafter \ifx\csname w:#1\endcsname \relax + \defsec{w:#1}{#2} + \else + \edefsec{w:#1}{\csname w:#1\endcsname,#2} + \fi +} +\def\listofpages#1{% + \expandafter\expandafter\expandafter \transf\csname w:#1\endcsname,0,% +} + +\newcount\apinum +\newcount\dgnum +\newcount\tempnum +\newif\ifdash +\newif\iffirst + +\def\transf{\dashfalse \firsttrue \tempnum=-100 \bgroup \cykltransf} + +\def\cykltransf #1,{\ifnum #1=\apinum \else \ifnum #1=\dgnum \else + \ifnum #1=0 \let\cykltransf=\egroup + \ifdash \pglink\the\tempnum\relax \fi + \else + \ifnum #1=\tempnum % cislo se opakuje, nedelam nic + \else + \advance\tempnum by 1 + \ifnum #1=\tempnum % cislo navazuje + \ifdash \else + --\dashtrue + \fi + \else % cislo nenavazuje + \ifdash + \advance\tempnum by-1 + \pglink\the\tempnum \relax\dashfalse, \pglink#1\relax + \else + \carka \pglink#1\relax + \fi\fi\fi\fi + \tempnum=#1 \fi\fi \cykltransf +} +\def\carka{\iffirst \firstfalse \else, \fi} + +%% Vice sloupcu + +\newdimen\colsep \colsep=\parindent % horiz. mezera mezi sloupci +\def\roundtolines #1{%% zaokrouhlí na celé násobky vel. rádku + \divide #1 by\baselineskip \multiply #1 by\baselineskip} +\def\corrsize #1{%% #1 := #1 + \splittopskip - \topskip + \advance #1 by \splittopskip \advance #1 by-\topskip} + +\def\begmulti #1 {\par\bigskip\penalty0 \def\Ncols{#1} + \splittopskip=\baselineskip + \setbox0=\vbox\bgroup\penalty0 + \advance\hsize by\colsep + \divide\hsize by\Ncols \advance\hsize by-\colsep} +\def\endmulti{\vfil\egroup \setbox1=\vsplit0 to0pt + \calculatedimone + \ifdim \dimen1<2\baselineskip + \vfil\break \dimen1=\vsize \corrsize{\dimen1} \fi + \dimen0=\Ncols\baselineskip \advance\dimen0 by-\baselineskip + \advance\dimen0 by \ht0 \divide\dimen0 by\Ncols + \roundtolines{\dimen0}% + \ifdim \dimen0>\dimen1 \splitpart + \else \makecolumns{\dimen0} \fi + \ifvoid0 \else \errmessage{ztracený text ve sloupcích?} \fi + \bigskip} +\def\makecolumns#1{\setbox1=\hbox{}\tempnum=0 + \loop \ifnum\Ncols>\tempnum + \setbox1=\hbox{\unhbox1 \vsplit0 to#1 \hss} + \advance\tempnum by1 + \repeat + \hbox{}\nobreak\vskip-\splittopskip \nointerlineskip + \line{\unhbox1\unskip}} +\def\splitpart{\roundtolines{\dimen1} + \makecolumns{\dimen1} \advance\dimen0 by-\dimen1 + \vskip 0pt plus 1fil minus\baselineskip \break + \dimen1=\vsize \corrsize{\dimen1} + \ifvoid0 \else + \ifdim \dimen0>\dimen1 \splitpart + \else \makecolumns{\dimen0} \fi \fi}% TBN +\def\calculatedimone{% + \ifdim\pagegoal=\maxdimen \dimen1=\vsize \corrsize{\dimen1} + \else \dimen1=\pagegoal \advance\dimen1 by-\pagetotal \fi} + + +%% final settings + +\catcode`\_=12 +\let\subori=\_ \def\_{_} +\everymath={\catcode`\_=8 } \everydisplay={\catcode`\_=8 } + +\newwrite\reffile +\softinput \jobname.ref +\immediate\openout\reffile=\jobname.ref + +\catcode`\"=\active +\let\activeqq=" +\def"{\leavevmode\hbox\bgroup\mubytein=1\let\leftcomment=\empty + \let\returntoBlack=\empty \let\linecomment=\empty \let"=\egroup + \def\par{\errmessage{\string\par\space inside \string"...\string"}}% + \setverb\tt\quotehook +} + +\def\langleactive{\uccode`\~=`\<\catcode`\<=13 + \uppercase{\def~}##1>{{$\langle$\it##1\/$\rangle$}}} |