読者です 読者をやめる 読者になる 読者になる

moguestの思いつき備忘録

ふと思いついたことや見知った数理工学系の知識をためていく予定のブログです.面白ければなんでもあり.

jsarticle,jsbook の文章中で matrix 環境を使うとき

それなりの時間悩んでいたことが解決したので,ここに記しておきます.

最近は奥村先生の jsarticle, jsbook クラスを普段使っているのですが,そのときに
「matrix 環境の類を使うとき,
場所が文章中(2つの$マークで囲むもの)であるか別行立て(align 環境など)であるかで,空白が変わる」
という現象が生じていました.
例としては,下のような感じです.

f:id:moguest:20160727180612p:plain

確かに,文章中に行列を書いたときは,align 環境などに入れて書くときに比べて行間が広いですね.
「align のほうが広い」ならまだしも,「文章中のほうが広い」というのはあまり好ましくないと思います.
通常の数式記号(積分記号や分数など)は,文章中のほうが高さが小さくなるように設計されています.
したがって,この逆転現象は,僕としては気になります.

文章中に行列を入れるのを控えればいい,という話はありますが,それでも行ベクトルを書きたくなる瞬間はあるはず.
僕は行ベクトルも matrix 環境で書くタイプなんですが(成分間の空白などの体裁をそろえるため),
このまま文章中に行ベクトルを書くと,括弧の大きさが不自然になってしまいます.

しかも,この性質,困ったことに \displaystyle ではどういうわけか直らないんですね.
行列の直前に \displaystyle を入れてみたんですが,とくに効果はなく.

…ということが今日の今日まで謎だったんですが,この解決方法がわかりました.
それは,\narrowbaselines を入れるというもの.
実際にやってみると,下のような感じになります.align 環境内の行列とほとんど見分けがつかなくなりました!

f:id:moguest:20160727180617p:plain

\narrowbaselines というコマンドを今日知ったので詳しいふるまいは分かりませんが,
どうやらその名の通り,基本的な行間を狭くするコマンドのようです.
プリアンブルに入れてみると,文書全体の行間が(行列の行だけでなく,普通の文章の行間含め)すべて狭くなります.

これは文章の途中に入れても適用されます.つまり,\narrowbaselines を入れた直後から(?)行間が狭くなるようです*1
途中で文章の行間が狭くなっては困るため,実際に使うときは
中括弧で囲って\narrowbaselines の影響を局所的に抑える必要があります.つまり,上の例だと
${
\narrowbaselines
\begin {bmatrix}
1&-1
\end {bmatrix} ,\;\;
\begin {bmatrix}
a&b\\c&d
\end {bmatrix}
}$
とします.

*1:もしかすると,「直後の段落から」とかそういう条件かもしれません.が,そもそも文書の途中で行間を変えるような使い方は実用的ではないですよね.