Tabellenbreite in labeling-Umgebung gleich deren Textbreite?

Schriftbild, Absätze und Auflistungen einstellen
markusv
Forum-Meister
Forum-Meister
Beiträge: 850
Registriert: Do 3. Sep 2015, 17:20
Wohnort: Leipzig

Beitrag von markusv »

Seban hat geschrieben:Also manchmal macht man nen Schund?!
Welchen Schund? Die Kombination von center und minipage ist soweit ich weiß die Einfachste, um das Verhalten von Gleitumgebungen bzgl. der korrekten vertikalen Abstände (center) und der Verhinderung eines Seitenumbruchs innerhalb der Umgebung (minipage) zu erzeugen.
Wäre Microsoft Word für das Schreiben von Büchern entwickelt worden,
würde es Microsoft Book heißen.

Unkomplizierte und schnelle LaTeX-Hilfe, bspw. Erstellung von Vorlagen und Bewerbungen:
Help-LaTeX@web.de

Gast

Beitrag von Gast »

Von Schund kann nicht die Rede sein. Die minipage brauchst du ohnehin, um bei nicht gleitenden Konsultationsobjekten zu verhindern, dass Objekt (in Deinem Fall die tabularx) und Beschreibung (also, das was \caption produziert) auf unterschiedlichen Seiten landen können.

Die center-Umgebung ist in der Tat ein Trick, um etwas vertikalen Abstand zu erzeugen. Wollte man es ganz korrekt machen, könnte man auch:

Code: Alles auswählen

\documentclass{scrreprt}

\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{tabularx}
\usepackage{blindtext}
\usepackage{hyperref}

\setkomafont{caption}{\small}% Ersatz für das Paket caption und dessen Optionen

\begin{document}
   \blindtext
   
   \begin{labeling}{Zweiter Punkt}
     
      \item[Erster Punkt] \blindtext
         \vskip\dimexpr\intextsep-\parskip\relax\noindent% Abstand einfügen aber keinen Einzug verursachen
         \begin{minipage}{\linewidth}% Tabelle und Unterschrift zusammen halten
            \begin{tabularx}{\linewidth}{XX}\hline
               Parameter   & Wert   \\\hline\hline
               Höhe      & 1 m   \\\hline
               Länge      & 100 m   \\\hline
            \end{tabularx}
            \captionof{table}{\blindtext}
            \label{tab:bsp}
         \end{minipage}
         \vskip\dimexpr\intextsep-\parskip\relax\noindent% Abstand einfügen aber keinen Einzug verursachen
         \blindtext
      \item[Zweiter Punkt]\blindtext
     
      Die Referenz auf \autoref{tab:bsp} funktioniert nun. Danke.
   \end{labeling}
\end{document}
verwenden. Aber will man das wirklich für einen möglicherweise winzigen Unterschied im Ergebnis?

Ich würde ja ohnehin empfehlen, Gleitumgebungen nicht mitten auf der Seite zu setzen, sondern vorzugsweise am Anfang der Seite. Das ist für die Lesbarkeit fast immer besser:

Code: Alles auswählen

\documentclass[parskip]{scrreprt}

\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{tabularx}
\usepackage{blindtext}
\usepackage{hyperref}

\setkomafont{caption}{\small}% Ersatz für das Paket caption und dessen Optionen

\begin{document}
   \blindtext
   
   \begin{labeling}{Zweiter Punkt}
     
      \item[Erster Punkt] \blindtext
         \begin{table}% Einfach mit der Voreinstellung gleiten lassen.
            \begin{tabularx}{\linewidth}{XX}\hline
               Parameter   & Wert   \\\hline\hline
               Höhe      & 1 m   \\\hline
               Länge      & 100 m   \\\hline
            \end{tabularx}
            \captionof{table}{\blindtext}
            \label{tab:bsp}
         \end{table}
         \blindtext
      \item[Zweiter Punkt]\blindtext
     
      Die Referenz auf \autoref{tab:bsp} funktioniert nun. Danke.
   \end{labeling}
\end{document}

Seban
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 86
Registriert: Do 10. Jan 2013, 13:31

Beitrag von Seban »

Entschuldigt bitte die Verwirrung, "Schund" bezog sich auf meine Rückfrage, weil ich die minipage übersehen hatte, nicht auf eure Vorschläge.

@Gast
Die Platzierung ist in diesem Fall so gewünscht, die Tabelle soll fix positioniert sein. Generell wird dies aber beherzigt.

Wie kommt man auf sowas wie das folgende?

Code: Alles auswählen

\vskip\dimexpr\intextsep-\parskip\relax\noindent
Eignet man sich das an, wenn man LaTeX nicht bloß anwendet, sondern vllt. auch mitgestaltet, ist's lange Erfahrung wo man zB danach suchen sollte? Was ist dein/euer Geheimnis?

Gast

Was ist den unklar?

Beitrag von Gast »

\vskip sollte bekannt sein. Besser wäre eventuell aber ohnehin die Verwendung von \par\vspace{\dimexpr…\relax}.

\dimexpr…\relax zur Verwendung von Ausdrücken für Längenangaben ist eigentlich TeX Grundwissen. Erklärt wird es im etex-Manual. Übrigens wird das sogar in der KOMA-Script-Anleitung mehrfach verwendet. Es wird aber auch in Foren immer wieder verwendet. Man spart sich damit das eher knirschende calc.

\intextsep ist schlicht die dokumentierte Länge, die LaTeX für den Abstand vor und nach here platzierten Gleitumgebungen verwendet. Zu finden in jeder vollständigen Doku der Gleitumgebungen, notfalls im dokumentierten LaTeX-Kern source2e.pdf, der Bestandteil jeder legalen LaTeX-Distribution ist.

\parskip ist bekanntlich der Absatzabstand. Den muss man hier abziehen, weil \vskip oder \par einen Absatz einfügt, den man an der Stelle aber gar nicht haben will. Will man natürlich einen Absatz haben, dann lässt man das weg. Wenn man ohne Absatzabstand arbeitet könnte man das zwar ebenfalls weglassen, dann muss man aber ggf. diverse Stelle ändern, wenn man sich irgendwann doch für Absatzabstand entscheidet. Also lieber gleich richtig.

\noindent verhindert den Absatzeinzug. Den will man ja vor der minipage ja nicht haben. Wenn nach der minipage kein Absatz sein soll, will man ihn dort auch nicht haben.

Also eigentlich alles vollkommen logisch. Es lohnt sich eben, eine wirklich ausführliche LaTeX-Einführung und ggf. auch etwas mehr zu lesen und auch nachzufragen, wenn man etwas nicht versteht, statt nur unbesehen irgend etwas von irgendwo zusammen zu kopieren.

Seban
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 86
Registriert: Do 10. Jan 2013, 13:31

Beitrag von Seban »

Danke für die Ausführungen. Das Durcharbeiten des KOMA-Guides steht schon auf meiner Todo-Liste. Viele Dokumente die ich (im Hiwi-Job) bearbeite sind jedoch noch "gewöhnliche" Dokumentklassen oder gar Mischlinge, die zB. scrreprt verwenden, aber dann noch Pakete wie fancyhdr oder caption einbinden anstatt die KOMA-Funktionalität zu nutzen. Leider wird einem für das Erstellen von Dokumenten mehr Zeit eingeräumt als für die Verbesserung der Vorlagen.

Danke nochmal an alle für eure Hilfe hier!

Antworten