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, 15:06

MaKaNu's gravatar image

MaKaNu
311
Akzeptiert: 0%

bearbeitet 15 Mai, 05:17

Clemens's gravatar image

Clemens
19.9k113360

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, 01:48) saputello
2

Ach übrigens: MatrixMatrize

(07 Mai, 05: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, 00:53

Henri's gravatar image

Henri
11.4k42232

bearbeitet 03 Mai, 01: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, 10:53) MaKaNu
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

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üge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×532
×35
×3

Frage gestellt: 02 Mai, 15:06

Frage wurde angeschaut: 684 Mal

Zuletzt aktualisiert: 15 Mai, 05:17