マストドンで数式を表示するブックマークレット
読者はすでにマストドンをしているだろうか。マストドンは自由なSNSで未来がある。もはや不自由なSNSであるTwitterやFacebookの時代は終わった。今年中にも滅びるだろう。
さて、マストドンで不便な点として、数式が表示できないという問題がある。しかし、これは自由なソフトウェアであれば改良が可能だ。
以下のリンクをブックマークバーまでドラッグするか、URLをコピーしてブックマークとして追加しよう。
そして、マストドンを開いたタブで、ブックマークをクリックするのだ。
すると、
$$
\mathsf{K}_\nu(x) =
(\pi/2)\mathrm{i}^{\nu+1} ( \mathsf{J}_\nu(\mathrm{i}x)
+ \mathrm{i} \mathsf{N}_\nu(\mathrm{i}x)
)
=
\left\{
\begin{array}{cl}
\displaystyle
\frac{\pi}{2}
\frac{\mathsf{I}_{-\nu}(x) - \mathsf{I}_{\nu}(x)}
{\sin \nu\pi },
& \mbox{for $x \ge 0$ and non-integral $\nu$}
\\
\\
\displaystyle
\frac{\pi}{2}
\lim_{\mu \rightarrow \nu} \frac{\mathsf{I}_{-\mu}(x) - \mathsf{I}_{\mu}(x)}
{\sin \mu\pi },
& \mbox{for $x \ge 0$ and integral $\nu$}
\end{array}
\right.$$
が
$$ \mathsf{K}_\nu(x) = (\pi/2)\mathrm{i}^{\nu+1} ( \mathsf{J}_\nu(\mathrm{i}x) + \mathrm{i} \mathsf{N}_\nu(\mathrm{i}x) ) = \left\{ \begin{array}{cl} \displaystyle \frac{\pi}{2} \frac{\mathsf{I}_{-\nu}(x) - \mathsf{I}_{\nu}(x)} {\sin \nu\pi }, & \mbox{for $x \ge 0$ and non-integral $\nu$} \\ \\ \displaystyle \frac{\pi}{2} \lim_{\mu \rightarrow \nu} \frac{\mathsf{I}_{-\mu}(x) - \mathsf{I}_{\mu}(x)} {\sin \mu\pi }, & \mbox{for $x \ge 0$ and integral $\nu$} \end{array} \right.$$
と表示される。ちなみにこれはIrregular modified cylindrical Bessel functionだ。
これで、マストドンで数式を表現できる。このブックマークレットを使っているもの同士ならば、数式で会話できる。
ちなみに、コードは以下の通り。
(function(){
var config = document.createElement( "script" ) ;
config.type = "text/x-mathjax-config" ;
config.appendChild( document.createTextNode( 'MathJax.Hub.Config({tex2jax: {inlineMath: [["$","$"], ["\\\\(","\\\\)"]]}});' ) ) ;
document.head.appendChild(config) ;
let script = document.createElement( "script" ) ;
script.type = "text/javascript" ;
script.async="async" ;
script.src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_SVG" ;
let inner_script =
'window.setInterval( function() { MathJax.Hub.Queue(["Typeset",MathJax.Hub]); '
+ 'let textarea = document.getElementsByClassName("autosuggest-textarea__textarea")[0] ;'
+ 'if ( textarea !== null && textarea.value === "" )'
+ 'textarea.value = "#math " ;'
+ '}, 1000 ) ;' ;
script.appendChild( document.createTextNode( inner_script ) ) ;
document.head.appendChild(script) ;
})() ;
ちなみに、このコードはデフォルトで入力欄に#mathを入力する。この挙動が気に入らない人は、以下のブックマークレットを使うとよい。
コードは以下の通り。
(function(){
var config = document.createElement( "script" ) ;
config.type = "text/x-mathjax-config" ;
config.appendChild( document.createTextNode( 'MathJax.Hub.Config({tex2jax: {inlineMath: [["$","$"], ["\\\\(","\\\\)"]]}});' ) ) ;
document.head.appendChild(config) ;
let script = document.createElement( "script" ) ;
script.type = "text/javascript" ;
script.async="async" ;
script.src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_SVG" ;
let inner_script = 'window.setInterval( function() { MathJax.Hub.Queue(["Typeset",MathJax.Hub]); }, 1000 ) ;' ;
script.appendChild( document.createTextNode( inner_script ) ) ;
document.head.appendChild(script) ;
})() ;