2

I want to create a Table with all Rows the same height, indepent how many lines of text they actually have. If the largest amount for a row/cell is three lines, all row should have a height if the had three lines. In the real project all latex files/textcontent is created with a script dynamiclly, manual adjustments for indivual lines is no solution.

I tried different solutions, which i found on stackexchange with my example table below, but none of them work completely.

The code below is a stripped down example with the basic layout i want to achieve

\documentclass{article}
\usepackage[useui]{eforms}
\usepackage{hyperref}
\usepackage{tabularx}
\usepackage{pgf}
\usepackage{ifthen}

\everyTextField{\textSize{9}\W{0}}

% Helper function
% Aligment, Name, Textsize, Width, Value
\newcommand{\TextInputSize}[5][\empty]{%
    \pgfmathsetmacro{\FieldHeight}{1.167*#3-0.19}%
    \ifthenelse{\equal{#1}{\empty}}{%
        \textField[\ui{border=invisible,textsize={#3},value={#5}}]{#2}{#4}{\FieldHeight pt}%
    }{%
        \textField[\ui{align={#1},border=invisible,textsize={#3},value={#5}}]{#2}{#4}{\FieldHeight pt}%
    }%
}

% Helper function
% Aligment, Name, Textsize, Width, Value
\newcommand{\TextInputSizeTwoLine}[5][\empty]{%
    \pgfmathsetmacro{\FieldHeight}{(1.167*#3-0.19)*2}%
    \ifthenelse{\equal{#1}{\empty}}{%
        \textField[\ui{autocenter=no,border=invisible,fieldflags={multiline,noscrolling},textsize={#3},value={#5}}]{#2}{#4}{\FieldHeight pt}%
    }{%
        \textField[\ui{autocenter=no,align={#1},border=invisible,fieldflags={multiline,noscrolling},textsize={#3},value={#5}}]{#2}{#4}{\FieldHeight pt}%
    }%
}

% creates a multiline Textfield
% TextSize, Name, Value
\newcommand{\CellTextFieldTwoLine}[3][11]{%
    \pgfmathsetmacro{\FieldHeightOffset}{-0.21*#1+0.08}%
    \raisebox{\FieldHeightOffset pt}{\TextInputSizeTwoLine[centered]{#2}{#1}{\linewidth-2pt}{#3}}%
}

% creates a multiline Textfield with ohter text style
% Textsize, Name, Value
\newcommand{\CellTextFieldTitleTwoLines}[3][0]{%
    \pgfmathsetmacro{\FieldHeight}{(1.130*#1-0.37)*2}%
    \pgfmathsetmacro{\FieldHeightOffset}{-0.21*#1+0.08}%
    \hspace*{-2pt}\raisebox{\FieldHeightOffset pt}{\textField[\ui{autocenter=no,border=invisible,fieldflags={multiline,noscrolling},textfont={CaslonAntique-Bold},textsize={#1},value={#3}}]{#2}{\linewidth-2pt}{\FieldHeight pt}}%
}

% creates a normal Textfield
% TextSize, Name, Width, Value
\newcommand{\CellTextFieldLeftAlign}[4][11]{%
    \pgfmathsetmacro{\FieldHeightOffset}{-0.21*#1+0.08}%
    \raisebox{\FieldHeightOffset pt}{\TextInputSize{#2}{#1}{#3}{#4}}%
}

\begin{document}
\tiny\normalfont\bfseries

\begin{tabularx}{\columnwidth}{p{0.3cm}|p{2.8cm}X}
    \multicolumn{3}{l}{\Large Allgemeine Sonderfertigkeiten} 
    \tabularnewline\hline%
    \CheckBox[name=Kulturkunde2,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{}&
    {\footnotesize Kulturkunde}&
    {Gesellschaftliche Interaktionen sind ohne zur Situation passenden Kulturkunde erschwert}%
    \tabularnewline%
    & \multicolumn{2}{l}{\CellTextFieldLeftAlign{Kulturkunde2}{\linewidth-0.4cm}{}}%
    \tabularnewline%
    \hline%
    \CheckBox[name=Ortskenntnis,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{}&
    {\footnotesize Ortskenntnis}&
    {Ortsbezogene Proben-7 im gewählten Gebiet}%
    \tabularnewline%
    & \multicolumn{2}{l}{\CellTextFieldLeftAlign{Ortskenntnis}{\linewidth-0.4cm}{}}%
    \tabularnewline%
    \hline%
    \CheckBox[name=AkklimatisierungHitze,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{}&
    {\footnotesize Akklimatisierung (Hitze)}&
    {erleidet durch außergewöhnliche Umgebungswärme keinen Schaden}%
    \tabularnewline%
    \hline%
    \CheckBox[name=AkklimatisierungKälte,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{}&
    {\footnotesize Akklimatisierung (Kälte)}&
    {erleidet durch außergewöhnliche Umgebungskälte keinen Schaden}%
    \tabularnewline%
    \hline%
    \CheckBox[name=Berufsgeheimnis,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{}&
    {\footnotesize Berufsgeheimnis}&
    {kennt ein Geheimnis der Handwerkskunst, ermöglicht Verwendung besonderer Herstellungsverfahren oder spezieller Materialien}%
    \tabularnewline%
    & \multicolumn{2}{l}{\CellTextFieldLeftAlign{Berufsgeheimnis}{\linewidth-0.4cm}{}}%
    \tabularnewline%
    \hline%
    \CheckBox[name=Fälscher,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{}&
    {\footnotesize Fälscher} &
    {ermöglicht das effektive Fälschen von Schriftstücken und Kunstwerken}%
    \tabularnewline%
    \hline%
    \CheckBox[name=MeisterderImprovisation,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{}&
    {\footnotesize Meister der Improvisation}&
    {kann fehlendes Werkzeug durch Hilfsmittel kompensieren. Erschwernisse beim Ableiten von einen Handwerksstalent werden halbiert}%
    \tabularnewline%
    \hline%
    \CheckBox[name=NandusgefälligesWissen,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{}&
    {\footnotesize Nandusgefälliges Wissen}&
    {ermöglicht Wissen aus verwandten Gebieten zu kombinieren; Erschwernisse beim Ableiten von einen Wissenstalent werden halbiert}%
    \tabularnewline%
    \hline%
    \CheckBox[name=Geländekunde,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{}&
    {\footnotesize Geländekunde}&
    {Proben, die sich auf den Umgang mit diesem Gelände beziehen, sind um 3 Punkte erleichtert}%
    \tabularnewline%
    & \multicolumn{2}{p{\linewidth-0.3cm}}{
        {Dschungel \CheckBox[name=Dschungel,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{} \hskip 1em}%
        {Eis \CheckBox[name=Eis,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{} \hskip 1em}%
        {Gebirge \CheckBox[name=Gebirge,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{} \hskip 1em}%
        {Höhle \CheckBox[name=Höhle,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{} \hskip 1em}%
        {Maraskan \CheckBox[name=Maraskan,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{} \hskip 1em}%
        {Meer \CheckBox[name=Meer,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{} \hskip 1em}%
        {Steppen \CheckBox[name=Steppen,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{} \hskip 1em}%
        {Sumpf \CheckBox[name=Sumpf,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{} \hskip 1em}%
        {Wald \CheckBox[name=Wald,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{} \hskip 1em}%
        {Wüste \CheckBox[name=Wüste,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{} \hskip 1em}%
    }%
    \tabularnewline%
    \hline%
    \CheckBox[name=CheckLeer,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{}&
    \CellTextFieldTitleTwoLines[9]{NameLeer}{Leer}&
    \CellTextFieldTwoLine[7]{WirkungLeer}{Leer}%
    \tabularnewline%
    \hline%
\end{tabularx}
\end{document}

Current Output: Current Output

6
  • 2
    I hope you do not take this comment as a criticism. However, I am a bit lost when trying to parse this question. You say you collected the code from different posts. Which posts? Do they perhaps explain a bit what's going on here? Could you perhaps also post the current output, along with a description what you'd like to change?
    – user194703
    Commented Dec 30, 2019 at 2:53
  • i liked this one -- tex.stackexchange.com/questions/258609/…
    – js bibra
    Commented Dec 30, 2019 at 16:31
  • tex.stackexchange.com/questions/354569/…
    – js bibra
    Commented Dec 30, 2019 at 16:33
  • tex.stackexchange.com/questions/449726/…
    – js bibra
    Commented Dec 30, 2019 at 16:35
  • @jsbibra my cells will have 2 or 3 lines of text but but every row should have the height for 3 lines, indepent how many lines every cell have Commented Dec 30, 2019 at 21:49

1 Answer 1

1

I didn't try to make it perfect. But some remarks: Don't set the outside font size to \tiny, this will give quite bad spacing inside the tabular. Always use the larger font size.

Some of your "rows" actually consist of two rows. You will have to add this second row everywhere if you want a uniform look.

\documentclass{article}
\usepackage[useui]{eforms}
\usepackage{hyperref}
\usepackage{tabularx}
\usepackage{pgf}
\usepackage{ifthen}

\everyTextField{\textSize{9}\W{0}}

% Helper function
% Aligment, Name, Textsize, Width, Value
\newcommand{\TextInputSize}[5][\empty]{%
    \pgfmathsetmacro{\FieldHeight}{1.167*#3-0.19}%
    \ifthenelse{\equal{#1}{\empty}}{%
        \textField[\ui{border=invisible,textsize={#3},value={#5}}]{#2}{#4}{\FieldHeight pt}%
    }{%
        \textField[\ui{align={#1},border=invisible,textsize={#3},value={#5}}]{#2}{#4}{\FieldHeight pt}%
    }%
}

% Helper function
% Aligment, Name, Textsize, Width, Value
\newcommand{\TextInputSizeTwoLine}[5][\empty]{%
    \pgfmathsetmacro{\FieldHeight}{(1.167*#3-0.19)*2}%
    \ifthenelse{\equal{#1}{\empty}}{%
        \textField[\ui{autocenter=no,border=invisible,fieldflags={multiline,noscrolling},textsize={#3},value={#5}}]{#2}{#4}{\FieldHeight pt}%
    }{%
        \textField[\ui{autocenter=no,align={#1},border=invisible,fieldflags={multiline,noscrolling},textsize={#3},value={#5}}]{#2}{#4}{\FieldHeight pt}%
    }%
}

% creates a multiline Textfield
% TextSize, Name, Value
\newcommand{\CellTextFieldTwoLine}[3][11]{%
    \pgfmathsetmacro{\FieldHeightOffset}{-0.21*#1+0.08}%
    \raisebox{\FieldHeightOffset pt}{\TextInputSizeTwoLine[centered]{#2}{#1}{\linewidth-2pt}{#3}}%
}

% creates a multiline Textfield with ohter text style
% Textsize, Name, Value
\newcommand{\CellTextFieldTitleTwoLines}[3][0]{%
    \pgfmathsetmacro{\FieldHeight}{(1.130*#1-0.37)*2}%
    \pgfmathsetmacro{\FieldHeightOffset}{-0.21*#1+0.08}%
    \hspace*{-2pt}\raisebox{\FieldHeightOffset pt}{\textField[\ui{autocenter=no,border=invisible,fieldflags={multiline,noscrolling},textfont={CaslonAntique-Bold},textsize={#1},value={#3}}]{#2}{\linewidth-2pt}{\FieldHeight pt}}%
}

% creates a normal Textfield
% TextSize, Name, Width, Value
\newcommand{\CellTextFieldLeftAlign}[4][11]{%
    \pgfmathsetmacro{\FieldHeightOffset}{-0.21*#1+0.08}%
    \raisebox{\FieldHeightOffset pt}{\TextInputSize{#2}{#1}{#3}{#4}}%
}

\begin{document}
\footnotesize\normalfont\bfseries \extrarowheight3pt

\begin{tabularx}{\columnwidth}{p{0.3cm}<{\mbox{}\newline\mbox{}}|p{2.8cm}>{\tiny}X}
    \multicolumn{3}{l}{\Large Allgemeine Sonderfertigkeiten}
    \tabularnewline\hline%
    \CheckBox[name=Kulturkunde2,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{}&
    {Kulturkunde}&
    {Gesellschaftliche Interaktionen sind ohne zur Situation passenden Kulturkunde erschwert}%
    \tabularnewline%
    & \multicolumn{2}{l}{\CellTextFieldLeftAlign{Kulturkunde2}{\linewidth-0.4cm}{}}%
    \tabularnewline%
    \hline%
    \CheckBox[name=Ortskenntnis,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{}&
    {Ortskenntnis}&
    {Ortsbezogene Proben-7 im gewählten Gebiet}%
    \tabularnewline%
    & \multicolumn{2}{l}{\CellTextFieldLeftAlign{Ortskenntnis}{\linewidth-0.4cm}{}}%
    \tabularnewline%
    \hline%
    \CheckBox[name=AkklimatisierungHitze,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{}&
    {Akklimatisierung (Hitze)}&
    {erleidet durch außergewöhnliche Umgebungswärme keinen Schaden}%
    \tabularnewline
    \tabularnewline%
    \hline%
    \CheckBox[name=AkklimatisierungKälte,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{}&
    {Akklimatisierung (Kälte)}&
    {erleidet durch außergewöhnliche Umgebungskälte keinen Schaden}%
    \tabularnewline
    \tabularnewline%
    \hline%
    \CheckBox[name=Berufsgeheimnis,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{}&
    {Berufsgeheimnis}&
    {kennt ein Geheimnis der Handwerkskunst, ermöglicht Verwendung besonderer Herstellungsverfahren oder spezieller Materialien}%
    \tabularnewline%
    & \multicolumn{2}{l}{\CellTextFieldLeftAlign{Berufsgeheimnis}{\linewidth-0.4cm}{}}%
    \tabularnewline%
    \hline%
    \CheckBox[name=Fälscher,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{}&
    {Fälscher} &
    {ermöglicht das effektive Fälschen von Schriftstücken und Kunstwerken}%
    \tabularnewline
    \tabularnewline%
    \hline%
    \CheckBox[name=MeisterderImprovisation,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{}&
    {Meister der Improvisation}&
    {kann fehlendes Werkzeug durch Hilfsmittel kompensieren. Erschwernisse beim Ableiten von einen Handwerksstalent werden halbiert}%
    \tabularnewline
    \tabularnewline%
    \hline%
    \CheckBox[name=NandusgefälligesWissen,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{}&
    {Nandusgefälliges Wissen}&
    {ermöglicht Wissen aus verwandten Gebieten zu kombinieren; Erschwernisse beim Ableiten von einen Wissenstalent werden halbiert}%
    \tabularnewline
    \tabularnewline%
    \hline%
    \CheckBox[name=Geländekunde,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{}&
    {Geländekunde}&
    {Proben, die sich auf den Umgang mit diesem Gelände beziehen, sind um 3 Punkte erleichtert}%
    \tabularnewline%
    & \multicolumn{2}{p{\linewidth-0.3cm}}{\raggedright
        {Dschungel \CheckBox[name=Dschungel,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{} \hskip 1em}%
        {Eis \CheckBox[name=Eis,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{} \hskip 1em}%
        {Gebirge \CheckBox[name=Gebirge,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{} \hskip 1em}%
        {Höhle \CheckBox[name=Höhle,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{} \hskip 1em}%
        {Maraskan \CheckBox[name=Maraskan,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{} \hskip 1em}%
        {Meer \CheckBox[name=Meer,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{} \hskip 1em}%
        {Steppen \CheckBox[name=Steppen,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{} \hskip 1em}%
        {Sumpf \CheckBox[name=Sumpf,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{} \hskip 1em}%
        {Wald \CheckBox[name=Wald,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{} \hskip 1em}%
        {Wüste \CheckBox[name=Wüste,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{} \hskip 1em}%
    }%
    \tabularnewline%
    \hline%
    \CheckBox[name=CheckLeer,bordercolor=0.9 0.8 0.8, bordersep=0.1, backgroundcolor=, height=2ex,width=2ex]{}&
    \CellTextFieldTitleTwoLines[9]{NameLeer}{Leer}&
    \CellTextFieldTwoLine[7]{WirkungLeer}{Leer}%
    \tabularnewline
    \tabularnewline%
    \hline%
\end{tabularx}
\end{document}

enter image description here

You must log in to answer this question.

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