Ich stehe, wie manch anderer auch, vor einem Problem, welches ich gerne gelöst haben hätte, aber meine eigene Gehirngrütze ist dazu nicht mehr in der Lage.

Ich habe eine Tabelle, in der ich eine Spalte durchstreichen möchte. In einem anderen Beispiel habe ich gesehen, wie dies relativ einfach mit Zeilen funktioniert. Allerdings nur solange die Zeilen einspaltig sind. Dieses Problem tritt bei Spalten deutlich häufiger auf, da im Beispiel der xshift hardcode ist. Meine Idee war es nun, die Mitte der zu streichenden Spalte zu ermitteln, indem ich zwei tikzmarks setzte. An dieser Stelle setzt mein Problem an, da ich leider nicht die Syntax drauf habe, mit der ich diesen Schritt durchführen kann.

Im folgenden nun mein Minimalbeispiel:

Öffne in Overleaf
 \documentclass{article}
 \usepackage{tikz}
 \usetikzlibrary{tikzmark}

%Zeilen Streichen
\newcommand\zeilestreichen[3][]{%
    \tikz[remember picture,overlay]\draw[thick,#1]([yshift=0.8ex]pic cs:#2)--([yshift=0.8ex]pic cs:#3);}
%Spalten Streichen
\newcommand\spaltestreichen[3][]{%
    \tikz[remember picture,overlay]a=pic cs:{(#2+#3)/2}, b=pic cs:{(#4+#5)/2}]\draw[ultra thick,#1](a)--(b);}
\begin{document}

\begin{tabular}{@{}cc|c||cc@{}}
    &$A1$  &  $A2$  & $A1 \vee A2 $ \\
    \hline
    &\tikzmark{z1l}0& 0 & 0&\tikzmark{z1r} \\
    &0 & 1 & 1\\
    &12 & 0 & 1\\
    &12333333& 1 & 1\\
\end{tabular}
\zeilestreichen[red]{z1l}{z1r}

\begin{tabular}{@{}cc|c||cc@{}}
    &$A1$  &  $A2$  & $A1 \vee A2 $ \\
    \hline
    &\tikzmark{z1l}0\tikzmark{z1r} & 0 & 0&\\
    &0 & 1 & 1\\
    &12 & 0 & 1\\
    &\tikzmark{z2l}12333333\tikzmark{z2r}& 1 & 1\\
\end{tabular}
\spaltestreichen[red]{z1l}{z1r}{z2l}{z2r}
\end{document}

Entsprechend meines Unwissens habe ich die zuvor erwähnten Spaltenstreichung zwar ausprobiert. Allerdings ist der Code auf diese Weise nicht ausführbar.

gefragt 02 Mai '17, 21:06

MaKaNu's gravatar image

MaKaNu
3112
Akzeptiert-Rate: 0%

bearbeitet 15 Mai '17, 11:17

cgnieder's gravatar image

cgnieder
22.1k253463

Willkommen auf TeXWelt! Danke auch für das Minimalbeispiel. Ich habe mir erlaubt ein paar Tippfehler zu beseitigen, die Formatierung des Beispiels minimal zu verbessern und entsprechend der Tipps zum Verfassen, die bei der Eingabe oder beim Bearbeiten des Beitrags im blauen Kasten rechts angezeigt werden, alle bei uns überflüssigen Höflichkeiten zu entfernen.

(03 Mai '17, 07:48) saputello
2

Ach übrigens: MatrixMatrize

(07 Mai '17, 11:25) Henri

Da sind einige Sachen kaputt in deinem \spaltestreichen. Es nimmt zum Beispiel 5 statt 3 Parameter aber auch dann ist das innen drin kein gültiger TikZ Code. Außerdem müssen für Overlay alle Nodes unterschiedliche Namen haben weil sie sich sonst gegenseitig überschreiben.

Öffne in Overleaf
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc,tikzmark}

% Zeilen Streichen
\newcommand\zeilestreichen[3][]{%
  \tikz[remember picture,overlay]\draw[thick,#1]([yshift=0.8ex]pic cs:#2)--([yshift=0.8ex]pic cs:#3);}
% Spalten Streichen
\newcommand\spaltestreichen[5][]{%
  \tikz[remember picture,overlay]\draw[thick,#1] ([yshift=1.6ex]$(pic cs:#2)!.5!(pic cs:#3)$) -- ($(pic cs:#4)!.5!(pic cs:#5)$);}
\begin{document}

\begin{tabular}{@{}c@{}c|c||c@{}c@{}}
                 & $A1$     & $A2$ & $A1 \vee A2 $ &                \\
  \hline
  \tikzmark{z1l} & 0        & 0    & 0             & \tikzmark{z1r} \\
                 & 0        & 1    & 1             &                \\
                 & 12       & 0    & 1             &                \\
                 & 12333333 & 1    & 1             &                \\
\end{tabular}
\zeilestreichen[red]{z1l}{z1r}

\begin{tabular}{@{}c|c||c@{}}
  $A1$                                 & $A2$ & $A1 \vee A2 $ \\
  \hline
  \tikzmark{x1l}0\tikzmark{x1r}        & 0    & 0             \\
  0                                    & 1    & 1             \\
  12                                   & 0    & 1             \\
  \tikzmark{x2l}12333333\tikzmark{x2r} & 1    & 1             \\
\end{tabular}
\spaltestreichen[red]{x1l}{x1r}{x2l}{x2r}
\end{document}

alt text

Einfacher geht das ganze direkt in TikZ mit \matrix.

Öffne in Overleaf
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}

\begin{tikzpicture}
  \matrix [matrix of nodes,nodes in empty cells,nodes={font=\strut,inner sep=2pt}] (m)
  {
    & $A1$     &  & $A2$ &  & $A1 \vee A2 $ & \\
    \hline
    & 0        &  & 0    &  & 0             & \\
    & 0        &  & 1    &  & 1             & \\
    & 12       &  & 0    &  & 1             & \\
    & 12333333 &  & 1    &  & 1             & \\
  };
  % Spaltentrenner
  \draw (m-1-3.north) -- (m-5-3.south);
  \draw[double] (m-1-5.north) -- (m-5-5.south);
  % Durchstreichen
  \draw[red] (m-2-1.west) -- (m-2-7.east);
  \draw[red] (m-2-2.north) -- (m-5-2.south);
\end{tikzpicture}

\end{document}

alt text

Permanenter link

beantwortet 03 Mai '17, 06:53

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

bearbeitet 03 Mai '17, 07:17

Danke für den hilfreichen Ansatz. Das mit den Nodes war mir bereits bewusst, da die Funktion, wie du bereits beschrieben hast, mehrere Fehleraufgewiesen hat, ist mir das nicht direkt aufgefallen.

(14 Mai '17, 16:53) MaKaNu
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×730
×58
×3

gestellte Frage: 02 Mai '17, 21:06

Frage wurde gesehen: 9,223 Mal

zuletzt geändert: 15 Mai '17, 11:17