を必要とせずに、SVG ダイアグラムに MathJax SVG 要素を含める方法がありますforeignObject
。このテクニックの完全なデモンストレーションはhttp://puzlet.com/m/b00b3にあります。
Web ページに次のような SVG ダイアグラム (および SVG 要素を含む) があるとします。
<svg id="diagram" xmlns='http://www.w3.org/2000/svg'
xmlns:xlink="http://www.w3.org/1999/xlink"
version='1.1' width='720' height='100'>
</svg>
および次の MathJax:
<div id="mathjaxSource">
$\Omega$
</div>
この CoffeeScript (および jQuery) を使用して、MathJax 要素を SVG ダイアグラムに統合します。
diagram = $("#diagram") # SVG diagram
obj = new MathJaxObject "mathjaxSource" # MathJax object (see class definition below)
obj.appendTo diagram # Append MathJax object to diagram
obj.translate 100, 200 # Position MathJax object within diagram
width()
およびheight()
メソッドを使用して、中央揃えと垂直方向の配置を行うこともできます。
class MathJaxObject
constructor: (@divId, @scale=0.02) ->
@source = $("##{@divId}").find ".MathJax_SVG"
@svg = @source.find "svg"
g = @svg.find "g"
@group = $(g[0]).clone()
@translate 0, 0
viewBox: -> @svg[0].viewBox
width: -> @scale * @viewBox().baseVal.width
height: -> @scale * @viewBox().baseVal.height
translate: (@dx, @dy) ->
dy = @dy + (-@scale * @viewBox().baseVal.y)
@group[0].setAttribute "transform",
"translate(#{@dx} #{dy}) scale(#{@scale}) matrix(1 0 0 -1 0 0)"
appendTo: (diagram) ->
diagram.append @group