TeXの表組みで区切り文字をコンマにして読みやすく書く
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の機能です。
table
やtabular
は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