Lässt sich \caption nicht umdefinieren

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: Lässt sich \caption nicht umdefinieren

von iTob » Sa 12. Mär 2011, 14:00

Danke, da muss man erstmal drauf kommen. Mir kam gar nicht der Gedanke mal zu schauen, wie \captionof arbeitet. :)

Bleiben noch Frage 2 und 3 offen …

Liebe Grüße
Tobi

Re: Lässt sich \caption nicht umdefinieren

von sommerfee » Fr 11. Mär 2011, 19:34

iTob hat geschrieben:aber ich würde gerne das \caption innerhalb der neuen Umgebung zu \captionof umdefiniert wird, was nicht zu gehen scheint und bei mir nur dazu führt, dass pdfLaTeX ewig läuft ohne Ergebnis. Definiere ich stattdessen einen eigenen Befehl \Caption (mit großem C) geht es. Woran liegt das?
\captionof besteht (im caption-Paket) aus \captionsetup{type=...} und \caption. Wenn du jetzt \caption so umdefinierst, daß es \captionof verwendest, dann dreht sich das im Kreis, eben weil \captionof \caption verwendet, was wiederum \captionof verwendet, was wiederum \caption verwendet...

Abhilfe: Vergiss das Umdefinieren von \caption und packe stattdessen \captionsetup{type=table} in die Definition deiner Umgebung.
\documentclass[ngerman]{article} 
\usepackage[latin1]{inputenc} 
\usepackage[T1]{fontenc} 
\usepackage{babel} 
\usepackage{blindtext} 

\usepackage{caption}% das KOMA-Klassen \captionof auch 
% bereitstellen weiß ich, aber im Original brauche ich 
% die normale article-Klasse 

% neue Umgebungen für nichtgleitende Tabellen und 
% Abbildungen 
\makeatletter 
\def\ifEmpty#1{\def\@temp{#1}\ifx\@temp\@empty} 
\newenvironment{svtable}{% 
   \par\small% 
   \@setnobreak% Wozu? 
   \@setminipage% Wozu? 
   \setlength{\parindent}{0pt}%
   \captionsetup{type=table}%
}{\endgraf\medskip}% ? 
\makeatother 

\begin{document} 
\blindtext 
% 
\begin{svtable} 
   \centering 
   \caption{Eine Tabelle}\label{test} 
   \begin{tabular}{lll} 
      A & B & C\\ 
      1 & 2 & 3\\ 
   \end{tabular} 
\end{svtable} 
% 
\blindtext% Dieser Text sollte eigenlich ohne Einzug gesetzt werden 

Verweis: \ref{test} 
\end{document}

Lässt sich \caption nicht umdefinieren

von iTob » Fr 11. Mär 2011, 14:33

Hallo Forum,

ich versuche gerade eine Nicht-Gleitumgebung für Tabellen und Abbildungen zu basteln. Die Beschriftung kann ich mit \captionof erzeugen, aber ich würde gerne das \caption innerhalb der neuen Umgebung zu \captionof umdefiniert wird, was nicht zu gehen scheint und bei mir nur dazu führt, dass pdfLaTeX ewig läuft ohne Ergebnis. Definiere ich stattdessen einen eigenen Befehl \Caption (mit großem C) geht es. Woran liegt das?

Hier das Beispiel
\documentclass[ngerman]{article}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{blindtext}

\usepackage{caption}% das KOMA-Klassen \captionof auch
% bereitstellen weiß ich, aber im Original brauche ich
% die normale article-Klasse

% neue Umgebungen für nichtgleitende Tabellen und
% Abbildungen
\makeatletter
\def\ifEmpty#1{\def\@temp{#1}\ifx\@temp\@empty} 
\newenvironment{svtable}{%
	\par\small%
	\@setnobreak% Wozu?
	\@setminipage% Wozu?
	\setlength{\parindent}{0pt}%
	\newcommand\Caption[2][]{%
	% mit
%	\renewcommand\caption[2][]{%
	% stattdessen geht es nicht
		\ifEmpty{##1}%
		\captionof{table}{##2}%
		\else
		\captionof{table}[##1]{##2}%
		\fi%
	}%
}{\endgraf\medskip}% ?
\makeatother

\begin{document}
\blindtext
%
\begin{svtable}
	\centering
	\Caption{Eine Tabelle}\label{test}
	\begin{tabular}{lll}
		A & B & C\\
		1 & 2 & 3\\
	\end{tabular}
\end{svtable}
%
\blindtext% Dieser Text sollte eigenlich ohne Einzug gesetzt werden

Verweis: \ref{test}
\end{document}
Und ich hab noch zwei weitere Fragen:
2. Wie kann ich erreichen, dass der Einzug nach der Umgebung wirklich nur gemacht wird, wenn eine Leerzeile dazwischen steht. Ohne Leerzeile bzw auskommentierte Leerzeile hätte ich gerne, dass der Absatz ohne Einzug fortgesetzt wird.
3. Wozu dienen die Befehle \@setnobreak und \@setminipage? Ich habe sie aus der Vorlage übernommen, die verwendet werden muss.

Vielen Dank!
Tobi

Nach oben