Text ausrichten und Einbinden in Fließtext von tikz

Tabellen und Grafiken erstellen und anordnen


Milupinchen
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Fr 18. Nov 2016, 08:17

Text ausrichten und Einbinden in Fließtext von tikz

Beitrag von Milupinchen »

Guten Morgen :)

Ich bin neu hier und stelle mich kurz vor. Ich heiße Sandra, bin Studentin und sitze derzeit an meiner Abschlussarbeit. Und dabei bräuchte ich Hilfe.

Ich benötige diese Dominos in einer Tabelle und im Fließtext. Ich habe mal mein Beispiel angehängt. Ich benutze das rectangle split, was soweit ganz gut funktioniert.

Mein Problem ist einerseits, dass ich den Text innerhalb der Felder nicht auf einer Linie ausgerichtet bekomme. Das b hängt immer etwas tiefer.
Und andererseits muss ich diese Dominos im Fließtext immer wieder verwenden, aber das sieht so nicht schön aus und ich frage mich, ob das nicht auch eleganter geht?

Ich hab schon einige Male ins manual geschaut, aber ich finde da keine passende Antwort.

Hat hier jemand eine Idee?

Vielen Dank und viele GRüße

Sandra

\documentclass[11pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[german]{babel}
\usepackage{amsmath}
\usepackage{helvet}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{todonotes}
\usetikzlibrary{positioning, shapes.multipart, shapes}
\usepackage{tikz}
\usepackage{array}
\usepackage[left=2cm,right=2.5cm,top=2cm,bottom=2cm]{geometry}
\bibliographystyle{unsrt}



\begin{document}
%--------------------------------------------------------------------------------------------------------
%Neue Befehle fuer die Dominos
%-------------------------------------------------------------------------------------------------------
%Eckiges, unbearbeitetes Domino
\newcommand{\domino} 
		   {\tikzset{domino/.style = {rectangle split, rectangle split horizontal,
                  	 rectangle split parts=2, very thin,draw=black!65,text badly centered, inner sep = 2pt}}	
                  
					\begin{tikzpicture}
  						\node[domino]
  							 {\nodepart[text height=0.2cm, text centered]{one} a
                				  \nodepart[text height=0.2cm, text centered]{two} b};
                				  
					\end{tikzpicture}} 



%-------------------------------------------------------------------------------------------------------
%Eckiges Domino mit bearbeitetem a
\newcommand{\dominoA}
		   {\tikzset{dominoA/.style = {rectangle split, rectangle split horizontal,
                     rectangle split parts=2, very thin,draw=black,text badly centered, inner sep = 2pt}}
                     	
					\begin{tikzpicture}
  						  \node[dominoA]
  						  	   {\nodepart[text height=0.2cm, text centered]{one} $a_0$
                					\nodepart[text height=0.2cm, text centered]{two} b};
                					
					\end{tikzpicture}} 
					
%--------------------------------------------------------------------------------------------------------
%Rundes, unbearbeitetes Domino
\newcommand{\dominoR}
		   {\tikzset{dominoR/.style = {rectangle split, rectangle split horizontal,
                     rectangle split parts=2, very thin,draw=black,text badly centered,rounded 		  corners,inner sep=2pt}}
                     	
					\begin{tikzpicture}
 						  \node[dominoR]
 						  	   {\nodepart[text height=0.2cm]{one} b
                					\nodepart[text height=0.2cm]{two} a};
                					
					\end{tikzpicture}} 
					
%----------------------------------------------------------------------------------------------------
%Eckiges Domino mit bearbeitem b
\newcommand{\dominoB}
		   {\tikzset{dominoB/.style = {rectangle split, rectangle split horizontal,
                     rectangle split parts=2, very thin,draw=black,text badly centered, inner sep = 2pt}}	                  
                    
				 	\begin{tikzpicture}
   						  \node[dominoB]
   						  	   {\nodepart[text height=0.2cm, text centered]{one} a
                					\nodepart[text height=0.2cm, text centered]{two} $b_0$};
                					
					\end{tikzpicture}} 

%--------------------------------------------------------------------------------------------------
%Rundes Domino mit bearbeitem a
\newcommand{\dominoRA}
		   {\tikzset{dominoRA/.style = {rectangle split, rectangle split horizontal,
                     rectangle split parts=2, very thin,draw=black,text badly centered,rounded corners, inner sep=2pt}}
                     	
					\begin{tikzpicture}
  						  \node[dominoRA]
  						  	   {\nodepart[text height=0.2cm]{one} b
                					\nodepart[text height=0.2cm]{two} $a_0$};
                					
					\end{tikzpicture}} 
					
%-----------------------------------------------------------------------------------------------------
%Rundes Domino mit bearbeitem b					

\newcommand{\dominoRB}
		   {\tikzset{dominoRB/.style = {rectangle split, rectangle split horizontal,
                      rectangle split parts=2, very thin,draw=black,text badly centered,rounded corners, inner sep=2pt}}	
                      
					\begin{tikzpicture}
  						  \node[dominoRB]
  						  	   {\nodepart[text height=0.2cm]{one} $b_0$
                					\nodepart[text height=0.2cm]{two} a };
                					
					\end{tikzpicture}} 
					
%------------------------------------------------------------------------------------------------------
\

\renewcommand{\arraystretch}{1.5}

\begin{table}[h]
\centering

\begin{tabular}{|c|c|c|}

\hline
	 & $s \in Q_1$ & $t \in Q_2$\\
	 
	\hline
	$\domino$ & $(s_0, \dominoA^S)$ & $(t, \domino)$\\
	
	\hline
	
	$\domino^S$ & $(s_0, \dominoA^S)$ & $(t_0, \dominoB^T)$\\
	
	\hline

	$\domino^T$ & $(s, \domino^\circ)$ & $(t_0, \dominoB^T)$\\
	
	\hline
	
	$\domino^\circ$ & $(s, \domino^\circ)$ & $(t, \domino^\circ)$\\
	
	\hline
	
	$ \overline{\$}$ & $(f, \overline{\$})$ & $(f, \hat{\$})$\\
	
	\hline
	
	$ \hat{\$}$ & $(s, \$)$ & $(f, \hat{\$})$\\
	
	\hline
	
	$ \$ $ & $(s, \$)$ & $(t, \$)$\\
	
	\hline
	
	$\dominoR$ & $(s, \dominoR )$ & $(t_0, \dominoRB^T)$\\
	
	\hline
	
	$\dominoR^S$ & $(s_0, \dominoRA^S )$ & $(t, \dominoR^\circ)$\\
	
	\hline
	
	$\dominoR^T$ & $(s_0, \dominoRA^S )$ & $(t_0, \dominoRB^T)$\\
	
	\hline
	
	$\dominoR^\circ $ & $(s, \dominoR^\circ )$ & $(t, \dominoR^\circ)$\\
	
	\hline
	
	$ \overline{\#}$ & $(e, \hat{\#})$ & $(e, \overline{\#})$\\
	
	\hline
	
	$ \hat{\#}$ & $(e, \hat{\#})$ & $(t, \#)$\\
	
	\hline
	
	$ \# $ & $(s, \#)$ & $(t, \#)$\\
	
	\hline
\end{tabular}

\end{table}

\renewcommand{\arraystretch}{1}

Beispiel, wie es nachher im Fließtext eingebunden sein soll:

Dann sei $\alpha = u_1 \overline{\$} v_1 \overline{\#}.....\overline{\$}v_k$ mit $u_i \in$ ( \tikz [baseline=-0.06cm] \domino;$\quad)^*$, $v_i \in$ (\tikz [baseline=-0.06cm] \dominoR;$\quad)^*$.


\end{document}
[/code]

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

Beitrag von esdd »

Ich würde dafür eine Matrix verwenden:
\documentclass[11pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[german]{babel}
\usepackage{amsmath}
\usepackage{helvet}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{todonotes}
\usepackage{tikz}% lädt auch graphicx
\usetikzlibrary{matrix}
\usepackage{array}
\usepackage[left=2cm,right=2.5cm,top=2cm,bottom=2cm]{geometry}

\usepackage{hyperref}% in der Regel als letztes laden
\bibliographystyle{unsrt}

% Dominos
\tikzset{
  dominomatrix/.style={
    matrix of nodes,
    ampersand replacement=\&,
    inner sep=0pt,
    column sep=0pt,
    dominoline,
    nodes={inner sep=2pt,draw=none}
  },
  dominoline/.style={
    draw=black!65,
    very thin
  }
}
\newcommand*\Domino[3][]{%
  \tikz[baseline=(d-1-1.base)]{
    \matrix[dominomatrix,#1](d){$#2$\&$#3$\\};
    \draw[dominoline](d.north-|d-1-1.east)--(d.south-|d-1-1.east);
  }%
}
\newcommand*\domino{\Domino{a}{b}}%Eckiges, unbearbeitetes Domino
\newcommand*\dominoA{\Domino{a_0}{b}}%Eckiges Domino mit bearbeitetem a
\newcommand*\dominoB{\Domino{a}{b_0}}%Eckiges Domino mit bearbeitetem b
\newcommand*\dominoR{\Domino[rounded corners]{b}{a}}%Rundes, unbearbeitetes Domino
\newcommand*\dominoRA{\Domino[rounded corners]{b}{a_0}}%Rundes Domino mit bearbeitem a
\newcommand*\dominoRB{\Domino[rounded corners]{b_0}{a}}%Rundes Domino mit bearbeitem b

\begin{document}

\begin{center}
\renewcommand{\arraystretch}{1.5}
  \begin{tabular}{|c|c|c|}
    \hline
    & $s \in Q_1$ & $t \in Q_2$\\
    \hline
    $\domino$ & $(s_0, \dominoA^S)$ & $(t, \domino)$\\
    \hline
    $\domino^S$ & $(s_0, \dominoA^S)$ & $(t_0, \dominoB^T)$\\
    \hline
    $\domino^T$ & $(s, \domino^\circ)$ & $(t_0, \dominoB^T)$\\
    \hline
    $\domino^\circ$ & $(s, \domino^\circ)$ & $(t, \domino^\circ)$\\
    \hline
    $ \overline{\$}$ & $(f, \overline{\$})$ & $(f, \hat{\$})$\\
    \hline
    $ \hat{\$}$ & $(s, \$)$ & $(f, \hat{\$})$\\
    \hline
    $ \$ $ & $(s, \$)$ & $(t, \$)$\\
    \hline
    $\dominoR$ & $(s, \dominoR )$ & $(t_0, \dominoRB^T)$\\
    \hline
    $\dominoR^S$ & $(s_0, \dominoRA^S )$ & $(t, \dominoR^\circ)$\\
    \hline
    $\dominoR^T$ & $(s_0, \dominoRA^S )$ & $(t_0, \dominoRB^T)$\\
    \hline
    $\dominoR^\circ $ & $(s, \dominoR^\circ )$ & $(t, \dominoR^\circ)$\\
    \hline
    $ \overline{\#}$ & $(e, \hat{\#})$ & $(e, \overline{\#})$\\
    \hline
    $ \hat{\#}$ & $(e, \hat{\#})$ & $(t, \#)$\\
    \hline
    $ \# $ & $(s, \#)$ & $(t, \#)$\\
    \hline
  \end{tabular}
\end{center}

Beispiel, wie es nachher im Fließtext eingebunden sein soll:

Dann sei $\alpha = u_1 \overline{\$} v_1 \overline{\#}\ldots\overline{\$}v_k$ mit $u_i \in (\domino)^*$, $v_i \in (\dominoR)^*$.
\end{document}
Die Gleitumgebung habe ich entfernt, da ich aus dem [h] schlussfolgere, dass die Tabelle gar nicht gleiten soll. Die Definition von Makros, die man im ganzen Dokument verwenden möchte, gehört in die Präambel.

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Wenn ich im Beispiel von esdd nichts übersehen habe, dann dürfte auch die folgende Änderung funktionieren:
\documentclass[11pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{amsmath}
\usepackage{helvet}
\usepackage{amssymb}% lädt amsfonts
\usepackage{array}
\usepackage{booktabs}
\usepackage[left=2cm,right=2.5cm,top=2cm,bottom=2cm]{geometry}
\usepackage{tikz}% lädt auch graphicx
\usetikzlibrary{matrix}

\usepackage{hyperref}% in der Regel als letztes laden

% Dominos
\tikzset{
  dominomatrix/.style={
    matrix of nodes,
    ampersand replacement=\&,
    inner sep=0pt,
    column sep=0pt,
    dominoline,
    nodes={inner sep=2pt,draw=none}
  },
  dominoline/.style={
    draw=black!65,
    very thin
  }
}
\newcommand*\Domino[3][]{%
  \tikz[baseline=(d-1-1.base)]{
    \matrix[dominomatrix,#1](d){$#2$\&$#3$\\};
    \draw[dominoline](d.north-|d-1-1.east)--(d.south-|d-1-1.east);
  }%
}
\newcommand*\domino{\Domino{a}{b}}%Eckiges, unbearbeitetes Domino
\newcommand*\dominoA{\Domino{a_0}{b}}%Eckiges Domino mit bearbeitetem a
\newcommand*\dominoB{\Domino{a}{b_0}}%Eckiges Domino mit bearbeitetem b
\newcommand*\dominoR{\Domino[rounded corners]{b}{a}}%Rundes, unbearbeitetes Domino
\newcommand*\dominoRA{\Domino[rounded corners]{b}{a_0}}%Rundes Domino mit bearbeitem a
\newcommand*\dominoRB{\Domino[rounded corners]{b_0}{a}}%Rundes Domino mit bearbeitem b

\begin{document}

\begin{center}
\renewcommand{\arraystretch}{1.5}
\[
  \begin{array}{ccc}
    \toprule
                   & s \in Q_1                 & t \in Q_2\\
    \midrule
    \domino        & (s_0, \dominoA^S)         & (t, \domino)\\
    \domino^S      & (s_0, \dominoA^S)         & (t_0, \dominoB^T)\\
    \domino^T      & (s, \domino^\circ)        & (t_0, \dominoB^T)\\
    \domino^\circ  & (s, \domino^\circ)        & (t, \domino^\circ)\\
    \overline{\$}  & (f, \overline{\$})        & (f, \hat{\$})\\
    \hat{\$}       & (s, \$)                   & (f, \hat{\$})\\
    \$             & (s, \$)                   & (t, \$)\\
    \dominoR       & (s, \dominoR )            & (t_0, \dominoRB^T)\\
    \dominoR^S     & (s_0, \dominoRA^S )       & (t, \dominoR^\circ)\\
    \dominoR^T     & (s_0, \dominoRA^S )       & (t_0, \dominoRB^T)\\
    \dominoR^\circ & (s, \dominoR^\circ )      & (t, \dominoR^\circ)\\
    \overline{\#}  & (e, \hat{\#})             & (e, \overline{\#})\\
    \hat{\#}       & (e, \hat{\#})             & (t, \#)\\
    \#             & (s, \#)                   & (t, \#)\\
    \bottomrule
  \end{array}
\]
\end{center}

% Beispiel, wie es nachher im Fließtext eingebunden sein soll:

Dann sei $\alpha = u_1 \overline{\$} v_1 \overline{\#}\ldots\overline{\$}v_k$ mit $u_i \in (\domino)^*$, $v_i \in (\dominoR)^*$.
\end{document}

Milupinchen
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Fr 18. Nov 2016, 08:17

Beitrag von Milupinchen »

Vielen, vielen Dank!!!

Da suche ich seit zwei/ drei Tagen nach einer Lösung, die auch für die, die nicht so firm in Latex sind (mit ein Grund, warum der Code etwas gruselig ist), nachvollziehbar ist. Zuerst hatte ich die Matrix in einer tikzpicture-Umgebung, aber das klappte nicht. Dann stieß ich auf rectangle split. Aber die Dokumentation fand ich verwirrend.

Deine Lösung, esdd, ist genau so, wie ich es gesucht hab!

Vielen, vielen Dank euch beiden!!!

Viele Grüße

Sandra

Antworten