使用頻度が稀とは言えない程度にはあるため、論文書く時のマクロに最初から書いてしまっているタイプのコマンドなどをメモがてら共有します。
テキスト
改行しないハイフン (nobreakdash)
ハイフン-
は英語で複合語(a 20-year-old manのような感じで)を作る際の接続や、長い単語で行をまたいでしまった際の分割で使われる記号です。なので高級な文書ソフトの一般的な動作として、ハイフンの直後は改行してよい場所という扱いになります。
一方、例えば「2-category」(2-圏) のハイフン直後で改行されたりすると可読性に影響が出る気がします。こういう場所ではあんまり改行してほしくないですね。さらに圏と2-圏をまとめて何かものを言っていた際に「(2-)category」なんて書いていて改行されてしまった場合、閉じ括弧で行が始まることになって目も当てられません。
これを回避するためのコマンドが\nobreakdash
です。長いので私は糖衣マクロを導入しています。
\let\nbdsh\nobreakdash
%% 使用方法
2\nobreakdash-category
2\nbdsh-category
ローマ数字 (romannumeral)
論文や書籍の節番号になんとローマ数字が採用されているなどして、ローマ数字を打ちたい!という事態に陥ることがあります。個人的な例でいうとCWMの章番号はローマ数字なので、引用する際に必要になったりします。
TeXには\romannumeral
というコマンドがあります。この後に続く数字のトークンをローマ数字の小文字に変更します。
\romannumeral2 % --> ii
\romannumeral5 % --> v
\romannumeral{24} % --> xxiv
大文字用のコマンドはありません。なんでや。そこで用意したマクロがこちらです。
\newcommand*{\Romannumeral}[1]{\uppercase\expandafter{\romannumeral#1}}
LaTeX用にnewcommandを使用していますがそこは本質的ではないので勘弁してください。
Unicode文字の挿入 (newunicodechar)
LaTeXは独自のエンコードを採用しているため、T1エンコードにしておけば主要なヨーロッパの言語の特殊文字(çとかëとかijとかŁとか)は対応しているのですが、ごく稀に対応できない文字に出くわすことがあります。本文中よりも特にbibファイルの中でそんな文字を処理させる時が面倒なことになりがちです(これは私がbiberで処理しているせいかもしれませんが)。
特定のunicode文字だけなんとかなればいい場合に、newunicodecharでなんとかする方法があります。
\usepackage{newunicodechar}
\newunicodechar{ō}{\=o}
\newunicodechar{ř}{\v{r}}
自分の名前をヘボン式ローマ字で書きたい人もこれで安心ですね。
ピリオドと空白
英語で論文を書いていると、「i.e.」「e.g.」「et al.」などの略語をしばしば使います。しかし、TeXくんは単語の意味とか見ていないため、語末のピリオドを見て文末だと勘違いしてしまい、多めにスペースを打ちやがります。
対処法は直後のスペースを\
にすることです。
Ann Author et al. stated (something like that). % <-- 2文扱い(は?)
Ann Author et al.\ stated (something like that). % <-- 本当に求めていたもの
(07/05追記) マクロ化してみました。直後のトークンが空白・スペースかそれ以外かで処理が分岐するようにしてあります。
\def\eg#1{\if#1\ e.g.\ \else\if#1\@empty e.g.\ \else e.g.#1\fi\fi}
逆に、大文字の後のピリオドは省略扱いになってスペースが狭まるため、強制文末指定をする必要があります。これはピリオドの前に\@
を挿入することで行えます。
You need to do NOTHING. Sit down and stay there. % <-- なぜか1文扱い
You need to do NOTHING\@. Sit down and stay there. % <-- これでよし
数式
\circの演算子化
関数の結合に使う\circ
◦ ですが、デフォルトでは関係演算子扱いなので、スペーシングがバグる可能性があります。分野にもよりますが圏論をやっていると圧倒的に二項演算子として使用するため、怒りのオーバーライドをぶちかましておきます。
\let\circmark\circ
\renewcommand{\circ}{\mathbin{\circmark}}
et cetra...
書くことがあったら追加します。