Life is Beautiful

主に進化生物学の理論のブログです。不定期更新予定。

数式のあるパラグラフでも行番号を表示させたい

LaTeXでは、lineno.styというスタイルファイルが用意されていて、自動的に・システマティックに、行番号を振ってくれます。

CTANはこちら: CTAN: tex-archive/macros/latex/contrib/lineno

これを作業用ディレクトリに置いて、\usepackage{linenumbers}でインクルードすればおしまいです。

しかしこのままでは問題があります。なんと、数式を含むようなパラグラフには行番号が振られない、というバグ?

これではレビュアーにフラストレーションを与えてしまう。ということで

\newcommand*\patchAmsMathEnvironmentForLineno[1]{%
  \expandafter\let\csname old#1\expandafter\endcsname\csname #1\endcsname
  \expandafter\let\csname oldend#1\expandafter\endcsname\csname end#1\endcsname
  \renewenvironment{#1}%
     {\linenomath\csname old#1\endcsname}%
     {\csname oldend#1\endcsname\endlinenomath}}% 
\newcommand*\patchBothAmsMathEnvironmentsForLineno[1]{%
  \patchAmsMathEnvironmentForLineno{#1}%
  \patchAmsMathEnvironmentForLineno{#1*}}%
\AtBeginDocument{%
\patchBothAmsMathEnvironmentsForLineno{equation}%
\patchBothAmsMathEnvironmentsForLineno{align}%
\patchBothAmsMathEnvironmentsForLineno{flalign}%
\patchBothAmsMathEnvironmentsForLineno{alignat}%
\patchBothAmsMathEnvironmentsForLineno{gather}%
\patchBothAmsMathEnvironmentsForLineno{multline}%
}
\linenumbers

をプリアンブルに書けばよいようです。なお、\usepackage{amsmath}でamsmathスタイルをインクルードするのも忘れずに。