%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Copyright 2010 Robert A. Beezer % % Distributed under the terms of the GNU General Public License (GPL), % version 2 or any later version. The full text of the GPL is available at: % % http://www.gnu.org/licenses/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % tex4ht-sage.cfg % % Supplies info for jsmath version to tex4ht command line and preamble % 2009/01/28 Modified to build sage worksheets, dropped font info % 2010/02/20 Significant improvements, many from Robert Marik % % Call as htlatex "tex4ht-sage.cfg" " -cunihtf -utf8" % Implements environments of the sagetex package % Wraps contents of these environments with the % tags , as markers. % Then a script converts contents to % SAGE worksheet cell format % CSS additions to fine-tune jsMath spacing % suggested by David Cervone (jsMath author) % % Managing unicode fonts % ---------------------- % To restore minus symbol '-' from its translation to − % 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: % '−' '' '-' '' % % To restore "'" from its translation to ’ search the same file % unicode.4htf for line begining with '’' and replace by % +’+ ++ +'+ ++ % with this setting the word "don't" remains as is and not "don’t" \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{\Hnewline}\NoFonts} {\ifvmode \IgnorePar \fi \EndP\HCode{}\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 \newtoks\sagetextoks \def\sage#1{\orisage{#1}\savesage{#1}}% \def\sagestr#1{\orisagestr{#1}\savesage{#1}}% \def\savesage#1{\expandafter\global\expandafter\sagetextoks \expandafter{\the\sagetextoks \HCode{\Hnewline }\HCode{#1\Hnewline}\HCode{\Hnewline }}} % PNG graphics is O.K. \Configure{graphics*} {png} {\Picture[pict]{\csname Gin@base\endcsname .png}} % JPG graphics is O.K. \Configure{graphics*} {jpg} {\Picture[pict]{\csname Gin@base\endcsname .jpg}} \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}% \savesage{show(#3)}} \makeatother % \ifprintsagetoks is false in center environment, Sage does not parse % worksheet correctly, if ... is inside
....
% % TODO: catch all ... blocks and move in tex2sws.py to the % upper-most level in xml hierarchy \newif\ifprintsagetoks \printsagetokstrue \def\printsagetoks{\ifprintsagetoks\the\sagetextoks\global\sagetextoks{}\fi} % environment center from html4.4t with added \prinsagetoks.... % before and after this environment \ConfigureEnv{center} {\ifvmode \IgnorePar\fi \EndP}{\ShowPar } {\EndP\IgnorePar\printsagetoks\printsagetoksfalse \HCode{
}\ShowPar\endgraf \afterGetClass{center}} {\IgnorePar\EndP\HCode{
}\printsagetokstrue\printsagetoks} \Configure{HtmlPar} {\EndP\printsagetoks\HCode{\Hnewline

}} {\EndP\printsagetoks\HCode{\Hnewline

}} {\HCode{

\Hnewline}\printsagetoks} {\HCode{

\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{} \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\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} \tempc\alpha \tempc\beta \tempc\gamma \tempc\delta \tempc\epsilon \tempc\varepsilon \tempc\zeta \tempc\eta \tempc\theta \tempc\vartheta \tempc\iota \tempc\kappa \tempc\lambda \tempc\mu \tempc\nu \tempc\xi \tempc\pi \tempc\varpi \tempc\rho \tempc\varrho \tempc\sigma \tempc\varsigma \tempc\tau \tempc\upsilon \tempc\phi \tempc\varphi \tempc\chi \tempc\psi \tempc\Gamma \tempc\Xi \tempc\Phi \tempc\Delta \tempc\Pi \tempc\Psi \tempc\Theta \tempc\Sigma \tempc\Omega \tempc\Lambda \tempc\Upsilon \tempc\Im \tempc\Re \tempc\aleph \tempc\angle \tempc\backslash \tempc\bot \tempc\cdots \tempc\clubsuit \tempc\ddots \tempc\diamondsuit \tempc\ell \tempc\emptyset \tempc\exists \tempc\flat \tempc\forall \tempc\hbar \tempc\heartsuit \tempc\imath \tempc\infty \tempc\jmath \tempc\ldots \tempc\nabla \tempc\natural \tempc\neg \tempc\partial \tempc\prime \tempc\sharp \tempc\spadesuit \tempc\surd \tempc\top \tempc\triangle \tempc\vdots \tempc\wp \tempc\Pr \tempc\arccos \tempc\arcsin \tempc\arctan \tempc\arg \tempc\cos \tempc\cosh \tempc\cot \tempc\coth \tempc\csc \tempc\deg \tempc\det \tempc\dim \tempc\exp \tempc\gcd \tempc\hom \tempc\inf \tempc\ker \tempc\lg \tempc\lim \tempc\liminf \tempc\limsup \tempc\ln \tempc\log \tempc\max \tempc\min \tempc\sec \tempc\sin \tempc\sinh \tempc\sup \tempc\tan \tempc\tanh \tempc\Downarrow \tempc\Leftarrow \tempc\Leftrightarrow \tempc\Longleftarrow \tempc\Longleftrightarrow \tempc\Longrightarrow \tempc\Rightarrow \tempc\Uparrow \tempc\Updownarrow \tempc\amalg \tempc\approx \tempc\ast \tempc\asymp \tempc\bigcap \tempc\bigcirc \tempc\bigcup \tempc\bigodot \tempc\bigoplus \tempc\bigotimes \tempc\bigsqcup \tempc\bigtriangledown \tempc\bigtriangleup \tempc\biguplus \tempc\bigvee \tempc\bigwedge \tempc\bowtie \tempc\bullet \tempc\cap \tempc\cdot \tempc\circ \tempc\cong \tempc\coprod \tempc\cup \tempc\dagger \tempc\dagger \tempc\dashv \tempc\ddagger \tempc\ddagger \tempc\diamond \tempc\div \tempc\doteq \tempc\downarrow \tempc\equiv \tempc\frown \tempc\geq \tempc\gg \tempc\hookleftarrow \tempc\hookrightarrow \tempc\in \tempc\int \tempc\leftarrow \tempc\leftharpoondown \tempc\leftharpoonup \tempc\leftrightarrow \tempc\leq \tempc\ll \tempc\longleftarrow \tempc\longleftrightarrow \tempc\longmapsto \tempc\longrightarrow \tempc\mapsto \tempc\mid \tempc\models \tempc\mp \tempc\nearrow \tempc\ni \tempc\not \tempc\nwarrow \tempc\odot \tempc\oint \tempc\ominus \tempc\oplus \tempc\oslash \tempc\otimes \tempc\parallel \tempc\perp \tempc\pm \tempc\prec \tempc\preceq \tempc\prod \tempc\propto \tempc\rightarriw \tempc\rightharpoondown \tempc\rightharpoonup \tempc\rightleftharpoons \tempc\searrow \tempc\setminus \tempc\sim \tempc\simeq \tempc\smile \tempc\sqcap \tempc\sqcup \tempc\sqsubseteq \tempc\sqsupseteq \tempc\star \tempc\subset \tempc\subseteq \tempc\succ \tempc\succeq \tempc\sum \tempc\supset \tempc\supseteq \tempc\swarrow \tempc\times \tempc\triangleleft \tempc\triangleright \tempc\uparrow \tempc\updownarrow \tempc\uplus \tempc\vdash \tempc\vee \tempc\wedge \tempc\wr %%%%%%%%%%%%%%%%%%%%%% \begin{document} \EndPreamble