
行列の行と列のインデックスにラベルを付ける必要があります。blkarray
役立つことはわかっているので、次のように記述します。
\documentclass[a4paper,12pt]{article}
\usepackage{amsmath}
\usepackage{blkarray}% http://ctan.org/pkg/blkarray
\newcommand{\matindex}[1]{\mbox{#1}}% Matrix index
\begin{document}
pmatrix way:
\[
J(i,j,\theta)=\begin{pmatrix}
1 & \cdots & 0 & \cdots & 0 & \cdots & 0 \\
\vdots & \ddots & \vdots & & \vdots & & \vdots \\
0 & \cdots & c & \cdots & -s & \cdots & 0 \\
\vdots & & \vdots & \ddots & \vdots & & \vdots \\
0 & \cdots & s & \cdots & c & \cdots & 0 \\
\vdots & & \vdots & & \vdots & \ddots & \vdots \\
0 & \cdots & 0 & \cdots & 0 & \cdots & 1
\end{pmatrix}
\]
blkarray way:
\[
J(i,j,\theta)=\begin{blockarray}{cccccccc}
\begin{block}{(ccccccc)c}
1 & \cdots & 0 & \cdots & 0 & \cdots & 0 \\
\vdots & \ddots & \vdots & & \vdots & & \vdots \\
0 & \cdots & c & \cdots & -s & \cdots & 0 & \matindex{$i$} \\
\vdots & & \vdots & \ddots & \vdots & & \vdots \\
0 & \cdots & s & \cdots & c & \cdots & 0 & \matindex{$j$} \\
\vdots & & \vdots & & \vdots & \ddots & \vdots \\
0 & \cdots & 0 & \cdots & 0 & \cdots & 1 \\
\end{block}
& & \matindex{$i$} & & \matindex{$j$} & \\
\end{blockarray}
\]
Why $J(i,j,\theta)$ isn't vertical aligned int blkarray way?
\end{document}
結果は次のとおりです。
blkarray の方法で垂直に揃えられない 理由を知りたいです。
そして、pmatrix 方式のように垂直に整列させる方法。
ありがとう。
答え1
問題は、ブロック配列が、下のインデックスを含む全体のサイズに対して垂直方向に中央揃えになっていることです。
この場合、最も簡単な方法は、全体を に入れることですblkarray
。
\documentclass[a4paper,12pt]{article}
\usepackage{amsmath}
\usepackage{blkarray}% http://ctan.org/pkg/blkarray
\begin{document}
\[
\begin{blockarray}{r@{}cccccccc}
\begin{block}{r(ccccccc)c}
& 1 & \cdots & 0 & \cdots & 0 & \cdots & 0 \\
& \vdots & \ddots & \vdots & & \vdots & & \vdots \\
& 0 & \cdots & c & \cdots & -s & \cdots & 0 & i \\
J(i,j,\theta)={} & \vdots & & \vdots & \ddots & \vdots & & \vdots \\
& 0 & \cdots & s & \cdots & c & \cdots & 0 & j \\
& \vdots & & \vdots & & \vdots & \ddots & \vdots \\
& 0 & \cdots & 0 & \cdots & 0 & \cdots & 1 \\
\end{block}
& & & i & & j & \\
\end{blockarray}
\]
\end{document}
答え2
pmatrix
この結果は、および をpstricks
使用して特定の要素をノードとして定義し、これらのノードにラベルを付ける、またはblockarray, stackengine
またはを使用してmakecell
コマンドを使用することで取得できます\raisebox
。
\documentclass[a4paper,12pt]{article}
\usepackage{mathtools}
\usepackage{blkarray, makecell, stackengine}
\usepackage{pst-node, auto-pst-pdf} %
\begin{document}
\verb|pmatrix way + pstricks way:|\bigskip
\[
\begin{postscript}
J(i,j,\theta)=%
\begin{pmatrix}
1 & \cdots & 0 & \cdots & 0 & \cdots & 0 \\
\vdots & \ddots & \vdots & & \vdots & & \vdots\\
0 & \cdots & c & \cdots & -s & \cdots &\rnode{rowi}{0}\\%
\vdots & & \vdots & \ddots & \vdots & & \vdots \\
0 & \cdots & s & \cdots & c & \cdots & \rnode{rowj}{0}\\%
\vdots & & \vdots & & \vdots & \ddots & \vdots \\
0 & \cdots & \rnode{coli}{0} & \cdots & \rnode{colj}{0} & \cdots & 1
\end{pmatrix}
\psset{labelsep=1.2em}
\nput{0}{rowi}{i}\nput{0}{rowj}{j}
\psset{labelsep=1.2ex}
\nput{-90}{coli}{i}\nput{-90}{colj}{j}
\end{postscript}
\]
\verb|blkarray + makecell or stackengine way: |
\[
J(i,j,\theta)= \raisebox{-0.3\baselineskip}{$ \begin{blockarray}{(*{7}{c})c}
1 & \cdots & 0 & \cdots & 0 & \cdots & 0 \\
\vdots & \ddots & \vdots & & \vdots & & \vdots \\
0 & \cdots & c & \cdots & -s & \cdots & 0 & i\\
\vdots & & \vdots & \ddots & \vdots & & \vdots \\
0 & \cdots & s & \cdots & c & \cdots & 0 & j \\
\vdots & & \vdots & & \vdots & \ddots & \vdots \\
0 & \cdots & \smash{\stackunder[1.2ex]{0}{$ i $}} & \cdots &\smash{\makecell[tc]{0\\j}} & \cdots & 1
\end{blockarray} $}
\]%
\end{document}
答え3
{pNiceMatrix}
を使用するとnicematrix
、期待どおりの結果が直接得られます。
\documentclass[a4paper,12pt]{article}
\usepackage{nicematrix}
\begin{document}
\[
J(i,j,\theta)=\begin{pNiceMatrix}[last-row=8,last-col=8]
1 & \cdots & 0 & \cdots & 0 & \cdots & 0 \\
\vdots & \ddots & \vdots & & \vdots & & \vdots \\
0 & \cdots & c & \cdots & -s & \cdots & 0 & i \\
\vdots & & \vdots & \ddots & \vdots & & \vdots \\
0 & \cdots & s & \cdots & c & \cdots & 0 & j \\
\vdots & & \vdots & & \vdots & \ddots & \vdots \\
0 & \cdots & 0 & \cdots & 0 & \cdots & 1 \\
& & i & & j & \\
\end{pNiceMatrix}
\]
\end{document}