ちょっと楽なエスケープ
エスケープの項では基本を大事にという観点から、特殊記号にバックスラッシュをつける初歩的な方法を紹介しました。
ですが実はもう少し楽にエスケープする方法があります。特殊記号の属するカテゴリーコードを書き換えてしまうという力技です。
おさらいをすると、TeXにおいては以下の記号たちは特別な役割を持っているため、文中にはそのまま書けないんでした。
記号 | TeXにとっての働き |
---|---|
# | 命令や環境の引数 |
$ | 数式モードへ移行 |
% | 以降をコメントアウト |
& | 表のセルの区切り |
_ | 下付きの添字 |
{ | グループ化の開始 |
} | グループ化の終了 |
\ | コマンドのためのエスケープ文字 |
| | 表の縦の罫線 |
^ | 上付きの添字 |
~ | 改行を抑制して単語間の空白を空ける |
しかし今我々が組んでいるのは縦書きの小説です。表とか数式モードとか、使わなくないですか?
少なくとも筆者は使いません。表組みも正直他のソフトで作って画像として貼った方が早いです。上付き下付きの数字も、多分小説中では一生使わないと思います。それよりはアンダーバーやチルダを含むURLとかを直書きできた方が嬉しい。
というわけで、これらの記号から特別な役割を剥奪して、ただの記号に戻してやればいいんです。そのために使うのがカテゴリーコードです。
カテゴリーコードとは、詳しくはこちらで説明されていますが、読んで字の如く文字・記号の属するカテゴリーの番号のことです。具体的には以下のようになっています(和文のことは忘れてください)。
カテゴリーコード | 分類 | 通常この分類に属する文字 |
---|---|---|
0 | エスケープ文字 | \ |
1 | グループ開始文字 | { |
2 | グループ終了文字 | } |
3 | 数式モードへの移行文字 | $ |
4 | アラインメントタブ | & |
5 | 行の終了文字 | 文字コード13の文字 |
6 | パラメータ文字 | # |
7 | 上付き文字 | ^ |
8 | 下付き文字 | _ |
9 | 無視する文字 | 文字コード0の文字 |
10 | 空白文字 | 文字コード32の文字 |
11 | 英文字 | AからZまでおよびaからzまで |
12 | その他の文字 | !“‘()*+,-./0123456789:;<=>?@[]`他1文字 |
13 | アクティブ文字 | ˜ |
14 | コメント文字 | % |
15 | 無効文字 | 文字コード127の文字 |
特殊記号にはそれぞれ独立したカテゴリーコードが割り振られているのが分かりますね。これらをその他の記号を含むカテゴリーコード12に変更してやりたいと思います。
使うのは\catcode
コマンド。\catcode`\<文字>=<カテゴリーコード>
という書式で、任意の文字のカテゴリーコードを自由に変えることができます。プリアンブルの 一番下 に以下のように書き込みます。
\catcode`\$=12
\catcode`\&=12
\catcode`\_=12
\catcode`\|=12
\catcode`\^=12
さすがにコマンドを指示するバックスラッシュと波括弧やコメント文字をただの記号にすることはできませんが、それ以外はこれで特殊な役割をなくし、ベタ書きできるようになりました。
どれを普通の記号にしてどれをしないかはご自分の文体に合わせて決めてください。上付きの数字を使いたければ最後の行を抜けばいいし、チルダをベタ書きしたかったら\catcode`\~=12
を追加すればいいです。
あとは通常通り、以下の表に従ってバックスラッシュ、波括弧、パーセントなど、ただの記号にできない記号をエスケープします。これらの記号が本文に出てこない、と断言できるかたは飛ばして結構です。断言までいかなくてもそんなに大量に出てこないという場合は、一括置換はせずにタイプセットした時に引っかかったところにバックスラッシュをつけていく、という形でもいいかと思います。
検索する文字列 | 置換後の文字列 |
---|---|
\\ |
{\\textbackslash} |
([#%&{}]) |
\\$1 |
~ |
{\\textasciitilde} |
\\{\\textbackslash\\} |
{\\textbackslash} |
ちなみにこの方法には、アクセントと特殊記号 (1)のところでパッケージの練習として読み込んだ\usepackage[T1]{fontenc}
が必須です。(無いと_や|などがおかしくなる)