我在我的網站上使用MathJax,我想添加一些語義支持。定義新的宏以添加「標題」屬性
目前,我的MathJax配置是採用TeX輸入並吐出HTML-CSS輸出(不幸的是,MathML在Chrome中效果不佳)。我也有一個jQuery函數,它接受任何.latex
類的html並將其轉儲到title
屬性中。
以下HTML ...
<div class="latex">\[ a^2 + b^2 = c^2 \]</div>
與下面的腳本...
/* jQuery */
$('.latex').attr('title', function() {
return $(this).html();
})
將輸出...
<div class="latex" title="\[ a^2 + b^2 = c^2 \]">
<div class="MathJax_Display">a2+b2=c2</div> <!-- becomes prettyprint in browser -->
</div>
明顯的div.MathJax_Display
內容將是風格與整個跨度和班級和風格。我只是不打算在這裏輸入所有內容。無論如何,在渲染數學後,用戶可以將鼠標懸停在div.latex
上以在工具提示中查看TeX命令。
現在,我想要做的就是在我的MJ配置中定義一個新的宏,它會在給定一點TeX輸入的情況下將title
屬性添加到新創建的HTML-CSS輸出範圍。我們稱之爲宏\title[2]
。這裏就是我希望能夠輸入:
<div class="latex">\[ a^2 + b^2 = \title{c}{'hypotenuse'}^2 \]</div>
這裏就是我希望它輸出:
<div class="latex" title="\[ a^2 + b^2 = \title{c}{'hypotenuse'}^2 \]">
<div class="MathJax_Display">a2+b2=<span title="hypotenuse">c</span>2</div> <!-- prettyprint -->
</div>
如果發生這種情況,誰在數學懸停在c
用戶將獲得一個提示說「斜邊」,但是將鼠標懸停在數學的任何其他領域並獲得原始輸入。
這裏是我的算法的思想:
//pseudo-code: given the TeX input '\title{mathstr}{titlestr}': var thespan = document.createElement('span'); $(thespan).attr('title', titlestr).html(mathstr); somehow put this into the MJ output at the right place
這個宏的缺點是它是用JavaScript編寫的,而不是HTML,所以(1)JS禁用(並且仍然能夠看到原始TeX輸入)的用戶將無法看到工具提示,並且(2)嵌套'\ mathtip'命令導致UNDERlapping,不重疊。換句話說,JS將顯示最外層跨度的工具提示。另一方面,HTML'title'屬性將會OVERlap,意味着顯示最內層的元素的工具提示。我接受你的答案,因爲它是正確的,但它不能解決我的問題:( – chharvey
我只是想出了這個......使用'\ mathtip'使用JS來創建工具提示框,這是不利的,所以沒有必要嵌套它們但''texttip'實際上在HTML中創建了'title'屬性,所以它們就像普通的工具提示一樣,它們重疊,即使使用'\('和'\)''分隔符,否則它們會變成冒名頂尖工具提示 – chharvey
嵌套的'\ mathtip'調用對我來說工作正常。您使用的是什麼瀏覽器/操作系統? –