🦁

TeXの表組みで区切り文字をコンマにして読みやすく書く

2024/12/02に公開

TeXの表組みで区切り文字をコンマにして読みやすく書く

はじめまして。
TeX & LaTeX アドベントカレンダー 2024 に参加させていただきました。
この記事は2日目のとっておき記事です。
1日目はzr_tex8r さん、3日目はdoraTeX さんです。

&で区切るのは読みづらい

TeX(テフ)の表組みでは、ますを区切る文字に & を使います。
しかし、&の文字は背が高く、他の文字と紛らわしく少し見づらいです。
空白で見やすくすることもできますが、それでも少し見づらいです。

例:A&B&C&い&ろ&は
例:B\&G & ブルーシー & グリーンランド

そこでコンマ(,)のような目立たない小さな文字を区切り文字にし、見やすく書いてみましょう。
この方がコンマ区切りデータのコンマを&に置き換える手間もなくなります。

例: A,B,C,い,ろ,は
例: B&G, ブルーシー, グリーンランド

区切り文字をコンマに変える

これは、TeXの字類番号(catcode)を変えるとできます。
適用範囲を{ }で囲み、その中でコンマを字類4(表区切り文字)に変えます。

{\catcode`, = 4 [ここで表を組む]}

ついでに&を字類12(記号と数字)に変えましょう。
これで&は区切り文字ではなくなり、直に(文字として)打てるようになります。

{\catcode`, = 4\catcode`& = 12 [ここで表を組む]}

XeTeX

%xetex
\font\ミン="[/書体の場所/ipaexm.ttf]"
\font\ゴチ="[/書体の場所/ipaexg.ttf]"
\footline={} % ページ番号なし

{\ゴ%
\hfil 表:コンマを区切りに使った halign\hskip0em表の例\par\vskip.5em
{\catcode`, = 4\catcode`& = 12
\hfil\vbox{\offinterlineskip
\halign{\strut\hfil~~#~~\hfil\vrule,,\hfil~~#~~\hfil\cr
,1つ目,2つ目 \cr\noalign{\hrule}
B&G,ブルーシー,グリーンランド\cr
P&G,プロクター,ギャンブル\cr
S&P,スタンダード,プアーズ\cr
R&B,リズム,ブルース\cr}}}\par}

\bye

XeLaTeX

%xelatex
%依存:tlmgr install bxjscls
\documentclass[a4paper,xelatex,ja=standard,jafont=ipaex]{bxjsarticle}
\pagestyle{empty}
\begin{document}

\begin{table}[h]
\centering\sffamily%中央揃え、サンセリフ(ゴシック)体
\caption{\LaTeX\hspace{0pt}組版におけるコンマ(,)区切り且つ%
  アンド(\&)直打ちによるtabular\hspace{0pt}表の例}
\catcode`, = 4\catcode`& = 12
\begin{tabular}{c|cc}
,1つ目,2つ目 \\ \hline
B&G,ブルーシー,グリーンランド\\
P&G,プロクター,ギャンブル\\
S&P,スタンダード,プアーズ\\
R&B,リズム,ブルース
\end{tabular}\end{table}

\begin{table}[h]\sf
\hfil\caption{\LaTeX\kern-.3em\lower.5ex\hbox{}\kern-.3em\TeX による%
  同様の例(halign\hskip0em表)}\par%table と \caption はlatexの機能
{\catcode`, = 4\catcode`& = 12
\hfil\vbox{\offinterlineskip
\halign{\strut\hfil~~#~~\hfil\vrule,,\hfil~~#~~\hfil\cr
,1つ目,2つ目\cr\noalign{\hrule}
B&G,ブルーシー,グリーンランド\cr
P&G,プロクター,ギャンブル\cr
S&P,スタンダード,プアーズ\cr
R&B,リズム,ブルース\cr}}}\par
\end{table}

\end{document}

まとめ

読みやすく書きやすくなったと思います。
割と使える裏技ですよね。
これからはコンマ区切りで表組みするのはいかがでしょうか。

その他

&の直(じか)打ち

そもそも、表組みしていない時は、字類4(表区切り文字)はどの文字にも割り当てないほうが、&を直に打てるので勝手が良かったのではないかと思えてきました。

\catcode`& = 12

をTeXコードの初めに唱えて、文章中で&を直打ちするのもいいと思います。

LaTeX上TeX のすすめ

\catcode\halignはTeXの機能です。
tabletabularはLaTeXの機能です。
XeLaTeXの例ではLaTeX上でTeXの機能を使っています。

LaTeXでTeXの機能(plainTeXや原始命令)を使うこと(LaTeX上TeX) は良くないとされることもあります。
ただし、LaTeXを使うことでTeX本来の使い方から離れてしまうことを悪く捉える場合、LaTeXの機能を使うことのほうがむしろ良くないこととなります。

LaTeXの機能は高水準(人の言葉に近い)であるがゆえに、親しみやすい反面、挙動が分かりづらく細かな調整が難しいという面もあります。
より自由な設定や調整を求める場合、より低水準(機械への命令に近い)であるTeXを使おうとするわけです。
しかし、TeXでは日本語をまともに組めないため、やはりLaTeXを使うことになります。

LaTeX上TeXは、TeXとLaTeXの両方から良いとこ取りした優れた使い方とも言えます。
志のあるTeX使いの方は、LaTeX上TeXに進んで取り組むのも良いでしょう。

詰めた「LaTeX上TeX」

XeLaTeX の例の表2の説明文では、「LaTeX上TeX」の見た目を詰めたりして少し遊んでみました。

Discussion