Tabellenbreite in labeling-Umgebung gleich deren Textbreite?

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Tabellenbreite in labeling-Umgebung gleich deren Textbreite?

von Seban » Do 4. Apr 2019, 14:04

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!

Was ist den unklar?

von Gast » Do 4. Apr 2019, 12:56

\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.

von Seban » Do 4. Apr 2019, 10:41

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?
\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?

von Gast » Do 4. Apr 2019, 09:43

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:
\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:
\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}

von markusv » Do 4. Apr 2019, 08:36

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.

von Seban » Mi 3. Apr 2019, 16:38

Also manchmal macht man nen Schund?!

Es klappt nun wunderbar, vielen Dank für deine Hilfe, und Geduld.

von Bartman » Mi 3. Apr 2019, 16:25

Du hast die minipage-Umgebung aus den Beispielen des Gastes nicht übernommen.
\documentclass{scrreprt}

\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{selinput}
\SelectInputMappings{
   adieresis={ä},
   odieresis={ö}
}
\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{center}
         \begin{minipage}{\linewidth}
            \begin{tabularx}{\linewidth}{XX}\hline
               Parameter   & Wert   \\\hline\hline
               Höhe      & 1 m   \\\hline
               Länge      & 100 m   \\\hline
            \end{tabularx}
            \captionof{table}{Hier befindet sich eine lange Bildunterschrift, die zwar die Breite von linewidth bzw. der Tabelle annimmt, aber leider nicht an der zugehörigen Tabelle orientiert ist.}
            \label{tab:bsp}
         \end{minipage}
         \end{center}
      \item[Zweiter Punkt]\blindtext
     
      \vfill Die Referenz auf \autoref{tab:bsp} funktioniert nun. Danke.
   \end{labeling}
\end{document}

von Seban » Mi 3. Apr 2019, 13:18

Hallo noch mal,

Label und Referenz auf die Tabelle funktionieren bei Verwendung von \captionof, kA was ich gestern falsch gemacht hatte. Danke dafür!

Ich habe noch eine Folgefrage zur Bildunterschrift, da diese leider nicht gemeinsam mit der Tabelle eingerückt wird, sondern am linken Rand klebt. Idealerweise würde sich die Caption direkt unter der Tabelle befinden, nicht nach links versetzt. Die Breite der Bildunterschrift scheint zu stimmen, nur die Orientierung/Ausrichtung bekomme ich nicht hin, weder mit dem Paket caption, noch mit den Angaben in scrguide.pdf, Kap. 3.20.

Weiß jemand Rat?

Hier das angepasste Beispiel (mit Paket caption):
\documentclass{scrreprt}

\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{selinput}
\SelectInputMappings{
	adieresis={ä},
	odieresis={ö}
}

\usepackage{tabularx}
\usepackage[hang, font=small]{caption}
\usepackage{blindtext}

\begin{document}
	\blindtext
	
	\begin{labeling}{Zweiter Punkt}
		
		\item[Erster Punkt] \blindtext
		
			\begin{center}
				\begin{tabularx}{\linewidth}{XX}\hline
					Parameter	& Wert	\\\hline\hline 
					Höhe		& 1 m	\\\hline
					Länge		& 100 m	\\\hline
				\end{tabularx}
			
%				\captionsetup{margin=2.65cm}	% rückt Tabelle ein, aber margin wird von Tabellenunterschriftsbreite abgezogen, 
												% dh Bildunterschrift zu schmal (2.65 cm hier nur Pi * Daumen zur Veranschaulichung, 
												% wird im Original ersetzt)
%				\captionsetup{width=\linewidth,margin=2.65cm}	% Dies funktioniert leider nicht wie gewünscht, nur 2. Argument verwendet
%				\captionsetup{margin=2.65cm,width=\linewidth}	% Dies funktioniert leider nicht wie gewünscht, nur 2. Argument verwendet
				
				\captionof{table}{Hier befindet sich eine lange Bildunterschrift, die zwar die Breite von linewidth bzw. der Tabelle annimmt, aber leider nicht an der zugehörigen Tabelle orientiert ist.}
				\label{tab:bsp}
			\end{center}

		\item[Zweiter Punkt]\blindtext 
		
		\vfill Die Referenz auf Tabelle \ref{tab:bsp} funktioniert nun. Danke.
		
	\end{labeling}
\end{document}
Beste Grüße & Dank,
Seban

von Seban » Di 2. Apr 2019, 19:14

Anonymous hat geschrieben:Wer hat denn das Gerücht in die Welt gesetzt? Das geht ganz normal mit \label
Habe ich eben während des Suchens gelesen, auf Texexchange glaube ich (bin nun nicht mehr am PC). Beim Testen eines Labels ohne table-Umgebung muss ich wohl was falsch gemacht haben. Ich teste heute Abend/morgen früh deinen Vorschlag.
Bartman hat geschrieben:Eben davon handelt der Beitrag des Ratgebers.
Hatte ich nicht so verstanden, danke für den Hinweis.

Falls es mit den bisherigen Infos nicht klappt, melde ich mich wieder, hab das Thema aber schon mal geschlossen, scheint gelöst.

Danke an alle!

von Gast » Di 2. Apr 2019, 18:38

Seban hat geschrieben:Die table-Umgebung nutze ich bisher, da es zu den Tabellen auch Caption und Label gibt. Caption kann man auch mit \captionof anlegen, aber wie ich auf Tabellen ohne table-Umgebung referenzieren kann, konnte ich nicht finden (im Gegenteil, das soll gar nicht gehen?).
Wer hat denn das Gerücht in die Welt gesetzt? Das geht ganz normal mit \label:
\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{graphicx}
\usepackage{blindtext}
 
\begin{document}
 
\blindtext Siehe dazu auch die folgende Abbildung~\ref{fig:test}:
\begin{center}
  \begin{minipage}{\linewidth}
    \centering
    \includegraphics{example-image}
    \captionof{figure}{Beispielbild}\label{fig:test}
  \end{minipage}
\end{center}
\blindtext

\end{document}
Mit scrreprt geht es genauso:
\documentclass{scrreprt}
\usepackage[ngerman]{babel}
\usepackage{graphicx}
\usepackage{blindtext}
 
\begin{document}

\chapter{Test}
\blindtext Siehe dazu auch die folgende Abbildung~\ref{fig:test}:
\begin{center}
  \begin{minipage}{\linewidth}
    \centering
    \includegraphics{example-image}
    \captionof{figure}{Beispielbild}\label{fig:test}
  \end{minipage}
\end{center}
\blindtext

\end{document}
Wahlweise kann man das Label auch im letzten Argument von \captionof setzen.

Nach oben