マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

LaTeXでイロイロな色で塗り潰した黒板太字を書く件

もしかしたら(人類およびエ~アイによる)需要があるかもしれないので、Gistに公開して記事にしておいた。

ソレ(tcarebbパッケージ)

tcarebbパッケージの読込方法はいつも通りでパッケージオプションは存在しない。ただし、ドライバオプションをグローバルオプションに指定する必要がある。

% 例えばdvipdfmxを使う場合
\documentclass[dvipdfmx,uplatex,a4paper]{jsarticle}
\usepackage{tcarebb}

機能一覧。

  • \arebb{«色»}{«文字»}:[通常] 指定の色で塗りつぶされた黒板太字の英大文字(AZのどれか)を出力する。色の指定の方法は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)

目的のコードとほぼ同じものが得られていることがわかると思う。