Im twocolum-Modus, also zweispaltigen Satz, verwende ich table* für breite Tabelle und figure* für breite Abbildungen, die beide Spalten überspannen. Jedoch landen sie immer auf der folgenden Seite oder am Ende des Dokuments - hier in der Mitte der Folgeseite:

\documentclass[twocolumn]{scrartcl}
\begin{document}
text

\begin{table*}[htb]
\centering
Inhalt
\caption{Erste Tabelle}
\end{table*}

mehr Text
\end{document}

Wie kriegt ich eine Tabelle hier platziert, auf der aktuellen Seite, entweder genau wie im Quellcode oder dann wenigstens oben oder unten auf derselben Seite? Verhält sich table* anders?

gefragt 28 Jul '13, 21:51

Helmut's gravatar image

Helmut
489161722
Akzeptiert-Rate: 100%

bearbeitet 28 Jul '13, 22:23

Soweit ich weiß, ist es durch die Art, wie die output routine von LaTeX2e implementiert ist, für die table*- und figure*-Umgebungen unmöglich, auf der Seite zu landen, auf der sie im Quelltext platziert sind. Die einzigen Optionen sind, wenn ich mich recht erinnere, t (top: oben auf der nächsten Seite) und p (float page: auf eigener Seite).

(28 Jul '13, 22:06) cgnieder

Das geht generell mit der Umgebung strip aus dem Paket »cuted«. Damit entfällt dann table* und Du musst auf den Befehl \captionof aus »KOMA-Script« zurückgreifen.

\documentclass[
  twocolumn,
  captions=tableabove,
  ngerman]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{selinput}
\SelectInputMappings{
  adieresis={ä},
  germandbls={ß}
}
\usepackage{babel}
\usepackage{cuted}
\usepackage{blindtext}

\begin{document}
  \blindtext

  \begin{strip}
    \captionof{table}{Erste Tabelle}
    \centering
    \rule{8cm}{4.5cm}
  \end{strip}

  \blindtext
\end{document}

Allerdings werden erst beide Spalten vor der Tabelle (oder Abbildung) aufgefüllt und der Text dann links darunter fortgeführt.

Da das in der Umgebung strip einbettete Objekt nicht gleitet, muss man sich vorher Gedanken machen, wo genau man es im Quelltext platziert. Das kann möglicherweise einen deutlich erhöhten Arbeitsaufwand bis zur Fertigstellung des Dokuments bedeuten.


alt text

Permanenter link

beantwortet 28 Jul '13, 22:15

Thorsten's gravatar image

Thorsten
1.6k325
Akzeptiert-Rate: 58%

bearbeitet 28 Jul '13, 22:20

Wow! Hab auch schon gegoogelt und dachte, es geht gar nicht. Super Tipp!

(28 Jul '13, 22:21) Helmut

Nett. Aber die Spaltenauffüllung fände ich als Leser ja extrem irritierend... Wenn mein obiger Kommentar stimmt, dann ist das aber wohl ein notwendiges Übel.

(28 Jul '13, 22:22) cgnieder

@Clemens: Ja, das habe ich mir auch gedacht. Dies ist aber die einzige mir bekannte Möglichkeit, auch nur halbwegs das gewünschte Ergebnis zu erzielen. Die Anordnung des Textes entbehrt aber nicht einer gewissen Logik. Man liest zunächst den Text über dem Objekt und nicht erst in der linken Spalte daran vorbei, nur um dann wieder über dem Objekt weiter zu lesen. Bei der herkömmlichen Lösung mit table* (oder figure*) wird dies gleich vermieden, in dem das Objekt am Kopf oder am Fuß der Seite platziert wird. Vielleicht sollte man im zweispaltigen Satz solche Objekte erst gar nicht verwenden.

(28 Jul '13, 22:32) Thorsten

Alternativ zur von @Thorsten gezeigten Lösung kann man auch das Paket multicol verwenden und für die spaltenübergreifende Tabelle oder Abbildung die multicols-Umgebung unterbrechen:

\documentclass[captions=tableabove,ngerman]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{selinput}
\SelectInputMappings{
  adieresis={ä},
  germandbls={ß}
}
\usepackage{babel}
\usepackage{multicol}
\usepackage{blindtext}

\begin{document}
\begin{multicols}{2}
  \blindtext
\end{multicols}

\noindent\begin{minipage}{\textwidth}\centering
  \captionof{table}{Erste Tabelle}
  \rule{8cm}{4.5cm}
\end{minipage}

\begin{multicols}{2}
  \blindtext
\end{multicols}
\end{document}

Vorteil dieser Methode ist, dass die Spalten am Ende der multicols-Umgebung ausgeglichen werden:

Darstellung einer Beispielseite

Sollte die Tabelle oder Abbildung nicht mehr auf die aktuelle Seite passen, landet sie automatisch auf der nächsten Seite. Allerdings fließt auch in diesem Fall der Text nicht zurück auf die vorherige Seite, sondern es entsteht auf der vorherigen Seite ein weißes Loch.

Es sei darauf hingewiesen, dass mit dem Paket multicol die Sternversionen figure* und table* und ggf. von zusätzlich definierten Gleitumgebungen in der Hinsicht etwas anders funktionieren als bei der Klassenoption twocolumn, dass die entsprechenden Objekte nicht nur frühestens auf der nächsten Seite ausgegeben werden. Darüber hinaus werden außerdem \dbltopfraction etc. ignoriert und stattdessen \topfraction etc. verwendet. h-Platzierung wird bei diesen Umgebungen von multicol nicht unterstützt. Darüber hinaus ändert das Paket die output-Routine von LaTeX, so dass es zu Problemen mit anderen Paketen kommen kann, die das ebenfalls tun. Ein bekanntes Beispiel für solche Kompatibilitätsprobleme wäre das Paket bigfoot.

Will man ausgeglichene Spalten auf der letzten Seite stattdessen mit cuted (siehe Antwort von @Thorsten) erreichen, so kann man zusätzlich das Paket flushend laden:

\documentclass[
  twocolumn,
  captions=tableabove,
  ngerman]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{selinput}
\SelectInputMappings{
  adieresis={ä},
  germandbls={ß}
}
\usepackage{babel}
\usepackage{cuted,flushend}
\usepackage{blindtext}

\begin{document}
  \blindtext

  \begin{strip}
    \captionof{table}{Erste Tabelle}
    \centering
    \rule{8cm}{4.5cm}
  \end{strip}

  \blindtext
\end{document}

Allerdings kann es hier geschehen, dass die linke Spalte eine Zeile kürzer wird als die rechte, was eher unüblich erscheint, für die Erkennung der Fortsetzung im Beispiel aber sogar von Vorteil ist:

Ergebnis mit kürzere Spalte links

Kompatibilitätsprobleme mit anderen Paketen, die ebenfalls in die output-Routine von LaTeX eingreifen sind auch hier möglich.

Grundsätzlich würde ich davon abraten, Tabellen, Abbildungen und andere Konsultationsobjekte innerhalb der Seite zu platzieren, da diese den Lesefluss stören. Bei mehrspaltig gesetzten Texten und Konsultationsobjekten, die mehrere Spalten überspannen, kommt das Problem hinzu, dass der Leser fast immer einige Zeit benötigt, um sich zu bezüglich der Frage zu orientieren, an welcher Stelle der Text fortgesetzt wird. Diese Orientierungsphase kann je nach Text nur einige Augenblicke oder sogar Minuten in Anspruch nehmen. Im Interesse des Lesers ist dies zu vermeiden.

In speziellen Fällen können – wie immer in der Typografie – solche massiven Unterbrechungen des Leseflusses auch gerechtfertigt sein. Dann und nur dann ist eine Abweichung von der allgemeinen Regel berechtigt.

Permanenter link

beantwortet 29 Jul '13, 08:33

saputello's gravatar image

saputello
11.1k154365
Akzeptiert-Rate: 51%

bearbeitet 29 Jul '13, 08:58

Diese doch sehr naheliegende Lösung wollte mir irgendwie nicht einfallen.

(29 Jul '13, 19:05) Thorsten
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×254
×32
×6

gestellte Frage: 28 Jul '13, 21:51

Frage wurde gesehen: 18,191 Mal

zuletzt geändert: 29 Jul '13, 19:06