# HG changeset patch
# User Robert Marik <marik@mendelu.cz>
# Date 1266925754 -3600
# Node ID db8c5dcdb78c4b19c7bb847d19ba19e489184adf
# Parent  67e9ba26a031f5115249521f12c95f69c3196512
3D graphics in png goes through, added configuration for sagetex environments

diff -r 67e9ba26a031 -r db8c5dcdb78c tex2sws.py
--- a/tex2sws.py	Sat Feb 20 23:34:26 2010 -0800
+++ b/tex2sws.py	Tue Feb 23 12:49:14 2010 +0100
@@ -96,6 +96,7 @@
         """
         import xml.dom.minidom as dom
         import re     # regular expressions for parsing
+        import os
 
         #  Using verbatim environments for Sage code
         #  allows some XML escape codes to slip through.
@@ -137,6 +138,10 @@
 
         # Find a title (all of them really)
         titles = []
+        #for e in tree.getElementsByTagName('h2'):
+        #    if e.getAttribute('class') == 'titleHead':
+        #        for text in e.childNodes:
+        #            titles.append(text.data)
         for e in tree.getElementsByTagName('title'):
             for text in e.childNodes:
                 titles.append(text.data)
@@ -153,6 +158,8 @@
         for e in tree.getElementsByTagName('img'):
             if e.hasAttribute('src'):
                 graphics.append(e.getAttribute('src'))
+                new_src = os.path.basename(e.getAttribute('src'))
+                e.setAttribute('src', new_src)
 
         # Find and modify links in place
         if linkbase:
diff -r 67e9ba26a031 -r db8c5dcdb78c tex4ht-sage.cfg
--- a/tex4ht-sage.cfg	Sat Feb 20 23:34:26 2010 -0800
+++ b/tex4ht-sage.cfg	Tue Feb 23 12:49:14 2010 +0100
@@ -22,34 +22,176 @@
 %   CSS additions to fine-tune jsMath spacing
 %       suggested by David Cervone (jsMath author)
 %
-   \Preamble{xhtml,jsmath,charset=UTF-8,info}
-     \ScriptEnv{sageverbatim}
-        {\ifvmode \IgnorePar \fi
-         \EndP\HCode{<sage>}\NoFonts\break}
-        {\ifvmode \IgnorePar \fi
-         \EndP\HCode{</sage>}\EndNoFonts\csname par\endcsname\ShowPar}
-     \ScriptEnv{sageblock}
-        {\ifvmode \IgnorePar \fi
-         \EndP\HCode{<sage>}\NoFonts\break}
-        {\ifvmode \IgnorePar \fi
-         \EndP\HCode{</sage>}\EndNoFonts\csname par\endcsname\ShowPar}
-     \ScriptEnv{sagesilent}
-        {\ifvmode \IgnorePar \fi
-         \EndP\HCode{<sage>}\NoFonts\break}
-        {\ifvmode \IgnorePar \fi
-         \EndP\HCode{</sage>}\EndNoFonts\csname par\endcsname\ShowPar}
-   \Css{/* jsMath suggested additions for spacing control */}
-   \Css{.jsMath_hiddenSpan {text-indent: 0px}}
-   \Css{.typeset {text-indent: 0px}}
-   \Css{/* Styling Sage code blocks for HTML versions*/}
-   \Css{sage {white-space:pre; font-family:monospace; font-size:120\%}}
-   \AtBeginDocument{\InputIfFileExists{\jobname.sout}{}{\typeout{No file \jobname.sout.}}}
+% Managing unicode fonts
+% ----------------------
+%   To restore minus symbol '-' from its translation to &#x2212;
+%   use method described in
+%   http://www.cse.ohio-state.edu/~gurari/docs/tug-07/tug07-10.xht
+%   i.e. copy the hypertext font encoding file
+%   texmf/tex4ht/ht-fonts/mozilla/charset/unicode.4hf to the work
+%   directory and add the following record to the file:
+%   '&#x2212;' '' '-' ''
+%
+%   To restore "'" from its translation to &#x2019; search the same file 
+%   unicode.4htf for line begining with '&#x2019;' and replace by 
+%   +&#x2019;+ ++ +'+ ++
+%   with this setting the word "don't" remains as is and not "don&#x2019;t"
 
-% Robert Marik's jsMath avoidance list
-% Everything here jsMath can handle, so
-% we prevent tex4ht from messing with it
-% See  jsmath-noexpand.4ht  in this distribution
-%%%%%%%%%%%%%%%%%%%%%%
+\Configure{@/BODY}{\EndP\the\sagetextoks\global\sagetextoks{}}
+
+% Driver for graphs (remember that style=Art does not wok well in TeX4ht)
+\def\pgfsysdriver{pgfsys-tex4ht.def}
+
+% No labels printed in resulting svg without this setting
+\AtBeginDocument{\let\SetVertexNoLabel\relax}
+
+\Preamble{xhtml,jsmath,charset=UTF-8,info}
+
+\def\tempc#1{\ScriptEnv{#1}{\ifvmode \IgnorePar \else \break\fi
+  \EndP\HCode{<sage>\Hnewline}\NoFonts}
+{\ifvmode \IgnorePar \fi
+  \EndP\HCode{</sage>}\EndNoFonts\csname par\endcsname\ShowPar}
+}
+\tempc{sageverbatim}
+\tempc{sageblock}
+\tempc{sagesilent}
+
+
+\Css{/* jsMath suggested additions for spacing control */}
+\Css{.jsMath_hiddenSpan {text-indent: 0px}}
+\Css{.typeset {text-indent: 0px}} 
+
+% ----------------------- Configuring output of \sage, \sagestr, \sageplot
+% We read the outputs of Sage stored at \jobname.sout. 
+% We read this file at \begin{document} to make ^ and _ work properly.
+% As a sideeffect we have to redefine \@latex@warning@no@line 
+% to suppress false warning related to multiply defined labels.
+\makeatletter
+\AtBeginDocument{%
+{\def\@latex@warning@no@line#1{}
+\InputIfFileExists{\jobname.sout}{}{\typeout{No file \jobname.sout.}}
+}% restore \@latex@warning@no@line
+}
+\makeatother
+
+
+% ----------------------- Configuring \sage, \sagestr, \sageplot
+% The following lines together with the fist line
+% \Configure{@/BODY}{\EndP\the\sagetextoks\global\sagetextoks{}}
+% produce input fields from \sage, \sagestr and \sageplot macros \sage
+% and \sagestr simply pass the content, \sageplot wraps the content
+% with show function
+% 
+\makeatletter
+\let\orisage\sage
+\let\orisagestr\sagestr
+\let\oriST@sageplot\ST@sageplot
+\newtoks\sagetextoks
+\def\sage#1{\orisage{#1}\savesage{#1}}%
+\def\sagestr#1{\orisagestr{#1}\savesage{#1}}%
+\def\ST@sageplot[#1][#2]#3{\savesage{show(#3)}\oriST@sageplot[#1][#2]{#3}}
+\def\savesage#1{\expandafter\global\expandafter\sagetextoks
+  \expandafter{\the\sagetextoks \HCode{<sage>\Hnewline
+    }\HCode{#1\Hnewline}\HCode{</sage>\Hnewline
+    }}}
+
+% PNG graphics is O.K.
+\Configure{graphics*} 
+        {png} 
+        {\Picture[pict]{\csname Gin@base\endcsname .png}}  
+
+\def\ST@sageplot[#1][#2]#3{\ST@wsf{try:^^J
+ _st_.plot(\theST@plot, format='#2', _p_=#3)^^Jexcept:^^J
+ _st_.goboom(\the\inputlineno)}%
+\ifpdf
+  \ifthenelse{\equal{#2}{notprovided}}%
+    {\ST@inclgrfx{#1}{pdf}}%
+    {\ST@inclgrfx{#1}{#2}}%
+\else
+  \ifthenelse{\equal{#2}{notprovided}}%
+    {\ST@inclgrfx{#1}{eps}}%
+    {\@ifundefined{ST@useimagemagick}%
+      {\IfFileExists{\ST@plotdir/plot-\theST@plot.#2}%
+        {% changed by Robert Marik - no error for png pictures
+         % since png graphics is O.K. with tex4ht 
+         \ifthenelse{\equal{#2}{png}}%
+         { \ST@inclgrfx{#1}{#2}}%
+         {\ST@missingfilebox%
+         \PackageWarning{sagetex}{Graphics file
+         \ST@plotdir/plot-\theST@plot.#2\space on page \thepage\space
+         cannot be used with DVI output. Use pdflatex or create an EPS
+         file. Plot command is}}%
+       }% end of changes related to png graphics
+        {\ST@missingfilebox%
+         \PackageWarning{sagetex}{Graphics file
+         \ST@plotdir/plot-\theST@plot.#2\space on page \thepage\space
+         does not exist. Plot command is}%
+         \gdef\ST@rerun{x}}}%
+    {\ST@inclgrfx{#1}{eps}}}%
+\fi
+\stepcounter{ST@plot}}
+
+\makeatother
+
+% \ifprintsagetoks is false in center enviroment, since the block
+% <sage>...</sage> cannot be inside <div>....</div>
+\newif\ifprintsagetoks
+\printsagetokstrue
+
+\def\printsagetoks{\ifprintsagetoks\the\sagetextoks\global\sagetextoks{}\fi}
+
+% enviromnet center from html4.4t with added \prinsagetoks....
+% before and after this environment
+\ConfigureEnv{center}
+  {\ifvmode \IgnorePar\fi \EndP}{\ShowPar
+}
+  {\EndP\IgnorePar\printsagetoks\printsagetoksfalse
+   \HCode{<div class="\getClass{center}"\Hnewline>}\ShowPar\endgraf
+   \afterGetClass{center}}
+  {\IgnorePar\EndP\HCode{</div>}\printsagetokstrue\printsagetoks}
+
+
+\Configure{HtmlPar}
+{\EndP\printsagetoks\HCode{\Hnewline<p class="noindent">}} 
+{\EndP\printsagetoks\HCode{\Hnewline<p class="indent">}} 
+{\HCode{</p>\Hnewline}\printsagetoks}
+{\HCode{</p>\Hnewline}\printsagetoks}
+% ----------------------- End configuring \sage, \sagestr, \sageplot
+
+
+
+% ----------------------- Configuring inline math
+% The following lines keep dollars as delimiters of mathematics
+% and removes 
+\Configure{$}
+{\Configure{@math}{}\DviMath\HCode{\string$}}
+{\HCode{\string$}\EndDviMath}{}
+% ----------------------- End configuring inline math
+
+
+
+
+% ----------------------- Configuring math
+% removes html comments from math (causes bad rendering in some browsers)
+% code from html-jsmath.4ht with removed \HCode{<!--l. \the\inputlineno-->}
+\makeatletter
+\catcode`\:11
+\Configure{DviMath}
+    {\a:DviJsmath \mathltxtrue
+       \ifOption{mml-fonts}{}{\NoFonts}%
+       \IgnoreRule \ifx \a:@math\empty\else
+               \Tg<\a:@math\space class="math"\Hnewline >\fi
+       \a:math
+       \edef\sv:ignore{\if:nopar
+    \noexpand\IgnorePar\else \noexpand\ShowPar\fi}%
+\IgnorePar}
+    {\ifx \a:@math\empty\else \Tg</\a:@math>\fi \EndIgnoreRule
+     \ifOption{mml-fonts}{}{\EndNoFonts}%
+     \mathltxfalse \After:Math \b:DviJsmath \sv:ignore
+}
+\catcode`\:12
+\makeatother
+% ----------------------- End configuring math
 
 \def\tempc#1{\def\temp{\HCode{\string#1}\HCode{ }}\HLet#1\temp}
 
@@ -277,7 +419,7 @@
 \tempc\wr
 %%%%%%%%%%%%%%%%%%%%%%
 
-   \begin{document}
-   \EndPreamble
+\begin{document}
+\EndPreamble
 
 
