1

After having searched a lot, I still didn't find an option to align multirow cells vertically correctly in Lyx' native tables. There seem to be some solutions but I haven't found any for use with Lyx native tables without individually adjusting the vertical displacement.

I created an example file to show what I mean and the corresponding rendering. The code in Lyx is as followed:

\begin{table}
\begin{centering}
\begin{tabular*}{1\textwidth}{@{\extracolsep{\fill}}>{\raggedright}m{0.2\textwidth}>{\raggedright}m{0.4\textwidth}>{\raggedright}m{0.3\textwidth}}
\toprule 
\addlinespace
\textbf{Typ} & \textbf{Technologie} & \textbf{Materialien}\tabularnewline\addlinespace
\midrule 
\addlinespace
Extrusion & Fused Deposition Molding (FDM) & Thermoplaste (z.B. PLA, ABS), HDPE, eutektische Metalle, Gummi, Ton,
Knetmasse\tabularnewline\addlinespace
\midrule 
\addlinespace
Draht & Electron Beam Freeform Fabrication (EBF) & fast jede Metalllegierung\tabularnewline\addlinespace
\midrule 
\addlinespace
\multirow{5}{0.2\textwidth}{Granulate } & Direct metal laser sintering (DMLS) & fast jede Metalllegierung\tabularnewline\addlinespace
\cmidrule{2-3} 
\addlinespace
 & Electron-beam melting (EBM) & Titanlegierungen\tabularnewline\addlinespace
\cmidrule{2-3} 
\addlinespace
 & Selective laser melting (SLM) & Titanlegierungen, Kobalt-Chrom-Legierungen, stainless-steel, Aluminium\tabularnewline\addlinespace
\cmidrule{2-3} 
\addlinespace
 & Selective heat sintering (SHS) & thermoplastisches Pulver\tabularnewline\addlinespace
\cmidrule{2-3} 
\addlinespace
 & Selective laser sintering (SLS) & Thermoplasten, Metallpulver, keramische Pulver\tabularnewline\addlinespace
\midrule 
\addlinespace
\multirow{2}{0.2\textwidth}{Pulverbett mit Inkjetkopf} & Plaster based 3D printing (PP) & Gips mit Wasser als Binder\tabularnewline\addlinespace
\cmidrule{2-3} 
\addlinespace
 & kein einheitlicher Name findbar & Sand/Kunststoff mit Binder\tabularnewline\addlinespace
\midrule 
\addlinespace
Laminiert & Laminated object manufacturing (LOM) & Papier, Metallfolie, Plastikfilm\tabularnewline\addlinespace
\midrule 
\addlinespace
\multirow{2}{0.2\textwidth}[-2mm]{Photoaktivierte Polymerisation} & Stereolithographie (SLA) & \multirow{2}{0.3\textwidth}{Photopoylmere}\tabularnewline\addlinespace
\cmidrule{2-2} 
\addlinespace
 & Digital Light Processing (DLP) & \tabularnewline\addlinespace
\bottomrule
\end{tabular*}
\par\end{centering}

\protect\caption{Übersicht über verschiedene additive Fertigungsverfahren in Anlehnung
an \cite{wikipedia20143Dprinting}. \label{tab:=0000DCbersicht =0000FCber verschiedene additive Fertigungsverfahren}}
\end{table}

Focus on the word "granulate"

example rendering of Table Code

You can download the working example here: Working Lyx example

In this question here, they showed how to use the second optional argument but isn't there an automatic way?

2
  • Instead of placing Granulate in the first row of the area that it should span via a \multirow, place it in the third row, then it will be centred automatically without using a \multirow.
    – Werner
    Jul 5, 2014 at 15:31
  • thank you for the tip, I hadn't considered that but that doesn't help me in the case of "photoaktivierte Polymerisation" as the cell is spanning two rows. (I mentioned the aligniment problem (at least I percieve it as such. If I'm wrong, please show me) in the comment thread under the answer of @bernard ). Also, this solution works great in the case of odd multirow numbers, but if they are even, this isn't a viable solution
    – Hug
    Jul 6, 2014 at 18:51

1 Answer 1

3

You must count not the number of rows, but the number of lines in case of multiline cells, plus an adjustement corresponding to the number of \addlinespace commands and to the thickness of \midrules. However this is only theoretical. For instance, I chose not to put "granulate" in the middle of its multirow cell, but aligned with "Selective laser melting" in the next column, as to the eye it appears as the vertical centre of the table. But you can try the version "vertically centred" if you wish: just comment the corresponding line and uncomment the line above.

Also, note the centering environment does not exist. It's the \centering command that you have to use.

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}

\usepackage{array, multirow, booktabs}
\usepackage{amsmath}

\pagestyle{empty}

\begin{document}

\begin{table}
\centering
\begin{tabular*}{1\textwidth}{@{\extracolsep{\fill}}>{\raggedright}m{0.2\textwidth}>{\raggedright}m{0.4\textwidth}>{\raggedright}m{0.3\textwidth}}
\toprule
\addlinespace
\textbf{Typ} & \textbf{Technologie} & \textbf{Materialien}\tabularnewline\addlinespace
\midrule
\addlinespace
Extrusion & Fused Deposition Molding (FDM) & Thermoplaste (z.B. PLA, ABS), HDPE, eutektische Metalle, Gummi, Ton,
Knetmasse\tabularnewline\addlinespace
\midrule
\addlinespace
Draht & Electron Beam Freeform Fabrication (EBF) & fast jede Metalllegierung\tabularnewline\addlinespace
\midrule
\addlinespace%
%\multirow{13}{0.2\textwidth}[\dimexpr-5\defaultaddspace-4\lightrulewidth]{Granulate } & Direct metal laser sintering (DMLS) & fast jede Metalllegierung\tabularnewline\addlinespace
\multirow{13}{0.2\textwidth}[\dimexpr-2\defaultaddspace + 3\lightrulewidth\relax]{Granulate } & Direct metal laser sintering (DMLS) & fast jede Metalllegierung\tabularnewline\addlinespace
\cmidrule{2-3}
\addlinespace
 & Electron-beam melting (EBM) & Titanlegierungen\tabularnewline\addlinespace
\cmidrule{2-3}
\addlinespace
 & Selective laser melting (SLM) & Titanlegierungen, Kobalt-Chrom-Legierungen, stainless-steel, Aluminium\tabularnewline\addlinespace
\cmidrule{2-3}
\addlinespace
 & Selective heat sintering (SHS) & thermoplastisches Pulver\tabularnewline\addlinespace
\cmidrule{2-3}
\addlinespace
 & Selective laser sintering (SLS) & Thermoplasten, Metallpulver, keramische Pulver\tabularnewline\addlinespace
\midrule
\addlinespace
\multirow{4}{0.2\textwidth}{Pulverbett mit Inkjetkopf} & Plaster based 3D printing (PP) & Gips mit Wasser als Binder\tabularnewline\addlinespace%
\cmidrule{2-3}
\addlinespace
 & kein einheitlicher Name findbar & Sand/Kunststoff mit Binder\tabularnewline\addlinespace
\midrule
\addlinespace
Laminiert & Laminated object manufacturing (LOM) & Papier, Metallfolie, Plastikfilm\tabularnewline\addlinespace
\midrule
\addlinespace
\multirow{2}{0.2\textwidth}[-\defaultaddspace]{Photoaktivierte Polymerisation} & Stereolithographie (SLA) & \multirow{2}{0.3\textwidth}[-\defaultaddspace]{Photopoylmere}\tabularnewline\addlinespace
\cmidrule{2-2}
\addlinespace
 & Digital Light Processing (DLP) & \tabularnewline\addlinespace
\bottomrule
\end{tabular*}
\protect\caption{Übersicht über verschiedene additive Fertigungsverfahren in Anlehnung%
an \cite{wikipedia20143Dprinting}. \label{tab:=0000DCbersicht =0000FCber verschiedene additive Fertigungsverfahren}}
\end{table}

\end{document} 

enter image description here

7
  • thank you for the quick answer. This looks great, but leaves me with other questions: 1. How do I implement this in Lyx? (As it is using Lyx native tables, hjow do I modify the code accordingly?) 2. can I somewhow align "Photoaktivierte Polymerisation" correctly or is this related to booktabs? It doesn't look vertically correctly aligned either. Or am I wrong here?
    – Hug
    Jul 6, 2014 at 18:47
  • 1. I don't know Lyx, so I only can conjecture that you'll have to manually adjust as I've done starting with your (=Lyx's) code — unless there's a way to tell Lyx to count the number of lines in multiline cells… 2. To my eyes, "Photoaktivierte Polymerisation" is correctly aligned as extending midrule in next column would make it pass through the middle of these two lines. You can try to make a [-1.5\defaultaddspace] adjustment in the multirows of the 1st and 3rd columns (instead of -2), it is also acceptable. It's only a matter of personal taste.
    – Bernard
    Jul 6, 2014 at 19:23
  • Hi, I marked the answer as solved because I'm now using the code in a code block. But I stumbled upon a really strange behaviour: It only compiles if I have the old table (I commented it out with a beginning "\iffalse" and an ending "\fi") anywhere in the document. Otherwise, it throws a "undefined control sequence" error. Thank you very very much for your help.
    – Hug
    Jul 7, 2014 at 10:58
  • @Hug: I am confident there is no native way to do this in LyX, aside from using ERTs wherever something using pure LaTeX is needed. LyX has its limitations, and this is most certainly one of them...
    – Werner
    Jul 7, 2014 at 15:36
  • @Werner, thanks for the answer. Do you have any idea why Lyx doesn't compile in any way the moment I delete the old (not even compiled) table build natively with Lyx? I have an ERT block in front of the table float (of the native table) (for docu and for trying out) with "iffalse" and one with "fi" after it. When I delete all of that and just use the ERT in the table float from above, it doesn't compile. But it does when the old native lyx is anywhere in the document.
    – Hug
    Jul 8, 2014 at 17:07

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .