Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I want to create a matrix with row and column lables (outide matrix delimiters). After a lot of googling, I have found that TeX macro kbordermatrix is best suited for this purpose. Here is my code

\kbordermatrix{    & g_1           & g_2           & g_3           & \cdots & g_k     \cr
            g_1    & 1             & IV_{12}       & IV_{13}       & \cdots & IV_{1k} \cr
            g_2    & ^1/_{IV_{12}} & 1             & IV_{12}       & \cdots & IV_{2k} \cr
            g_3    & ^1/_{IV_{13}} & ^1/_{IV_{23}} & 1             & \cdots & IV_{3k} \cr
            \vdots & \vdots        & \vdots        & \vdots        & \ddots & \vdots  \cr
            g_k    & ^1/_{IV_{1k}} & ^1/_{IV_{2k}} & ^1/_{IV_{33}} & \cdots & 1 }

As you can notice there are fractions in the matrix. Now I want to use regular fractions \dfrac instead of superscript-subscript notation. But using full sized fractions will almost merge rows. Thats why I need to increase row spacing.

So, how it be done? TIA

share|improve this question

1 Answer 1

up vote 4 down vote accepted

Package kbordermatrix (doc) supports \arraystretch that can increase all rows. Alternatively an invisible rule can be added to increase the line heights of individual lines.

The example below shows first the matrix with equally stretched lines via \arraystretch. Then, instead of an invisible rule, it uses macro \kdfrac instead of \dfrac that measures the height and depth of the fraction and adds a space above and below. The space can be configured via length \kdsep. This way the second matrix only stretches the lines with the fractions.

\documentclass{article}
\usepackage{amsmath}
\usepackage{kbordermatrix}
\begin{document}

\begingroup
  \renewcommand*{\arraystretch}{2}%
  \kbordermatrix{
           & g_1           & g_2           & g_3           & \cdots & g_k     \cr
    g_1    & 1             & IV_{12}       & IV_{13}       & \cdots & IV_{1k} \cr
    g_2    & \dfrac{1}{IV_{12}} & 1             & IV_{12}       & \cdots & IV_{2k} \cr
    g_3    & \dfrac{1}{IV_{13}} & \dfrac{1}{IV_{23}} & 1             & \cdots & IV_{3k} \cr
    \vdots & \vdots        & \vdots        & \vdots        & \ddots & \vdots  \cr
    g_k    & \dfrac{1}{IV_{1k}} & \dfrac{1}{IV_{2k}} & \dfrac{1}{IV_{33}} & \cdots & 1
  }%
\endgroup

\bigskip

\makeatletter
\newlength{\kdsep}
\setlength{\kdsep}{.5ex}
\newcommand*{\kdfrac}[2]{%
  \begingroup
    \sbox0{$\m@th\displaystyle\frac{#1}{#2}$}%
    \ht0=\dimexpr\ht0 + \kdsep\relax
    \dp0=\dimexpr\dp0 + \kdsep\relax
    \box0 %
  \endgroup
}
\makeatother
\kbordermatrix{
         & g_1           & g_2           & g_3           & \cdots & g_k     \cr
  g_1    & 1             & IV_{12}       & IV_{13}       & \cdots & IV_{1k} \cr
  g_2    & \kdfrac{1}{IV_{12}} & 1             & IV_{12}       & \cdots & IV_{2k} \cr
  g_3    & \kdfrac{1}{IV_{13}} & \kdfrac{1}{IV_{23}} & 1             & \cdots & IV_{3k} \cr
  \vdots & \vdots        & \vdots        & \vdots        & \ddots & \vdots  \cr
  g_k    & \kdfrac{1}{IV_{1k}} & \kdfrac{1}{IV_{2k}} & \kdfrac{1}{IV_{33}} & \cdots & 1
}%
\end{document}

Result

share|improve this answer
    
Thanks you so much for such a detailed response. I'll opt for the 1st solution because it is easier :) –  Ammar Sep 11 '12 at 16:20

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.