Zeilen in Tabelle durchstreichen

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Zeilen in Tabelle durchstreichen

von esdd » Di 12. Nov 2013, 13:49

Alternative ohne Drehung der Spaltenüberschriften:

\documentclass{scrartcl}
\usepackage{amsmath}
\usepackage{tikz} 
\usetikzlibrary{matrix,fit} 

\tikzset{streichen/.style={red,very thick}} 

\newcommand\zeilenstreichen[2][m]{% 
   \foreach \zeile in {#2}{
     \draw[streichen](#1-\zeile-2-|#1-1-2.west)--(#1-\zeile-1-|#1.east);} 
} 

\newcommand\spaltenstreichen[2][m]{% 
   \foreach \spalte in {#2}{ 
     \draw[streichen](#1-2-\spalte.north)--(#1-1-\spalte|-#1.south);} 
} 

\newcommand\zellenstreichen[2][m]{% 
   \foreach \zelle in {#2}{
     \draw[streichen]([yshift=0.8ex]#1-\zelle.base west)--([yshift=0.8ex]#1-\zelle.base east);} 
} 

\newcommand\klammern[1][m]{%
   \node[left delimiter=(,right delimiter=),fit=(#1-1-2.south west) (#1.south east),inner sep=0pt,align=none]{};
}

\begin{document} 
$B=$ 
\begin{tikzpicture}[baseline=-1em] 
   \matrix(m)[matrix of math nodes, column 1/.style={anchor=base west},inner sep=0pt,nodes={inner sep=0.3333em}]{
     &[5mm]\text{Aachen}&\text{Berlin}&\text{Hamburg}&\text{Paderborn}&\text{Dortmund}&\text{Frankfurt}\\ 
     \text{Aachen}&\text{X} & 6 & 0^2 & 6 & 2 & 12 \\
     \text{Berlin}&4 & \text{X} & 6 & 0^3 & 10 & 3 \\ 
     \text{Hamburg}&0^2 & 8 & \text{X} & 2 & 0^2 & 8 \\
     \text{Paderborn}&4 & 0^3 & 0^0 & \text{X} & 4 & 0^3 \\
     \text{Dortmund}&2 & 12 & 0^2 & 6 & \text{X} & 9 \\ 
     \text{Frankfurt}&10 & 3 & 6 & 0^3 & 7 & \text{X} \\}; 
   \klammern
   \zeilenstreichen{2,4} 
   \spaltenstreichen{2,4} 
   \zellenstreichen{1-2,1-4} 
\end{tikzpicture} 
\end{document}
Gruß
Elke

von Totto89 » Mo 11. Nov 2013, 09:08

Leider hätte ich es am liebsten wie eine Bordermatrix.

Aber das ist nicht so schlimm.

Vielen Dank für deine schnelle Hilfe

Gruß
Totto

von esdd » So 10. Nov 2013, 21:46

Wenn die Spaltenbeschriftung gedreht sein kann, könnte man das so lösen:
\documentclass{scrartcl} 
\usepackage{amsmath}
\usepackage{tikz} 
\usetikzlibrary{matrix}

\tikzset{streichen/.style={red,very thick}} 

\newcommand\zeilenstreichen[2][m]{% 
   \foreach \zeile in {#2}{ 
   \draw[streichen](#1-\zeile-1-|#1.west)--(#1-\zeile-1-|#1.east);} 
} 

\newcommand\spaltenstreichen[2][m]{% 
   \foreach \spalte in {#2}{ 
   \draw[streichen](#1-1-\spalte|-#1.north)--(#1-1-\spalte|-#1.south);} 
} 

\newcommand\zellenstreichen[2][m]{% 
   \foreach \zelle in {#2}{\draw[streichen]([yshift=0.8ex]#1-\zelle.base west)--([yshift=0.8ex]#1-\zelle.base east);} 
} 

\newcommand\beschriftung[3][m]{%
   \foreach[count=\n] \stadt in {#2}{
    \node[anchor=base east,text width=\widthof{#3},align=left,xshift=-2mm] at (#1-\n-1.base-|#1.west){\stadt};
    \node[align=left,anchor=west,rotate=90] at (#1-1-\n.north|-#1.north){\stadt};}
}

\begin{document} 
$B=$ 
\begin{tikzpicture}[baseline] 
    \matrix(m)[matrix of math nodes, left delimiter=(,right delimiter=)]{%  
      \text{X} & 6 & 0^2 & 6 & 2 & 12 \\ 
      4 & \text{X} & 6 & 0^3 & 10 & 3 \\ 
      0^2 & 8 & \text{X} & 2 & 0^2 & 8 \\ 
      4 & 0^3 & 0^0 & \text{X} & 4 & 0^3 \\ 
      2 & 12 & 0^2 & 6 & \text{X} & 9 \\ 
      10 & 3 & 6 & 0^3 & 7 & \text{X} \\ }; 
    \zeilenstreichen{2,4} 
    \spaltenstreichen{2,4} 
    \zellenstreichen{1-3,1-5}
    \beschriftung{Aachen,Berlin,Hamburg,Paderborn,Dortmund,Frankfurt}{Paderborn}
\end{tikzpicture}
\end{document}
Gruß
Elke

von Totto89 » So 10. Nov 2013, 18:21

Danke das klappt schon einmal.
Eine letzte Frage habe ich noch. Wie kann ich die Städte außerhalb der Matrix bekommen, so dass innerhalb der Matrix nur noch meine Zahlen stehen.

Vielen Dank


Gruß
Totto

von esdd » So 10. Nov 2013, 16:26

In der Matrix habe ich auf den Mathemodus verzichtet, da die ganzen Städtenamen ja keine Variablen sind.

Nimm die Option matrix of math nodes und verwende für die Städtenamen den \text{} Befehl aus amsmath:
...
\usepackage{amsmath}
...
$B=$ 
\begin{tikzpicture}[baseline] 
   \matrix(m)[matrix of math nodes, left delimiter=(,right delimiter=),column 1/.style={anchor=base west}]{% 
    &\text{Aachen}& \text{Berlin}& \text{Hamburg}& \text{Paderborn}&\text{Dortmund}&\text{Frankfurt}\\
    \text{Aachen} & X  & 6 & 0^2 & 6 & 2 & 12 \\ 
    \text{Berlin} & 4 & X & 6 & 0^3 & 10 & 3 \\ 
    \text{Hamburg} & 0^2 & 8 & X & 2 & 0^2 & 8 \\ 
    \text{Paderborn} & 4 & 0^3 & 0^0 & X & 4 & 0^3 \\ 
    \text{Dortmund} & 2 & 12 & 0^2 & 6 & X & 9 \\ 
    \text{Frankfurt} & 10 & 3 & 6 & 0^3 & 7 &X \\ }; 
   \zeilenstreichen{2,4} 
   \spaltenstreichen{2,4} 
   \zellenstreichen{1-2,1-4} 
\end{tikzpicture} 
Gruß
Elke

von Totto89 » So 10. Nov 2013, 15:55

Vielen Dank,

aber wie kann ich meine "0" wieder mit Hochzahlen ergänzen? Immer wenn ich 0^2 setze verschwindet diese aus der Matrix.

Hast mir sehr geholfen

von esdd » So 10. Nov 2013, 12:05

Hier ist ein Vorschlag mit tikz:
\documentclass{scrartcl}

\usepackage{tikz}
\usetikzlibrary{matrix}

\newcommand\zeilenstreichen[2][m]{%
  \foreach \zeile in {#2}{
  \draw[streichen](#1-\zeile-1-|#1.west)--(#1-\zeile-1-|#1.east);}
}

\newcommand\spaltenstreichen[2][m]{%
  \foreach \spalte in {#2}{
  %% komplette Spalte:
  % \draw[streichen](#1-1-\spalte|-#1.north)--(#1-1-\spalte|-#1.south);}
  %% oder Spalte ab 2.Zeile:
  \draw[streichen](#1-2-\spalte.north)--(#1-1-\spalte|-#1.south);}
}

\newcommand\zellenstreichen[2][m]{%
  \foreach \zelle in {#2}{\draw[streichen](#1-\zelle.west)--(#1-\zelle.east);}
}

\tikzset{streichen/.style={red,very thick}}

\begin{document}
$B=$
\begin{tikzpicture}[baseline]
  \matrix(m)[matrix of nodes, left delimiter=(,right delimiter=),column 1/.style={anchor=base west}]{%
    &Aachen&Berlin&Hamburg&Paderborn&Dortmund&Frankfurt\\
    Aachen&X&12&4&10&10&19\\
    Berlin&12&X&14&8&22&14\\
    Hamburg&4&14&X&6&8&15\\
    Paderborn&10&8&6&X&14&9\\
    Dortmund&10&22&8&14&X&20\\
    Frankfurt&19&14&15&9&20&X\\};
  \zeilenstreichen{2,4}
  \spaltenstreichen{2,4}
  \zellenstreichen{1-2,1-4}
\end{tikzpicture}
\end{document}
Gruß
Elke

von Totto89 » Sa 9. Nov 2013, 15:12

Ich stehe vor einem ähnlichen Problem. Wie kann ich in meiner Matrix Einträge bzw. Zeile sowie Spalten streichen


 
$B =$
$
\bordermatrix{
  & Aachen	& Berlin   & Hamburg   & Paderborn & Dortmund & Frankfurt   \cr
Aachen & X  & 12 & 4 & 10 & 10 & 19 \cr
Berlin & 12 & X & 14 & 8 & 22 & 14 \cr
Hamburg & 4 & 14 & X & 6 & 8 & 15 \cr
Paderborn & 10 & 8 & 6 & X & 14 & 9 \cr
Dortmund & 10 & 22 & 8 & 14 & X & 20 \cr
Frankfurt & 19 & 14 & 15 & 9 & 20 &X  \cr 
}
\\

$


$B_r=$
$
\bordermatrix{
  & Aachen	& Berlin   & Hamburg   & Paderborn & Dortmund & Frankfurt   \cr
Aachen & X  & 6 & 0 & 6 & 2 & 12 \cr
Berlin & 4 & X & 6 & 0 & 10 & 3 \cr
Hamburg & 0 & 8 & X & 2 & 0 & 8 \cr
Paderborn & 4 & 0 & 0 & X & 4 & 0 \cr
Dortmund & 2 & 12 & 0 & 6 & X & 9 \cr
Frankfurt & 10 & 3 & 6 & 0 & 7 &X  \cr
}
\\

$  

$B_r=$
$
\hline
\bordermatrix{
  & Aachen	& Berlin   & Hamburg   & Paderborn & Dortmund & Frankfurt   \cr
Aachen & X  & 6 & 0^2 & 6 & 2 & 12 \cr
\tikzmark{z1l} Berlin & 4 & X & 6 & 0^3 & 10 & 3 \cr\tikzmark{z1r}\\
Hamburg & 0^2 & 8 & X & 2 & 0^2 & 8 \cr
Paderborn & 4 & 0^3 & 0^0 & X & 4 & 0^3 \cr
Dortmund & 2 & 12 & 0^2 & 6 & X & 9 \cr
Frankfurt & 10 & 3 & 6 & 0^3 & 7 &X  \cr
}
$  

von iceweasel » So 3. Nov 2013, 11:43

Super, das ist genau das, was ich wollte! Funktioniert perfekt, vielen Dank!

von esdd » Mi 30. Okt 2013, 16:35

Wenn die Tabelle wie in deinem Beispiel nicht gleitet, kannst du tikz mit der Bibliothek tikzmark nutzen. Der Vorschlag braucht immer zwei Durchläufe bis die Striche an der richtigen Stelle sind:
\documentclass{scrartcl} 

\usepackage{tikz}
\usetikzlibrary{tikzmark}

\newcommand\zeilestreichen[3][]{%
  \tikz[remember picture,overlay]\draw[thick,#1]([yshift=0.8ex]pic cs:#2)--([yshift=0.8ex]pic cs:#3);}

\begin{document} 
\section*{A 3: Aussagenlogik} 
\subsection*{i)  $A1 \vee A2$} 

\begin{tabular}{@{}cc|c||cc@{}}
                &$A1$  &  $A2$  & $A1 \vee A2 $ \\ 
  \hline 
  \tikzmark{z1l}&0 & 0 & 0&\tikzmark{z1r}\\ 
                &0 & 1 & 1\\ 
                &1 & 0 & 1\\ 
                &1 & 1 & 1\\ 
\end{tabular}
\zeilestreichen[red]{z1l}{z1r}
\end{document}
Alternativ kann man die Tabellen auch gleich als Matrix mit tikz erstellen. Das braucht dann nur einen Durchlauf:
\documentclass{scrartcl} 

\usepackage{tikz}
\usetikzlibrary{matrix}

% Syntax \tabellenlinien[<name der matrix>]{<anzahl der „variablen“ = anzahl der senkrechten linien>}
\newcommand\tabellenlinien[2][m]{%
  \draw[double] (#1.north-|#1-1-#2.east)--(#1.south-|#1-1-#2.east);
  \draw (#1.west|-#1-1-1.south)--(#1-1-1.south-|#1.east);
  \foreach [evaluate=\i as \spalte using int(\i-1)] \i in {2,...,#2}{
  \draw (#1.north-|#1-1-\spalte.east)--(#1-1-\spalte.east|-#1.south);}
  }

% Syntax \zeilenstreichen[<name der matrix>][<kommaseparierte liste der zu streichenden zeilen]
% Die Kopfzeile ist die 0.Zeile
\newcommand\zeilenstreichen[2][m]{%
  \foreach [evaluate=\i as \zeile using int(\i+1)] \i in {#2}{
  \draw[streichen](#1-\zeile-1-|#1.west)--(#1-\zeile-1-|#1.east);}}

% Einstellungen für die Streichung, z.B. thick, red
\tikzset{streichen/.style={red}}

\begin{document} 

\begin{tikzpicture}
\matrix(m)[matrix of math nodes]{
  A1&A2 &A1 \wedge A2\\ 
  0 & 0 & 0\\ 
  0 & 1 & 0\\ 
  1 & 0 & 0\\ 
  1 & 1 & 1\\};
  \tabellenlinien{2}
  \zeilenstreichen{1,2,3}
\end{tikzpicture}
\hfill
\begin{tikzpicture}
\matrix(m)[matrix of math nodes]{
  A1&A2& A1 \vee A2\\ 
  0 & 0 & 0\\ 
  0 & 1 & 1\\ 
  1 & 0 & 1\\ 
  1 & 1 & 1\\};
  \tabellenlinien{2}
  \zeilenstreichen{1}
\end{tikzpicture}

\end{document}
Gruß
Elke

Nach oben