PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bild mit jfig



fireglow
26-07-2005, 09:03
Hallo liebe Latexgemeinde,

ich möchte ein mit jfig erzeugtes bild in latex einbinden. der grund, dass ich das so machen will, ist, dass ich die texte, die im bild vorkommen von latex schreiben lassen will (sieht eben einfach besser aus).

jfig bietet die möglichkeit in seine bilder latex text einzubinden.

mit dem tool fig2dev kann man nun aus doof.fig ein doof.tex machen. die vorgehensweise ist dabei folgende..
es wird erst ein doof.ps erstellt, welches nur die bilddaten enthält. mit dieser doof.ps wird dann die doof.tex erstellt, welche die doof.ps und die latex schriften zusammenfügen soll.

diese datei wird nun in latex mit \input eingebunden.

nun zu meinem problem, beim einfügen entstehen fehler, es steht z.B. eine 12 vor dem text, wo eigentlich gar nichts stehen sollte

die fehlermeldung von latex lautet:


(doof.tex
! Undefined control sequence.
<argument> \xiipt

l.28 ...12}{14.4}{sf}\LARGE{Doof}\large{hihihi}}}}

The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.

)


vielleicht kann mir ja irgendjemand weiterhelfen, ich vermute es hat was mit dem befehl \SetFigFont in der .tex datei zu tun. die suche nach setfigfont im forum hat leider keine ergebnisse gebracht und auch in google bin ich nicht fündig geworden

inhalt der datei doof.tex



\begin{picture}(0,0)%
\special{psfile=doof.ps}%
\end{picture}%
\setlength{\unitlength}{4144sp}%
%
\begingroup\makeatletter\ifx\SetFigFont\undefined
% extract first six characters in \fmtname
\def\x#1#2#3#4#5#6#7\relax{\def\x{#1#2#3#4#5#6}}%
\expandafter\x\fmtname xxxxxx\relax \def\y{splain}%
\ifx\x\y % LaTeX or SliTeX?
\gdef\SetFigFont#1#2#3{%
\ifnum #1<17\tiny\else \ifnum #1<20\small\else
\ifnum #1<24\normalsize\else \ifnum #1<29\large\else
\ifnum #1<34\Large\else \ifnum #1<41\LARGE\else
\huge\fi\fi\fi\fi\fi\fi
\csname #3\endcsname}%
\else
\gdef\SetFigFont#1#2#3{\begingroup
\count@#1\relax \ifnum 25<\count@\count@25\fi
\def\x{\endgroup\@setsize\SetFigFont{#2pt}}%
\expandafter\x
\csname \romannumeral\the\count@ pt\expandafter\endcsname
\csname @\romannumeral\the\count@ pt\endcsname
\csname #3\endcsname}%
\fi
\fi\endgroup
\begin{picture}(2155,1255)(3311,-2601)
\put(4051,-2086){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{sf}\LARGE{Doof}}}}
\end{picture}


beim lesen der beiträge ist mir aufgefallen, dass oftmals der header des dokumentes von bedeutung ist, deswegen hier der header...

im anhang befindet sich ein minimalbeispiel, die im anhang befindliche doof.tar muss noch in doof.ps umbenannt werden, dann kann das beispiel ausgeführt werden



%Einstellungen für das Dokument
\documentclass[liststotoc,idxtotoc,10pt,a4paper,oneside]{scrbook} %openright öffnet neue chapter rechts twoside zweiseitiges dokument
\usepackage[T1]{fontenc} %wörter mit umlauten werden richtig getrennt
\usepackage[latin1]{inputenc} %umlaute können im text geschrieben werden
\usepackage{ngerman} %neue deutsche trennregeln
\usepackage{brolof} %vernünftige abstände in der listoffigures
\usepackage{fancyhdr} %schicke kopf und fusszeilen
\usepackage{wrapfig}
\usepackage[final]{graphicx} % Einbinden von EPS-Grafiken unterstuetzen
\usepackage{pdfpages} % Einbinden von PDF-Dokumenten
\usepackage{subfigure}
\usepackage{float} %ermöglicht das explizite positionieren von abbildungen mitells der option H
\usepackage{longtable} %tabellen die über mehrere seiten gehen können
\usepackage{hhline} %umfangreichere strichauswahl in tabellen
\usepackage{fancybox} %benutzung von boxen
\usepackage{verbatim}
\usepackage{trfsigns} %symbol für laplace fourier oder z transformation
\usepackage{amsmath} %mathematische symbole
\usepackage{amssymb} %weitere mathematische symbole
\usepackage[amssymb]{SIunits} %ermöglicht einfaches einbinden von si-einheiten
\addunit{\mue}{µ} %zusätzlich definierte unit fuer siunits package
\usepackage{setspace} %einstellen des zeilenabstandes mit \onehalfspacing
\usepackage{helvet} %schriftart ähnlich arial, wirkt sich hier nur auf überschriften nicht aber auf den text aus
\usepackage{anysize} % einfache Ränder anpassung
\marginsize{3cm}{2cm}{3cm}{2cm} %linker Rand, rechter Rand, oben, unten
\renewcommand{\familydefault}{phv} %hierdurch wird nun auch der text in helvetica geschrieben
\onehalfspacing
\pagestyle{fancy}
\fancyhf{}
\fancyhead[OR]{\thepage}
\fancyhead[OL]{\MakeUppercase{\rightmark}}

\renewcommand{\chaptermark}[1]{\markboth{\MakeUppercase{\thechapter.\ \ #1}}{\MakeUppercase{\thechapter.\ \ #1}}} %muss vielleicht wieder raus

\fancypagestyle{plain}{
\fancyhf{}
\fancyhead[OR]{\thepage}
}

\parindent 0cm %setzt den einzug am anfang von absätzen auf null

daswaldhorn
26-07-2005, 10:08
Hallo,

ich kenne jfig nicht, klingt aber ähnlich wie xfig. Gibts da ne Verwandschaft? Wenn du direkt *.eps-Dateien erzeugen kannst, vielleicht gehts auch über ps, dann kann ich dir fragmaster (http://tug.ctan.org/pkg/fragmaster) empfehlen. Da kannst du Test von Latex einfügen lassen und erhälst dann eine neue eps-Datei mit dieser Ersetzung, was du ganz normal mit \includegraphics einbindest. Das bläht deinen eigentlichen LaTeX-Code nicht so auf.

Grüße, Carsten

pospiech
26-07-2005, 11:18
ich schließe mich dem an. Der Code der jfig (kompatibel zu xfig) erzeugt ist fraglich. Besser ist es ein eps zu erstellen und die fraglichen Stellen per psfrag zu ersetzten.

So habe ich es auch immer genutzt.

Matthias

red.iceman
26-07-2005, 14:05
Es scheint am setspace-Paket zu liegen:
http://www.maths.soton.ac.uk/~ap/latex/figures.html

(unten bei winfig findest du etwas dazu)

Alternativ zu den vorgeschlagenen Methoden kannst du auch pictex benutzen, falls jfig ins pictex-format exportieren kann. So mache ich es immer.
Eine andere Möglichkeit ist es, epic (eepic, eepicemu) zu benutzen, allerdings gibt es da Probleme mit pdflatex, genauer gesagt: pdflatex verträgt sich nicht mit eepic.
Beide Methoden haben den Vorteil, dass die Grafiken in Latex generiert und gezeichnet werden, was i.d.R. besser aussieht.
Und das Argument, dass dadurch der Code aufgebläht wird, ist keins, da man den Teil einfach auslagern und mit \input einbinden kann.

Gruß

ri

idefix
26-07-2005, 16:56
ich speichere die xfigs ganz normal, konvertiere die dann mit fig2dev in ein pdf und füge das Bild dann folgendermassen ein:


\piccaption{with additional PCI-X traffic\label{fig:bm-fiber-tp-pcix}}
\parpic[r]{\includegraphics[width=0.3\textwidth]{bm-fiber-tp-pcix}}

weiter oben noch ein:

\usepackage{picins}

fireglow
27-07-2005, 08:29
vielen dank für all die hinweise

ich habe weiterhin das problem, dass ich mit pdflatex arbeiten möchte, da ich viele bilder in jpg format habe und diese sehr klein sind wenn ich z.B. ein jpg mit 100k in ein eps wandle habe ich gleich ein 1mb grosses bild. auserdem habe ich beim wandeln verluste. am ende des dokumentes sollen auserdem pdf-dateien eingebunden werden, dies funzt leider alles nur wenn ich pdflatex verwende. auch bei der lösung mit fig2dev gibt sich das problem, dass das bild als .ps hinterlegt ist und somit auch nur mit latex funktioniert, nicht aber mit pdflatex. ich suche also weiterhin eine möglichkeit in bildern schriften durch latexschriften zu ersetzen ohne auf pdflatex zu verzichten.

@red.iceman:
das mit dem setspace paket war die lösung des prolems, vielen dank also deswegen. aber mir ist bisher noch keine möglichkeit eingefallen, wie ich anderthalbfachen zeilenabstand ohne setspace und /onehalfspacing hinbekomme.

kannst du mir nochmal erklären, wie das mit pictex funzt, mir ist das so noch nicht klar geworden.

@idefix:
dann habe ich aber immernoch das problem, dass ich nicht in der lage bin in latex mittels psfrag schriften im bild zu ersetzen, geht nur mit .eps dateien. ausserdem lässt fig2dev nur den weg über .ps zu .tex zu. anderes wird nicht unterstützt.

@daswaldhorn:
jfig ist ein kostenpflichtiger klone von xfig für windows, das einzige was ich so als sinnvolles programm gefunden habe, dass in der lage ist vernünftig als eps zu speichern. wahrscheinlich sollte ich doch das ganze mit xfig machen. hab das mit psfrag probiert, geht super, aber man braucht dafür keine neue eps zu erstellen du kannst einfach die eps mit includegraphics einbinden und dann davor die psfrag-ersetzungen schreiben.



\begin{figure}
\psfrag{Imager}{Imager}
\includegraphics[width=1.00\textwidth]{../blockschaltbild.eps}
\label{fig:blockschaltbild}
\end{figure}

daswaldhorn
27-07-2005, 09:39
Hallo,
...Ich suche also weiterhin eine möglichkeit in bildern schriften durch latexschriften zu ersetzen ohne auf pdflatex zu verzichten. ...Da gibts das tool epstopdf (oder eps2pdf), mit dem wandelst du deine *.eps-Dateien in pdf um, bindest die genauso mit \includegraphics ein und es funzt auch mit pdflatex.

Grüße, Carsten

idefix
27-07-2005, 09:48
dann habe ich aber immernoch das problem, dass ich nicht in der lage bin in latex mittels psfrag schriften im bild zu ersetzen, geht nur mit .eps dateien. ausserdem lässt fig2dev nur den weg über .ps zu .tex zu. anderes wird nicht unterstützt.

zu dem Problem von psfrag kann ich dir nicht helfen, da ich es nicht einsetze.

In xfig gab es eine Möglichkeit direkt in Latex zu schreiben um z.B. griechische Symbole reinzubekommen. Ich erinnere mich leider nicht mehr wie, aber hab da mit special Flag irgendwas im Hinterkopf, kann aber sein, das das nur mit eepic oder der gleichen geht.

Und fig2dev konvertiert bei mir direkt in pdf:
fig2dev -L pdf

fireglow
27-07-2005, 10:02
@daswaldhorn:
aber wie kann ich denn in einem .eps file die schriften ersetzen? bisher ist mir das nur mit .ps files gelungen.

@all:
bei der verwendung mit pictex treten sehr viele fehler auf, manche lassen sich durch die vervendung des pictexwd-pakets vermeiden aber latex gibt mir noch die fehlermeldung, dass es mit /endofpicture} nix anfanngen kann. unter der verwendung mit m-pictex treten noch mehr fehler auf.

auserdem habe ich noch keine möglichkeit gefunden, das bild zu skalieren.

fehlermeldungen


! No room for a new \dimen .
\ch@ck ...\else \errmessage {No room for a new #3}
\fi
l.50 \newdimen\@Leftmargin
\@Leftmargin=3.0cm

und...

! Undefined control sequence.
<argument> \xxvpt

l.976 \endpicture}

The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.


der erste fehler tritt nicht mehr auf wenn ich das pictexwd-paket verwende der untere bleibt jedoch.

ausserdem erscheinen im bild vor dem text komische sachen 24.88, steht direkt vor dem text der ausgegeben werden soll.

@red.iceman:
vielleicht kannst du nochmal detaillierter beschreiben, wie das mit dem pictex funzt, muss ich im grafikprogramm schon auf der richtigen größe des bildes sein, damit es exportiert in pictex vernünfig verwendet werden kann?

naja, das skalierungsproblem gilt es dann auch noch zu lösen...

daswaldhorn
27-07-2005, 10:04
Hallo,
@daswaldhorn:
aber wie kann ich denn in einem .eps file die schriften ersetzen? bisher ist mir das nur mit .ps files gelungen.Da kommt wieder das psfrag mit dem Script fragmaster ins Spiel, siehe oben :)

Grüße, Carsten

fireglow
27-07-2005, 10:44
okay..

ich hab nochmal ein bisschen rumprobiert, die fehler resultieren aus der verwendung mit setspace, ohne den befehl funzt es(abgesehen von der skalierung), aber dann bekomme ich eben keinen anderthalbfachen zeilenabstand, ist aber leider vorgabe des instituts

für weitere vorschläge wäre ich sehr dankbar

als zusammenfassung für spätere leser


mit psfrag funzt das super, dazu muss das .eps bild (erzeugt mit xfig, oder jfig) per includegraphics eingebunden und mit psfrag die entsprechenden texte ersetzt werden, mit dieser lösung funzt das skalieren und soweiter aber es können keine pdf dateien eingebunden werden geschweige denn jpgs als bilder verwendet werden, wer also sowieso keine jpg dateien verwendet bzw. pdfs einbindet dürfte mit dieser lösung gut bedient sein, auch die verwendung des setspace paketes macht hier keine probleme

bei der verwendung der lösung mit fig2dev über die optionen pstex und pstex_t funzt das ganze auch nur mit latex aber nicht mit pdflatex, ausserdem ist hierbei auch wieder die unkompatibilität mit dem paket setspace vorhanden. es gilt also: ohne setspace und ohne jpgs und pdfs die eingebunden werden müssen super lösung.

nun zu pictex, traumhafte lösung für mein problem, da die verwendung mit pdflatex möglich ist, somit lassen sich wunderbar jpgs und pdf dateien einbinden, nachteil wieder, onehalfspacing des setspace pakets funzt nicht, bzw. ist inkompatibel ausserdem kann ich das bild nicht skalieren

fireglow
27-07-2005, 10:46
@daswaldhorn:
jau stimmt, hab ich vergessen. aber pictex gefällt mir vom prinzip her besser, das ist deutlich weniger aufwand. muss nur noch anderthalbfachen zeilenabstand hinbekommen und die skalierung, ich denke dann ist das die optimale lösung für alle die pdflatex verwenden.

auserdem ist mir nicht klar wie ich, nachdem ich mit psfrag die schrift ersetzt habe (was ich ja im latex-editor mache [texniccenter]) daraus vorher ein pdf erstelle, was ich dann ja super einbinden könnte. bzw. wie ich mit psfrag angewendet auf das eps file dann wieder ein eps-file erhalte. im editor ist mir das noch nicht gelungen.

und mit dem fragmaster komme ich irgendwie nicht klar, checke die benutzung nicht so ganz.

daswaldhorn
27-07-2005, 11:36
Hallo,

also ich glaube, ich versteh nicht ganz dein Problem. Die Seite von psfrag (http://www.tat.physik.uni-tuebingen.de/~vogel/fragmaster/main.html) hast du doch gelesen, da ist es doch gut beschrieben.
Die Idee ist, aus der EPS-Grafik eine neue EPS-Grafik zu erzeugen, in der die LaTeX-Ersetzungen bereits durchgeführt sind. Diese neue EPS-Grafik kann dann samt der Ersetzungen nach PDF konvertiert werden und in pdflatex eingebunden werden.Genau das macht dieses fragmaster.pl-Script. Auf Linux-Maschinen sollte ein Perl-Interpreter schon mit drauf sein, für Windows musst du den bestimmt selber installieren. Auf CPAN (http://www.cpan.org/ports/index.html#win32) solltest du fündig werden.

Grüße, Carsten

fireglow
27-07-2005, 13:26
@daswaldhorn:
wenn ich mal zeit und ruhe habe gucke ich mir das mit pearl nochmal an. momentan ist mir das zuviel, was ich zusätzlich brauche, erst psfrag, dann pearl interpreter dann pdf einbinden.

aber danke für deine hilfe, du hast mir viele ansatzpunkte gezeigt.

grüsse

fireglow

idefix
27-07-2005, 13:38
wenn ich mal zeit und ruhe habe gucke ich mir das mit pearl nochmal an.
hihi, es heisst Perl.

fireglow
27-07-2005, 13:53
jau, hab ich jetzt auch gemerkt, nachdem ich mir das runtergeladen habe. aber wie das denn so funzt hab ich auf die schnelle nicht gerafft

red.iceman
28-07-2005, 21:07
Hi fireglow,

warum funktioniert bei dir pictex nicht mit dem setspace-Paket?
Ich mache es so:

\usepackage{xcolor,pictexwd}

\begin{document}
\input{file.pictex}
\end{document}


Setspace und pdflatex gehen bei mir problemlos.

ri

PS: xcolor brauchst du AFAIR für die xfig files, weil die das benutzen.

fireglow
29-07-2005, 07:22
keine ahnung, dann gibt er mir fehlermeldungen, die ohne das setspace \onehalfspacing nicht kommen

fireglow
29-07-2005, 07:34
im obigen header waren die xcolor und pictexwd pakete zwar noch nicht aber beim test mit pictex hatte ich die natürlich drin

dennoch kommt dieser fehler


<use ../resources/pictures/LrStandort2005.jpg> [4 <../resources/pictures/LrStan dort2005.jpg>]) (blockschaltbild.pictex ! Undefined control sequence. <argument> \xpt l.710 \endpicture} The control sequence at the end of the top line of your error message was never \def'ed. If you have misspelled it (e.g., `\hobx'), type `I' and the correct spelling (e.g., `I\hbox'). Otherwise just continue, and I'll forget about whatever was undefined. ! Undefined control sequence. <argument> \xpt l.710 \endpicture}
The control sequence at the end of the top line of your error message was never \def'ed. If you have misspelled it (e.g., `\hobx'), type `I' and the correct spelling (e.g., `I\hbox'). Otherwise just continue, and I'll forget about whatever was undefined. ! Undefined control sequence. <argument> \xpt l.710 \endpicture}
The control... usw

falls du noch eine idee haben solltest woran das liegen kann, wäre ich dankbar

hab nochmal ein minimalbeispiel angehängt, inklusive der fehlerausgabe, vielleicht hilft das weiter, die blockschaltbild.txt muss in .pictex umbenannt werden und die minimalbeispiel in .tex, aber das ist ja klar

red.iceman
29-07-2005, 15:40
Hi fireglow,

ich habe dein Minimalbeispiel mal ausprobiert - geht bei mir auch nicht. Nehme ich dagegen eine pictex-Datei von mir, geht es. Vielleicht stimmt etwas mit dem export von jfig nicht.
Soweit ich mich erinnere, benutzt jfig auch das normale fig-Format, oder? Kannst du mir diese Datei mal schicken, damit ich sie mit xfig nach pictex exportieren kann? Oder falls du selbst xfig hast, probier das mal aus.


ri

fireglow
29-07-2005, 18:52
logo kann ich, nur hab ich nix womit ich das hier posten kann kann nicht in tar oder so packen, schick mir mal ne personal message mit deiner mailadresse.