% $Id: tex4ht-svg.tex 472 2018-12-30 17:39:42Z karl $
% compile 3 times: latex tex4ht-svg
%           or   xhlatex tex4ht-svg "html,3,sections+"
%
% Copyright 2009-2018 TeX Users Group
% Copyright 2000-2009 Eitan M. Gurari
% Released under LPPL 1.3c+.
% See tex4ht-cpright.tex for license text.

%%%%%%%%%%%%%%%%%% load style files %%%%%%%%%%%%%%%%%%%%%%%%%%

\ifx \HTML\UnDef
  \def\HTML{svg-option,html4-svg}
  \def\CONFIG{\jobname}
  \def\MAKETITLE{\author{Eitan M. Gurari}}
  \def\next{\input mktex4ht.4ht  \endinput}
  \expandafter\next
\fi

\input{common.tex}
\input{tex4ht-cpright.tex}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Preamble}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\<svg-option\><<<
% svg-option.4ht (|version), generated from |jobname.tex
% Copyright 2009-2018 TeX Users Group
% Copyright |CopyYear.2001. Eitan M. Gurari
|<TeX4ht copywrite|>
>>>

% 2017-05-05 Michal
% Change DTD and other stuff only for svg-inline
% this is legacy option which will hold the original `svg` option behaviour
\<configure svg-option tex4ht\><<<
\:CheckOption{svg-inline}\if:Option
\Configure{VERSION}
 {\IgnorePar\HCode{<?xml version="1.0" |<xml encoding|> ?> \Hnewline}}
\Configure{DOCTYPE}{\HCode
 {<!DOCTYPE html PUBLIC
    "-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//|<dtd lang|>"\Hnewline
    "http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">\Hnewline
  <!--http://www.w3.org/TR/XHTMLplusMathMLplusSVG/-->\Hnewline
}}
>>>

\<xml encoding\><<<
encoding="\expandafter\ifx \csname a:charset\endcsname\relax
        \expandafter\:encoding\A:charset
  \else \expandafter\:encoding\a:charset\fi"
>>>

\<configure svg-option tex4ht\><<<
\Configure{@DOCTYPE}
 {<!ENTITY \% svg.dtd PUBLIC "-//W3C//DTD SVG 20010719//|<dtd lang|>"\Hnewline
    "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">\Hnewline
  \%svg.dtd; \Hnewline}
>>>


\<configure html4-svg tex4ht\><<<
% hmtl-svg.4ht (|version), generated from |jobname.tex
% Copyright 2009-2018 TeX Users Group
% Copyright |CopyYear.2001. Eitan M. Gurari
|<TeX4ht copywrite|>
\Configure{@DOCTYPE}
 {<!ENTITY \% misc "ins || del || script || noscript || svg">\Hnewline}
>>>


\<dtd lang\><<<
\expandafter
\ifx \csname a:dtd-lang\endcsname\relax EN\else
 \csname a:dtd-lang\endcsname
\fi
>>>

\<configure svg-option tex4ht\><<<
\Configure{@HTML}
 {\Hnewline xmlns:svg="http://www.w3.org/2000/svg"\Hnewline }
\fi
>>>



%%%%%%%%%%%%%%%%%%
\chapter{Code}
%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%
\section{DVI Images}
%%%%%%%%%%%%%%%%%%





\<configure svg-option tex4ht\><<<
\Configure{Picture}{.svg}
\:CheckOption{svg-obj} \if:Option
  |<object svg-obj|>
\else   \:CheckOption{svg-} \if:Option
     |<object svg|>
\else
     \Log:Note{for external SVG files
            try the command line options `svg-obj' and 'svg-'}
\:CheckOption{svg-inline}\if:Option
     |<internal svg|>
\fi
\fi\fi
>>>



\<object svg-obj\><<<
\Configure{IMG}
 {\special{t4ht=<object type="image/svg+xml"  data="}}
 {\special{t4ht=" name="}}
 {" }
 {\special{t4ht=" }}
 {\special{t4ht=></object>}}
>>>





\<object svg\><<<
\Configure{IMG}
 {\special{t4ht=<object type="image/svg+xml"><img src="}}
 {\special{t4ht=" alt="}}
 {" }
 {\special{t4ht=" }}
 {\special{t4ht=/></object>}}
>>>


\<internal svg\><<<
\Configure{IMG}
 {\special{t4ht=<!-- src="}}
 {\special{t4ht=" alt="}}
 {" }
 {\special{t4ht=" }}
 {\special{t4ht=-->}%
  \openin15=\PictureFile \relax
  \ifeof15  \:warning{\PictureFile\space is not available}%
  \else     \closein15  \special{t4ht*<\PictureFile}\fi
 }
>>>




%%%%%%%%%%%%%%%%%%
\section{Include graphics}
%%%%%%%%%%%%%%%%%%

\<configure svg-option graphics\><<<
\Configure{graphics*}
  {svg}
  {{\Configure{Needs}{File: \csname Gin@base\endcsname.svg}\Needs{}}%
    \special{t4ht=<object type="image/svg+xml"
                         data="\[email protected]"
                         name="picture \Gin@base"
                        class="graphics"></object><!--tex4ht:graphics |<graphics dim|>-->}}
>>>

\<graphics dim\><<<
\csname a:Gin-dim\endcsname
>>>

%%%%%%%%%%%%%%%%%%
\section{Support for th4:draw}
%%%%%%%%%%%%%%%%%%




\<configure svg-option th4\><<<
\:CheckOption{draw} \if:Option \:CheckOption{th4} \if:Option
  \Configure{Fig}
     {\Svg}
     {\EndSvg}
  \:CheckOption{svg-} \if:Option
     |<embed svg draw|>
  \else
     |<internal svg draw|>
  \fi
\fi \fi
>>>



\<external svg draw\><<<
\HAssign\:svgN = 0
\def\Svg{%
 \gHAdvance\:svgN by 1
 \HCode{<embed src="\jobname\:svgN.svg"\Hnewline
    name="svg\:svgN" type="image/svg+xml"
%  height="600" width="600"
    \Hnewline pluginspage="http://www.adobe.com/svg/viewer/install/">}%
 |<open embeded file|>%
 |<open embeded svg|>%
 \bgroup\Canvas \x:SUBOff  \x:SUPOff
    \let\Picture=\empty \everymath{}\everydisplay{}%
}
\def\EndSvg{\EndCanvas\egroup
  |<close embeded svg|>%
  |<close embeded file|>}
>>>





\<internal svg draw\><<<
\def\Svg{\HCode{<svg:svg>\Hnewline
               <svg:g style="stroke:black;  stroke-width:1;
                     stroke-opacity:1;">\Hnewline}%
 \bgroup\Canvas \x:SUBOff  \x:SUPOff
    \let\Picture=\empty \everymath{}\everydisplay{}%
}
\def\EndSvg{\EndCanvas\egroup
  \HCode{</svg:g></svg:svg>}}
>>>




\<embed svg draw\><<<
\let\:svg=\empty
\NewConfigure{Canvas}[4]{\ht:special{t4ht"%
  *%
  *d\Hnewline<!--width="\%.1f#4" %
  *D height="\%.1f#4" %
  *y above-baseline="\%.1f#4" -->%
  **\Hnewline<\:svg text x="\%.1f" y="\%.1f" >%
  *</\:svg text>%
  *\Hnewline<\:svg rect x="\%.1f#4" y="\%.1f#4"
                  width="\%.1f#4"  height="\%.1f#4" />%
  *#1*#2*#1*#2*#3}}
\Configure{Canvas}{0.0000152587890625}{0.0}{0.5}{}
>>>


65536 scaled units = 1 pt. 1 / 65536 = 0.0000152587890625.

\<\><<<
\NewConfigure{Canvas}[4]{\ht:special{t4ht"%
  *%
  *d\Hnewline<!--width="\%.0f#4;" %
  *D height="\%.0f#4;" -->\Hnewline %
%   **<svg:text x="\%.0f" y="\%.0f" >%
%   *</svg:text>\Hnewline %
  **<svg:foreignObject x="\%.0f" y="\%.0f" >%
  *</svg:foreignObject>\Hnewline %
%   *\Hnewline<svg:rect x="\%.0f#4" y="\%.0f#4"
%                   width="\%.0f#4"  height="\%.0f#4"
%                   fill="black" stroke-width="0" />%
  *\Hnewline<svg:polyline points="\%.0f#4 \%.0f#4 \%.0f#4 \%.0f#4"
                          style="stroke-width:\%.0f#4" />%
  *#1*#2*#1*#2*#3*2}}
>>>





\<open embeded file\><<<
\ht:special{t4ht>\jobname\:svgN.svg}%
\HCode{<?xml version="1.0" encoding="iso-8859-1"?>\Hnewline
<!DOCTYPE svg  PUBLIC "-//W3C//DTD SVG 1.0//|<dtd lang|>"\Hnewline
             "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">
\Hnewline}
>>>

\<close embeded file\><<<
\ht:special{t4ht<\jobname\:svgN.svg}%
>>>

\<open embeded svg\><<<
\HCode{<\:svg svg>\Hnewline
      <\:svg g style="stroke-width:0; fill:black;">\Hnewline}%
>>>

\<close embeded svg\><<<
\HCode{</\:svg g></\:svg svg>}%
>>>






%%%%%%%%%%%%%%%%%%
\chapter{Notes}
%%%%%%%%%%%%%%%%%%


Requires two compilations (e.g., with \verb!mzlatex try "html,svg"!)
for importing the SVG code.




\endinput