PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : supertabular multicols



blumenkind
17-08-2008, 18:39
Hallo!
Ich schreibe gerade meine Diplomarbeit mit Latex. Jetzt stehe ich vor dem Problem, dass ich im Anhang eine super lange, aber schmale Tabelle einfuegen muss. Eigentlich schreibe ich in \onecolumn, aber auf Grund der Laenge der Tabelle moechte ich dafuer auf \twocolumn umstellen. Die Kapitelueberschrift und der erste Absatz des Anhangs sollen aber noch \onecolumn sein bevor die Tabelle dann kommt.
Urspruenglich hatte ich erst \longtable, doch dann habe ich herausgefunden, dass \longtable nicht mit \twocolumn funktionert. deshalb bin ich auf \supertabular umgestiegen.
\twocolumn hat aber den Nachteil, dass es zwar tatsaechlich die Tabelle in 2 Spalten erstellt, aber automatisch eine neue Seite anfaengt, was ich ja nicht moechte. Da steht ja nur die Uebershrift und drei Zeilen Text ueber der Tabelle.
Mit \multicols faengt die Tabelle zwar auf der Seite an, wird aber nicht in zwei Spalten geschrieben.
Inzwischen weiss ich nicht mehr weiter, und mein google-Finger versagt.
Weiss einer von euch eine Loesung?

Hier ein Minimalbeispiel:

\documentclass[12pt,a4paper,twoside,openright]{book}

\usepackage[UKenglish]{babel}
\usepackage{multicol}
%\usepackage{longtable}
\usepackage{supertabular}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{colortbl}
\usepackage{hhline}

\begin{document}

bla bla bla hauptteil

\clearpage\null\cleardoublepage
\setcounter{page}{1}
\pagenumbering{roman}
\chapter*{Appendices}
\addcontentsline{toc}{chapter}{Appendices}
\markboth{Appendices}{Appendices}
\renewcommand{\thesection}{\Alph{section}}
\section{erster teil des anhangs}
In the following table tralala

\twocolumn
%\begin{multicols}{2}[]

{\scriptsize
\begin{center}
\tablehead{%
\hline
No. & Date & Time & $\varphi_{N}$ & $\lambda_{N}$ & $\varphi_{S}$ & $\lambda_{S}$ \\ \hhline{=======}}
\tabletail{\hline}
\begin{supertabular}{|r|c|c|c|c|c|c|} \\
1 & 09.05. & 18 & 18 & 11 & & \\ \hline
& 10.05. & 00 & 17 & 9 & 8 & 8 \\ \hline
& & 06 & 16 & 6 & 7 & 7 \\ \hline
& & 12 & 16 & 5 & 7 & 6 \\ \hline
& & 18 & 16 & 4 & 7 & 3 \\ \hline
& 11.05. & 00 & 17 & 4 & 6 & 2 \\ \hline
& & 06 & 18 & 4 & 6 & 1 \\ \hline
& & 12 & 19 & 3 & 5 & 0 \\ \hline
& & 18 & 20 & 1 & 5 & -1 \\ \hline
& 12.05. & 00 & 20 & 0 & 7 & -3 \\ \hline
& & 06 & 18 & 0 & 7 & -6 \\ \hline
usw.
\end{supertabular}
\end{center}
}

%\end{multicols}
\onecolumn

\section{zweiter teil des anhangs}
bla

\end{document}

cookie170
17-08-2008, 19:59
Hallo
und willkommen im Forum.

Schreib' die Tabelle in eine eigene Datei und lass oben auf der ersten Seite Platz für die Überschrift und die gewünschten Zeilen (\vspace*{10\baselineskip} oder so). Stelle aus der Datei ein pdf her, ohne Seitenzahlen, also \pagestyle{empty}. Lass' auf allen Seiten Platz für z.B. Kopf- und Fußzeilen.

Lade das pdf mit \includepdf aus dem Paket pdfpages an der gewünschten Stelle in Dein Hauptdokument. Meiner Erinnerung nach muss man bei \includepdf die Option pages=- einfügen, damit alle Seiten der Datei abgedruckt werden.

Andere Lösungen bieten sich natürlich auch an, z.B. die Tabelle an sich in zwei Hauptkolummnen zu setzen. Nur die von Dir gewünschte Lösung eines Hacks von supertabular kann ich leider nicht bieten.

Gruß,
Alexander

blumenkind
18-08-2008, 08:05
hallo alexander!
dein tipp klappt zwar insofern, dass ich jetzt wieder die tabelle ueber 2 spalten hinweg habe, wie schon mit \twocolumn, allerdings habe ich auch dasselbe problem, naemlich dass das die tabelle auf der naechsten seite anfaengt. auch wenn ich sie skaliere.
zudem fehlt jetzt natuerlich die kopfzeile mit der seitenzahl etc. gut, die koennte ich sicherlich irgendwie reinpfuschen, aber das hauptproblem bleibt leider: wie kriege ich die tabelle dazu auf der seite anzufangen, wo auch die ueberschrift steht?
lg,
sonja

cookie170
18-08-2008, 11:14
Hallo Sonja,

ok, das sehe ich ein. Das bedeutet also, dass man die erste Seite der Tabelle mit \includegraphics (graphicx-Paket) setzen muss und erst die folgenden Seiten bequem mit \includepdf.

Wenn Du Zeit hast, ein kleines, lauffähiges Beispiel zu liefern -- einfach eine längere Tabelle, so, wie Du sie brauchst, ohne das ganze Anhangsgesummse und die paar Zeilen Eingangstext, den Text der Kopfzeile, die verwendete Dokumentenklasse --, dann wird hier der eine oder andere erwägen, Dich zu unterstützen bei Bastelarbeiten.

Gruß,
Alexander

blumenkind
18-08-2008, 12:36
also,
im anhang jetzt endlich das geschrumpfte diplomarbeit und die tabelle.
habe erst mal alle packages drinn gelassen, vielleicht kollidieren die ja irgendwie...
lg
sonja

cookie170
18-08-2008, 14:36
Hallo Sonja,

wie gesagt, Deine Tabelle gibt eine eigene Datei. Um auf der ersten Seite den notwendigen Platz nach oben zu gewinnen, habe ich eine Kapitelüberschrift ohne Text mit einem vertikalen Leerraum von drei Zeilen eingefügt, den Du natürlich anpassen kannst.


\documentclass[12pt, twocolumn, oneside]{book}

\usepackage[UKenglish]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern, supertabular, graphicx, color, array, booktabs, colortbl, multirow, hhline}


\begin{document}
\chapter*{\vspace*{3\baselineskip}}
{\tiny
\begin{center}
\tablehead{%
\hline
No. & Date & Time & $\varphi_{N}$ & $\lambda_{N}$ & $\varphi_{S}$ & $\lambda_{S}$ \\
& & [UTC] & [$^\circ$N] & [$^\circ$] & [$^\circ$N] & [$^\circ$] \\ \hhline{=======}}
\tabletail{\hline}
\begin{supertabular}{|r|c|c|c|c|c|c|} \\line

. . .
\end{supertabular}
\end{center}
}

\end{document}


Dann habe ich die Tabelle in die Hauptdatei eingebaut. Die erste Seite als Graphik, die wiederum steht in einem Bild, damit ich sie beliebig über die Seite verschieben kann.


\documentclass[12pt,a4paper,twoside,openright]{book}

\usepackage[UKenglish]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{float}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{graphicx}
\usepackage{rotating}
\usepackage{subfigure}
\usepackage{color}
\usepackage{hhline}
\usepackage{t1enc}
\usepackage{textcomp}
\usepackage{latexsym}
\usepackage{url}
\usepackage{amsmath,amsfonts,amssymb,amsxtra,mathp tm}
\usepackage{units}
\usepackage{appendix, pdfpages}

\usepackage{geometry}
\geometry{a4paper,inner=25mm,outer=35mm,bottom=26m m,top=20mm,bindingoffset=2mm,includehead,includefo ot}
\parskip1em
\parindent0mm
\usepackage{setspace}
\setstretch{1.05}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\renewcommand{\chaptermark}[1]{\markboth{\thechapter\ #1}{}}
\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}}
\rhead[\textsc{\leftmark}]{\textsc{\thepage}}
\lhead[\textsc{\thepage}]{\textsc{\rightmark}}
\chead{}
\renewcommand{\headrulewidth}{0.3pt}
\fancypagestyle{plain}{\fancyhf{} \fancyhead[LE,RO]{} \renewcommand{\headrulewidth}{0pt}}
\usepackage[font=footnotesize,labelfont=bf,format=hang]{caption}

\begin{document}
\chapter*{Appendices}
\markboth{Appendices}{Appendices}
\renewcommand{\thesection}{\Alph{section}}
\section{Waves 2006}
\markright{A Waves 2006}
Latitude $\varphi$ and longitude $\lambda$ of the northern (index $_{N}$) and southern (index $_{S}$) vortices are listed in 6-hourly time steps; mergence of two vortices is marked with a 'v'.
% \twocolumn
\setlength\unitlength{1cm}
\begin{picture}(0,0)(16,18)
\includegraphics{table.pdf}
\end{picture}
\includepdf[pages=2-]{table.pdf}


% \onecolumn
\end{document}

Ich weiß, elegant ist anders, aber es tut.

Gruß,
Alexander

blumenkind
18-08-2008, 15:55
Hallo!
Inzwischen hat mir ein Maeuschen gefluestert wie man das Problem das \multicols mit \supertabular hat auch umgehen kann.:D
Man bastele sich ein Skript, dass die mega-Tabelle in einzelne Teiltabellen zerlegt, die in der tabular Umgebung gesetzt werden. Dabei laesst man die ersten 2 Teiltabellen um so viel Zeilen kuerzer sein, wie die Ueberschrift und die paar Zeilen Text zusammen benoetigen die ueber der Tabelle stehen sollen. Dann muss man nur noch die Tabellenteile im fragmented_table.tex ganz normal im doc.tex einfuegen:


\begin{multicols}{2}
\begin{center}
\input{fragmented_table}
\end{center}
\end{multicols}
Et voila!
So ist es glaube ich am einfachsten.
lg,
Sonja

cookie170
18-08-2008, 16:26
Für andere, die das gleiche Problem haben, poste doch mal das script,

Gruß,
Alexander

blumenkind
18-08-2008, 16:43
wird prompt gemacht:


#!/usr/bin/env python

# note: within strings, any single '\' must be escaped as '\\'

tablebegin = """
\\begin{tabular}{|r|r|r|}
"""

tablehead = """
\\hline
namecolumn1 & namecolumn2 & namecolumn3 \\\\
\\hhline{===}
"""

tableend = """
\\end{tabular}
"""

# parameters for adjusting the subtables
numcolumns = 2
linesonfirstpage = 45
linesonrestpages = 78

# the original table shouldn't contain any preamble just the data, one text-line per table-line
source = open('table_original.tex' , 'r')
lines = source.readlines()
source.close()

f = open('table_fragmented.tex', 'w')

# create first page
for cols in range(numcolumns):
f.write(tablebegin)
f.write(tablehead)
tab = lines[0:linesonfirstpage]
del lines[0:linesonfirstpage]
for st in tab: f.write(st)
f.write(tableend)

# create further pages
while len(lines) > 0:
f.write(tablebegin)
f.write(tablehead)
tab = lines[0:linesonrestpages]
del lines[0:linesonrestpages]
for st in tab: f.write(st)
if len(lines) == 0: f.write("\\hline")
f.write(tableend)

f.close()

ein table_original.tex koennte so aussehen:


1 & a & 0.345 \\ \hline
& b & 1.65 \\ \hline
2 & a & 3565 \\ \hline
& b & 234 \\ \hline
3 & a & 54.6 \\ \hline
& b & 0.008 \\

rafael
21-08-2008, 05:19
Ich habe das gleiche Problem wie blumenkind.
Allerdings habe ich die Lösung noch nicht ganz begriffen. Wer kann mir helfen?
Für ein profanes Kochbuch will ich die jeweiligen Zutaten in zweispaltigem Text in einer zweispaltigen Tabelle auflisten, um Platz nach unten zu sparen.

Ich habe mal zwei Minimalbeispiele erstellt

Mit "longtable" kommt die bereits beschriebene Fehlermeldung:


\documentclass[12pt,a4paper]{scrbook}
\usepackage[latin1]{inputenc} % Umlaute verwenden ist toll
\usepackage[ngerman]{babel} % deutsche Sprache
\usepackage{multicol} % mehrere Spalten
\newenvironment{Zutaten}%die Zutatenumgebung
% Überschrift: Zutaten
% zweispaltiger Text
%beginne Tabelle mit: links gar kein Abstand (@{}), eine Spalte
{ \large \textbf{Zutaten:}
\normalsize
\begin{multicols}{2}
\begin{longtable}
{@{} p{.13\textwidth} @{\hskip .02\textwidth} p{.75\textwidth} @{}}%
% Ende des Abschnitts: mach die Tabelle zu und einen Abstand
}
{\end{longtable} \end{multicols} \vskip 0.2cm
}
\begin{document}
\part{Vorspeisen und Vorsuppen}
\begin{Zutaten}
500g & Mehl \\
2 & Eier \\
3 & Träume
\end{Zutaten}

\end{document}


mit der einfachen tabularumgebung klappt es zwar, aber die zweite Textspalte wird nicht verwendet:


\documentclass[12pt,a4paper]{scrbook}
\usepackage[latin1]{inputenc} % Umlaute verwenden ist toll
\usepackage[ngerman]{babel} % deutsche Sprache
\usepackage{multicol} % mehrere Spalten
\newenvironment{Zutaten}%die Zutatenumgebung
% Überschrift: Zutaten
% zweispaltiger Text
%beginne Tabelle mit: links gar kein Abstand (@{}), eine Spalte
{ \large \textbf{Zutaten:}
\normalsize
\begin{multicols}{2}
\begin{tabular}
{@{} p{.13\textwidth} @{\hskip .02\textwidth} p{.75\textwidth} @{}}%
% Ende des Abschnitts: mach die Tabelle zu und einen Abstand
}
{\end{tabular} \end{multicols} \vskip 0.2cm
}
\begin{document}
\part{Vorspeisen und Vorsuppen}
\begin{Zutaten}
500g & Mehl \\
2 & Eier \\
3 & Träume
\end{Zutaten}

\end{document}


Wie kann das Problem einfach gelöst werden?

cookie170
21-08-2008, 09:58
Hallo Rafael,

ich verstehe leider nicht, wofür Du die Tabelle brauchst. Ich würde die Zutatenliste mit multicol und einer einfachen Liste setzen, beispielsweise "compactitem" aus dem paralist-Paket.

Gruß,
Alexander

thongor
22-08-2008, 04:25
Ein Hinweis (http://groups.google.de/group/de.comp.text.tex/msg/40d45cdc177412d0?hl=de) zu dem Thema.

rafael
23-09-2008, 16:50
Sorry da ich nicht geantwortet habe. Habe vergessen, das Thema zu abonieren. Ich brauche die Tabelle für zweisprachigen Text- links deutsch rechts slowakisch. Ich bin mittlerweile auf ein anderes Package gestoßen: Parallel. Das zaubert mir alles genauso wie ich es haben will. Auf die zweispaltigen Zutaten habe ich aber doch verzichtet. Leider habe ich durch beruflichen Stress noch nicht so viele Möglichkeiten gehabt, das Buch fertig zu bekommen. Jetzt steht wenigstens das Layout.Trotzdem vielen Dank für eure Bemühungen.