PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bildbeschriftung seitlich oben bündig



snuudz
13-12-2004, 09:22
Hallo LaTeX-Freunde,
ich muss an meiner Arbeit etwas Kosmetik betreiben und da habe ich folgendes Problem:

Die Beschriftung meiner Bilder soll rechts von den Bildern stehen. Soweit kein Problem, aber der Beschriftungstext soll oben bündig mit dem Bild beginnen. Ich schaffe aber nur, dass der Text unten bündig mit dem Bild endet.
Weiß einer von euch wie das geht?

Ach, und so mache ich das:

\begin{figure}[htb]
\begin{minipage}[b]{0.6\textwidth}
\vspace{0pt}
\includegraphics[width=\textwidth]{bild.eps}
\end{minipage}%
\hfill
\begin{minipage}[b]{0.35\textwidth}
\vspace{0pt}
\caption{\label{XY}BLABLA.}
\end{minipage}
\end{figure}

Vielen Dank schon mal für die Hilfe.
Gruß

blubb
14-12-2004, 10:31
FAQ 6.1.12 Wie kann ich die Unterschriften (\caption) neben eine Abbildung oder eine Tafel setzen?
Da ist eine elegantere Lösung für das "caption neben Bild" beschrieben.
Vielleicht wird dabei dein Problem auch gleich gelöst.

(Ansonsten: was passiert wenn du bei den Minipages [b] mit [t] ersetzt?)

snuudz
16-12-2004, 18:12
Erst einmal Danke für den Tipp. Ich hab es gleich mal ausprobiert. Leider hilft das "sidecap" nicht sonderlich, den ich bekomme es einfach nicht hin, dass der Text mit dem oberen Rand des Bildes beginnt.
Die Sache mit den Positionen [t] und [b] für die minipage geht nicht, da sie sich immer auf die laufende Zeile ausrichten und nach der ersten minipage ist die nun mal leider unten und nicht mehr oben.

Weiß noch jemand Rat?

blubb
17-12-2004, 09:20
Hmmm,
ich hab mal einen Blick auf den sidecap-style geworfen.
Mit SCtable erreichst du deinen Zweck (dann heisst es aber Tabelle, nicht Abbildung).

O.k. prinizipiell geht es, jetzt brauchen wir eine Mischung aus SCfigure und SCtable.
Wenn ich in sidecap.dtx (oder sty) reinschaue sehe ich die Definition

\newenvironment{SCfigure}{\SC@float[\SC@figure@vpos]{figure}}{\endSC@float}
\newenvironment{SCtable}{\SC@float[\SC@table@vpos]{table}}{\endSC@float}

\SC@figure@vpos steht auf b (=bottom)

Lösung 1: \SC@figure@vpos umdefinieren.
Lösung 2: eine eigene Umgebung myfig

Und zum Ausprobieren gleich ein Minimalbeispiel:

\documentclass{scrartcl}
\usepackage{blindtext}
\usepackage[rightcaption]{sidecap}
\makeatletter
\renewcommand{\SC@figure@vpos}{t}%Lösung 1
\newenvironment{myfig}{\SC@float[t]{figure}}{\endSC@float}%L2
\makeatother
\begin{document}

\begin{SCfigure}
\rule{4cm}{5cm}
\caption{Lösung 1}
\end{SCfigure}

x\begin{myfig}
\rule{4cm}{5cm}
\caption{Lösung 2}
\end{myfig}

\end{document}
Passt das? Oder habe ich was übersehen?

snuudz
21-12-2004, 17:53
a, das sieht nicht schlecht aus. Die 2.Lösung funktioniert. Bis auf eine Kleinigkeit, die echt seltsam ist. Das hatte ich übrigends auch schon bei meinem ersten SCfigure-Versuch.

ich mache einen Verweise im Text zu dem Bild. Immer bei dem letzten Bild das in der {myfigure} Umgebung steht gibt es eine Fehlermeldung beim TeXen, die keinen Sinn macht.

Also zuerst den LaTeX-Abschnitt:

##########
...blabla von $R_i$ erlaubt. Bild \ref{pic_ri} zeigt blabla...

\begin{myfigure}[1.2][htb]
\begin{minipage}[b]{0.6\textwidth}
\includegraphics[width=\textwidth]{bild.eps}
\end{minipage}%
\caption{\label{pic_u10para} Bild}
\end{myfigure}
###########

Beim TeXen gibt es dann folgenden Fehler und die Hilfe meint seltsames:

###########
! Argument of \@fifthoffive has an extra }.
<inserted text>
\par
l.1193 ...ung von $R_i$ erlaubt. Bild \ref{pic_ri}
zeigt
? h
I've run across a `}' that doesn't seem to match anything.
For example, `\def\a#1{...}' and `\a}' would produce
this error. If you simply proceed now, the `\par' that
I've just inserted will cause me to report a runaway
argument that might be the root of the problem. But if
your `}' was spurious, just type `2' and it will go away.
############

Fakt ist, es gibt definitiv kein '}' das sinnlos ist. Ich habe lang und breit nach einem gesucht.

Was kann das sein?

blubb
22-12-2004, 09:36
\caption{\label{pic_u10para} Bild}

Was passiert damit?
Der Inhalt von \caption wird für das Abbildungsverzeichnis in eine tof-Datei geschrieben und anschliessend als Unterschrift ausgegeben
Das hat zum einen den Effekt, das das Label doppelt gesetzt wird (im text und im Abbildungsverzeichnis), zum anderen "zerbricht" das makro \label anscheinend (könnte zumindest die Erklärung für den Fehler sein, habe ich jetzt nicht probiert).

D.h. Lösung:
\caption{Bild}\label{pic_u10para}
(Label muss nach \caption kommen, sonst wird das vorherige Bild referenziert)

snuudz
22-12-2004, 12:09
OK, die label habe ich alle geändert. Nun sieht es schon etwas besser aus. Beim ersten Durchlauf (TeXen) gibt es keine Fehler. Es wird aber bemerkt, das ein zweiter Durchlauf nötig ist, für die Verweise. Schaue ich mir jetzt schon einmal das DVI an, sieht das Bild mit Text bündig oben rechts super aus. Es fehlt allerdings im Text tatsächlich der Verweis auf das Bild.
OK, noch einmal durchlaufen lassen, und da haben wir den alten Fehler wieder. Ich habe mal in das AUX-file reingeschaut, da stimmt die Nummerierung, habe aberkeine Ahnung ob das weiterhilft.

Sorry, wenn das so aufwendig ist.
Vielleicht weißt du ja noch einen Rat. Ich kenne mich da leider nicht so gut aus.

Gruß

blubb
22-12-2004, 12:33
Hmm, schwierig zu sagen ohne genauerer Informationen.
Tendenziell kann der Fehler auch in der lof-Datei liegen.

Kannst du ein Minimalbeispiel bauen und posten?
Am besten \includegraphics mit \rule{2cm}{3cm} austauschen (macht einfach einen schwarzen Block statt dem Bild, sollte zur Fehleranalyse egal sein).

snuudz
22-12-2004, 14:27
Ich habe mal die ganze Sache eingedampft, so dass nur noch das wesentliche bleibt. Der Fehler ist aber immer noch da.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\documentclass[12pt,a4paper,oneside]{report}

\usepackage[dvips=true,bookmarks=true]{hyperref}
\usepackage[rightcaption]{sidecap}

\makeatletter
\newenvironment{myfigure}{\SC@float[t]{figure}}{\endSC@float}%L2
\makeatother

\begin{document}

... Bild \ref{pic_ri} zeigt ...

\begin{myfigure}[1.2][htb]
\rule{2cm}{3cm}
\caption{Bild}\label{pic_ri}
\end{myfigure}

\end{document}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Wenn ich das package hyperref auskommentiere, dann ändert sich die Fehlermeldung.

Vielleicht kannst du ja damit etwas anfangen.

Gruß

blubb
22-12-2004, 14:38
Das Beispiel läuft bei mir durch.

Kannst du mal vor \begin{document} ein \listfiles einfügen und im .log-File schauen welche Versionen du verwendest.

Ich habe

*File List*
report.cls 2001/04/21 v1.4e Standard LaTeX document class
size12.clo 2001/04/21 v1.4e Standard LaTeX file (size option)
hyperref.sty 2003/09/15 v6.74i Hypertext links for LaTeX
keyval.sty 1999/03/16 v1.13 key=value parser (DPC)
pd1enc.def 2003/09/15 v6.74i Hyperref: PDFDocEncoding definition (HO)
hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive
url.sty 1999/03/28 ver 1.5x Verb mode for urls, etc.
hdvips.def 2003/09/15 v6.74i Hyperref driver for dvips
pdfmark.def 2003/09/15 v6.74i Hyperref definitions for pdfmark specials
sidecap.sty 2003/06/06 v1.6f SideCap Package (RN/HjG)
ifthen.sty 2001/05/26 v1.1c Standard LaTeX ifthen package (DPC)
nameref.sty 2001/01/27 v2.19 Cross-referencing by name of section
ragged2e.sty 2003/03/25 v2.04 ragged2e Package (MS)
everysel.sty 1999/06/08 v1.03 EverySelectfont Package (MS)

snuudz
22-12-2004, 16:46
Aha, ich hab wohl ein paar ältere Versionen. Wobei der Rechner hier gerade neu eingerichtet wurde (Debian-LINUX).



report.cls 2001/04/21 v1.4e Standard LaTeX document class
size12.clo 2001/04/21 v1.4e Standard LaTeX file (size option)
hyperref.sty 2003/01/22 v6.73n Hypertext links for LaTeX
keyval.sty 1999/03/16 v1.13 key=value parser (DPC)
pd1enc.def 2003/01/22 v6.73n Hyperref: PDFDocEncoding definition (HO)
hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive and teTeX
url.sty 1999/03/28 ver 1.5x Verb mode for urls, etc.
hdvips.def 2003/01/22 v6.73n Hyperref driver for dvips
pdfmark.def 2003/01/22 v6.73n Hyperref definitions for pdfmark specials
sidecap.sty 2000/02/04 v1.5d SideCap Package (RN/HjG)
ifthen.sty 2001/05/26 v1.1c Standard LaTeX ifthen package (DPC)
nameref.sty 2001/01/27 v2.19 Cross-referencing by name of section

Die Frage ist nur, wie bekomme ich die neuen Packete hier drauf, wenn ich keine root-Rechte habe?

blubb
22-12-2004, 16:49
Du kannst einen lokalen texmf-Baum aufbauen.

Da war glaub erst kürzlich ein Thread.
In den FAQ steht unter http://www.dante.de/faq/de-tex-faq/html/makros1.html#7 was.

Ansonsten würde ich dazu einen neuen Thread starten (bei dem ich dir jetzt weniger helfen kann).

snuudz
22-12-2004, 16:54
OK, ich werde mich da mal durchwurschteln. Ansonst muß eben ein Admin ran.

Erstmal vielen Dank und schöne Feiertage.

Schöne Grüsse

edico
23-12-2004, 05:09
... es müsste so funktionieren:
[1] die neuesten packages - wie blubb sagte - in deinem (ggf. neu einzurichtenden) lokalen tex-dir ablegen, z.B. ~/.texmf
[2] den(die) Pfad(e) in deinem local sytem (~./bashrc oder ~/.profile) deklarieren mit «export TEXINPUTS=$TEXINPUTS:$HOME/.texmf/newpackage».
[3] dein TeX aktualisieren mit $ texhash an der console
edico