はじめに
$\mathrm{\LaTeX}$のパッケージを開発してCTANにアップロードしたので,宣伝がてら日本語の説明記事を執筆します.
初CTAN...ども...https://t.co/NKR71kUpk5
— えぬぬん (@Nmatician) October 14, 2024
今回の記事はパッケージの利用者向けのガイドです.開発者,およびパッケージ開発に興味のある人向けの話題は含まれていません.私がexpl3
を完全に理解したら(開発者編)が生えるかもしれません.
2024/10/19追記
TeX Liveに収録されたようです.やったね!
tlmgr info numbersetsで情報来たからちゃんとTeX Liveに入ったとみなしてよさそうだね pic.twitter.com/lsdduuW3IC
— えぬぬん (@Nmatician) October 19, 2024
(追記ここまで)
本記事執筆時点の最新バージョンはv0.2.0です.最初にv0.1.0をリリースした後に破壊的変更が入っているのでうっかりv0.1.0をインストールしてしまった人は注意してください(具体的には\DeclareNumberSetCommand
コマンドの構文が変更されています).
既定の設定は,unicode-math
パッケージの使用を前提としています.
しかし,unicode-math
パッケージをnumbersets
パッケージ側では読み込まないので,パッケージ利用者がそれぞれの文書で明示的にunicode-math
パッケージを読み込む必要があります.
一見不便な仕様に見えますが,この特性はunicode-math
パッケージを使用しない/できない環境下で重要となります.詳しくはunicode-mathパッケージを使用しない場合で説明します.
numbersets
パッケージとは
numbersets
パッケージは,数学における数の集合を記述するためのパッケージです.
数学では,自然数全体の集合や複素数全体の集合といったよく使う集合は特別な書体を割り当てて識別しやすいようにしておくことが多いです.
例えば黒板太字で自然数全体の集合を「$\mathbb{N}$」と書いたり,太字で「$\mathbf{N}$」と書いたりします.
$\mathrm{\LaTeX}$でこれらの集合を記述する場合,\mathbb{N}
や\mathbf{N}
のように書くといわれることが多いのですが,これはあまり好ましくありません.\mathbb
や\mathbf
からは「黒板太字である」や「太字である」といった「見た目」に関する情報しか伝わらず,本来意図した「自然数全体の集合」という情報が伝わらないからです.ここでは,新しいコマンド\NaturalNumbers
を
\NewDocumentCommand\NaturalNumbers{}{\mathbb{N}}
のように定義して,本文中では\NaturalNumbers
のように書くべきでしょう.このようにしておけば,本文中で「自然数全体の集合」という意図がはっきりします.コマンドを定義しておくことの副次的効果として,もし「\mathbb
ではなく\mathbf
にしたくなった」といった場合でも,改修個所は定義部分の一か所のみで済みます.すなわち,メンテナンス性の向上という効果があります.
さて,numbersets
パッケージは,上記のように数の集合を定義して使用する場合の簡易なインターフェースといくつかのプリセットを提供します.具体的には,以下のような機能を提供します:
- 記号に特定の書体を適用し,数の集合を記述するコマンド
- 数の集合を表す新しいコマンドを定義するためのインターフェース
- 新しい書体規則を定義するためのインターフェース
- 上記インターフェースを用いて定義されたいくつかのプリセット
パッケージをすぐに使いたい場合,パッケージオプションとプリセットのみを把握していれば十分です
パッケージの読み込み
パッケージの読み込みは,普通のパッケージとまったく同様に
\usepackage{numbersets}
とします.パッケージオプションstyle
が提供されており,コマンド使用時に適用する書体を変更することができます.style
はstyle=bb
のようにkey=value
形式で記述します.
既定で用意されている値は以下の通りです:
値 | 意味 | 等価なコマンド |
---|---|---|
bb |
黒板太字 | \symbb |
bfup |
太字の立体 | \symbfup |
bfit |
太字の斜体 | \symbfit |
パッケージオプションを指定しない場合,既定値としてbb
が選択されます.
パッケージ読み込み時以外では,\SetupNumberSetsStyleOptions
コマンドを使用して設定することができます:
% styleの既定値をbfitに変更
\SetupNumberSetsStyleOptions{style=bfit}
新しい書体規則の定義で述べるように,自分でstyle
を定義して使用することができるほか,既存の設定を上書きすることもできます.この特性はunicode-math
パッケージなしでnumbersets
パッケージを使用する場合に重要となります.
基礎となるコマンド
本パッケージにおいて基礎となるコマンドは\NumberSet
コマンドです.このコマンドの構文は以下に示すとおりです:
\NumberSetStyle[style=<option>]{<symbol>}
\NumberSet
コマンドは1つのオプション引数と1つの必須引数をもち,その必須引数で与えた記号に対して決められた書体を適用したうえで出力します.
どのような書体が適用されるかはパッケージオプションによって決まるほか,オプション引数でstyle=bfup
のように指定することでローカルに指定することもできます.指定できる値はパッケージオプションと同じです.
具体的には以下のように使用します:
% オプション引数を指定しない場合
\NumberSet{A}
% オプション引数を指定する場合
\NumberSet[style=bfup]{A}
このコマンドは「数の集合を表す」という意味では説明的でよい名前のコマンドですが,汎用的であるためその集合がどういう意味を表すことを期待するのかよくわかりません.
プリセットで足りない場合は新しいコマンドを定義するべきです.
数の集合を表す新しいコマンドの定義
プリセットに使用したいコマンドがない場合,\NewDocumentCommand
コマンドを使って単純なエイリアスを作成してもよいのですが,\DeclareNumberSetCommand
コマンドによって定義することもできます.
使用方法は,定義したいコマンド(制御綴)と使用する記号を以下のように指定します:
\DeclareNumberSetCommand{<control sequence>}{<symbol>}
例えば,四元数全体の集合$\mathbb{H}$を記述するコマンドを定義したい場合,
\DeclareNumberSetCommand{\Quaternions}{H}
と記述します.すると,\Quaternions
で\NumberSet{H}
を表すようコマンドが定義されます.
なお,\DeclareNumberSetCommand
コマンドで定義したコマンドはオプション引数で書体指定もできて
% 既定の書体を使用する
\Quaternions
% 書体をローカルに指定する
\Quaternions[style=bb]
とできます.
新しい書体規則の定義
既存の書体オプションでは不足している場合,\DeclareNumberSetStyle
コマンドで新しい書体規則が定義できます.その構文は以下のようになります:
\DeclareNumberSetStyle{<style name>}{<command>}
最初の引数<style name>
には定義したい書体規則の名前を,次の引数<command>
にはその書体規則を適用した場合に実行されるコマンドを記述します.
例えば,「ボールドのサンセリフを使用したい」という場合は
\DeclareNumberSetStyle{boldsans}{\symbfsfup}
とします.
定義した後は,style=boldsans
のように既定のbb
, bfup
, bfit
とまったく形で使用可能です.
\DeclareNumberSetStyle
コマンドの引数command
には単一の制御綴しか使用できません.
すなわち,\DeclareNumberSetStyle{bbline}{\overline\symbb}
のような指定はサポートされていません.
このような使い方をしたい場合は,まず単一の制御綴としてのエイリアスを作成し,そのエイリアスを\DeclareNumberSetStyle
コマンドで使用します.
\NewDocumentCommand\bbline{m}{\overline{\symbb{#1}}}
\DeclareNumberSetStyle{bbline}{\bbline}
\DeclareNumberSetStyle
コマンドはbb
やbfup
のような既定で用意された書体規則も上書き可能です.
unicode-mathパッケージを使用しない場合は,この特性が役に立ちます.
unicode-math
パッケージを使用しない場合
unocode-math
パッケージを使用しない場合,既定のbb
やbfup
等の書体指定はそのままでは正常に動作しません.
そのため,既定値を\DeclareNumberSetStyle
コマンドで上書きする必要があります.
amssymb
パッケージとbm
パッケージを使用する場合の例を示します:
\usepackage{amssymb}
\usepackage{bm}
\usepackage{numbersets}
\DeclareNumberSetStyle{bb}{\mathbb}
\DeclareNumberSetStyle{bfit}{\bm}
...
% 本文中
% \mathbb{N}と等価
\NumberSet{N}
% \bm{N}と等価
\NumberSet[style=bfit]{N}
上の例のように,実際に使用する書体指定規則のみ書き換えれば十分です.
上で使用しないbfup
については書き換えていませんが,問題は生じません.
数の集合を表すいくつかのプリセット
数の集合を表す新しいコマンドの定義で述べた\DeclareNumberSetCommand
を使用して,よく使う数の集合を表すコマンドをあらかじめ定義してあります.
集合 | コマンド | 既定値での出力 |
---|---|---|
自然数全体の集合 | \NaturalNumbers |
$\mathbb{N}$ |
整数全体の集合 | \Integers |
$\mathbb{Z}$ |
有理数全体の集合 | \RationalNumbers |
$\mathbb{Q}$ |
実数全体の集合 | \RealNumbers |
$\mathbb{R}$ |
複素数全体の集合 | \ComplexNumbers |
$\mathbb{C}$ |
\DeclareNumberSetCommand
のところで述べたように,オプション引数によって書体指定できる点も同じです.
これらすべてのコマンドが\NaturalNumbers[style=bfit]
のようにオプション引数を使った書体のローカル指定をサポートしています.
なお,上で述べたプリセットでは足りない場合は数の集合を表す新しいコマンドの定義で述べた\DeclareNumberSetCommand
コマンドを使って定義してください.