Wie kann ich bei einer pgfplotstable um bestimmte Spalten Klammern, d.h. um die erste und die vorletzte Spalte, ergänzen?

Hinweis: Die Matrix ist willkürlich gewählt, tatsächlich kann sie beliebige Größe haben.

alt text

Öffne in Overleaf
Code, hier editierbar zum Übersetzen:
\documentclass[varwidth, margin=5mm]{standalone}
\usepackage{pgfplotstable, amsmath}
\pgfplotstableset{header=false,
every head row/.style={output empty row},%
every last column/.style={string type, column type=l},% Annotationen
fixed, dec sep align% alle anderen Spalten
}
\begin{document}
IST: $M =
\pgfplotstabletypeset[]{
-5 -1 abc
66 1 d
7 2 e
}$ \\
SOLL:
$M = \left\lgroup\begin{array}{r r }
-5 & 1 \\
66 & 1 \\
7 & 2 \\
\end{array}\right\rgroup \begin{array}{l}
abc \\ d \\ e \\
\end{array}
$
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

gefragt 05 Okt '18, 16:37

cis's gravatar image

cis
9.6k104461491
Akzeptiert-Rate: 29%

bearbeitet 06 Okt '18, 06:46

Puhh, man denkt: auf den 1. Blick trivial. Grobe Idee: Vor erster und vorletzter Spalte \tikz[] Koordinaten platzieren und die dann mittels decoration mit Klammern verbinden. Hab es nicht hinbekommen. Macht auch diverse Zeilen Zusatzcode.

Ich hoffe sehr, dass es einfacher geht.

(06 Okt '18, 07:42) cis

Also ich bin mir eh nicht so sicher, ob es die beste Idee ist, TikZ ins Spiel zu bringen. Die Positionen rund um die Zellen gibt es bestimmt als pgfkeys, die ich nicht kenne...

(07 Okt '18, 13:07) cis

Also falls hier jmd. eine Idee hat, wäre das sehr gut. Evtl. ohne TikZ, oldschool LaTeX. Die Lösungen, die ich gepostet habe, sind nur mögliche Ergebnisse, sie gefallen mir alle nicht.

(08 Okt '18, 15:46) cis

Ich habe eine Idee: \lgroup bzw. \rgroup erzeugt an sich erstmal so einen Klammernfutzel, genauer: eine abgerundete Ecke einer eckigen Klammer (erst \left\lgroup erstellt eine ganze Klammer).

Damit sollte sich evtl. eine komplette Klammer zeichnen lassen. Muss ich mal weiter verfolgen.

(08 Okt '18, 17:44) cis

Hab etwas hinbekommen. Eine mögliche Lösung, aber (noch) nicht 100% optimal.

1) Die Klammern werden ganz normal um die pgfplotstable gesetzt, wobei vor der schließenden Klammer \hspace{-1.25em} steht.

2) Mit

Öffne in Overleaf
Code, hier editierbar zum Übersetzen:
% Annotationen:
every last column/.style={string type, postproc cell content/.style={
@cell content={\Annotation{##1}}
}},
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

kommen die Zellen der letzten Spalte in TikZ-Noden

Öffne in Overleaf
Code, hier editierbar zum Übersetzen:
\newcommand\Annotation[1]{%
\tikz[red, baseline=-0.3em, overlay, font=\footnotesize\ttfamily
%inner sep=0pt, outer sep=0pt % kein Effekt
]{\node[anchor=west, xshift=-3mm]{#1}; }%
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

die hinter die schließende Klammer geschoben werden.

alt text

Das ist natürlich eine ziemliche Anpassung nach Augenmaß, insbesondere die baseline, der xshift, der negative hspace. Also falls das jmd. eine bessere Idee hat, gern...

MWE:

alt text

Öffne in Overleaf
Code, hier editierbar zum Übersetzen:
\documentclass[margin=5mm]{standalone}
\usepackage{pgfplotstable, amsmath}
\pgfplotsset{compat=1.13}
\pgfplotstableset{header=false,
every head row/.style={output empty row},%
fixed, dec sep align,% alle anderen Spalten
1000 sep={\,}, % kleiner Abstand
% Annotationen:
every last column/.style={string type, postproc cell content/.style={
@cell content={\Annotation{##1}}
}},
}
\newcommand\Annotation[1]{%
\tikz[red, baseline=-0.3em, overlay, font=\footnotesize\ttfamily
%inner sep=0pt, outer sep=0pt % kein Effekt
]{\node[anchor=west, xshift=-3mm]{#1}; }%
}
\begin{document}
$\left\lgroup\pgfplotstabletypeset[
]{
-1 2 300 4 abc
5000 -6 7 8 d
9 10 11 12 {}
13 14 15 16000 f
}\hspace{-1.25em}\right\rgroup$
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Permanenter link

beantwortet 06 Okt '18, 10:25

cis's gravatar image

cis
9.6k104461491
Akzeptiert-Rate: 29%

bearbeitet 08 Okt '18, 10:05

Eine andere mögliche Lösung, aber auch (noch) nicht 100% optimal.

alt text

Für das eigentliche Problem des Klammernzeichnens habe ich,

(rückbesinnend auf eine Lösung von @saputello [https://texwelt.de/wissen/fragen/20048/wie-stelle-ich-bei-tikz-abgerundete-eckige-klammern-als-dekoration-dar/20050 ])

mit fit eine Klammer ergänzt.

Aber 100% glücklich bin ich immer noch nicht, da einige Anpassungen nach Augenmaß dabei sind und zwingend string type benötigt wird.

Dafür werden in der pgfplotstable

Öffne in Overleaf
Code, hier editierbar zum Übersetzen:
\pgfplotstabletypeset[string type,
header=false,
every head row/.style={output empty row},%
]{
{\tikzI v} 3
1 -1
2 $-1$
{\tikzII w} 4
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Koordinaten ergänzt ("\tikzI" ist jetzt hier zur Demonstration erstmal in der Tabelle gelassen; soll später schon mit "@cell content" aus der eigentlichen Tabelle verschwinden)

Öffne in Overleaf
Code, hier editierbar zum Übersetzen:
\def\tikzI{%
\tikz[] {%
\coordinate[] (Leer) at (0,0);% als Referenzkoordinate scheints benötigt
\coordinate[] (v) at (0,1.25em);%
%\node[anchor=south, yshift=1em] at (0,0) (v){\vphantom{9}};%
}}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Jedenfalls sieht das dann so aus (den roten Strich wegdenken):

alt text

Öffne in Overleaf
Code, hier editierbar zum Übersetzen:
\documentclass[border=5mm]{standalone}
\usepackage{pgfplotstable}
\usepackage{tikz}
\usetikzlibrary{matrix,fit} % matrix scheints benötigt
\tikzset{remember picture,
overlay,
%baseline=0,
inner sep=0pt, outer sep=0pt, % bringt minimal etwas
}
\begin{document}
\def\tikzI{%
\tikz[] {%
\coordinate[] (Leer) at (0,0);% als Referenzkoordinate scheints benötigt
\coordinate[] (v) at (0,1.25em);%
%\node[anchor=south, yshift=1em] at (0,0) (v){\vphantom{9}};%
}}
\def\tikzII{%
\tikz[] {\coordinate[] (Leer) at (0,0);% als Referenzkoordinate scheints benötigt
\coordinate[] (w) at (0,-0.75em);%
}}
\pgfplotstabletypeset[string type,
header=false,
every head row/.style={output empty row},%
]{
{\tikzI v} 3
1 -1
2 $-1$
{\tikzII w} 4
}
\tikz[overlay]{ % will unbedingt hier nochmal overlay
% Klammer zeichnen mit fit
\node[fit=(v.north west) (w.south west), left delimiter={\lgroup}]{};
% Test:
\draw[] (v) circle(1pt);
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Permanenter link

beantwortet 07 Okt '18, 11:07

cis's gravatar image

cis
9.6k104461491
Akzeptiert-Rate: 29%

bearbeitet 08 Okt '18, 10:06

Deine Antwort
[Vorschau ausblenden]

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

Frage-Themen:

×39

gestellte Frage: 05 Okt '18, 16:37

Frage wurde gesehen: 5,640 Mal

zuletzt geändert: 08 Okt '18, 17:44