![クラス用語における\colonと:](https://rvso.com/image/420746/%E3%82%AF%E3%83%A9%E3%82%B9%E7%94%A8%E8%AA%9E%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%5Ccolon%E3%81%A8%3A.png)
再開数式で \colon または : を使用しますか?そして集合表記: \colon と :では、Knuth の TeXbook の 174 ページを見てみましょう。
$\{\,x\mid x>5\,\}$ { x | x > 5 }
$\{\,x:x>5\,\}$ { x : x > 5 }
そして438ページにはこう書かれています:
f : A → B $f\colon A\rightarrow B$
L(a, b; c: x, y; z) $L(a,b;c\colon x,y;z)$
AMS の LaTeX 用簡易数学ガイド (p. 12) には次のように書かれています。「このコマンドは、 f:A→B\colon
などの構文で使用するための特別なスペースを生成しますf\colon A\to B
。」
要約すると、これらの研究では、{ x : x > 5 } と f : A → B ではコロンに異なるコマンドを使用する (つまり、異なるスペースを使用する) ことが推奨されています。
さて、クラス用語内でコロン(どのコマンドで生成されたスペースでも)をセパレーターとして使用すると仮定しましょう(たとえば、縦棒 | やスポット ⦁ は他の目的で頻繁に使用されるため)。純粋に構文的に、用語「{ x : p }」は変数バインディング構造です。中括弧は変数バインダーで、コロンはセパレーターです。この用語は、式的には「∀ x ⦁ p」/「∀ x : p」と同じクラスに属します。この場合、量指定子は変数バインダーでスポット/コロンはセパレーターです。または「λ x. p」の場合、小さなラムダは変数バインダーでピリオドはセパレーターです。したがって、これらすべての用語が同じようにタイプセットされるのは過度に論理的であり、Knuth の TeXbook と矛盾しています。しかし、これは伝統を破ると思います。同じテキストで 3 つの用語すべてでセパレーターの周囲に等しいスペースがあるのを見たことはありません。さて、それでも主張する一貫性の観点から、どの間隔を選択し、どのように実装しますか?
いくつかのテスト(部分的に意味なし):
\documentclass{article}
\pagestyle{empty}
\usepackage{amssymb}
\begin{document}\noindent
\(\{\,x\in\mathrm{Nat}\mathpunct{:} p\,\}\)\\
\(\forall\, x\in\mathrm{Nat}\mathpunct{:} p\)\\
\(\mathrm{\lambda}\, x\in\mathrm{Nat}\mathpunct{.} p\)\\\\
\(\{\,x\in\mathrm{Nat}\mathrel{:} p\,\}\)\\
\(\forall\, x\in\mathrm{Nat}\mathrel{:} p\)\\
\(\mathrm{\lambda}\, x\in\mathrm{Nat}\mathrel{.} p\)\\\\
\(\{\,x\in\mathrm{Nat}\mathpunct{\colon} p\,\}\)\\
\(\forall\, x\in\mathrm{Nat}\mathpunct{:} p\)\\
\(\mathrm{\lambda}\, x\in\mathrm{Nat}\mathpunct{.} p\)\\\\
\(\{\,x\in\mathrm{Nat}\mathrel{\colon} p\,\}\)\\
\(\forall\, x\in\mathrm{Nat}\mathrel{:} p\)\\
\(\mathrm{\lambda}\, x\in\mathrm{Nat}\mathrel{.} p\)
\end{document}