Dynamische Zeilenhöhe in Tabelle

Tabellen und Grafiken erstellen und anordnen


EliasvonB
Forum-Newbie
Forum-Newbie
Beiträge: 8
Registriert: Di 8. Mär 2016, 08:39
Wohnort: Berlin

Dynamische Zeilenhöhe in Tabelle

Beitrag von EliasvonB »

Guten Tag,

nach langen Recherchen und einer Menge ausprobieren ohne Erfolg, hoffe ich nun, dass es hier jemanden gibt, der mir bei meinem Problem weiterhelfen kann.

Das Problem lässt sich wie folgt beschreiben: der Text (i i i i..) hat eine variable Anzahl an Zeichen. Daher ist es entscheidend, wie sich die anderen Elemente verhalten. Das gewünschte Verhalten ist, dass, solange der Text keinen Overflow erzeugt, die beiden Bilder und die beiden Barcodes einer Zeile jeweils auf der selben Höhe sind. Richtig zu sehen bei den unteren beiden Zeilen.
Kommt es allerdings zu einem Overflow, soll sich der Abstand zwischen den Tabellenzeilen vergrößern, die beiden Barcodes einer Zeile sollen allerdings weiterhin auf der selben Höhe stehen(!).

Zunächst bin ich davon ausgegangen das ein \vfill zwischen dem "0000/00" und dem Barcode mir bei der Sache helfen kann, allerdings musste ich dann feststellen, dass dies innerhalb einer \minipage nicht funktioniert.
Eine feste Höhe mit \vspace oder eine \minipage mit fester Höhe kann nicht benutzt werden.

Hat jemand eine Idee, wie sich die Anforderungen realisieren lassen?

Zur besseren Veranschaulichung anbei auch noch ein Bild des jetzigen Ergebnisses aus unten stehendem Code.

Vielen Dank!

Gruß EliasvonB

\documentclass[a4paper,10pt]{article}
\usepackage[utf8x]{inputenc}
\usepackage{tabularx}
\usepackage{calc}
\usepackage{tabulary}
\usepackage[ngerman]{babel}
\usepackage{longtable}
\usepackage[left=1cm,right=1cm,top=1.1cm,bottom=1cm]{geometry}
\usepackage{graphicx}
\usepackage{eso-pic}
\usepackage{pst-barcode}
\usepackage[T1]{fontenc}
\usepackage{array}
\usepackage{fancyhdr}
\usepackage{lastpage}
\pagestyle{empty}
\usepackage{multirow}
\usepackage{booktabs}
\usepackage{ragged2e}
\RequirePackage{fix-cm} 
\usepackage{lmodern} 
\usepackage{booktabs} 
\usepackage{mwe}

\newcommand*{\topadjust}[1]{% 
  \raisebox{\dimexpr \ht\strutbox-\totalheight\relax}{#1}% 
}

\def\barcode#1#2#3#4#5#6#7{\begingroup%
  \dimen0=0.093em
  \def\stack##1##2{\oalign{##1\cr\hidewidth##2\hidewidth}}%
  \def\0##1{\kern##1\dimen0}%
  \def\1##1{\vrule height4ex width##1\dimen0}%
  \def\L##1{\ifcase##1\bc3211##1\or\bc2221##1\or\bc2122##1\or\bc1411##1%
    \or\bc1132##1\or\bc1231##1\or\bc1114##1\or\bc1312##1\or\bc1213##1%
    \or\bc3112##1\fi}%
  \def\R##1{\bgroup\let\next\1\let\1\0\let\0\next\L##1\egroup}%
  \def\G##1{\bgroup\let\bc\bcg\L##1\egroup}% reverse
  \def\bc##1##2##3##4##5{\stack{\0##1\1##2\0##3\1##4}##5}%
  \def\bcg##1##2##3##4##5{\stack{\0##4\1##3\0##2\1##1}##5}%
  \def\bcR##1##2##3##4##5##6{\R##1\R##2\R##3\R##4\R##5\R##6\11\01\11\09%
    \endgroup}%
  \stack{\09}#1\11\01\11\L#2%
  \ifcase#1\L#3\L#4\L#5\L#6\L#7\or\L#3\G#4\L#5\G#6\G#7%
    \or\L#3\G#4\G#5\L#6\G#7\or\L#3\G#4\G#5\G#6\L#7%
    \or\G#3\L#4\L#5\G#6\G#7\or\G#3\G#4\L#5\L#6\G#7%
    \or\G#3\G#4\G#5\L#6\L#7\or\G#3\L#4\G#5\L#6\G#7%
    \or\G#3\L#4\G#5\G#6\L#7\or\G#3\G#4\L#5\G#6\L#7%
  \fi\01\11\01\11\01\bcR}

\begin{document}
	\sffamily
	\begin{longtable}{>{\raggedright}p{0.12\textwidth}@{\quad}p{0.33\textwidth}p{0.03\textwidth}>{\raggedright}p{0.12\textwidth}@{\quad}p{0.33\textwidth}p{0.000001\textwidth}}

		\topadjust{\includegraphics[width=\linewidth]{test99.png}} & \begin{minipage}[t]{6cm} \leavevmode \newline i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i \newline 00000/00 \vfill \hspace*{2.6cm} \barcode 3041762288363 \end{minipage} & &
		\topadjust{\includegraphics[width=\linewidth]{test99.png}} & \begin{minipage}[t]{6cm} \leavevmode \newline i i i i i i i i i i i i i i \newline 00000/00 \end{minipage} \vfill \hspace*{2.6cm} \barcode 3041762288363 & \\[2.75cm]

		\topadjust{\includegraphics[width=\linewidth]{test99.png}} & \begin{minipage}[t]{6cm} \leavevmode \newline i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i \newline 00000/00 \vfill \hspace*{2.6cm} \barcode 3041762288363 \end{minipage} & &
		\topadjust{\includegraphics[width=\linewidth]{test99.png}} & \begin{minipage}[t]{6cm} \leavevmode \newline i i i i i i i i i i i i i i \newline 00000/00 \end{minipage} \vfill \hspace*{2.6cm} \barcode 3041762288363 & \\[2.75cm]
		
		\topadjust{\includegraphics[width=\linewidth]{test99.png}} & \begin{minipage}[t]{6cm} \leavevmode \newline i i i i i i i i i i i i i i  \newline 00000/00 \vfill \hspace*{2.6cm} \barcode 3041762288363 \end{minipage} & &
		\topadjust{\includegraphics[width=\linewidth]{test99.png}} & \begin{minipage}[t]{6cm} \leavevmode \newline i i i i i i i i i i i i i i \newline 00000/00 \end{minipage} \vfill \hspace*{2.6cm} \barcode 3041762288363 & \\[2.75cm]
		
		\topadjust{\includegraphics[width=\linewidth]{test99.png}} & \begin{minipage}[t]{6cm} \leavevmode \newline i i i i i i i i i i i i i i  \newline 00000/00 \vfill \hspace*{2.6cm} \barcode 3041762288363 \end{minipage} & &
		\topadjust{\includegraphics[width=\linewidth]{test99.png}} & \begin{minipage}[t]{6cm} \leavevmode \newline i i i i i i i i i i i i i i \newline 00000/00 \end{minipage} \vfill \hspace*{2.6cm} \barcode 3041762288363 & \\[2.75cm]
		
	\end{longtable}
\end{document}
[/code]
Dateianhänge
Forum_Beispiel.pdf
(27.12 KiB) 200-mal heruntergeladen
Keep IT real.

EliasvonB
Forum-Newbie
Forum-Newbie
Beiträge: 8
Registriert: Di 8. Mär 2016, 08:39
Wohnort: Berlin

Background-color in Multirow

Beitrag von EliasvonB »

Guten Tag,

ich habe mittlerweile eine Lösung für mein Problem gefunden:
\documentclass[a4paper,10pt]{article}
\usepackage[utf8x]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{longtable}
\usepackage[left=1cm,right=1cm,top=0.8cm,bottom=0.9cm,headheight=0.3cm,footskip=0.3cm,includehead,includefoot]{geometry}
\usepackage{graphicx}
\usepackage{fancyhdr}
\usepackage{lastpage}
\usepackage{multirow}
\usepackage[table]{xcolor}
\pagestyle{empty}
\def\TotalPages=\pageref{LastPage}
\newcommand{\pagemark}{\thepage\ / \pageref{LastPage}}
\renewcommand{\familydefault}{\sfdefault}
\pagestyle{fancy}
\fancyhf{}
\renewcommand{\headrulewidth}{0.0pt}
\rfoot{\pagemark}
\begin{document}
\begin{longtable}{p{2.2cm}p{5.6cm}p{1.2cm}p{2.2cm}p{5.6cm}}
\multirow{2}{*}{\includegraphics[width=\linewidth]{test99.png}} & \begin{minipage}[t]{6cm} \leavevmode \newline i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i \newline 00000/00 \end{minipage} & & \multirow{2}{*}{\includegraphics[width=\linewidth]{test99.png}} & \begin{minipage}[t]{6cm} \leavevmode \newline i i i i i i i i i i \newline 00000/00 \end{minipage} \tabularnewline [1.62cm] \nopagebreak
                                                                & \begin{minipage}[b]{6cm} \hspace*{2.3cm} BARCODE \end{minipage} & & & \begin{minipage}[b]{6cm} \hspace*{2.3cm} BARCODE \end{minipage} \tabularnewline [0.5cm]

\multirow{2}{*}{\includegraphics[width=\linewidth]{test99.png}} & \begin{minipage}[t]{6cm} \leavevmode \newline i i i i i i i i i i \newline 00000/00 \end{minipage} & & \multirow{2}{*}{\includegraphics[width=\linewidth]{test99.png}} & \begin{minipage}[t]{6cm} \leavevmode \newline i i i i i i i i i i \newline 00000/00 \end{minipage} \tabularnewline [1.62cm] \nopagebreak
                                                                & \begin{minipage}[b]{6cm} \hspace*{2.3cm} BARCODE \end{minipage} & & & \begin{minipage}[b]{6cm} \hspace*{2.3cm} BARCODE \end{minipage} \tabularnewline [0.5cm]
\end{longtable}
\end{document}

Nun gibt es aber leider ein neues Problem und zwar würde ich gerne jeder zweiten Reihe (eine Reihe = zwei Zeilen) eine Hintergrundfarbe geben. Dabei bin ich auf das bekannte Problem mit \rowcolor und \multirow gestoßen.
Viele konnten das Problem lösen, indem sie die \multirow am Ende platziert haben und die Spaltenanzahl dann negiert haben. Leider funktioniert das in meinem Fall nicht oder ich habe es falsch umgesetzt.
Ich hoffe, dass mir dazu jemand einen Tipp geben kann. Anbei die Ausgaben beider Quellcodes.
\documentclass[a4paper,10pt]{article}
\usepackage[utf8x]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{longtable}
\usepackage[left=1cm,right=1cm,top=0.8cm,bottom=0.9cm,headheight=0.3cm,footskip=0.3cm,includehead,includefoot]{geometry}
\usepackage{graphicx}
\usepackage{fancyhdr}
\usepackage{lastpage}
\usepackage{multirow}
\usepackage[table]{xcolor}
\pagestyle{empty}
\def\TotalPages=\pageref{LastPage}
\newcommand{\pagemark}{\thepage\ / \pageref{LastPage}}
\renewcommand{\familydefault}{\sfdefault}
\pagestyle{fancy}
\fancyhf{}
\renewcommand{\headrulewidth}{0.0pt}
\rfoot{\pagemark}
\begin{document}
\begin{longtable}{p{2.2cm}p{5.6cm}p{1.2cm}p{2.2cm}p{5.6cm}}
\rowcolor{lightgray!25}                                                                  & \begin{minipage}[t]{6cm} \leavevmode \newline i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i i \newline 00000/00 \end{minipage} & & & \begin{minipage}[t]{6cm} \leavevmode \newline i i i i i i i i i i \newline 00000/00 \end{minipage} \tabularnewline [1.62cm] \nopagebreak
\rowcolor{lightgray!25} \multirow{-2}{*}{\includegraphics[width=\linewidth]{test99.png}} & \begin{minipage}[b]{6cm} \hspace*{2.3cm} BARCODE \end{minipage} & & \multirow{-2}{*}{\includegraphics[width=\linewidth]{test99.png}} & \begin{minipage}[b]{6cm} \hspace*{2.3cm} BARCODE \end{minipage} \tabularnewline [0.5cm]

                                                                 & \begin{minipage}[t]{6cm} \leavevmode \newline i i i i i i i i i i i i \newline 00000/00 \end{minipage} & & & \begin{minipage}[t]{6cm} \leavevmode \newline i i i i i i i i i i \newline 00000/00 \end{minipage} \tabularnewline [1.62cm] \nopagebreak
\multirow{-2}{*}{\includegraphics[width=\linewidth]{test99.png}} & \begin{minipage}[b]{6cm} \hspace*{2.3cm} BARCODE \end{minipage} & & \multirow{-2}{*}{\includegraphics[width=\linewidth]{test99.png}} & \begin{minipage}[b]{6cm} \hspace*{2.3cm} BARCODE \end{minipage} \tabularnewline [0.5cm]

\rowcolor{lightgray!25}                                                                  & \begin{minipage}[t]{6cm} \leavevmode \newline i i i i i i i i i i i i i \newline 00000/00 \end{minipage} & & & \begin{minipage}[t]{6cm} \leavevmode \newline i i i i i i i i i i \newline 00000/00 \end{minipage} \tabularnewline [1.62cm] \nopagebreak
\rowcolor{lightgray!25} \multirow{-2}{*}{\includegraphics[width=\linewidth]{test99.png}} & \begin{minipage}[b]{6cm} \hspace*{2.3cm} BARCODE \end{minipage} & & \multirow{-2}{*}{\includegraphics[width=\linewidth]{test99.png}} & \begin{minipage}[b]{6cm} \hspace*{2.3cm} BARCODE \end{minipage} \tabularnewline [0.5cm]
\end{longtable}
\end{document}
Schon mal vielen Dank im voraus!

Gruß EliasvonB
Dateianhänge
first_code.pdf
(11.03 KiB) 147-mal heruntergeladen
second_code.pdf
(11.29 KiB) 142-mal heruntergeladen
Keep IT real.

Antworten