Bilder breiter als Textbreite, Bildunterschriften schmaler

Tabellen und Grafiken erstellen und anordnen


Wayne?
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: Do 9. Jun 2011, 18:13

Bilder breiter als Textbreite, Bildunterschriften schmaler

Beitrag von Wayne? »

Hi!

Ich habe ein zugegeben sehr kosmetisches Problem. Ich schreibe meine Bachelor-Arbeit mit LaTeX (genauer: mit LyX) und benutze eine narrow-Umgebung um breite Grafiken bzw. zwei Grafiken nebeneinander über den Textrand (auf beiden Seiten) herausragen zu lassen.

Dies tue ich via
\begin{narrow}{-1in}{0in}
%Hier kommt das Bild%
\end{narrow}
Die narrow-Umgebung ist im Vorspann definiert.

Das Problem ist, dass auch die Bildunterschriften jetzt über die "volle Breite" gehen, ich hätte es aber gerne so, dass die Bildunterschriften weiter beidseitig etwas eingerückt gegenüber dem Textrand (rechts und links je 1cm) gesetzt werden. Die Unterschriften sind zentriert gesetzt.
Ich hab schon versucht, die narrow-Umgebung VOR dem setzen der Bildunterschrift zu beenden, dann kommt aber ein LaTeX-Error beim Kompilieren.

Ich versuch mal ein Minimalbeispiel (mach sowas zum ersten Mal, also bitte nicht schreien), wird sehr schwer für mich, da ich ja mit LyX arbeite:
\usepackage[automark, nouppercase,plainfootsepline,plainheadsepline,headsepline]{scrpage2}
\usepackage{microtype} %Schönerer Text
\usepackage{lmodern}

%Abbildungs- und Tabellenbeschriftungen ändern:
\usepackage[labelfont={bf,small}, textfont={sf, small}, margin=1cm, format=hang, justification=justified]{caption}

\pagestyle{scrheadings}
\clearscrheadings
\clearscrplain
\clearscrheadfoot
\renewcommand{\headfont}
\normalfont\sffamily\bfseries

\cfoot{} % Mitte unten: Seitenzahlen bei plain
\setheadsepline{1pt} % Linie unter Head
\cfoot[\pagemark]{\pagemark}
\setheadwidth{text}
\setfootwidth{text}
\@ifundefined{textcolor}{\usepackage{color}}{}
\definecolor{hellgrau}{gray}{0.85}

% Umgebung für Breite Bilder definieren:
\newenvironment{narrow}[2]{%
\begin{list}{}{%
\setlength{\topsep}{0pt}%
\setlength{\leftmargin}{#1}%
\setlength{\rightmargin}{#1}%
\setlength{\listparindent}{\parindent}%
\setlength{\itemindent}{\parindent}%
\setlength{\parsep}{\parskip}}%
\item[]}{\end{list}}

\begin{document}

\begin{narrow}{-1in}{0in}
\includegraphics{pic\1.jpg}
\caption{Dies ist eine Test-Grafik. Die Bildunterschrift ist sehr lang und geht so über die ganze BIld-Breite und damit auch über die Text-Breite hinaus, wobei sie doch in der vorgegebenen Breite INNERHALB (je 1cm) der Textbreite bleiben soll.}
\end{narrow}
[\code]

Das wird nicht als Minimalbeispiel lauffähig sein, ich denke aber ihr wisst was ich meine, vllt. ist es ja eh ganz einfach und jemand kennt nen einfachen Trick, wie ich zu meinem Ergebnis komme.

Danke schonmal im Voraus!

sommerfee
Forum-Century
Forum-Century
Beiträge: 219
Registriert: Sa 12. Jul 2008, 08:02

Beitrag von sommerfee »

Wenn dein TeX-System recht aktuell ist (sprich: das caption-Paket mindestens die Versionsnummer 3.2 hat), dann könntest du versuchen, diesen Code entweder direkt nach dem Laden des caption-Paketes (wenn er global wirken soll), oder in die narrow-Umgebung vor \caption einzubauen (wenn er nur für diese eine Umgebung gelten soll):
\captionsetup{parboxrestore=full}
Dies bewirkt, daß extra Ränder (wie von "narrow", "wide", "itemize", ...) beim Setzen der \caption nicht beachtet werden.

(Diese Option ist noch nicht dokumentiert, weil ich leider noch nicht dazu gekommen bin, die Dokumentation zu aktualisieren.)

Wayne?
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: Do 9. Jun 2011, 18:13

Beitrag von Wayne? »

Hi!

Ich hab mal parboxrestore probiert, leider hat es nichts gebracht.
Das einzige, was es bewirkt hat (egal wo ich es gesetzt habe) war, dass die Bild-/Tabellenunterschriften jetzt auf der rechten Seite korrekt (also etwas kürzer als der Text) gebrochen werden, während auf der linken Seite der Unterschriftenrand immer noch identisch mit dem Bildrand ist.
Ich hab auch mal versucht mit hspace herumzuspielen, das bringt jedoch auch keinen Erfolg (und wäre ja ohnehin nur gefrickelt!).
Hat sonst noch jemand eine Idee wie ich mein Ziel noch erreichen könnte?
Gruß!

sommerfee
Forum-Century
Forum-Century
Beiträge: 219
Registriert: Sa 12. Jul 2008, 08:02

Beitrag von sommerfee »

Wayne? hat geschrieben:Ich hab mal parboxrestore probiert, leider hat es nichts gebracht.
Das einzige, was es bewirkt hat (egal wo ich es gesetzt habe) war, dass die Bild-/Tabellenunterschriften jetzt auf der rechten Seite korrekt (also etwas kürzer als der Text) gebrochen werden, während auf der linken Seite der Unterschriftenrand immer noch identisch mit dem Bildrand ist.
Dann ist das entweder ein Fehler im caption-Paket oder ein Seiteneffekt von sonstirgendwas.

BTW: Die "narrow"-Umgebung ist so, wie sie bei dir definiert ist, sehr anfällig für Seiteneffekte. Verwende lieber etwas robusteres, wie z.B. die "addmargin"-Umgebung, die KOMA-Script bereitstellt. (Verwendest du eine KOMA-Script-Klasse? In deinem Beispiel steht leider kein \documentclass.)
Hat sonst noch jemand eine Idee wie ich mein Ziel noch erreichen könnte?
Wenn du uns ein lauffähiges Minimalbeispiel geben würdest, hätten wir was, mit dem wir herumspielen könnten.

Wayne?
Forum-Newbie
Forum-Newbie
Beiträge: 9
Registriert: Do 9. Jun 2011, 18:13

Beitrag von Wayne? »

Ok, ich versuche mich mal an einem Minimalbeispiel, ich benutze den Latex-Vorspann aus LyX und ergänze die sonstigen Einstellungen (Dokumentklasse usw.):
\documentclass[paper=a4, fontsize=11pt]{report} % Kein KOMA(k.A. warum, ist eine von mir abgeänderte Vorlage...)
\usepackage[ngerman]{babel} 
\usepackage[automark, nouppercase,plainfootsepline,plainheadsepline,headsepline]{scrpage2}
\usepackage{microtype} %Schönerer Text
\usepackage{lmodern}

%Abbildungs- und Tabellenbeschriftungen ändern:
\usepackage[labelfont={bf,small}, textfont={sf, small}, margin=1cm, format=hang, justification=justified]{caption}

\pagestyle{scrheadings}
\clearscrheadings
\clearscrplain
\clearscrheadfoot
\renewcommand{\headfont}
\normalfont\sffamily\bfseries


\cfoot{} % Mitte unten: Seitenzahlen bei plain
\setheadsepline{1pt} % Linie unter Head
\cfoot[\pagemark]{\pagemark}
\setheadwidth{text}
\setfootwidth{text}
\@ifundefined{textcolor}{\usepackage{color}}{}
\definecolor{hellgrau}{gray}{0.85}

% Umgebung für Breite Bilder definieren:
\newenvironment{narrow}[2]{%
\begin{list}{}{%
\setlength{\topsep}{0pt}%
\setlength{\leftmargin}{#1}%
\setlength{\rightmargin}{#1}%
\setlength{\listparindent}{\parindent}%
\setlength{\itemindent}{\parindent}%
\setlength{\parsep}{\parskip}}%
\item[]}{\end{list}}


\begin{figure}[h]
\begin{narrow}{-1in}{0in}

\begin{centering}
\subfloat[10/5\label{fig:10/5}]{\begin{centering}
\includegraphics[width=10cm,height=10cm]{plank}}
\par\end{centering}

\begin{centering}

\par\end{centering}

} \subfloat[20/5]{\begin{centering}
\subfloat[10/5\label{fig:10/5}]{\begin{centering}
\includegraphics[width=10cm,height=10cm]{plank}}
\par\end{centering}

\begin{centering}

\par\end{centering}

}
\par\end{centering}

\begin{centering}
\caption{Hier steht der lange Bildunterschriftentext. Hier steht der lange Bildunterschriftentext.Hier steht der lange Bildunterschriftentext.Hier steht der lange Bildunterschriftentext.Hier steht der lange Bildunterschriftentext.Hier steht der lange Bildunterschriftentext.Hier steht der lange Bildunterschriftentext.}

\par\end{centering}

\end{narrow}
\end{figure}


sommerfee
Forum-Century
Forum-Century
Beiträge: 219
Registriert: Sa 12. Jul 2008, 08:02

Beitrag von sommerfee »

Wayne? hat geschrieben:Ok, ich versuche mich mal an einem Minimalbeispiel
Leider ist es aus diversen Gründen nicht lauffähig. Ich habe mich mal hingesetzt und versucht, fehlende Pakete zu ergänzen, die Verwendung der "centering"-Umgebungen zu sortieren, \makeatletter und \makeatother wo notwendig zu ergänzen, scheitere dann aber spätestens an Konstruktionen wie
} \subfloat[20/5]{\begin{centering}
\subfloat[10/5\label{fig:10/5}]{\begin{centering}
Schade, daß es LyX offensichtlich so schwer macht, Hilfe von LaTeX-Anwendern zu bekommen.

Versuchen wir es also anders, nämlich weiterhin mit Ratschlägen, von denen ich keine Ahnung ab, ob und wie einfach sich diese in LyX umsetzen lassen:

Eine Idee hattest du ja schon:
Ich hab schon versucht, die narrow-Umgebung VOR dem setzen der Bildunterschrift zu beenden, dann kommt aber ein LaTeX-Error beim Kompilieren.
Das sollte problemlos funktionieren, solange \caption noch innerhalb der "figure"-Umgebung steckt. Was für einen Fehler hast du bekommen?

Und dann gäbe es alternativ noch die Möglichkeit, der \caption zusätzlichen Rand zu geben, so daß es wieder stimmt, etwa mit \captionsetup{margin=3.54cm} direkt vor der \caption. (1cm + 1in = 3.54cm)

Benutzeravatar
Sepp99
Forum-Meister
Forum-Meister
Beiträge: 1569
Registriert: So 29. Aug 2010, 17:26
Wohnort: Offenhausen/OÖ

Beitrag von Sepp99 »

Auf mrunix gibt es dazu eine Lösung mit \makebox (siehe Anmerkung im Beispiel:
% http://texblog.net/latex-archive/layout/centering-figure-table/
% über http://www.mrunix.de/forums/showthread.php?t=71787

\listfiles
\documentclass[a4paper,10pt]{scrartcl}
\usepackage[english]{babel}
\usepackage{blindtext}
\usepackage{tabularx}
\usepackage[demo]{graphicx}
\usepackage{calc}%für \widthof
\begin{document}
 
\blindtext
\bigskip
 
\noindent\makebox[\textwidth]{%
\begin{tabularx}{1.5\textwidth}{XX}
  \blindtext & \blindtext
\end{tabularx}}
 
\bigskip
\blindtext
\bigskip

\begin{figure}[htb]
\noindent\makebox[\textwidth]{%
\includegraphics[width=1.4\textwidth]{mypic}}
\caption{Test}
\end{figure}

\bigskip
\blindtext 
\bigskip

\noindent
\Large Landkreis Musterstadt \\ \normalsize
\makebox[\widthof{\Large Landkreis Musterstadt}][s]{Landkreis Musterland}
\end{document}
@sommerfee
Nett, Deine Werbung :D

Gruß, Sepp.-

Antworten