これは以下の記事について勝手に補足するものである.
LaTeX での「割り切る」記号
https://blog.miz-ar.info/2018/03/latex-divides-symbol/
LaTeXで「$p$が$q$を割り切る」という式を書きたいとき,数式環境内で
p \mid q
と書けば,$p \mid q$が出力される.しかし,「$p$が$q$を割り切らない」と書きたいとき,いくつかの問題が生じる.まずはalign環境で以下のコードを出力してみる(このときmathtoolsおよびamssymbパッケージを読み込んでいるものとする).
p \not\mid q \\
p \nmid q \\
p \mathrel{\not |} q
すると結果は次のようになる.
\not\midを使うと斜線が大きくずれてしまい,\nmidは斜線が短く,\mathrel{\not |}は$p$の右に余分な空白が空いてしまう.現在の TeX Live 2024 に含まれるパッケージ等では(おそらく)最適なコマンドは実装されていない.
結論から言うと,これに対する解決策はプリアンブル部に以下を挿入することである.
\newcommand{\notmid}{\mathrel{\ooalign{$\mkern-5mu\not$\crcr$|$}}}
これによって p \notmid q とすることで以下のような結果が得られる.
少々解説を挟むと,\mathrel{#1} は#1を関係演算子とするコマンド,\ooalign{#1\crcr#2} は#1と#2を重ねるコマンドである.また,\mkern は水平方向のスペースである(ここで用いたmuという単位は \mkern の他に \mskip や \mspace で使うことができるが,\hspace 等で使用することはできない).これについてはこちらの記事を参考にさせていただいた.
TeXで同人誌を作ってみた。(マクロ)
https://yamaimo.hatenablog.jp/entry/2019/10/05/200000
なお,TeX Live 2025 以降で何らかのパッケージにこのようなコマンドが追加される可能性も0ではないので,その場合はそのコマンドの使用を推奨する.
2024/12/28 追記: \caption{} 内の数式環境で\notmid を使うと "Illegal parameter number in definition of \reserved@a" というメッセージを残してエラーが発生した.これはどうやら\caption{} 内で\cite{}, \ref{}, \overrightarrow{} 等を使用すると同様に発生するエラーらしく,\notmid の場合は\crcr が問題となっているようである.その場合は以下のように\notmid の前に\protect を記述すればよい(これは他のコマンドでも大方同様である).
\caption{$p \protect\notmid q$}
また,以下のように\DeclareRobustCommand を用いれば最初から強固な(\protect 無しで\section{} や\caption{} 内で使用できる)コマンドを定義できる.
\DeclareRobustCommand{\notmid}{\mathrel{\ooalign{$\mkern-5mu\not$\crcr$|$}}}