goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum


Login  | Registrieren
Forum
      Option
[Erweitert]
  • Diese Seite weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Tabelle breiter als Satzspiegel

 

Roman_95
Forum-Anfänger
Forum-Anfänger

Beiträge: 17
Anmeldedatum: 05.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.12.2018, 17:03     Titel: Tabelle breiter als Satzspiegel
  Antworten mit Zitat      
Hallo Zusammen,

ich habe ein m.M. nach kurioses Problem:

Ich möchte ein Tabelle setzen, die so breit ist wie der Textblock (\textwidth). Hierfür verwende ich folgenden Code:

Code • Öffne in Overleaf

\documentclass[
  numbers=noenddot,        
  12pt,
  twoside=false,
  headsepline,
  footsepline,
%  DIV=calc,
   BCOR=5mm,
   ngerman
]{scrbook}

\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{blindtext}
\usepackage{array, tabularx}
\usepackage{showframe}
\usepackage{everysel, footmisc, ragged2e} % verbesserte Silbentrennung in bündigen und zentrierten Absätzen (ragged2e, der Rest ist benötigt)
\newcolumntype{P}[1]{>{\hspace{0pt}}p{#1}}   % "p-Spalte" mit Zeilenumbruch auch nach dem ersten Wort


\begin{document}
\blinddocument

\begin{figure}
   \centering
   \begin{tabular}{|>{\centering}P{.3\textwidth}|>{\centering}P{.3\textwidth}|>{\centering\arraybackslash}P{.3\textwidth}|}
      \hline
      \multicolumn{3}{|>{\centering\bfseries}p{\textwidth}|}{Aufgabenstellung}\\ \hline
      \multicolumn{3}{|>{\centering}p{\textwidth}|}{Beschreibung einer Aufgabenstellung die so lang ist dass diese mehr als eine Zeile füllt}\\
      \hline
      Stichpunkt 1 & Stichpunkt 2 & Stichpunkt 3 \\ \hline
      Dies hier ist ein
Blindtext zum Testen
von Textausgaben. Wer
diesen Text liest, ist
selbst schuld. Der Text
gibt lediglich den
Grauwert der Schrift an.
Ist das wirklich so? Ist es
gleichgültig, ob ich
schreibe: Dies ist ein
Blindtext oder
Huardest gefburn? Kjift
 mitnichten!

&
 
Dies hier ist ein
Blindtext zum Testen
von Textausgaben. Wer
diesen Text liest, ist
selbst schuld. Der Text
gibt lediglich den
Grauwert der Schrift an.
Ist das wirklich so? Ist es
gleichgültig, ob ich
schreibe: Dies ist ein
Blindtext oder
Huardest gefburn? Kjift
 mitnichten!  

&

Dies hier ist ein
Blindtext zum Testen
von Textausgaben. Wer
diesen Text liest, ist
selbst schuld. Der Text
gibt lediglich den
Grauwert der Schrift an.
Ist das wirklich so? Ist es
gleichgültig, ob ich
schreibe: Dies ist ein
Blindtext oder
Huardest gefburn? Kjift
 mitnichten!  \\ \hline
   \end{tabular}
\end{figure}

\end{document}
 


Nun wird, wie man sieht, die Tabelle jedoch breiter als der Textblock, und in der \multicolumn mit dem langen Text reicht dieser ganz an den Rand dessen. Ich denke die Tabelle wird dann breiter, da es "intern" diese zusätzlichen Abstände zwischen den Spalten gibt.
Auffällig finde ich , dass die Tabelle genau bis an den von showframe angezeigten, rechten Block ragt. (BTW: wofür ist der gut?)

In anderen Fällen (Abbildungen, Tabelle ohne \multicolumn) funktioniert die Skalierung mittels \textwidth einwandfrei.

Dinge wie schlecht funktionierenden Zeilenumbruch in \centering (paket "ragged2e), keine Silbentrennung beim ersten Wort (neuer Spaltentyp "P") habe ich nach den mir bekannten Möglichkeiten ausgemerzt.

Ich habe auch schon versucht, \linewidth zu verwenden. Verstehe ich das richtig, dass \linewidth relativ zu einer höheren Ebene definiert ist? Also z.B. ist in einer subfigure mit width=0.5\textwidth, linewidth=0.5\textwidth? Wie auch immer, kein Unterschied...

Auch schmalere Spalten habe ich versucht, aber auf den \multicolumn-Teil hat das keinen Einfluss, sofern deren Breite nicht geändert wird.


Ich hoffe mir kann jemand helfen Very Happy

VG, Roman


PS: Versteht Latex auch richtige Brüche? Weil wenn ich 0.3\textwidth eingebe ist die Summe aus drei Spalten ja nicht genau \textwidth. Oder ist der Fehler vernachlässigbar klein? Wenn es möglich ist, wie gibt man das an?
Private Nachricht senden Benutzer-Profile anzeigen

Rolli
Forum-Century
Forum-Century

Beiträge: 224
Anmeldedatum: 15.02.17
Wohnort: Mittelfranken
Version: MikTeX 2.9 64-bit
     Beitrag Verfasst am: 03.12.2018, 17:38     Titel:
  Antworten mit Zitat      
Hallo Roman,

Es ist tatsächlich so, dass links und rechts von der "Tabellenlinie" ein Abstand ist.
Wenn Du den nicht willst, dann lass LaTeX rechnen:

Code • Öffne in Overleaf
\dimexpr0.2\textwidth-2\tabcolsep\relax}


macht z.B. exakt 0,2-fache Textbreite (weil in \tabcolsep der Rand eingestellt ist.

Alternativ kannst Du natürlich auch \tabcolsep global auf 0 stellen.

Zu Deinen sonstigen Fragen auf die Schnelle:

Der "rechte Kasten" ist der Platz für die Marginalspalte.

LaTeX kann nicht besonders gut rechnen, was die Genauigkeit angeht. Wenn Du statt 3x 0.3\textwidth 3x 0.3333\textwidth nimmst, merkst Du den Restfehler nicht mehr.

Gruß vom Rolli
_________________

Linux ist ein Betriebssystem.
WinDoof ist ein Zustand!
Private Nachricht senden Benutzer-Profile anzeigen

Bartman
Forum-Meister
Forum-Meister


Beiträge: 1470
Anmeldedatum: 16.07.09
Wohnort: Hessische Provinz
Version: ---
     Beitrag Verfasst am: 03.12.2018, 17:38     Titel:
  Antworten mit Zitat      
Warum arbeitest Du nicht mit dem von Dir bereits geladenen Paket tabularx und dessen Spaltentyp X? In der Dokumentation kannst Du nachlesen, wie der Spaltentyp angepasst werden kann. Das Paket lädt übrigens array.

Als Spaltentyp für den Befehl \multicolumn in der ersten Zeile genügt auch c, da kein Zeilenumbruch vorkommt.
Private Nachricht senden Benutzer-Profile anzeigen

Roman_95
Forum-Anfänger
Forum-Anfänger

Beiträge: 17
Anmeldedatum: 05.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.12.2018, 18:08     Titel:
  Antworten mit Zitat      
Danke für die schnellen Antworten zunächst!

@Rolli: Was genau macht die Berechnung und wo soll ich sie einsetzen/den Wert verwenden? Das ist ja die Vorgabe der zusätzlichen Spaltenbreite wenn ich das richtig verstehe, aber die möchte ich ja garnicht verändern.
Eigentlich soll ja nur die umbrechende \multicolumn-Zelle genau die Breite des Textes haben... Oder ist das die Angabe die ich dieser als Breite übergeben muss? Was bedeutet eigentlich dieses \relax das man überall sieht?

@Bartmann: Ich hatte es schon einmal probiert diese Tabelle mittels tabularx zu erstellen, da klappte das aber nicht vernünftig - habe da wohl etwas falsch gemacht, jetzt klappt es einwandfrei Rolling Eyes Very Happy Auf die Idee bin ich dann gar nicht mehr gekommen.
Private Nachricht senden Benutzer-Profile anzeigen

Bartman
Forum-Meister
Forum-Meister


Beiträge: 1470
Anmeldedatum: 16.07.09
Wohnort: Hessische Provinz
Version: ---
     Beitrag Verfasst am: 03.12.2018, 18:27     Titel:
  Antworten mit Zitat      
\relax
Private Nachricht senden Benutzer-Profile anzeigen

Rolli
Forum-Century
Forum-Century

Beiträge: 224
Anmeldedatum: 15.02.17
Wohnort: Mittelfranken
Version: MikTeX 2.9 64-bit
     Beitrag Verfasst am: 03.12.2018, 19:38     Titel:
  Antworten mit Zitat      
Hallo Roman,

Ich bin mir jetzt nicht mehr sicher, ob ich Dein Problem verstehe.

Ich habe verstanden: Tabellenspaltenbreite 0.3\textwidth+0.3\textwidth+0.4\textwidth gibt mathematisch genau die Textbreite, trotzdem schießt die Tabelle rechts raus.

Wenn ich Dich richtig verstanden habe: Dann gilt meine Antwort; es liegt daran, dass links und rechts einer Spaltengrenze automatisch ein kleiner Zwischenraum eingebaut wird. Dieser ist genau so groß, wie es in der Dimensionsvariablen \tabcolsep angegeben ist. Ich bin mir nicht sicher, meine aber, das sind standardmäßig 6pt.

Damit schießt eine dreispaltige Tabelle logischerweise um 6 * \tabcolsep rechts raus. Das kannst Du in meinem untenstehenden Beispiel in der oberen Tabelle prima sehen.

Um dem abzuhelfen, gibt es zwei Möglichkeiten:

1. Du machst deine Spalten um 2 * \tabcolsep schmäler: Du ziehst bei der Breite jeder Spalte 2 * \tabcolsep ab - dann passt es genau. Das geht mit dem Ausdruck
Code • Öffne in Overleaf
\dimexpr0.3\textwidth-2\tabcolsep\relax
bei einer beispielsweise exakt 0.3 * \textwidth breiten Spalte.
Der Vorteil ist, dass \tabcolsep erhalten bleibt.

Das \relax sagt \dimexpr, dass die Berechnung fertig ist.

Siehe die mittlere Tabelle im untenstehenden Beispiel.

2. Du setzt \tabcolsep auf 0. Nachteil: Dann "klebt" der Spaltentext an den Spaltenlinien. Siehe die untere Tabelle im Beispiel (habe \tabcolsep auf 1mm gesetzt, ändere es mal auf 0mm oder gar auf einen negativen Wert).

Alles klar?

Gruß vom Rolli

Code • Öffne in Overleaf

\documentclass[
  numbers=noenddot,        
  12pt,
  twoside=false,
  headsepline,
  footsepline,
%  DIV=calc,
   BCOR=5mm,
   ngerman
]{scrbook}

\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{blindtext}
\usepackage{array, tabularx, longtable}
\usepackage{showframe}
\usepackage{everysel, footmisc, ragged2e} % verbesserte Silbentrennung in bündigen und zentrierten Absätzen (ragged2e, der Rest ist benötigt)
\newcolumntype{P}[1]{>{\hspace{0pt}}p{#1}}   % "p-Spalte" mit Zeilenumbruch auch nach dem ersten Wort

\newcolumntype{L}[1]{>{\raggedright\hspace{0pt}}p{#1}}
\newcolumntype{C}[1]{>{\centering\hspace{0pt}}p{#1}}
\newcolumntype{R}[1]{>{\raggedleft\hspace{0pt}}p{#1}}

\begin{document}

\begin{longtable}{|L{0.3\textwidth}|C{0.4\textwidth}|R{0.3\textwidth}|}
\hline
Links & Mitte & Rechts \tabularnewline
\hline\endhead
\hline\endfoot
Blabla Blablabla BlubbBlubb BlubbBlubbBlubb &
Blabla Blablabla BlubbBlubb BlubbBlubbBlubb &
Blabla Blablabla BlubbBlubb BlubbBlubbBlubb
\end{longtable}

\begin{longtable}{|L{\dimexpr0.3\textwidth-2\tabcolsep\relax}|C{\dimexpr0.4\textwidth-2\tabcolsep\relax}|R{\dimexpr0.3\textwidth-2\tabcolsep\relax}|}
\hline
Links & Mitte & Rechts \tabularnewline
\hline\endhead
\hline\endfoot
Blabla Blablabla BlubbBlubb BlubbBlubbBlubb &
Blabla Blablabla BlubbBlubb BlubbBlubbBlubb &
Blabla Blablabla BlubbBlubb BlubbBlubbBlubb
\end{longtable}

\setlength{\tabcolsep}{1mm}

\begin{longtable}{|L{0.3\textwidth}|C{0.4\textwidth}|R{0.3\textwidth}|}
\hline
Links & Mitte & Rechts \tabularnewline
\hline\endhead
\hline\endfoot
Blabla Blablabla BlubbBlubb BlubbBlubbBlubb &
Blabla Blablabla BlubbBlubb BlubbBlubbBlubb &
Blabla Blablabla BlubbBlubb BlubbBlubbBlubb
\end{longtable}

\end{document}
 

_________________

Linux ist ein Betriebssystem.
WinDoof ist ein Zustand!
Private Nachricht senden Benutzer-Profile anzeigen

Roman_95
Forum-Anfänger
Forum-Anfänger

Beiträge: 17
Anmeldedatum: 05.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.12.2018, 11:00     Titel:
  Antworten mit Zitat      
Hallo Rolli,

doch, du hast mein Problem schon richtig verstanden. Ich konnte nur mit der Berechnung nicht viel anfangen, da ich weder genau verstand was sie tut, noch wie sie eingesetzt wird.

Ich glaube jetzt es verstanden zu haben: Die "Spaltenbreite", die man oben deklariert, ist eigentlich die Textbreite in der entsprechenden Spalte. Beim Setzen kommt dann noch (2x) \tabcolsep hinzu, was die tatsächliche Spaltenbreite ergibt.
Zieht man nun beim Deklarieren der Spalten-Textbreite die Breite von (2x) \tabcolsep ab, ergibt sich nach dem Setzen die Gesamt-Spaltenbreite, die ich in diesem Fall eigentlich dachte direkt vorzugeben, z.B. 0.3\textwidth, da ja (2x) \tabcolsep von LaTeX wieder draufgepackt wird...
Private Nachricht senden Benutzer-Profile anzeigen

Rolli
Forum-Century
Forum-Century

Beiträge: 224
Anmeldedatum: 15.02.17
Wohnort: Mittelfranken
Version: MikTeX 2.9 64-bit
     Beitrag Verfasst am: 04.12.2018, 14:58     Titel:
  Antworten mit Zitat      
Genau so habe ich es auch verstanden.
Ist Deine Frage damit beantwortet? Dann setze doch bitte den Status auf "beantwortet".

Gruß vom Rolli
_________________

Linux ist ein Betriebssystem.
WinDoof ist ein Zustand!
Private Nachricht senden Benutzer-Profile anzeigen

Roman_95
Forum-Anfänger
Forum-Anfänger

Beiträge: 17
Anmeldedatum: 05.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.12.2018, 15:39     Titel:
  Antworten mit Zitat      
...das wollte ich jetzt erledigen, wo alle eventuellen Unklarheiten beseitigt sind.

Vielen Dank für deine Mühen! VG
Private Nachricht senden Benutzer-Profile anzeigen

Neues Thema eröffnen Neue Antwort erstellen



Options and Permissions
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen
.

goLaTeX ist Teil der goForen
goForen.de goMATLAB.de goLaTeX.de


  Datenschutzerklärung | Impressum | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2018 goLaTeX.de