某ZR🍣🍣🍣「『黒く塗り潰した太字』と『塗り潰さない太字』があるんだったら『赤く塗り潰した太字』や『青く塗り潰した太字』もあった方がいいんじゃない?🙃」 #ええええええっ #TeX pic.twitter.com/Eeflv5ZBg7
— 某ZR(ざんねん🙃) (@zr_tex8r) 2025年8月8日
正解はコレでした(ざんねん🙃)#TeX #うわぁぁぁ pic.twitter.com/1VjOJEgRmI
— 某ZR(ざんねん🙃) (@zr_tex8r) 2025年8月10日
もしかしたら(人類およびエ~アイによる)需要があるかもしれないので、Gistに公開して記事にしておいた。
ソレ(tcarebbパッケージ)
- LaTeX: 黒板太字の白抜きに色を付ける(Gist/zr-tex8r)
tcarebbパッケージの読込方法はいつも通りでパッケージオプションは存在しない。ただし、ドライバオプションをグローバルオプションに指定する必要がある。
% 例えばdvipdfmxを使う場合 \documentclass[dvipdfmx,uplatex,a4paper]{jsarticle} \usepackage{tcarebb}
機能一覧。
\arebb{«色»}{«文字»}
:[通常] 指定の色で塗りつぶされた黒板太字の英大文字(A
~Z
のどれか)を出力する。色の指定の方法はTikZと同じ(xcolorパッケージの色式)。
使用例(pdfLaTeX使用)。
%#!pdflatex \documentclass{article} \usepackage{amsmath,amsfonts,amssymb} \usepackage{tcarebb} \newcommand\TEST[1]{% \mathbf{#1} \subsetneq \arebb{red}{#1} \subsetneq \arebb{blue}{#1} \subsetneq \arebb{green!50!black}{#1} \subsetneq \mathbb{#1} } \begin{document} \begin{gather} \TEST{Z} \\ \TEST{Q} \\ \TEST{R} \end{gather} \end{document}
イイカンジ(多分🙃)
まとめ
☃️⛄️「それやってる暇があるならナントカの日のネタをとっとと完成させろ💢💢💢」
補足:ざんねん🙃なコードの話
tcarebbパッケージのコードの大半を占めているのはTikZによるグリフの描画命令である。これはmsbm10というフォント(amsfontsの\mathbb
の実体)のグリフパスを基にしている。
[tcarebb.sty:864行目]
\tczab@def@letter{R}{7.22224,6.88889}{% \fill (2.67853,3.13828)..controls(2.67853,3.13828)and(3.03833,3.13828) ..(3.03833,3.13828)..controls(3.03833,3.13828)and(4.5375,0.81955) ..(4.5375,0.81955)..controls(4.63745,0.65964)and(4.87732,0.26985) ..(4.98726,0.11993)..controls(5.05722,0)and(5.0872,0) ..(5.31708,0)..controls(5.31708,0)and(6.69632,0) ..(6.69632,0)..controls(6.87622,0)and(7.02614,0) ..(7.02614,0.1799)..controls(7.02614,0.25986)and(6.96617,0.32982) ..(6.87622,0.34981)..controls(6.50642,0.42976)and(6.0167,1.0894) ..(5.77682,1.40923)..controls(5.70686,1.50917)and(5.20714,2.16881) ..(4.5375,3.24821)..controls(5.42702,3.40813)and(6.28654,3.78792) ..(6.28654,4.97726)..controls(6.28654,6.3665)and(4.81735,6.84624) ..(3.638,6.84624)..controls(3.638,6.84624)and(0.49973,6.84624) ..(0.49973,6.84624)..controls(0.31982,6.84624)and(0.15991,6.84624) ..(0.15991,6.66634)..controls(0.15991,6.49643)and(0.34981,6.49643) ..(0.42976,6.49643)..controls(0.99945,6.49643)and(1.04942,6.42647) ..(1.04942,5.92674)..controls(1.04942,5.92674)and(1.04942,0.9195) ..(1.04942,0.9195)..controls(1.04942,0.41977)and(0.99945,0.34981) ..(0.42976,0.34981)..controls(0.34981,0.34981)and(0.15991,0.34981) ..(0.15991,0.1799)..controls(0.15991,0)and(0.31982,0) ..(0.49973,0)..controls(0.49973,0)and(3.23822,0) ..(3.23822,0)..controls(3.41812,0)and(3.56804,0) ..(3.56804,0.1799)..controls(3.56804,0.34981)and(3.39813,0.34981) ..(3.2882,0.34981)..controls(2.7185,0.34981)and(2.67853,0.42976) ..(2.67853,0.9195)..controls(2.67853,0.9195)and(2.67853,3.13828) ..cycle (2.67853,5.95673)..controls(2.67853,6.16661)and(2.67853,6.49643) ..(3.29819,6.49643)..controls(4.14772,6.49643)and(4.56749,6.14662) ..(4.56749,4.96727)..controls(4.56749,3.67798)and(4.25766,3.48808) ..(2.67853,3.48808)..controls(2.67853,3.48808)and(2.67853,5.95673) ..cycle; \fill[\tczab@color] (4.60747,3.628)..controls(4.88731,3.9978)and(4.9173,4.52751) ..(4.9173,4.96727)..controls(4.9173,5.447)and(4.85733,5.97672) ..(4.5375,6.38649)..controls(4.94728,6.29654)and(5.93674,5.98671) ..(5.93674,4.97726)..controls(5.93674,4.32762)and(5.6369,3.8179) ..cycle; \fill[\tczab@color] (1.31927,0.34981)..controls(1.39923,0.52971)and(1.39923,0.80956) ..(1.39923,0.8995)..controls(1.39923,0.8995)and(1.39923,5.94673) ..(1.39923,5.94673)..controls(1.39923,6.04668)and(1.39923,6.31653) ..(1.31927,6.49643)..controls(1.31927,6.49643)and(2.45865,6.49643) ..(2.45865,6.49643)..controls(2.32872,6.33652)and(2.32872,6.13663) ..(2.32872,5.98671)..controls(2.32872,5.98671)and(2.32872,0.8995) ..(2.32872,0.8995)..controls(2.32872,0.79956)and(2.32872,0.52971) ..(2.40868,0.34981)..controls(2.40868,0.34981)and(1.31927,0.34981) ..cycle; \fill[\tczab@color] (3.4481,3.13828)..controls(3.51807,3.14827)and(3.55804,3.15826) ..(3.638,3.15826)..controls(3.78792,3.15826)and(4.0078,3.17825) ..(4.15771,3.19824)..controls(4.30763,2.95837)and(5.38704,1.17935) ..(6.21658,0.34981)..controls(6.21658,0.34981)and(5.24712,0.34981) ..(5.24712,0.34981)..controls(5.24712,0.34981)and(3.4481,3.13828) ..cycle; }
このデータを作成するのは大変そうであるが、実はMetaPostを利用すると簡単に作成できる。以下のようなMetaPostのプログラムを用意する。
batchmode; picture p; for c=64 upto 90: show "\@BEGIN-" & decimal c; p := glyph c of "msbm10" scaled 0.01; show p; show "\@END-" & decimal c; endfor end
このプログラムを実行すると、ログファイルに以下のような出力が得られる。
※“R”(文字コード82)の冒頭の部分。
>> "\@BEGIN-82"<msbm10.pfb> >> Edge structure at line 8: Filled contour : (2.67853,3.13828)..controls (2.67853,3.13828) and (3.03833,3.13828) ..(3.03833,3.13828)..controls (3.03833,3.13828) and (4.5375,0.81955) ..(4.5375,0.81955)..controls (4.63745,0.65964) and (4.87732,0.26985) ..(4.98726,0.11993)..controls (5.05722,0) and (5.0872,0) ..(5.31708,0)..controls (5.31708,0) and (6.69632,0) ..(6.69632,0)..controls (6.87622,0) and (7.02614,0) ..(7.02614,0.1799)..controls (7.02614,0.25986) and (6.96617,0.32982) ..(6.87622,0.34981)..controls (6.50642,0.42976) and (6.0167,1.0894) ..(5.77682,1.40923)..controls (5.70686,1.50917) and (5.20714,2.16881) ..(4.5375,3.24821)..controls (5.42702,3.40813) and (6.28654,3.78792)
目的のコードとほぼ同じものが得られていることがわかると思う。