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.

How can I draw the following type of matrix without changing the horizontal alignment of the column entries:

|   c11 c12 c13   c14   c15 c16   c17 | c18 c19 | |
|   c21 c22 c23   c24 | c25 c26 | c27   c28 c29   |
|   c31 c32 c33   c34 | c35 c36 | c37   c38 c39   |
| | c41 c42 c43 | c44   c45 c46   c47   c48 c49   |

Remark: There are three sub-matrices within the main matrix:

submatrix 1: c18 to c19
submatrix 2: c25 to c36
submatrix 3: c41 to c43

where | shows as the large-sized parentheses ( and ).

This problem is different from matrix in a matrix.

share|improve this question

2 Answers 2

Remarks

I hope, I got your explanation right.

Using a specific \tikzmark and the calligraphy TikZ library by Andrew Stacey you can achieve the following output. You will need to rerun latex several times to get the positioning right.

Implementation

\documentclass{standalone}
\usepackage{amsmath,tikz}
\usetikzlibrary{decorations,calligraphy}
\newcommand\tikzmark[2]{\tikz[remember picture,baseline=(#1.base)]{\node[inner sep=0pt] (#1) {#2};}}
\begin{document}
$
\begin{pmatrix}
    c11  & c12 & c13  & c14 & c15                   & c16                   & c17 & (c18 & c19) \\
    c12  & c22 & c23  & c24 & \tikzmark{c25}{$c25$} & \tikzmark{c26}{$c26$} & c27 & c28  & c29  \\
    c13  & c32 & c33  & c34 & \tikzmark{c35}{$c35$} & \tikzmark{c36}{$c36$} & c37 & c38  & c39  \\
    (c14 & c42 & c43) & c44 & c45                   & c46                   & c47 & c48  & c49  \\
\end{pmatrix}
$
\begin{tikzpicture}[remember picture,overlay]
    \draw[thick,decorate,decoration={calligraphic straight parenthesis}] (c35.south west) -- (c25.north west);
    \draw[thick,decorate,decoration={calligraphic straight parenthesis}] (c26.north east) -- (c36.south east);
\end{tikzpicture}
\end{document}

Output

enter image description here


Using the calc library you can compensate the bad spacing for the TikZ braces by adding an offset of .2em as in

\begin{tikzpicture}[remember picture,overlay]
    \draw[thick,decorate,decoration={calligraphic straight parenthesis}] ($(c35.south west)+(-.2em,0)$) -- ($(c25.north west)+(-.2em,0)$);
    \draw[thick,decorate,decoration={calligraphic straight parenthesis}] ($(c26.north east)+(.2em,0)$) -- ($(c36.south east)+(.2em,0)$);
\end{tikzpicture}

which produces

enter image description here


On behalf of Christopher Creutzig's comment, here another solution (still using tikzmark) which doesn't involve typing parentheses inside the matrix.

\documentclass{standalone}
\usepackage{amsmath,tikz}
\usetikzlibrary{calc,decorations,calligraphy}
\newcommand\tikzmark[2]{\tikz[remember picture,baseline=(#1.base)]{\node[inner sep=0pt] (#1) {#2};}}
\begin{document}
$
\begin{pmatrix}
    c11                   & c12 & c13                   & c14 & c15                   & c16                   & c17 & \tikzmark{c18}{$c18$} & \tikzmark{c19}{$c19$} \\
    c12                   & c22 & c23                   & c24 & \tikzmark{c25}{$c25$} & \tikzmark{c26}{$c26$} & c27 & c28                   & c29                   \\
    c13                   & c32 & c33                   & c34 & \tikzmark{c35}{$c35$} & \tikzmark{c36}{$c36$} & c37 & c38                   & c39                   \\
    \tikzmark{c14}{$c14$} & c42 & \tikzmark{c43}{$c43$} & c44 & c45                   & c46                   & c47 & c48                   & c49                   \\
\end{pmatrix}
$
\begin{tikzpicture}[remember picture,overlay]
    \draw[thick,decorate,decoration={calligraphic straight parenthesis}] ($(c35.south west)+(-.2em,0)$) -- ($(c25.north west)+(-.2em,0)$);
    \draw[thick,decorate,decoration={calligraphic straight parenthesis}] ($(c26.north east)+(.2em,0)$) -- ($(c36.south east)+(.2em,0)$);
    \node[left=.2em] at (c14) {$($};
    \node[left=.2em] at (c18) {$($};
    \node[right=.2em] at (c19) {$)$};
    \node[right=.2em] at (c43) {$)$};
\end{tikzpicture}
\end{document}

enter image description here

share|improve this answer
1  
You have c14 and c18 shifted right and c43 and c19 shifted left. That probably calls for \llap and \rlap. –  Christopher Creutzig Dec 27 '13 at 18:47

The following MWE inserts the brackets (..) at the appropriate size:

enter image description here

\documentclass{article}
\begin{document}
\[
  \left(\begin{array}{@{\hspace*{1ex}}*{9}{c}@{\hspace*{1ex}}}
    c_{11} & c_{12} & c_{13} & c_{14} & c_{15} & c_{16} & c_{17} & \llap{$\bigl($}c_{18} & c_{19}\rlap{$\bigr)$} \\
    c_{21} & c_{22} & c_{23} & c_{24} & \llap{\raisebox{\dimexpr\ht\strutbox-\height}[0pt][0pt]{$\biggl($}}c_{25} & 
      c_{26}\rlap{\raisebox{\dimexpr\ht\strutbox-\height}[0pt][0pt]{$\biggr)$}} & c_{27} & c_{28} & c_{29} \\
    c_{31} & c_{32} & c_{33} & c_{34} & c_{35} & c_{36} & c_{37} & c_{38} & c_{39} \\
    \llap{$\bigl($}c_{41} & c_{42} & c_{43}\rlap{$\bigr)$} & c_{44} & c_{45} & c_{46} & c_{47} & c_{48} & c_{49}
  \end{array}\right)
\]
\end{document}

Overlapping allows to maintain the horizontal spacing, while brackets are resized using their \big* equivalents.

share|improve this answer

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.