Wie kann ich eine Tabelle erstellen, die sich über die Breite von zwei vertikalen (und gegenüberliegenden) A4-Seiten erstreckt?

Wie kann ich eine Tabelle erstellen, die sich über die Breite von zwei vertikalen (und gegenüberliegenden) A4-Seiten erstreckt?

Ich muss eine große (breite) Tabelle setzen. Normalerweise verwende ich für meine Tabellen den folgenden Code, mit dem ich die Breite jeder Spalte in der Tabelle festlegen kann. Allerdings muss ich dafür sorgen, dass die Summe der Spaltenbreiten auf eine Seite passt.

\documentclass[12pt, a4paper]{article} 
\usepackage{booktabs, array}

\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}

\begin{document}
\begin{table}
\begin{tabular}{C{2cm}  C{2cm} C{2cm} C{2cm}  C{2cm} C{2cm}}
\toprule

~ & \textbf{Column 1} & \textbf{Column 2} & \textbf{Column 3} & \textbf{Column 4} & \textbf{Column 5}  \\
\textbf{Row 1} & Text (1,1) & Text (1,2) & Text (1,3) & Text (1,4) & Text (1,5)  \\
\textbf{Row 2} & Text (2,1) & Text (2,2) & Text (2,3) & Text (2,4) & Text (2,5)  \\
\textbf{Row 3} & Text (3,1) & Text (3,2) & Text (3,3) & Text (3,4) & Text (3,5)  \\
\textbf{Row 4} & Text (4,1) & Text (4,2) & Text (4,3) & Text (4,4) & Text (4,5)  \\
\textbf{Row 5} & Text (5,1) & Text (5,2) & Text (5,3) & Text (5,4) & Text (5,5)  \\
\textbf{Row 6} & Text (6,1) & Text (6,2) & Text (6,3) & Text (6,4) & Text (6,5)  \\

 \bottomrule

\end{tabular}
\caption{This is a table}
\end{table}
\end{document}

Ich möchte eine sehr breite Tabelle erstellen, die sich über die Breite von 2 vertikalen A4-Seiten erstreckt

(Ich schreibe ein Dokument, das zwei Seiten eines Blattes verwendet, und ich möchte, dass die linke Ecke meiner Tabelle auf einer geraden Seitenzahl liegt und die rechte Ecke der Tabelle auf der gegenüberliegenden Seite.)

Deshalb sollte auf der linken Seite kein rechter Rand und auf der rechten Seite kein linker Rand vorhanden sein, damit die Tabelle über die Breite der beiden A4-Seiten durchgehend ist.

Ist das möglich?

Antwort1

Ich begann mit meiner Antwort beiWie erstelle ich 6 parallele, nach Absätzen ausgerichtete Texte mit jeweils 3 Texten auf jeder Seite?als Grundlage, es mussten jedoch einige Änderungen vorgenommen werden.

Das Einfachere ist, dass ich mir bei der Abfrage dieses OP keine Gedanken über Zeileneinträge unterschiedlicher Höhe machen muss. Das Negative ist jedoch, dass ich den Code erheblich umschreiben musste, um 10 oder mehr Spalteneinträge verarbeiten zu können (da dies #10nicht funktioniert). Zu diesem Zweck habe ich keine unterschiedlichen Spalteneinträge als Argumente übergeben, sondern meinen eigenen Tab-Parsing-Code geschrieben, sodass die Zeile eingegeben werden konnte, als wäre sie eine Tabellenzeile.

Ich habe weiterhin Herberts Codeausschnitt für die Verarbeitung tabellarischer Token innerhalb eines verwendet \whiledound einen Ausschnitt von Stephan Lehmke hinzugefügt, um die Tabelle im -Modus auf einer geraden Seitenzahl zu beginnen twoside.

Als Bonusfunktion erlaube ich nicht nur, den Code über linke/rechte Seiten aufzuteilen, sondern auch vertikal, für besonders lange Tabellen. Die Syntax dient \newtwopagetablezum Initialisieren des Prozesses. Dann werden einzelne Zeilen hinzugefügt, \tenbyrow{}wobei das Argument eine durch - getrennte Liste von zehn Einträgen ist &(für andere Spaltennummerneinträge ist dies eine geringfügige Umschreibung). Wenn alle Daten auf diese Weise eingegeben wurden, haben Sie schließlich zwei Möglichkeiten:

\newtwopagetable{caption}

gibt die gesamte Tabelle auf zwei Seiten aus; oder

\maketwopagetable[4]{caption}
\maketwopagetable[4]{caption}

teilt die zweiseitige Tabelle ebenfalls in vertikale Teile auf, wie oben als vier Zeilen auf der ersten Doppelseite und vier Zeilen auf der zweiten Doppelseite dargestellt.

Hier ist der Quellcode:

\documentclass[twoside]{article}% TABLE CLEARS TO EVEN PAGE
%\documentclass{article}% TABLE CLEARS TO NEXT PAGE
\usepackage{booktabs, array}
\usepackage{ifthen}
\usepackage{etoolbox}

\makeatletter%%%%%%%%%%% My own tab parsing code

\newcounter{TABcellindex@}

\newcommand\readTABrow[2]{%
  \def\doneTABread{F}%
  \def\postTAB{#2}%
  \setcounter{TABcellindex@}{0}%
  \whiledo{\equal{\doneTABread}{F}}{%
    \stepcounter{TABcellindex@}%
    \expandafter\processTAB\postTAB&\\%
    \ifthenelse{\equal{\preTAB}{}}{%
      \addtocounter{TABcellindex@}{-1}%
      \def\doneTABread{T}%
    }{%
      \expandafter\protected@edef\csname #1\alph{TABcellindex@}\endcsname{%
        \preTAB}%
    }%
  }%
% \#1TABcells GIVES HOW MANY TAB COLUMNS WERE PROCESSED
%  \expandafter\xdef\csname #1TABcells\endcsname{\arabic{TABcellindex@}}%
}

\def\processTAB#1&#2\\{%
  \protected@edef\preTAB{#1}%
  \protected@edef\postTAB{#2}%
}

\makeatother%%%%%%%%%%% END My own tab parsing code

\makeatletter%%%%%%%%%%% Herbert's tabular token code
\newcounter{tabindex}
\newtoks\@tabtoks
\newcommand\addtabtoks[1]{%
  \@tabtoks\expandafter{\the\@tabtoks\stepcounter{tabindex}#1}}
\newcommand*\resettabtoks{\@tabtoks{}}
\newcommand*\synctabindex[1]{\setcounter{tabindex}{\value{#1}}}
\newcommand*\printtabtoks{\the\@tabtoks}
\makeatother%%%%%%%%%%% END Herbert's tabular token code

\makeatletter%%%%%%% Lehmke's \cleartoleftpage
\def\cleartoleftpage{\clearpage\if@twoside \ifodd\c@page
\hbox{}\newpage\if@twocolumn\hbox{}\newpage\fi\fi\fi}
\makeatother
\makeatother%%%%%%%% END Lehmke's \cleartoleftpage


\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}

\newcounter{sptstartrow}
\newcounter{sptendrow}
\newcounter{entries}

\newcommand\newtwopagetable{%
  \setcounter{sptendrow}{0}%
  \setcounter{entries}{0}%
  \cleartoleftpage%
}

\makeatletter
\newcommand\tenbyrow[1]{%
  \stepcounter{entries}%
  \readTABrow{entryX\roman{entries}X}{#1}%
}
\makeatother
\newcounter{index}
\newcommand\maketwopagetable[2][\theentries]{%
  \setcounter{sptstartrow}{\thesptendrow}%
  \ifthenelse{\thesptstartrow > 1}%
    {\addtocounter{table}{-1}\def\conttext{, continued}}%
    {\def\conttext{}}%
  \addtocounter{sptendrow}{#1}%
  \ifthenelse{\thesptendrow > \theentries}{\setcounter{sptendrow}{\theentries}}{}%
  \clearpage
  \setcounter{index}{\thesptstartrow}%
  \synctabindex{index}
  \resettabtoks%
  \whiledo{\theindex < \thesptendrow}{%
    \stepcounter{index}%
    \addtabtoks{%
      \csname entryX\roman{tabindex}Xa\endcsname &
      \csname entryX\roman{tabindex}Xb\endcsname &
      \csname entryX\roman{tabindex}Xc\endcsname & 
      \csname entryX\roman{tabindex}Xd\endcsname &
      \csname entryX\roman{tabindex}Xe\endcsname 
      \\%
    }%
  }%
  \begin{table}
  \centering
  \begin{tabular}{C{2cm}  C{2cm} C{2cm} C{2cm} C{2cm}}
   \toprule

   \printtabtoks%

   \bottomrule
  \end{tabular}%
  \caption{#2 (left half\conttext)}
  \end{table}%
  \addtocounter{table}{-1}%
  \clearpage
  \setcounter{index}{\thesptstartrow}%
  \synctabindex{index}
  \resettabtoks%
  \whiledo{\theindex < \thesptendrow}{%
    \stepcounter{index}%
    \addtabtoks{%
      \csname entryX\roman{tabindex}Xf\endcsname &
      \csname entryX\roman{tabindex}Xg\endcsname &
      \csname entryX\roman{tabindex}Xh\endcsname &
      \csname entryX\roman{tabindex}Xi\endcsname &
      \csname entryX\roman{tabindex}Xj\endcsname 
      \\%
    }%
  }%
  \begin{table}
  \centering
  \begin{tabular}{C{2cm}  C{2cm} C{2cm} C{2cm} C{2cm}}
   \toprule

   \printtabtoks%

   \bottomrule
  \end{tabular}%
  \caption{#2 (right half\conttext)}
  \end{table}%
}

\begin{document}
\newtwopagetable
\tenbyrow%
{~ & \textbf{Column 1} & \textbf{Column 2} & \textbf{Column 3} &
\textbf{Column 4} & \textbf{Column 5} & \textbf{Column 6} &
\textbf{Column 7} & \textbf{Column 8} & \textbf{Column 9}}
\tenbyrow%
{\textbf{Row 1} & Text (1,1) & Text (1,2) & Text (1,3) & Text (1,4)
& Text (1,5) & Text (1,6) & Text (1,7) & Text (1,8) & Text (1,9)}
\tenbyrow%
{\textbf{Row 2} & Text (2,1) & Text (2,2) & Text (2,3) & Text (2,4)
& Text (2,5) & Text (2,6) & Text (2,7) & Text (2,8) & Text (2,9)}
\tenbyrow%
{\textbf{Row 3} & Text (3,1) & Text (3,2) & Text (3,3) & Text (3,4)
& Text (3,5) & Text (3,6) & Text (3,7) & Text (3,8) & Text (3,9)}
\tenbyrow%
{\textbf{Row 4} & Text (4,1) & Text (4,2) & Text (4,3) & Text (4,4)
& Text (4,5) & Text (4,6) & Text (4,7) & Text (4,8) & Text (4,9)}
\tenbyrow%
{\textbf{Row 5} & Text (5,1) & Text (5,2) & Text (5,3) & Text (5,4)
& Text (5,5) & Text (5,6) & Text (5,7) & Text (5,8) & Text (5,9)}
\tenbyrow%
{\textbf{Row 6} & Text (6,1) & Text (6,2) & Text (6,3) & Text (6,4)
& Text (6,5) & Text (6,6) & Text (6,7) & Text (6,8) & Text (6,9)}
\tenbyrow%
{\textbf{Row 7} & Text (7,1) & Text (7,2) & Text (7,3) & Text (7,4)
& Text (7,5) & Text (7,6) & Text (7,7) & Text (7,8) & Text (7,9)}
\maketwopagetable{This is a table}

\newtwopagetable
\setcounter{entries}{8}% THIS IS TO FOOL LaTeX INTO THINKING I RE-ENTERED THE TABLE DATA
\maketwopagetable[4]{This is a vertically split table}
\maketwopagetable[4]{This is a vertically split table}

\end{document}

Hier die vollständige Tabellenausgabe auf einer Doppelseite:

Bildbeschreibung hier eingeben

Hier sehen Sie die Tabelle, aufgeteilt in Breite und Länge, als Ausgabe auf den nächsten vier Seiten. Beachten Sie, dass der (left/right half, continued)Kommentar von bereitgestellt wird \maketwopagetableund nicht Teil des Untertitelarguments des Benutzers ist.

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

verwandte Informationen