Hallo Ich möchte eine Tabelle über die gesamte Seitenbreite \paperwidth anlegen. Der Rechte Seitenrand stellt da kein Problem dar, nur der linke.

Das gesamte Layout soll sich später so gestalten, dass die Tabelle unter einem Bild, das in Textbreite skalliert ist steht. Nach der Tabelle soll der Text auch wieder in Textbreite weiter gehen. Wie schaffe ich es, dass die Tabelle über den linken Rand der Textbreite zu bekommen?

\documentclass[12pt]{scrreprt} 
\usepackage[ngerman, english]{babel}

\begin{document}                    
\begin{tabular}[b]{|p{0.4\paperwidth}|p{0.5\paperwidth}|}\hline                         
Spalte 1 &  Spalte 2  \\ \hline
\end{tabular}
\end{document}

Vielen Dank!

gefragt 21 Nov '19, 09:12

Fermin's gravatar image

Fermin
21112
Akzeptiert-Rate: 0%

bearbeitet 24 Nov '19, 02:11

esdd's gravatar image

esdd
17.8k284257

Lies bitte in der FAQ die Bemerkung zur Unterscheidung von Antworten und Kommentaren. Auch wenn die Hervorhebung des Quelltextes noch nicht wieder so funktioniert, wie es einmal war, so bekommst Du immerhin eine feste Zeichenbreite. Wähle dafür im Editor den Quelltext aus und betätige die Schaltfläche, die Einsen und Nullen zeigt.

(22 Nov '19, 16:18) Bartman

Dass die Tabelle nicht linksbündig mit dem Papier ist, ist eigentlich logisch. LaTeX hat keinen Grund, die Tabelle weiter links zu beginnen, nur weil sie breiter als die Textbreite ist. Dazu muss man die Tabelle schon explizit nach links schieben. Dafür kennt LaTeX die Anweisung \hspace*. Der linke Rand ist bei LaTeX \oddsidemargin und beginnt aus unerfindlichen Gründen 1in rechts vom tatsächlichen linken Rand. Außerdem muss man bei scrreprt ohne Option parskip noch 1em zusätzlich nach links, wegen dem Absatzeinzug. Also wäre die Lösung:

\documentclass[12pt]{scrreprt} \usepackage[ngerman, english]{babel}
\begin{document}
\hspace*{-\oddsidemargin}\hspace{-1in}\hspace{-1em}%
\begin{tabular}{|p{0.4\paperwidth}|p{0.5\paperwidth}|}\hline
Spalte 1 & Spalte 2 \\ \hline \end{tabular} \end{document}

Das % in der \hspace-Zeile braucht man, weil sonst ein Leerzeichen vor der Tabelle eingefügt wird.

Hier zum Vergleich jeweils eine Seite mit dem ursprünglichen Ergebnis (links bzw. oben) und dem Ergebnis mit den \hspace (rechts bzw. unten):

OriginalErgebnisErgebnis mit \hspace

Natürlich musst du jetzt noch die Breite der Tabelle anpassen, wenn sie bis zum rechten Rand gehen soll. Das geht wahlweise mit tabularx oder mit etwas Berechnung:

\documentclass[12pt]{scrreprt}
\usepackage[ngerman]{babel}
\begin{document}
\hspace*{-\oddsidemargin}\hspace{-1in}\hspace{-\parindent}%
\begin{tabular}{|*2{p{\dimexpr .5\paperwidth-2\tabcolsep\relax}|}}
  \hline
  Spalte 1 & Spalte 2 \\
  \hline
\end{tabular}
\end{document}

Tabelle in Papierbreite

Und dann gibt es sicher ein Problem mit einer Overfull \hbox. Wenn dich das stört, kann man da vetwas mit der addmargin-Umgebung machen:

\documentclass[12pt]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage{tabularx}
\begin{document}
\begin{addmargin}{-\dimexpr \oddsidemargin+1in\relax}
  \begin{tabularx}{\paperwidth}{|X|X|}
    \hline
    Spalte 1 & Spalte 2 \\
    \hline
  \end{tabularx}
\end{addmargin}
\end{document}

oder ein weiteres \hspace nach \end{tabular} schreiben. Aber das Ergebnis funktioniert auch ohne das.

Permanenter link

beantwortet 21 Nov '19, 13:33

der_zornige_juergen's gravatar image

der_zornige_...
1.3k210
Akzeptiert-Rate: 33%

bearbeitet 27 Nov '19, 08:39

Hallo, danke für die Antwort! Auch wenn Dein Beispiel bei mir leider keinen Effekt hat komme ich mit \hspace weiter. Die Feinjustage bekomme ich schon hin.

Thanks!

(21 Nov '19, 14:55) Fermin

@Fermin: Ich habe Deine "Antwort" in einen Kommentar umgewandelt, da sie keine Antwort auf Deine Frage ist.

(24 Nov '19, 02:18) esdd

@Fermin: Die \hspace in meinem Code haben sehr wohl einen Effekt. Wie man deutlich an den eingefügten Abbildungen sehen kann, rückt damit die Tabelle an den linken Rand des Papiers, genau wie das in der Frage gefordert wurde. Wenn das bei dir nicht so ist, dann hast du nicht mein Beispiel kopiert.

(27 Nov '19, 08:34) der_zornige_...

Ich gehe davon aus, dass das Dokument eine definierte Seitengeometrie hat und die Tabelle (und ein Bild) darüber hinaus ragen soll.
Dafür würde ich einfach partiell die Seitengeometrie ändern, und dann kann man an sich normale Einstellungen verwenden.

1. Änderung der Seitengeometrie in eingeschränktem Bereich: \usepackage{changepage}

alt text

\documentclass[12pt,a4paper]{article}
\usepackage[margin=1in, % Beispiel
]{geometry}

\usepackage{changepage}

\usepackage{colortbl} % Zur Hervorhebung 
\arrayrulecolor{red} % 
\usepackage{showframe, lipsum} %

\begin{document}
\section{Normale Seitengeometrie}
\begin{tabular}{|p{0.4\paperwidth}|p{0.5\paperwidth}|}\hline
Spalte 1 & Spalte 2 \\ \hline 
nicht wie gewünscht & \\ \hline 
\end{tabular}
\lipsum[66]

\begin{adjustwidth}{-2.3cm}{-3.5cm}
\section{Partiell veränderte Seitengeometrie}
\begin{tabular}{|p{0.4\linewidth}|p{0.5\linewidth}|}\hline
Spalte 1 & Spalte 2 \\ \hline 
 wie gewünscht & \\ \hline 
 \end{tabular}

\subsection{Text zum Vergleich}
\lipsum[2]
 \end{adjustwidth}

\section{Wieder normale Seitengeometrie}
\lipsum[2]
\end{document}

2. Änderung der Seitengeometrie einer ganzen Seite: \usepackage{geometry}

alt text

\documentclass[12pt,a4paper]{article}
\usepackage[margin=1in, % Beispiel
]{geometry}

\usepackage{colortbl} % Zur Hervorhebung 
\arrayrulecolor{red} % 
\usepackage{showframe} %

\begin{document}
\section{Normale Seitengeometrie}
\begin{tabular}{|p{0.4\paperwidth}|p{0.5\paperwidth}|}\hline
Spalte 1 & Spalte 2 \\ \hline 
nicht wie gewünscht & \\ \hline 
\end{tabular}

\newgeometry{margin=1in,left=5mm, right=5mm}  %% I increased for demo
\section{Andere Seitengeometrie auf ganzen einer ganzen Seite }

\begin{tabular}{|p{0.4\textwidth}|p{0.5\textwidth}|}\hline
Spalte 1 & Spalte 2 \\ \hline 
 wie gewünscht & \\ \hline 
\end{tabular}

\restoregeometry
\section{Wieder normale Seitengeometrie}
\end{document}
Permanenter link

beantwortet 22 Nov '19, 15:06

haver555's gravatar image

haver555
199512
Akzeptiert-Rate: 7%

bearbeitet 22 Nov '19, 15:32

Wozu lädst du ein weiteres Paket, wenn die verwendete Klasse mit dem von mir bereits in der ersten Fassung meiner Antwort erwähnten addmargin selbst eine passende Umgebung bereitstellt?

(27 Nov '19, 08:37) der_zornige_...

Da Du ein einseitiges Dokument erstellst, bei dem der linke und rechte Rand gleich breit sind, genügt es die Tabelle relativ zum Textbereich horizontal zu zentrieren. Das geht mit \makebox[textwidth]{<deine tabelle>}.

\documentclass[12pt]{scrreprt} 
\usepackage[ngerman, english]{babel}

\begin{document}
\noindent% Absatzeinzug unterdrücken
\makebox[\textwidth]{% Box mit Textbreite, deren Inhalt horizontal zentriert wird
  \begin{tabular}[b]{|p{0.4\paperwidth}|p{0.5\paperwidth}|}\hline
  Spalte 1 &  Spalte 2  \\ \hline
  \end{tabular}%
}
\end{document}

Die Tabelle in Deinem MWE ist allerdings schmaler als \paperwidth, wobei ohnehin zu beachten ist, dass viele Drucker nicht bis zum Rand drucken können.

alt text

Permanenter link

beantwortet 24 Nov '19, 02:40

esdd's gravatar image

esdd
17.8k284257
Akzeptiert-Rate: 62%

bearbeitet 16 Jan '20, 12:03

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:

×256

gestellte Frage: 21 Nov '19, 09:12

Frage wurde gesehen: 11,841 Mal

zuletzt geändert: 27 Nov '19, 08:39