Bereiche von Matrizen farblich füllen - letzter Versuch

Formelsatz für Mathematik, Naturwissenschaften und Technik


Martin_DD
Forum-Newbie
Forum-Newbie
Beiträge: 7
Registriert: Mi 20. Jan 2010, 13:17

Bereiche von Matrizen farblich füllen - letzter Versuch

Beitrag von Martin_DD »

Hallo Leute,

sorry für die vielen Threads, aber scheinbar wollte das Forum mein Thema als Gast nicht annehmen. Da mir das Forum eh gefällt hab ich mich jetzt mal angemeldet und hoffe es klappt jetzt.

Ich hab mal wieder ein kleines Problem. Und zwar möchte ich den Einbau einer kleinen Matrix in eine größere Matrix verdeutlichen. Dabei wird die kleine Matrix nicht einfach so wie sie ist genommen und genauso eingebaut, sondern vorher noch ein bisschen, nach regelmäßigem muster zerpflückt und an verschiedenen Stellen der großen Matrix eingebaut.

Ich würde die unterschiedlichen Bereiche nun gern farblich trennen, also quasi die Matrix nicht mit Zahlen füllen, sondern nur mit einer Hintergrundfarbe. Quasi so ähnlich wie hier

http://dspace.upv.es/xmlui/bitstream/ha ... sequence=1

auf Seite 76 und vor allem 78.
Hat einer von euch eine Ahnung, ob es da ein Paket gibt, was das kann ? Ich war leider bei der Suche nicht erfolgreich.
Möchte mich ungern mit PSTricks rumschlagen, aber bin auch über Tips in die Richtung dankbar.

Viele Grüße
Martin

Benutzeravatar
KarlMarx
Forum-Century
Forum-Century
Beiträge: 125
Registriert: Do 29. Okt 2009, 02:36
Wohnort: Berlin

Beitrag von KarlMarx »

Moin Martin!

Was versuchst Du hier eigentlich? Drei Posts zum selben Thema in zwei Tagen und alle drei sind leer ...
Wenn Du nichts schreibst, kann Dir auch keiner helfen.

Gruß, Marx.
[1] goLaTeX-Knigge
[2] Minimalbeispiel

Acer TM5730, Core2Duo P8400, WinXP SP3, MiKTeX 2.8, TeXnicCenter 1.0 & 2.a3

--
Aut viam inveniam aut faciam.

Martin_DD
Forum-Newbie
Forum-Newbie
Beiträge: 7
Registriert: Mi 20. Jan 2010, 13:17

Beitrag von Martin_DD »

hey, ich habe ja versucht was zu schreiben, aber irgendwie werden meine posts nicht angezeigt. keine ahnung wieso.

mal sehen obs jetzt klappt.

Martin_DD
Forum-Newbie
Forum-Newbie
Beiträge: 7
Registriert: Mi 20. Jan 2010, 13:17

Beitrag von Martin_DD »

ah, na also, geht doch. nun gut, dann kann ich ja jetzt zu meinem problem kommen :D

Seit gestern hat sich mein Problem ein bisschen geändert, daher passt der Thread-Titel nicht mehr so ganz.

Ich möchte gerne eine Matrix schreiben, deren Zellen unterschiedlich farblich gefüllt sind und habe das auch mit einer array-Umgebung hinbekommen, so wie es in der PDF im Anhang oben zu sehen ist.
So weit so gut. Das spezielle dabei ist, dass ich keine Zeilen- und Spaltenabstände zwischen den Zellen haben will. Die gefüllten Bereiche sollen quasi direkt aneinander grenzen.

Jetzt hätt ichs für meine Arbeit ganz gern, dass die Zeilen links und überhalb der Matrix beschriftet sind. Dafür habe ich das Makro bordermatrix aus der mathmode.pdf gefunden. Die Zellen lassen sich auch hier problemlos farblich füllen.

Mein Problem ist jetzt der bordermatrix beizubringen, dass ich keine Zeilen- und Spaltenabstände haben möchte, damit die farblichen Bereiche quasi aneinanderkleben. Leider kenne ich mich mit der Makro-Prgrammierung von TeX nicht aus und weiß nicht an welchen Parametern des bordermatrix-Makro ich drehen muss um das zu erreichen.

Kann mir einer von euch helfen ?

Viele Grüße Martin.

Hier mein Code mitsamt bordermatrix-Makro.
\documentclass{scrartcl}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Packages

\usepackage{amsmath}
\usepackage{color}
\usepackage{mathdots}
\usepackage{graphicx}
\usepackage{listings}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Befehle
%
% Definition von bordermatrix zur Beschriftung oderhalb und links neben einer matrix
% aus mathmode.pdf von Herbert Vo�. Abschnitt 5 Matrizen

\makeatletter
\newif\if@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\else\kern -\ht\@ne\fi%
			\unvbox\z@\kern-\if@borderstar2\fi\baselineskip}%
			\if@borderstar\kern-2\@tempdima\kern2\p@\else\,\fi\right
				\@secondoftwo#1 $%
	}\null \;\vbox{\kern\ht\@ne\box\tw@}%
\endgroup
}
\makeatother

% Farben

\definecolor{vdg}{gray}{0.4}										% definiert die Farbe vdg - verydarkgray
\definecolor{dg}{gray}{0.5}											% definiert die Farbe dg - darkgray
\definecolor{mdg}{gray}{0.6}										% definiert die Farbe mdg - mediumdarkgray
\definecolor{mlg}{gray}{0.7}										% definiert die Farbe mlg - mediumlightgray
\definecolor{lg}{gray}{0.8}											% definiert die Farbe lg - ligthgray
\definecolor{vlg}{gray}{0.9}										% definiert die Farbe vlg - veryligthgray
\newcommand{\cfc}[2]{\colorbox{#1}{\hspace{.5pt}#2\hspace{.5pt}}}	% definiert den Befehl cfc - color filled cell fuer das Fuellen einer Arrayzelle
																	% Input:	#1: Farbe	#2: Inhalt der Zelle

\begin{document}

\setcounter{MaxMatrixCols}{13}

array-Variante

{\renewcommand{\arraystretch}{0.58}
\begin{equation*}
\left[\begin{array}{c@{\hspace{-.5pt}}c@{\hspace{-.5pt}}c@{\hspace{-.5pt}}c@{\hspace{-.5pt}}c@{\hspace{-.5pt}}c@{\hspace{-.5pt}}c@{\hspace{-.5pt}}c@{\hspace{-.5pt}}c}
% 1. Zeile
\cfc{vlg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{vlg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{vlg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{lg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{lg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{lg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{mlg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{mlg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{mlg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	\\
% 2.Zeile
\mbox{\scalebox{0.7}{$\vdots$}}					&	\cfc{vlg}{$\mathbf{K}_{11}^{e,g}$}				&	\cfc{vlg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{lg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{lg}{$\mathbf{K}_{12}^{e,g}$}		&	\cfc{lg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{mlg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{mlg}{$\mathbf{K}_{13}^{e,g}$}	&	\cfc{mlg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	\\
% 3. Zeile
\mbox{\scalebox{0.7}{$\vdots$}}					&	\mbox{\scalebox{0.7}{$\vdots$}}					&	\cfc{vlg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{lg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{lg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{lg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{mlg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{mlg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{mlg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	\\
% 4.-6.Zeile
 & & &	\cfc{mdg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{mdg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{mdg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{dg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{dg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{dg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	\\
 & & &	\mbox{\scalebox{0.7}{$\iddots$}}				&	\cfc{mdg}{$\mathbf{K}_{22}^{e,g}$}				&	\cfc{mdg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{dg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{dg}{$\mathbf{K}_{23}^{e,g}$}	&	\cfc{dg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	\\
 & & & 													&	\mbox{\scalebox{0.7}{$\iddots$}}				&	\cfc{mdg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{dg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{dg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{dg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	\\
% 7.-9.Zeile
 &	& & & &	& \cfc{vdg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{vdg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{vdg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	\\
 &	& & & &	&										&	\cfc{vdg}{$\mathbf{K}_{33}^{e,g}$}			&	\cfc{vdg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	\\
 &	& & & &	&										&											&	\cfc{vdg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}
\end{array}\right]
\end{equation*}}

bordermatrix-Variante


$$
% \begin{equation*}
\bordermatrix[{[]}]{%
			& u_1 	& \mbox{\scalebox{0.7}{$\ldots$}} &  \theta_{z1}	& u_2 	& \mbox{\scalebox{0.7}{$\ldots$}} &  \theta_{z2}	&	u_3 	& \mbox{\scalebox{0.7}{$\ldots$}} &  \theta_{z3}	\cr
u_1			& \cfc{vlg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{vlg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{vlg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{lg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{lg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{lg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{mlg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{mlg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{mlg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}\cr
\mbox{\scalebox{0.7}{$\vdots$}}	& 	& 	\cfc{vlg}{$\mathbf{K}_{11}^{e,g}$}		&	\cfc{vlg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{lg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{lg}{$\mathbf{K}_{12}^{e,g}$}		&	\cfc{lg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{mlg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{mlg}{$\mathbf{K}_{13}^{e,g}$}		&	\cfc{mlg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}\cr
\theta_{z1}	& 	& 	&	\cfc{vlg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{lg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{lg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{lg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{mlg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{mlg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{mlg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	\cr
u_2			& 	& 	&	& 	\cfc{mdg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{mdg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{mdg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{dg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{dg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{dg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}\cr
\mbox{\scalebox{0.7}{$\vdots$}}	& 	& 	&	& 	&	\cfc{mdg}{$\mathbf{K}_{22}^{e,g}$}		&	\cfc{mdg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{dg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{dg}{$\mathbf{K}_{11}^{e,g}$}	&	\cfc{dg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}\cr
\theta_{z2}	& 	& 	&	& 	&	& \cfc{mdg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{dg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{dg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{dg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}\cr
u_3			& 	& 	&	& 	&	& 	&	\cfc{vdg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{vdg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}	&	\cfc{vdg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}\cr
\mbox{\scalebox{0.7}{$\vdots$}}	& 	& 	&	& 	&	& 	&	&	\cfc{vdg}{$\mathbf{K}_{33}^{e,g}$}		&	\cfc{vdg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}\cr
\theta_{z3}	& 	& 	&	& 	&	& 	&	&										&	\cfc{vdg}{\phantom{$\mathbf{K}_{11}^{e,g}$}}
}
% \end{equation*}
$$

\end{document}
Dateianhänge
bordermatrix_color.pdf
(87.01 KiB) 799-mal heruntergeladen
bordermatrix_color.tex
(8.95 KiB) 763-mal heruntergeladen

Martin_DD
Forum-Newbie
Forum-Newbie
Beiträge: 7
Registriert: Mi 20. Jan 2010, 13:17

Beitrag von Martin_DD »

ok, also die erste Hälfte des Problems habe ich hinbekommen. Die Spaltenabstände sind jetzt weg, indem ich in der Zeile von ialign nach dem && das \quad rausgenommen habe.

Bleibt nun noch der Zeilenabstand, daran beiß ich mir die Zähne aus. Eine neue Zeile wird ja mittels des carriage return (\def\cr{...}) vor dem ialign definiert, denk ich zumindest. Rumprobieren an den Parametern hat leider nichts geholfen.

Weiß einer von euch Rat? Kann man im Makro einen negativen Abstand vorgeben ?

Viele Grüße
Martin

Martin_DD
Forum-Newbie
Forum-Newbie
Beiträge: 7
Registriert: Mi 20. Jan 2010, 13:17

Beitrag von Martin_DD »

wie einfach es doch sein kann.

einfach nach dem \def\cr ein eine neue Zeile ein \lineskip=0pt :D.
Dateianhänge
bordermatrix_color.tex
(8.99 KiB) 818-mal heruntergeladen
bordermatrix_color.pdf
(41.95 KiB) 740-mal heruntergeladen

Benutzeravatar
KarlMarx
Forum-Century
Forum-Century
Beiträge: 125
Registriert: Do 29. Okt 2009, 02:36
Wohnort: Berlin

Beitrag von KarlMarx »

Na wunderbar, geht doch! :o)

Da der Code ganz schön wüst aussieht und Du das Problem ja anscheinend gelöst hast, habe ich gerade keine Lust, mich da durch zu wurschteln. Daher weiß ich natürlich nicht, was Du da genau machst aber ich frage mich, warum Du einen Zeilenwechsel nicht mit
\\
am Ende der zu beendenden Zeile vornimmst - ist doch bedeutend kürzer als (\def\cr{...}). Meines Wissens funktionieren die zwei Backslashs in allen tables, tabulars, arrays und eqnarrays.

Kleine Anmerkung für das Foren-Team:
Bei meinen eigenen Beispielen habe ich es schon gemerkt und so ein Code wie der hier präsentierte bestätigen mich, daß die Code-Funktion des Forums noch nicht so ausgreift ist - wer soll den hier oben stehenden Code denn lesen können? Aber vielleicht verfasse ich besser einen eigenen Thread zu diesem Thema ...


Gruß, Marx.
[1] goLaTeX-Knigge
[2] Minimalbeispiel

Acer TM5730, Core2Duo P8400, WinXP SP3, MiKTeX 2.8, TeXnicCenter 1.0 & 2.a3

--
Aut viam inveniam aut faciam.

Antworten