PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Abbildungen immer mit \begin{figure}[H] setzen



msfox
29-07-2010, 10:36
Hallo Zusammen,

ich such für den Vorspann eine Festlegung, dass Tabellen und Abbildungen als Gleitumgebung immer dort im PDF ausgegeben werden, wo ich diese gesetzt habe.

Meine bisherige Lösung war


\floatplacement{figure}{H}
\floatplacement{table}{H}


Nun wird der Vorspann via \include in mehreren Dokumenten verwendet, wo es auch mal keine Bilder geben kann. In diesem Fall kommt es beim Generierung zum Fehler.

Nun versuche ich den Befehle \figure so umzudefinieren, damit er immer mit [H] arbeitet. Für die Umdefinition für \figure hatte ich im Internet folgendes Beispiel gefunden, mit dem eine Grafik immer zentriert wird.


\renewenvironment{figure}[1][]{\@float{figure}\centering}{\end@float}


Das Zentrieren klappt. Für meinen Zweck habe ich noch [H] ergänzt:


\renewenvironment{figure}[1][]{\@float{figure}[H]\centering}{\end@float}


Dies hat jedoch keine Wirkung und führt auch nicht zum einen Fehler.

Weiß jemand hierfür eine Lösung?

Danke

Stefan_K
29-07-2010, 10:47
Hallo,


ich such für den Vorspann eine Festlegung, dass Tabellen und Abbildungen als Gleitumgebung immer dort im PDF ausgegeben werden, wo ich diese gesetzt habe.

eine Bemerkung - es ist nicht sehr sinnvoll, alle Tabellen und Abbildungen als Gleitumgebungen zu deklarieren und anschließend das Gleiten vollständig unterbinden zu wollen.

Unterbindet man das Gleiten, entstehenden schlimme Seitenaufteilungen und manuelle Nachkorrektur kann nötig sein.

Ohne Gleiten braucht man gar keine Umgebung, kann einfach tabular, \includegraphics etc. in den Text setzen. Wenn es Dir um Bildunterschriften und Tabellenüberschriften geht, die kann man mit \captionof{figure}{Beschriftung} etc. setzen, wenn man das caption-Paket verwendet. Hierfür würde ich dann doch eine Umgebung für Bilder und Tabellen hernehmen: minipage (http://texblog.net/help/latex/ltx-267.html).

Viele Grüße,

Stefan

mechanicus
29-07-2010, 10:58
Weiß jemand hierfür eine Lösung?

Klar -- wenn du ein Minimalbeispiel erstellst, was den Fehler auch zeigt.


\listfiles
\RequirePackage{filecontents}
\begin{filecontents*}{TesteinbindungA.tex}
\chapter{Beispieldatei A}
\blindtext
\begin{figure}
\rule{0.5\textwidth}{4cm}
\end{figure}
\blindtext
\end{filecontents*}
\begin{filecontents*}{TesteinbindungB.tex}
\chapter{Beispieldatei B}
\blindtext
\blindtext
\end{filecontents*}
\documentclass[ngerman]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{blindtext}

\usepackage{float}\floatplacement{figure}{H}

\begin{document}
\include{TesteinbindungA}
\include{TesteinbindungB}
\end{document}

Das funktioniert -- also liegt der Fehler wohl woanders.

Gruß
Marco

u_fischer
29-07-2010, 11:01
Nichtgleitende Gleitumgebung sind zwar eine schlechte Idee, aber die Defaultplazierungswerte stecken in \fps@... also müsste das hier gehen:



\makeatletter
\renewcommand{\fps@figure}{H}
\renewcommand{\fps@table}{H}
\makeatother


Nun wird der Vorspann via \include in mehreren Dokumenten verwendet,

Verwende \include nicht in der Präambel. Nimm \input stattdessen. Benutze \include sowieso nur dann, wenn du weißt, dass \input nicht reicht.

msfox
30-07-2010, 10:34
Sehr schön, vielen Dank. Die Lösung


\makeatletter
\renewcommand{\fps@figure}{H}
\renewcommand{\fps@table}{H}
\makeatother

hat funktioniert.

Anmerkungen:
- Ich habe ja auch \input statt \include im Verspann verwendet, nur hier falsch beschrieben.
- Als WYSIWYM verwende ich Lyx, da ich Kollegen (noch) nicht direkt mit LaTex konfrontieren wollte. Hier kann man (im Standard) nur bei Gleitobjekten eine Beschriftung setzen.

Wollsocken
31-07-2010, 17:46
Mit dem picins Paket kannst Du den caption Befehl auch außerhalb einer Gleitumgebung verwenden. Meine Bilder binde ich so ein:

\begin{minipage}{14cm}
\begin{center}
\includegraphics[width=]{Bilder/}
\caption[]{}
\label{fig:}
\end{center}
\end{minipage}

Die Minipage verhindert daß zwischen Bild und Bildbeschriftung die Seite umgebrochen wird.

Lyx halte ich übrigens für eine ganz schlechte Idee, wenn man mit LaTex arbeiten will. Dann lieber gleich TeXnicCenter und sich von vorneherein richtig mit den Befehlen vertraut machen. Man kommt ja auch bei Lyx nicht drumrum wenn man nicht grade das Standardformat verwenden will, das das Programm einem vorgibt.

sommerfee
31-07-2010, 18:24
Mit dem picins Paket kannst Du den caption Befehl auch außerhalb einer Gleitumgebung verwenden.

Das wäre aber die Ausnutzung von sehr unsauberem Code des picins-Paketes (ich würde es sogar einen Bug nennen), beabsichtigt war dieser unhübsche Nebeneffekt vom Autor sicherlich nicht.

(Und sobald man das caption-Paket lädt, ist dieser Nebeneffekt wieder futsch.)

Wollsocken
31-07-2010, 18:32
Weiß ich und deshalb hab ich das caption Paket auch nicht geladen. Funktioniert sehr gut ohne - ich bin zufrieden.

sommerfee
01-08-2010, 07:34
Der Nachteil an solchen "sportlichen" Lösungen ist, daß die Sportunfälle später bei mir landen. Da schnappt jemand diesen grob fahrlässigen "Tipp" auf, wundert sich z.B., daß es nicht mit dem subfig-Paket zusammen funktioniert (oder mit manchen Versionen des ctable-Paketes, oder zusammen mit hyperref/hypcap unhübsche Effekte gibt oder...), und da ich ja "Mr. Caption" bin, habe ich flugs eine Support-Email im Briefkasten.

Mir ist auch nicht klar, welchen Vorteil diese "sportliche" Variante gegenüber der sauberen Variante, nämlich \captionof, haben soll. Ich sehe nur den Nachteil, daß solch eine "Lösung" langfristig gesehen mehr Probleme schafft als sie löst.

Wollsocken
02-08-2010, 01:57
Die Lösung bereitet mir überhaupt keine Probleme.

Es war nur ein Vorschlag, den niemand annehmen muß. Der msfox weiß ja jetzt um die beschriebenen Inkompatibilitäten Bescheid und wenn eine davon auf sein Projekt zutrifft, dann hat er ja noch andere Lösungsvorschläge zur Verfügung.

sommerfee
02-08-2010, 19:10
Der msfox weiß ja jetzt um die beschriebenen Inkompatibilitäten Bescheid und wenn eine davon auf sein Projekt zutrifft, dann hat er ja noch andere Lösungsvorschläge zur Verfügung.

Welches sind denn die Inkompatibilitäten? Die müsste man ja alle wissen, um wissen zu können, ob sie auf das eigene Projekt zutreffen oder nicht.

Liebe Grüße,
Axel