% Makra řeší konverzi v TeX (značky dle OPmac) do HTML (pro abclinuxu.cz)
% 2013   Petr Olšák

% Použití:
% \input opmac
% \input abchtml
% \activettchar"
% ... text ...
% \bye
% pdfcsplain dokument
% pdftotext dokument.pdf dokument.html

\let\csr=\tenrm      % Je třeba zachovat Coputer Modern font pro sazbu pomlček
\input cs-cursor     % Font, který nespojuje f+i na ligaturu fi
\input vlna          % Doplní vlnky (alias &nbsp;) za neslabičné předložky

\typosize[9/10]      % Velikost písma
\nopagenumbers       % Vypnout číslování stránek
\rightskip=0pt plus\hsize  % Nezarovnaný pravý okraj odstavců
\raggedbottom        % Nezarovnaný dolní okraj stránek
\hyphenpenalty=10000 % Zakázané dělení slov
\parindent=0pt       % Odstavce bez odstavcové zarážky
\let\firstnoindent=\relax  \let\afternoindent=\relax \let\wipeepar=\relax
\parskip=2\baselineskip % Mezi odstavci větší vertikální mezera
\mathchardef\ttpenalty=10000  % Nedělit do stránek výpisy kódů (\ttpenalty viz OPmac)

% Základní zkratky:
\def\ent#1{\hbox{\localcolor\Green\tt\char`\&#1;}}
\def\tag#1{\hbox{\localcolor\Red\tt<#1>}}

% Loga, zkratky:
\def\TeX{TeX}
\def\LaTeX{LaTeX}
\def\dots{...}

% Hlavička HTML:
\def\html{{\everypar={}\parskip=0pt\Blue {\typoscale[700/700]
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"
  "http://www.w3.org/TR/1998/REC-html40-19980424/strict.dtd" >\endgraf}
  \tag{html lang="cs"}\endgraf
  \tag{head}
    <meta http-equiv="Content-Type" content="text/html; charset=UTF8">
  \tag{/head}\endgraf
  \tag{body id="www-abclinuxu-cz"}\endgraf\Black}\bigskip\bigskip}

% Konec HTML:
\def\ehtml{\bigskip\tag{/body}\tag{/html}\endgraf}
\def\bye{\par\ehtml\end}

% Odstavec automaticky obdařen tagy <p>, </p>
\everypar={\tag{p}}
\def\par{\ifhmode\unskip\tag{/p}\fi\endgraf}

% Nedělitelná mezera
\def~{\ent{nbsp}}  

% Odstavec nezahájený <p>:
\def\notagindent{\everypar={\everypar={\tag{p}}}\noindent}

% Perex  <div class="cl_perex"> ... </div>
\def\perex#1\par{\bgroup\bigskip\parskip=0pt
  \tag{div class="cl\string_perex"}\notagindent#1\unskip\tag{/div}\endgraf\egroup}

% \bf, \it: ->  <b>text</b>,  <i>text</i>
\let\oribf=\bf
\addto\bf{\tag{b}\aftergroup\etagb} \def\etagb{\tag{/b}}
\addto\it{\tag{i}\aftergroup\etagi} \def\etagi{\tag{/i}}

% \chap je titul dílu, \sec je sekce
\def\chap#1\par{\notagindent
  \tag{h1}{\oribf#1}\unskip\tag{/h1}\endgraf\bigskip}
\def\sec#1\par{\medskip\notagindent
  \tag{h2}{\oribf#1}\unskip\tag{/h2}\endgraf\medskip}

% TeX specifický i HTML specifický znak:
\def\&{\ent{amp}}

% Ukázky kódů v textu odstavce, "kód" ->  <code>kód</code>
\def\intthook{\tag{code}\aftergroup\etagcode
   \def\endash{{-}{-}}\def\emdash{{-}{-}{-}}%  nespojovat pomlčky
   \adef&{\ent{amp}}\adef<{\ent{lt}}\adef>{\ent{gt}}}% rozepsat &, <, > na entity
\def\etagcode{\tag{/code}}

% Samostatné ukázky kódů, \begtt kód \endtt -> <pre class="kod">kód</pre>
\ttindent=0pt
\def\tthook{\tag{pre class="kod"}\parskip=0pt \everypar={}
   \def\endash{{-}{-}}\def\emdash{{-}{-}{-}}%  nespojovat pomlčky
   \adef&{\ent{amp}}\adef<{\ent{lt}}\adef>{\ent{gt}}% rozepsat &, <, > na entity
   \aftergroup\etthook}
\def\etthook{\tag{/pre}}

% \ulink[http://...]{text}  ->  <a href="http://...">text</a>
\def\ulink{\leavevmode\bgroup\catcode`_=12 \ulinkA}  % nematematické podtžítko
\def\ulinkA[#1]#2{\def~{\char`\~}% vlnku v URL vytisknu
   \tag{a href="{\thefontscale[700]#1}"}% zmenším písmo, aby to v PDF moc nepřekáželo
   \def~{\ent{nbsp}}#2\tag{/a}\egroup}  % vlnku v textu proměním na &nbsp;

% Tabulky, zápis: \btable \table{bllle}{...} \etable
\def\tabdeclarel{\tabiteml##\unsskip\tabitemr}
\def\tabdeclareb{\tag{tr}\tabiteml##\unsskip\hfil\tabitemr}
\def\tabdeclaree{\tabiteml##\unsskip\tabitemr\tag{/tr}}
\def\tabiteml{\tag{td}}
\def\tabitemr{\tag{/td}}
\def\btable{\bgroup \bigskip\bigskip\everypar={} \typoscale[500/500]
   \tag{table border=1 cellpadding=4}}
\def\etable{\tag{/table}\egroup}

% Font Cursor v il2 nemá pomlčky, slití pomlček pomocí encTeXu:
\mubyte \emdash ---\endmubyte
\mubyte \endash --\endmubyte
\def\endash{{\csr\char123}}  % tisk kratší pomlčky z Computer Modern fontu
\def\emdash{{\csr\char124}}  % tisk dlouhé pomlčky z Computer Modern fontu

% Výčty: \begitems *... *... \enditems  ->  <ul> <li>...</li> <li>...</li> </ul>
\def\iiskip{}
\addto\begitems{\vskip\parskip\tag{ul}\everypar={}\parskip=0pt 
   \def\par{\ifhmode\unskip\tag{/li}\fi\endgraf}}
\addto\enditems{\tag{/ul}\medskip}
\def\normalitem{\notagindent\tag{li}}

\html  % vytisknu hlavičku HTML
