52 Stimmen

Zentrieren einer Tabelle, die breiter ist als die Textspalte

Ich füge eine Tabelle in meinem LaTeX-Dokument ein und die Zentrierung funktioniert gut, wenn die Tabelle nicht breiter ist als die Textspalte darüber. Wenn die Tabelle jedoch breiter ist, klebt die linke Seite der Tabelle an der linken Seite der Textspalte und die zusätzliche Breite der Tabelle befindet sich auf der rechten Seite der Seite. Wie kann ich die Tabelle zentrieren?

42voto

godbyk Punkte 8061

Ich würde empfehlen, das chngpage Paket auszuprobieren.

\documentclass{article}

% erlaubt vorübergehende Anpassung der Seitenränder
\usepackage{chngpage}

% bietet Platzhaltertext
\usepackage{lipsum}

% macht die Tabelle einfach schöner (siehe \toprule, \bottomrule usw. Befehle unten)
\usepackage{booktabs}

\begin{document}

\lipsum[1]% nur ein Absatz mit Platzhaltertext

\medskip% fügt etwas Platz vor der Tabelle hinzu
\begin{adjustwidth}{-1in}{-1in}% passt die L- und R-Ränder um 1 Zoll an
  \begin{tabular}{ll}
    \toprule
    Sequenz & Breite Spalte \\
    \midrule
    Erste & Vestibulum porta ultricies felis. In nec mi. \\
    Zweite & Nam vestibulum auctor nibh. In eleifend, 
    lacus id tristique ullamcorper, mauris urna convallis elit. \\
    Dritte & Ut luctus nisi quam lobortis magna. Aenean sit amet odio 
   et sapien rutrum lobortis. \\ 
    Vierte & Integer dictum accumsan purus. Nullam erat ligula,
    dictum sed, feugiat nec, faucibus id, ipsum. \\
    \bottomrule

``

Die Dokumentation für das chngpage Paket befindet sich am Ende der chngpage.sty Datei. Ich habe die Dokumentation für die adjustwidth Umgebung herausgezogen:

In einer adjustwidth Umgebung können die linken und rechten Ränder angepasst werden. Die Umgebung nimmt ein optionales Argument und zwei erforderliche Längenargumente:

\begin{adjustwidth}[]{linkerRand}{rechterRand}

Ein positiver Längenwert erhöht den relevanten Rand

(Verkürzung der Textzeilen), während ein negativer Längenwert den Rand verringert (Verlängerung der Textzeilen). Ein leeres Längenargument bedeutet keine Änderung am Rand. Am Ende der Umgebung kehren die Ränder zu ihren ursprünglichen Werten zurück.

Zum Beispiel, um den Text in den rechten Rand zu erweitern:

\begin{adjustwidth}{}{-8em}

Jedes Auftreten des optionalen Arguments (auch nur []) führt dazu, dass die Werte der Ränder zwischen ungeraden und geraden Seiten wechseln.

Wenn das Dokument doppelseitig gesetzt wird, könnte es vorteilhaft sein, dass breitere Texte in den äußeren Rand verlängert werden. Dies könnte über das optionale Argument erfolgen, wie:

\begin{adjustwidth}[]{}{-8em}

Um den angepassten Text horizontal zentriert relativ zu umgebendem Text zu haben, sollten die Ränder gleichmäßig angepasst werden:

\begin{adjustwidth}{-4em}{-4em}

``

2 Stimmen

Großartige Antwort. Ein kleiner Haken: Es ist besser, stattdessen das neuere "changepage" Paket zu verwenden, das fast identisch ist, aber die gleiche Schnittstelle wie die memoir Klasse verwendet. Alles vom selben Autor.

0 Stimmen

Will, das ist wahr. Aber da das changepage-Paket so neu ist, habe ich hier das chngpage-Paket verwendet, da es mit allen LaTeX-Distributionen geliefert wird. An Zequj, die Syntax für die adjustwidth-Umgebung variiert leicht zwischen den chngpage- und changepage-Paketen.

0 Stimmen

Gibt es eine Möglichkeit, dies mit tabularx-Umgebungen zum Laufen zu bringen?

24voto

user835611 Punkte 2211

Latex: Zentrierung einer Tabelle, die breiter als der Textbereich ist

Normalerweise können Sie Tabellen mit \center zentrieren. Wenn die Tabelle jedoch breiter ist als \textwidth, wird sie am linken Seitenrand ausgerichtet. Sie können vorübergehend den textwidth anpassen.

% ermöglicht vorübergehende Anpassung der Seitenränder
\usepackage{chngpage}

\begin{table}
    \begin{adjustwidth}{-.5in}{-.5in}  
        \begin{center}
        \begin{tabular}{|c|}
            \hline
Und hier kommt eine sehr lange Zeile. Und hier kommt eine sehr lange Zeile. Und hier kommt eine sehr lange Zeile.  \\
            \hline
        \end{tabular} 

        \caption{Diese Tabelle ist breiter als der Textbereich. Und auch ihre Beschriftung ist wirklich lang. Diese Tabelle ist breiter als der Textbereich. Und auch ihre Beschriftung ist wirklich lang. Diese Tabelle ist breiter als der Textbereich. Und auch ihre Beschriftung ist wirklich lang. Diese Tabelle ist breiter als der Textbereich. }
        \label{myTable}

2 Stimmen

Das Einbinden eines externen Verweises auf eine gut dokumentierte Quelle wird hier auf Stack Overflow geschätzt, aber es ist wichtig, in Ihrer Antwort die wichtigsten/relevanten Ausschnitte aus der externen Quelle einzuschließen und den Kontext zu geben, wie die Frage beantwortet werden soll, denn wenn dieser Link nicht mehr erreichbar ist (Serverausfall usw.), wird Ihre Antwort nutzlos.

17voto

db. Punkte 171

Wenn Sie ein \table-Float verwenden, muss das \begin{adjustwidth} ... \end{adjustwidth}-Tag darin enthalten sein.

5voto

juanmirocks Punkte 3803

In Zahlen muss die figure-Umgebung den adjustwidth env enthalten. Außerdem sollte caption außerhalb dieser Umgebung stehen, um mit der Gesamtbreite der Abbildung übereinzustimmen:

\begin{figure}[h]
  \begin{adjustwidth}{-1in}{-1in}% die L- und R-Ränder um 1 Zoll anpassen
    \centering
    \includegraphics[scale=0.44]{res/sth.png}
  \end{adjustwidth}
  \caption{sth}
  \label{fig:sth}
\end{figure>

1voto

Verwenden Sie ein mehrspaltiges Dokument? Wenn ja, sollten Sie die table* Variante in Betracht ziehen.

In einer einzelnen Spaltenumgebung gehören folgende Optionen zu Ihren Möglichkeiten:

  • Erhöhen Sie die textwidth. Aber die Standardmargen wurden aus guten ergonomischen Gründen gewählt, daher wird dies über minimales Tweaking hinaus nicht empfohlen.
  • Verkleinern Sie die Schriftgröße in der Tabelle (z.B. \small oder sogar \footnotesize innerhalb der tabular-Umgebung). Auch dies ist weniger als optimal.
  • Verwenden Sie das rotating Paket wie in dem von Stephan202 gegebenen Link vorgeschlagen. Ich habe dies für ein paar sehr große Tabellen in meiner Dissertation (nur mit den p Positionierungsoptionen) verwendet und es sah sehr schön aus.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X