Tabelle mit Bildern - Elemente vertikal zentriern

Tabellen und Grafiken erstellen und anordnen


lukasen
Forum-Newbie
Forum-Newbie
Beiträge: 7
Registriert: Fr 11. Dez 2015, 19:20

Tabelle mit Bildern - Elemente vertikal zentriern

Beitrag von lukasen »

Hallo alle zusammen,

ich bin hier neu im Forum und habe auch schon gleich meine erste Frage und hoffe, dass mir diese auch jemand beantworten kann.

Ich habe eine lange Tabelle wie in der folgenden Art. Ich würde gerne alle Elemente vertikal zentrieren, sodass die Schrift der ersten Spalten mittig zentriert neben den mittig zentrierten circuitikz Zeichnungen steht. Kann mir jemand helfen?

Mit dem Befehl
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}
bin ich nicht zu einer Lösung gekommen.

Hier meine Tabelle:
\documentclass{scrartcl}

\usepackage{longtable}
\usepackage{tabularx}
\usepackage{multirow}
\usepackage[europeanresistors, europeanports, siunitx]{circuitikz}


\begin{document}


\begin{longtable}{c|c|c|c|c|c|l}
			$x_1$ & 0 & 0 & 1 & 1 & Bezeich- & \multirow{2}*{Schaltbild}\\
			$x_2$ & 0 & 1 & 0 & 1 & nung&\\\hline
			
			
			$y_{7}$ & 0 & 1 & 1 & 0 & XOR &
			\begin{circuitikz}
				\draw(0,0) node[nand port] (nand1) {}
				(2,0.5) node[nand port] (nand2) {}
				(2,-0.5) node[nand port] (nand3) {}
				(4,0) node[nand port] (nand4) {}
				(-1.76,0.775) node[circ] (){}
				(-1.76,-0.775) node[circ] (){}
				(nand1.out) node[circ] (){}
				%
				(-2,0.775) -| (nand1.in 1)
				(-2,-0.775) -| (nand1.in 2)
				(-2,0.775) -| (nand2.in 1)
				(-2,-0.775) -| (nand3.in 2)
				(nand1.out) |- (nand2.in 2)
				(nand1.out) |- (nand3.in 1)
				(nand2.out) -| (nand4.in 1)
				(nand3.out) -| (nand4.in 2)
				%
				(-2,0.775) node[left] () {$x_1$}
				(-2,-0.775) node[left] () {$x_2$}
				(nand4.out) node[right] () {$y_7$}
				%
			;\end{circuitikz}
			\\\hline
			$y_{8}$ & 0 & 1 & 1 & 1 & OR &
			\begin{circuitikz}
				\draw(1,0) node[nand port] (nand1) {}
				(1,1) node[nand port] (nand2) {}
				(3,0.5) node[nand port] (nand3) {}
				(-0.76,0) node[circ] (){}
				(-0.76,1) node[circ] (){}
				%
				(-1,0) -| (nand1.in 1)
				(-1,0) -| (nand1.in 2)
				(-1,1) -| (nand2.in 1)
				(-1,1) -| (nand2.in 2)
				%
				(nand1.out) |- (nand3.in 2)
				(nand2.out) |- (nand3.in 1)
				%
				(-1,0) node[left] () {$x_2$}
				(-1,1) node[left] () {$x_1$}
				(nand3.out) node[right] () {$y_8$}
				%
			;\end{circuitikz}
			\\\hline
			$y_{9}$ & 1 & 0 & 0 & 0 & NOR&
			\begin{circuitikz}
				\draw(1,0) node[nand port] (nand1) {}
				(1,1) node[nand port] (nand2) {}
				(3,0.5) node[nand port] (nand3) {}
				(5,0.5) node[nand port] (nand4) {}
				(-0.76,0) node[circ] (){}
				(-0.76,1) node[circ] (){}
				(nand3.out) node[circ] (){}				
				%
				(-1,0) -| (nand1.in 1)
				(-1,0) -| (nand1.in 2)
				(-1,1) -| (nand2.in 1)
				(-1,1) -| (nand2.in 2)
				%
				(nand1.out) |- (nand3.in 2)
				(nand2.out) |- (nand3.in 1)
				(nand3.out) |- (nand4.in 1)
				(nand3.out) |- (nand4.in 2)
				%
				(-1,0) node[left] () {$x_2$}
				(-1,1) node[left] () {$x_1$}
				(nand4.out) node[right] () {$y_9$}
				%
			;\end{circuitikz}
		\end{longtable}
		
\end{document}
PS: Mir ist klar, dass das kein Minimalbeispiel ist. Ich wollte jedoch auch eine ähnlich Tabelle wie bei mir haben.

Vielen Dank schon einmal!

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4271
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

\begin{circuitikz}[baseline=(current bounding box.west)]
...

lukasen
Forum-Newbie
Forum-Newbie
Beiträge: 7
Registriert: Fr 11. Dez 2015, 19:20

Beitrag von lukasen »

Ja vielen Dank. Das ist genau das, was ich gesucht habe.
Gibt es noch eine Möglichkeit, die Zeilenhöhe abhängig vom Inhalt systematisch oben und unten zu erhöhen ohne die vertikalen Striche zu unterbrechen (auch wenn man diese nach Möglichkeit in Tabellen vermeiden sollte)? Oder bei der circuitikz Grafik oben und unten einen unsichtbaren Rand hinzuzufügen? Dürfte ja auf dasselbe hinauslaufen. Ich möchte das die Abbildungen in den Zeilen nicht so dicht beieinander sind.

Beispiel:
\documentclass{scrartcl}

\usepackage[europeanports]{circuitikz}

\begin{document}

\begin{tabular}{c|l}
	
	Name & Symbol\\\hline
	OR &
	\begin{circuitikz}[baseline=(current bounding box.west)]
		\draw (0,0) node[or port](){};
	\end{circuitikz}\\
	AND &
	\begin{circuitikz}[baseline=(current bounding box.west)]
		\draw (0,0) node[and port](){};
	\end{circuitikz}\\
	XOR &
	\begin{circuitikz}[baseline=(current bounding box.west)]
		\draw (0,0) node[xor port](){};
	\end{circuitikz}\\
\end{tabular}

\end{document}

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Du kannst mit `\raisebox` Höhe und Tiefe der Box mit jeweils `5pt` mehr vorgeben:

\raisebox{0pt}[\dimexpr\height+5pt][\dimexpr\depth+5pt]{%
    \begin{circuitikz}[baseline=(bl)] 
       \draw (0,0) node[or port](){};
       \coordinate(bl)at([yshift=-.5\ht\strutbox]current bounding box.west);
    \end{circuitikz}%
}
Oder Du vergrößerst am Ende der Zeichnung deren Bounding Box:

\begin{circuitikz}[baseline=(bl)] 
   \draw (0,0) node[and port](){};
   \useasboundingbox ([yshift=-5pt]current bounding box.south west)
      rectangle ([yshift=5pt]current bounding box.north east);
   \coordinate(bl)at([yshift=-.5\ht\strutbox]current bounding box.west);
\end{circuitikz}\\ \hline
 
Im folgenden Beispiel habe ich die horizontale Linien ergänzt um den Abstand zu zeigen:
\documentclass{scrartcl} 
\usepackage[europeanports]{circuitikz}

\newcommand\bbanpassen[1][5pt]{%
  \useasboundingbox ([yshift=-#1]current bounding box.south west)
          rectangle ([yshift=#1]current bounding box.north east);
}
\newcommand\blfestlegen{%
  \coordinate(circuitablebaseline)at([yshift=-.5\ht\strutbox]current bounding box.west);
}

\begin{document}

\begingroup
\tikzset{baseline=(circuitablebaseline)}
\begin{tabular}{c|l} 
    Name & Symbol\\\hline 
    OR &
    \begin{circuitikz}
       \draw (0,0) node[or port](){};
       \bbanpassen
       \blfestlegen
    \end{circuitikz}\\ \hline
    AND & 
    \begin{circuitikz} 
       \draw (0,0) node[and port](){};
       \bbanpassen
       \blfestlegen
    \end{circuitikz}\\ \hline
    XOR & 
    \begin{circuitikz}
       \draw (0,0) node[xor port](){};
       \bbanpassen
       \blfestlegen
    \end{circuitikz}\\ 
\end{tabular}
\endgroup

\end{document} 

lukasen
Forum-Newbie
Forum-Newbie
Beiträge: 7
Registriert: Fr 11. Dez 2015, 19:20

Beitrag von lukasen »

Vielen Dank. Genau so sollte es sein.

Antworten