Captionbreite an Tabellenbreite anpassen

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: Captionbreite an Tabellenbreite anpassen

von Gewitterbukk » Mi 15. Apr 2009, 00:56

Hallo Stefan!

Hab deinen Eintrag gerade erst gelesen. Danke erst mal für deine Antwort. Ich hab mich heute mal selbst an die Umgebungsprogrammierung gewagt. Offenbar scheint es aber noch irgendwo zu haken. Ich bekomme die Fehlermeldung:

! Incomplete \iffalse; all text was ignored after line 107.

Könntest du dir meinen Code vielleicht noch mal anschauen.
\begin{document}

\newlength{\Tabellenbreite}
\newcommand{\Tabelle}[3]{%
	\settowidth{\Tabellenbreite}{#3}%
	\setcapwidth[c]{\Tabellenbreite}%
	\caption[#1]{#2}%
	#3%
}
\newsavebox{\Tabellenbox}
\newsavebox{\ParA}
\newsavebox{\ParB}
\newenvironment{TabelleSetztCaptionBreite}[2]{%
	\sbox{\ParA}{#1}%
	\sbox{\ParB}{#2}%
	\begin{lrbox}{\Tabellenbox}%
}{%
	\end{lrbox}%
	\global\setbox\Tabellenbox=\box\Tabellenbox%
	\aftergroup\SetzeTabellenbox{\usebox{\ParA}}{\usebox{\ParB}}%
}
\newcommand{\SetzeTabellenbox}[2]{%
	\Tabelle{#1}{#2}{\usebox{\Tabellenbox}}}


\begin{table} 
	\centering
	\begin{TabelleSetztCaptionBreite}{Caption-Eintrag}{Dies ist eine Tabelle und so weiter und so weiter und so weiter \dots}
		\begin{tabular}{*{10}{l}}
			1 & 2 & 3 & 4 & 6 & 7 & 8 & 9 & 10\\
			1 & 2 & 3 & 4 & 6 & 7 & 8 & 9 & 10\\
			1 & 2 & 3 & 4 & 6 & 7 & 8 & 9 & 10\\
		\end{tabular}
	\end{TabelleSetztCaptionBreite}
\end{table}


\end{document}
Ich habe mich dabei sehr stark an dem Beispiel im Buch orientiert. Die Funktion "\Tabelle" funktioniert auch tadellos, allerdings macht die Umgebung noch Probleme. Offenbar darf man im einschließenden Teil der Umgebung keine Parameter verwenden. Das bin ich mit den beiden saveboxen ParA und ParB umgangen. Ich hoffe, dass kann man so machen.

Vielen vielen DANK!

Automatische Breitenanpassung für Tabellenüberschriften

von Stefan Kottwitz » Di 14. Apr 2009, 21:20

Hallo,

hier eine Modifikation des obigen Codes, mit dem es klappen könnte. Dabei habe ich einen optionalen Parameter eingeführt, mit dem man wahlweise eine caption angeben kann. Das kann man natürlich noch verfeinern oder überhaupt anders tun.
\makeatletter
\newcommand*\ifempty[1]{
  \ifx#1\@empty
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi}%
\makeatother

\newlength{\Abbildungsbreite}
\newcommand{\Abbildung}[1]{%
   \settowidth{\Abbildungsbreite}{#1}%
   \setcapwidth[c]{\Abbildungsbreite}%
   \ifempty\Tabellencaption{}{\caption{\Tabellencaption}}%
   #1%
}
\newsavebox{\Abbildungsbox}
\newcommand\Tabellencaption{}
\newenvironment{AbbildungSetztCaptionBreite}[1][]{%
   \gdef\Tabellencaption{#1}
   \begin{lrbox}{\Abbildungsbox}%
}{%
   \end{lrbox}%
   \global\setbox\Abbildungsbox=\box\Abbildungsbox%
   \aftergroup\SetzeAbbildungsbox%
}
\newcommand{\SetzeAbbildungsbox}{%
   \Abbildung{\usebox{\Abbildungsbox}}}
Stefan

von Gewitterbukk » Di 14. Apr 2009, 18:42

Also, das Problem ist folgendes. Wenn ich den caption-Aufruf unter die Tabelle setze, also
\begin{table} 
	\centering
	\begin{AbbildungSetztCaptionBreite}
		\begin{tabular}{*{10}{l}}
			1 & 2 & 3 & 4 & 6 & 7 & 8 & 9 & 10\\
			1 & 2 & 3 & 4 & 6 & 7 & 8 & 9 & 10\\
		\end{tabular}
	\end{AbbildungSetztCaptionBreite}
	\caption{Lange Beschriftung und so weiter und so weiter \dots}
\end{table}
wird die captionbreite wie bei der figure-Umgebung angepasst. Wenn ich den caption-Aufruf aber über die Tabelle setze (was ich gerne möchte), funktioniert das ganze nicht. Also das hier:
\begin{table} 
	\centering
	\caption{Lange Beschriftung und so weiter und so weiter \dots}
	\begin{AbbildungSetztCaptionBreite}
		\begin{tabular}{*{10}{l}}
			1 & 2 & 3 & 4 & 6 & 7 & 8 & 9 & 10\\
			1 & 2 & 3 & 4 & 6 & 7 & 8 & 9 & 10\\
		\end{tabular}
	\end{AbbildungSetztCaptionBreite}
\end{table}
Wie genau die Umgebung "AbbildungSetztCaptionBreite" funktioniert, verstehe ich leider nicht. Ich muss gestehen, dass ich den Code einfach abgeschrieben habe. ;-)

Caption- und Tabellenbreite

von Stefan Kottwitz » Di 14. Apr 2009, 17:29

Hallo,

das kannst Du doch in einer table-Umgebung analog tun, wie in Deinem letzten Codestück. Oder was klappt da bei Dir genau nicht?

Stefan

Captionbreite an Tabellenbreite anpassen

von Gewitterbukk » Di 14. Apr 2009, 13:00

Hallo zusammen!

Ich möchte gerne die Breite der Tabellenüberschriften an die Breite der Tabellen anpassen. In dem KOMA-Script Buch habe ich eine Funktion bzw. Umgebung gefunden mit der sich das zumindest für die figure-Umgebung realisieren lässt.
\newlength{\Abbildungsbreite}
\newcommand{\Abbildung}[1]{%
	\settowidth{\Abbildungsbreite}{#1}%
	\setcapwidth[c]{\Abbildungsbreite}%
	#1%
}
\newsavebox{\Abbildungsbox}
\newenvironment{AbbildungSetztCaptionBreite}{%
	\begin{lrbox}{\Abbildungsbox}%
}{%
	\end{lrbox}%
	\global\setbox\Abbildungsbox=\box\Abbildungsbox%
	\aftergroup\SetzeAbbildungsbox%
}
\newcommand{\SetzeAbbildungsbox}{%
	\Abbildung{\usebox{\Abbildungsbox}}}
Ausgeführt sieht das Ganze dann so aus.
\begin{figure}
	\centering
	\begin{AbbildungSetztCaptionBreite}	
		\includegraphics{bild.pdf}
	\end{AbbildungSetztCaptionBreite}
	\caption{Beschriftung}
\end{figure}
Es klappt auch wunderbar, aber eben wie gesagt nur bei der figure-Umgebung. Darum meine Frage: Wie kann ich so ein Verhalten bei Tabellen realisieren?

Danke!

Nach oben