我怎样才能在 LaTeX 中创建这样的表格?
我尝试了以下方法:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{tabularx,caption,booktabs}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\begin{document}
\begin{figure}[htbp]
\captionsetup{justification=raggedright, margin=1cm}
\begin{tabular}{|L{4cm}C{2cm}|L{4cm}C{2cm}|}
\midrule
\textbf{Aktiva} & in \% der Bilanzsumme & \textbf{Passiva} & in \% der Bilanzsumme \tabularnewline
\midrule
Immaterielle Vermögensgegenstände & 1,98 \% & Eigenkapital (einschließlich Rücklagen, Gewinnvortrag, anteiliger Sonderposten mit Rücklageanteil; abzüglich Berichtigungsposten zum Eigenkapital) & 29,87 \\
Sachanlagen & 23,40 & Rückstellungen (einschließlich anteiliger Sonderposten mit Rücklageanteil) & 16,89 \\
\end{tabular}
\end{figure}
\end{document}
我的问题是我不知道如何格式化表格,以便左侧的两列与右侧的两列相互独立。换句话说,我希望“Sachanlagen”行直接位于“Immaterielle Vermögensgegenstände”下方。
提前感谢大家!
答案1
不错的选择土拨鼠答案。使用类似的想法来制作两个独立的列对(带有嵌套表),但是使用tabularx
、siunitx
和ragged2e
包。
编辑:为嵌套表定义新环境
\newenvironment{intab}
{
\tabularx{\linewidth}[t]{L|S[table-format=3.2,
table-column-width=8ex]}
}
{
\endtabularx
}
完整的表格代码变得更短更简单:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{siunitx}
\usepackage{ragged2e}
\usepackage{makecell, tabularx}
\renewcommand\theadfont{\footnotesize\bfseries}
\renewcommand\theadgape{}
\newcolumntype{L}{>{\RaggedRight}X}
\usepackage[skip=1ex]{caption}
\newenvironment{intab}
{
\tabularx{\linewidth}[t]{L|S[table-format=3.2,
table-column-width=8ex]}
}
{
\endtabularx
}
%-------------------------------- show page layout, only for test
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\begin{document}
\begin{table}[htbp]
\renewcommand\arraystretch{1.5}
\small
\begin{tabular*}{\linewidth}{|@{}*{2}{p{\dimexpr0.5\linewidth-\arrayrulewidth\relax}@{}|@{}}
@{}}
\Xhline{1pt}
\begin{intab}
\thead[tl]{Aktiva} & {\makecell[tl]{in \% der\\ Bilanz-\\summe}} \\
\end{intab}
& \begin{intab}
\thead[tl]{Passiva} & {\makecell[t]{in \% der\\ Bilanz- \\summe}} \\
\end{intab} \tabularnewline
\Xhline{0.5pt}
\begin{intab}
Immaterielle Vermögensgegenstände & 1,98 \\
Sachanlagen & 23,40 \\
\rule{0pt}{5.5\baselineskip} & \\
\end{intab}
& \begin{intab}
Eigenkapital (einschließlich Rücklagen, Gewinnvortrag, anteiliger Sonderposten mit Rücklageanteil; abzüglich Berichtigungsposten zum Eigenkapital)
& 29,87 \\
Rückstellungen (einschließlich anteiliger Sonderposten mit Rücklageanteil)
& 16,89 \\
\end{intab} \tabularnewline
\hline
\hline
\begin{intab}
Bilanzsumme & 100,00 \\
\end{intab}
& \begin{intab}
Bilanzsumme & 100,00 \\
\end{intab} \tabularnewline
\Xhline{1pt}
\end{tabular*}
\end{table}
\end{document}
答案2
好的,我误解了你的问题。要使左右行独立,只需将它们分成两个单独的表即可。我还添加了 dcolumns,以确保数字在逗号处对齐(并使用b
类型列,使数字与长文本的底部对齐)。
\documentclass{article}
\usepackage{dcolumn}
\usepackage{tabularx}
\newcolumntype{L}[1]{>{\raggedright\arraybackslash}p{#1}}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\begin{document}
\newcolumntype{,}{D{,}{,}{2}}
\centerline{
\begin{tabular}{|@{}b{7.9cm}|@{}b{7.9cm}|}
\hline
\begin{tabular}{b{5.75cm}|,}
\textbf{Aktiva} & \multicolumn{1}{p{1.5cm}}{in \%\ der Bilanzsumme} \\
\hline
text & 1,00 \\
some very long text with a lot of items and explanations and references to ducks
& 4,20 \\
\end{tabular}&
\begin{tabular}{b{5.75cm}|,}
\textbf{Aktiva} & \multicolumn{1}{p{1.5cm}}{in \%\ der Bilanzsumme} \\
\hline
text & 1,30 \\
text
& 2,20 \\ \\ \\
\end{tabular}\\
\hline
\hline
\begin{tabular}{b{5.75cm}|,}
Bilanzsumme & \multicolumn{1}{p{1.5cm}}{\raggedleft 100,00} \\
\end{tabular}&
\begin{tabular}{b{5.75cm}|,}
Bilanzsumme & \multicolumn{1}{p{1.5cm}}{\raggedleft 100,00} \\
\end{tabular}\\
\hline
\end{tabular}}
\end{document}