Ich versuche, einige T-Konten-Tabellen zu erstellen. Dies ist mein Code:
\documentclass[10pt,draft,oneside,titlepage]{report}
\usepackage[a4paper, left=2cm, right=2cm, top=1.5cm, bottom=1.5cm]{geometry}
\usepackage{ngerman}
\usepackage[natural,table]{xcolor}
\usepackage{float}
\usepackage[utf8]{inputenc}
\usepackage{etoolbox}
\newcommand{\tableTAccount}[4]{
\begin{figure}[H]
\caption{#1}
\scriptsize
\setlength{\tabcolsep}{3pt}
\begin{tabular}{
p{1.27cm}
p{0.69cm}
p{1.8cm}
p{2cm}
>{\raggedleft}p{1.55cm}|
p{1.27cm}
p{0.69cm}
p{1.8cm}
p{2cm}
>{\raggedleft}p{1.55cm}
}
\multicolumn{4}{l}{Soll} & \multicolumn{2}{c}{#2} & \multicolumn{4}{r}{Haben} \\ \hline
#3
\multicolumn{5}{r|}{} & \multicolumn{5}{r}{} \\
#4
\end{tabular}
\end{figure}
}
\newcommand{\addRowTTA}[2]{#1 & #2 \\}
\newcommand{\addRowEntryTTA}[5]{#1 & #2 & #3 & #4 & #5}
\newcommand{\addRowEmptyEntryTTA}{&&&&}
\newcommand{\addRowTTAResults}[3]{
\multicolumn{5}{r|}{#1} & \multicolumn{5}{r}{#2} \\
\multicolumn{5}{r|}{} & \multicolumn{5}{r}{#3} \\
}
\begin{document}
\tableTAccount
{T-Account}
{account}
{
\addRowTTA
{\addRowEmptyEntryTTA}
{\addRowEntryTTA{1}{2}{3}{4}{12.36}}
}
{\addRowTTAResults{0}{12.36}{12.36}}
\end{document}
ergebend:
! Misplaced \omit.
\multispan ->\omit
\@multispan
l.56 {\addRowTTAResults{0}{12.36}{12.36}}
Wenn ich folgende Zeilen vertausche
{\addRowEntryTTA{1}{2}{3}{4}{12.36}}
{\addRowEmptyEntryTTA}
es funktioniert. Aber ich möchte in der Lage sein, jede mögliche Kombination aus \addRowEntryTTA und \addRowEmptyEntryTTA zu verwenden, um mehrere \addRowTTA zu erstellen.
Wenn ich >{\raggedleft} nicht verwende, funktioniert es auch, aber ich brauche ein bestimmtes Layout.
Was ist die Fehlerursache?
Antwort1
\raggedleft
wird neu definiert \\
, sodass es sich um einen unregelmäßigen Textzeilenumbruch handelt, wodurch verhindert wird, dass es die Bedeutung „Ende der Tabellenzeile“ hat.
Verwenden Sie entweder \tabularnewline
anstelle von \\
, um die Tabellenzeile zu beenden (dies ist die gespeicherte normale Definition \\
innerhalb von Tabellen) oder verwenden Sie . \raggedleft\arraybackslash
Anschließend können Sie es \\
erneut als \arraybackslash
Neudefinition verwenden \\
, um die Array-/Tabellenbedeutung zu erhalten.