PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : floatrow vs. auto-pst-pdf



rolvo_volvo
20-03-2010, 09:15
Hallo zusammen,

Beim schreiben meiner Masterarbeit bin ich über ein Problem bei der Paketkombination floatrow und auto-pst-pdf gestossen. Kompiliert wird alles mit pdflatex. Wird alles mit latex übersetzt tritt der Fehler nicht auf.

Wenn ich pspicture Umgebungen mit floatrow benutzte, macht auto-pst-pdf alle Bilder doppelt und dementsprechend werden sie dann auch falsch eingefügt.

Für das folgende Minimalbeispiel heißt das folgendes:

Eigentlich sollte als erstes ein Rechteck erscheinen und dann eine Ellipse. Es erscheinen aber zwei Rechtecke. Wenn ich mir das Bilder pdf welches von auto-pst-pdf erstellt wurde anschaue, so besteht es aus zwei Rechtecken, gefolgt von zwei Ellipsen. Ohne floatrow besteht es aus einem Rechteck und einer Ellipse.

Ich hoffe das Problem konnte halbwegs anständig erklärt werden.

Grüsse aus Frankreich,

rolvo_volvo



\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{pstricks}
\usepackage{floatrow}
\usepackage{auto-pst-pdf}
\begin{document}

\begin{figure}[!ht]
\fcapside
{\caption{Hier soll ein Rechteck sein.}}
{\begin{pspicture}(0,-1.22)(7.36,1.22)
\psframe[linewidth=0.04,dimen=outer](7.36,1.22)(0.0,-1.22)
\end{pspicture}}
\end{figure}

\begin{figure}[!ht]
\ffigbox
{\caption{Hier soll eine Ellipse sein.}}
{\begin{pspicture}(0,-1.88)(3.24,1.88)
\psellipse[linewidth=0.04,dimen=outer](1.62,0.0)(1.62,1.88)
\end{pspicture}}
\end{figure}

\end{document}

voss
20-03-2010, 09:35
Eigentlich sollte als erstes ein Rechteck erscheinen und dann eine Ellipse. Es erscheinen aber zwei Rechtecke. Wenn ich mir das Bilder pdf welches von auto-pst-pdf erstellt wurde anschaue, so besteht es aus zwei Rechtecken, gefolgt von zwei Ellipsen. Ohne floatrow besteht es aus einem Rechteck und einer Ellipse.


floatrow schreibt zur Ermittlung der Breite sein Argument, also
die pspicture-Umgebung selbst nochmal raus, sodass es für
auto-pst-pdf alles doppelt gibt. Abhilfe:

\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{pstricks}
\usepackage{auto-pst-pdf}
\usepackage{ifpdf}
\ifpdf
\usepackage{floatrow}
\else
\def\fcapside#1#2{#2}
\def\ffigboxide#1#2{#2}
\fi
\begin{document}

\begin{figure}[!ht]
\fcapside{\caption{Hier soll ein Rechteck sein.}}{%
\begin{pspicture}(0,-1.22)(7.36,1.22)
\psframe[linewidth=0.04,dimen=outer](7.36,1.22)(0.0,-1.22)
\end{pspicture}}
\end{figure}

\begin{figure}[!ht]
\ffigbox{\caption{Hier soll eine Ellipse sein.}}{%
\begin{pspicture}(0,-1.88)(3.24,1.88)
\psellipse[linewidth=0.04,dimen=outer](1.62,0.0)(1.62,1.88)
\end{pspicture}}
\end{figure}

\end{document}

Herbert

mechanicus
20-03-2010, 09:37
Hi,


\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{pstricks}
\usepackage{floatrow}
\usepackage[dvips={ -A -o -Ppdf},pspdf={-dAutoRotatePages=/None},pdfcrop={}]{auto-pst-pdf}

\begin{document}

\begin{figure}[!ht]
\fcapside
{\caption{Hier soll ein Rechteck sein.}}
{\begin{pspicture}(0,-1.22)(7.36,1.22)
\psframe[linewidth=0.04,dimen=outer](7.36,1.22)(0.0,-1.22)
\end{pspicture}}
\end{figure}

\begin{figure}[!ht]
\ffigbox
{\caption{Hier soll eine Ellipse sein.}}
{\begin{pspicture}(0,-1.88)(3.24,1.88)
\psellipse[linewidth=0.04,dimen=outer](1.62,0.0)(1.62,1.88)
\end{pspicture}}
\end{figure}

\end{document}

Gruß aus Deutschland :D
Marco

EDIT: Da war ich wohl zu langsam -- Ich finde -A aber toll ;)

rolvo_volvo
20-03-2010, 11:18
Hi,

erstmal vielen Dank für eure äußerst schnellen Antworten!

Beide Ansätze funktionieren für das angegebene Beispiel. Marcos Ansatz funktioniert leider nicht mit der floatrow Option \FBwidth.

@Herbert: Ich glaube es soll \def\ffigbox#1#2{#2} heißen.

In meinem "richtigen" Dokument funktioniert Herberts Ansatz jedoch leider auch nicht. Ich werde jetzt mal fleissig testen und wenn ich die Lösung gefunden habe (oder der Verzweiflung nahe bin) werde ich es wissen lassen.

Als vergleich nochmal die beiden Lösungsansätze:

Marcos Lösung:


\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{floatrow}
\usepackage[dvips={ -A -o -Ppdf},pspdf={-dAutoRotatePages=/None},pdfcrop={}]{auto-pst-pdf}

\begin{document}

\begin{figure}[!ht]
\fcapside
{\caption{Hier soll ein Rechteck sein.}}
{\begin{pspicture}(0,0)(5,3)
\psframe[linewidth=0.04,dimen=outer](0,0)(5,3)
\end{pspicture}}
\end{figure}

\begin{figure}[!ht]
\fcapside[\FBwidth]
{\caption{Hier soll eine Ellipse mit seitlicher Beschriftung sein.}}
{\begin{pspicture}(0,0)(5,3)
\psellipse[linewidth=0.04,dimen=outer](0,0)(5,3)
\end{pspicture}}
\end{figure}

\begin{figure}[!ht]
\ffigbox
{\caption{Hier soll ein Quadrat sein.}}
{\begin{pspicture}(0,0)(3,3)
\psframe[linewidth=0.04,dimen=outer](0,0)(3,3)
\end{pspicture}}
\end{figure}

\end{document}


Herberts Lösung:


\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{psfrag}
\usepackage{floatrow}
\usepackage{auto-pst-pdf}
\usepackage{ifpdf}
\ifpdf
\usepackage{floatrow}
\else
\def\fcapside#1#2{#2}
\def\ffigbox#1#2{#2}
\fi

\begin{document}

\begin{figure}[!ht]
\fcapside
{\caption{Hier soll ein Rechteck sein.}}
{\begin{pspicture}(0,0)(5,3)
\psframe[linewidth=0.04,dimen=outer](0,0)(5,3)
\end{pspicture}}
\end{figure}

\begin{figure}[!ht]
\fcapside[\FBwidth]
{\caption{Hier soll eine Ellipse mit seitlicher Beschriftung sein.}}
{\begin{pspicture}(0,0)(5,3)
\psellipse[linewidth=0.04,dimen=outer](0,0)(5,3)
\end{pspicture}}
\end{figure}

\begin{figure}[!ht]
\ffigbox
{\caption{Hier soll ein Quadrat sein.}}
{\begin{pspicture}(0,0)(3,3)
\psframe[linewidth=0.04,dimen=outer](0,0)(3,3)
\end{pspicture}}
\end{figure}

\end{document}


Grüsse aus Frankreich,

rolvo_volvo

voss
20-03-2010, 12:09
In meinem "richtigen" Dokument funktioniert Herberts Ansatz jedoch leider auch nicht. Ich werde jetzt mal fleissig testen und wenn ich die Lösung gefunden habe (oder der Verzweiflung nahe bin) werde ich es wissen lassen.


logisch, weil du nur die Hälfte mitgeteilt hast ... das optionale
Argument bei \fcapside fehlte!


\usepackage{auto-pst-pdf}
\usepackage{ifpdf}
\ifpdf
\usepackage{floatrow}
\else
\newcommand\fcapside[3][]{#3}
\newcommand\ffigbox[3][]{#3}
\fi


Herbert