Bordermatrix oben und rechts beschriften

Formelsatz für Mathematik, Naturwissenschaften und Technik


tico
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Do 24. Nov 2011, 11:49

Bordermatrix oben und rechts beschriften

Beitrag von tico »

Hallo Leute.

Ich möchte gerne eine Matrix erstellen, welche oben und rechts Beschriftungen hat. Ich habe auch etwas gefunden, was das Problem angeblich löst (vgl. http://ifatwww.et.uni-magdeburg.de/~stk ... ic_id=1153

leider compiliert das bei mir nicht, ich benutze scrartcl anstatt article als Dokumentklasse, das sollte aber keine Probleme machen, oder ? Hier poste ich mal nochmal den Code, der oben im Link angegeben wird:
\documentclass{article}
\makeatletter
   \newifif@borderstar
   \def\bordermatrix{\@ifnextchar*{%
      \@borderstartrue\@bordermatrix@i}{\@borderstarfalse\@bordermatrix@i*}%
    }
    \def\@bordermatrix@i*{\@ifnextchar[{\@bordermatrix@ii}{\@bordermatrix@ii[()]}}
    \def\@bordermatrix@ii[#1]#2{%
    \begingroup
     \m@th\@tempdima8.75\p@\setbox\z@\vbox{%
       \def\cr{\crcr\noalign{\kern 2\p@\global\let\cr\endline }}%
       \ialign {$##$\hfil\kern 2\p@\kern\@tempdima & \thinspace %
       \hfil $##$\hfil && \quad\hfil $##$\hfil\crcr\omit\strut %
       \hfil\crcr\noalign{\kern -\baselineskip}#2\crcr\omit %
       \strut\cr}}%
     \setbox\tw@\vbox{\unvcopy\z@\global\setbox\@ne\lastbox}%
     \setbox\tw@\hbox{\unhbox\@ne\unskip\global\setbox\@ne\lastbox}%
     \setbox\tw@\hbox{%
       $\kern\wd\@ne\kern -\@tempdima\left\@firstoftwo#1%
         \if@borderstar\kern2pt\else\kern -\wd\@ne\fi%
       \global\setbox\@ne\vbox{\box\@ne\if@borderstar\else\kern 2\p@\fi}%
       \vcenter{\if@borderstar\kern -\baselineskip\else\kern -\ht\@ne\fi%
         \unvbox\z@\kern-\if@borderstar1\fi\baselineskip}%
         \if@borderstar\kern-2\@tempdima\kern2\p@\else\,\fi\right\@secondoftwo#1 $%
     }\null \;\vbox{\kern\ht\@ne\box\tw@}%
   \endgroup
   }
\makeatother


\begin{document}
$\bordermatrix*{%
 A & B & C &   \cr
 1 & 2 & 3 & A \cr
 2 & 3 & 4 & B \cr
 3 & 2 & 3 & C \cr%
}$
\end{document}
Es kommt ein Fehler in Zeile 3 : undefined Control sequence.

Wäre sehr dankbar für Eure Hilfe !

Gruß

Benutzeravatar
cgnieder
Forum-Meister
Forum-Meister
Beiträge: 730
Registriert: Fr 22. Okt 2010, 18:37
Wohnort: Herrenberg
Kontaktdaten:

Beitrag von cgnieder »

Vielleicht ist das gauss-Paket was für Dich?
\documentclass[parskip=half]{scrartcl}
\usepackage{gauss}
\renewcommand\colmultlabel{}
\renewcommand\rowmultlabel{}
\begin{document}
$
\begin{gmatrix}[p]
 1 & 2 & 3 \\
 2 & 4 & 6 \\
 7 & 8 & 9
 \colops
  \mult{0}{a}
  \mult{1}{b}
  \mult{2}{c}
 \rowops
  \mult{0}{A}
  \mult{1}{B}
  \mult{2}{C}
\end{gmatrix}
$

\end{document}
Clemens
Paketauthor

Benutzeravatar
localghost
Forum-Meister
Forum-Meister
Beiträge: 826
Registriert: Di 8. Jul 2008, 15:40
Wohnort: Braunschweig

Anderer Weg

Beitrag von localghost »

Du könntest auch einen vollkommen anderen Weg mit Hilfe von pgf/tikZ gehen.
\documentclass[11pt]{article}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usetikzlibrary{calc,matrix,positioning}

\begin{document}
  \begin{equation}
    \begin{tikzpicture}[baseline={($(current bounding box.west)-(0,1.05em)$)}]
      \matrix (mat) [
        matrix of math nodes,
        row sep=1em,
        column sep=1em,
        nodes={anchor=base,inner sep=1pt},
        left delimiter=(,
        right delimiter=)
      ] {
        1 & 2 & 3 \\
        4 & 5 & 6\\
        7 & 8 & 9 \\
      };
      \foreach \n/\t in {1/A,2/B,3/C} {
        \node[node distance=3pt,above=of mat-1-\n] (\t c) {\t};
        \node[node distance=12pt,right=of mat-\n-3] (\t r) {\t};
      }
    \end{tikzpicture}
  \end{equation}
\end{document}

Thorsten
TeX und LaTeX, Fragen und Antworten – TeXwelt

¹ Es tut mir Leid. Meine Antworten sind begrenzt. Sie müssen die richtigen Fragen stellen.
² System: TeX Live 2024, TeXworks

Benutzeravatar
cgnieder
Forum-Meister
Forum-Meister
Beiträge: 730
Registriert: Fr 22. Okt 2010, 18:37
Wohnort: Herrenberg
Kontaktdaten:

Beitrag von cgnieder »

Bei näherem Hinsehen ist wohl das der Fehler im ursprünglichen Code:

Statt
\newifif@borderstar
muss es
\newif\if@borderstar 
heißen.
Clemens
Paketauthor

tico
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Do 24. Nov 2011, 11:49

Beitrag von tico »

Super, Danke für die wertvollen Tipps Leute !

Gruß

Antworten