Cosense上で傍点をつけるボタンを作る
を参考にさせてもらい、ルビを使ってワンクリックで選択したテキストに傍点(圏点)を打つボタンを作る。
開発者的には/shokai/リンクが主軸のシステムに文字装飾はいらないということでこういう機能をデフォルトでつけるつもりはないらしく、それに全くもって異論はないのだけど、本(とくに古いものや人文系のもの)からの引用を溜めておく時に、原文についている傍点を完全無視してしまうわけにもいかないし、かといって普通の強調記法にすると自分で強調したい部分と混ざってしまう(斜体や下線に置き換えるなどの手もあるだろうが、そういう変換に思考を1ミリたりとも割きたくない)ので、仕方なく自作することに。こういうコードはだいたいChatGPTが一瞬で書いてくれる。 しかし、これで傍点をつけるとcopy plainしたときにTeXのコードごとコピーされてしまうという罠もあるのだが、まぁいいでしょう。ChatGPTに投げてコード部分を消してもらいましょう。
UserCSSだけで解決する方法もある(/masui/ルビ記法を使ってルビとして傍点をつければいい)が、ルビ部分がリンク扱いになってキモい(ページの一番下のLinksに「、、、、」みたいなタイトルのページがずらりと並ぶ)ので使いたくない。 code:style.css
.line:not(.cursor-line) .deco-\<.deco-\> .formula { margin: 0;}
.line:not(.cursor-line) .deco-\<.deco-\> .katex { font-size: 1em !important; }
と書いておく。
2行目は、katex(Cosense上での数式の描画に使われているやつ)の文字サイズがデフォルトでは平文の1.21倍になるようになっているのを打ち消すためのもの。
中身の文章を\footnotesizeで小さくするという手もある(冒頭で紹介したページではそうやっている)が、\footnotesizeは0.8倍(10pt→8pt)なので最終的な文字サイズは1.21 * 0.8 = 0.968倍となり他よりもほんの少し小さくなるのが気になる。
そして自分のユーザーページ上に以下をコードブロックごとコピペする:
code:script.js
scrapbox.PopupMenu.addButton({
title: '傍点',
onClick: text => {
if (!text) return text;
.map(char => \\overset{•}{\\textsf{${char}}})
.join('');
const latex = [>< [$ ${emphasized}]];
return latex;
}
});
実際に使うと$ \sf{\overset{•}{こ}\overset{•}{ん}\overset{•}{な}\overset{•}{感}\overset{•}{じ}}になる。
もちろん傍点の記号は\\overset{•}の部分を変更すれば﹅などにもできる。
その場合\tinyなどをつけた方がいい。つけないと$ \sf{\overset{﹅}{こ}\overset{﹅}{う}\overset{﹅}{な}\overset{﹅}{る}}。
つけると$ \sf{\overset{\tiny{﹅}}{こ}\overset{\tiny{﹅}}{う}\overset{\tiny{﹅}}{な}\overset{\tiny{﹅}}{る}}。
まぁ、開発者の方のいう通り、自分から積極的に使うべきものではないでしょうね。