我想创建一个表格,其中所有行的高度都相同,而不管它们实际上有多少行文本。如果一行/单元格的最大数量是三行,则如果有三行,则所有行都应该具有高度。在实际项目中,所有 latex 文件/文本内容都是使用脚本动态创建的,手动调整各行不是解决方案。
我尝试了不同的解决方案,这些解决方案是我在 stackexchange 上通过下面的示例表找到的,但它们都没有完全起作用。
下面的代码是一个精简的示例,其中包含我想要实现的基本布局
\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}
答案1
我并没有试图让它变得完美。但有几点需要注意:不要将外部字体大小设置为 \tiny,这会导致表格内部间距非常差。始终使用较大的字体大小。
有些“行”实际上由两行组成。如果想要统一的外观,则必须在所有地方添加第二行。
\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}