Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

psfrag: Viele Zahlen automatisch ersetzen, z.B. zur Graphenbeschriftung

171 views
Skip to first unread message

arian

unread,
Jul 22, 2008, 6:43:24 PM7/22/08
to
Es geht um das Paket psfrag zum nachträglichen Ersetzen von Strings in
eps-Bildern, die in LaTeX-Dokumenten mit \includegraphics eingebunden
werden.

Ich wundere mich ein wenig, dass ich in allen solchen Graphiken (in
meinem Fall sehr viele Graphen) die üblichen ständig vorkommenden
Zahlen (Beschriftungen der Achsen dieser Graphiken), und das sind sehr
viele, per Hand einzeln ersetzen muss. Schließlich wird LaTeX nicht
erst seit gestern bevorzugt von Naturwissenschaflern, Ingenieuren und
Mathematikern verwendet und die lieben Graphen?

Ich verwende ja epsfrag unter anderem, weil ich es unschön finde, dass
die Beschriftungen meiner Graphiken ansonsten
1. mit der Graphik skalieren und nicht mehr in der Textschriftgröße
gesetzt werden,
2. insbesondere Formeln etc. nicht richtig dargestellt werden und
3. in den gruseligsten, unpassenden Schriftarten, am besten in Arial
dargestellt werden.

Konsequenterweise muss man also diese ganzen einfachen Zahlen mit
ersetzen.
Wenn ich es nun richtig gesehen habe, stört es psfrag nicht, wenn es
Strings, die zu ersetzen angegeben sind einfach nicht findet.
Wäre es nicht eine großartige Sache, wenn man psfrag einfach sagen
könnte, es soll automatisch alle Zahlen, sagen wir standardmäßig in
einem vernünfigen Rahmen (z.B. int von -1000 bis +1000), ansonsten
einstellbar, ersetzen? Zumindest, wenn diese nicht anders definiert
werden. Ich bin mit diesem Anliegen leider vorläufig aufgrund meiner
eigenen Unkenntnis in der "LaTeX-\renewcommand-Definition"
gescheitert. Eine einfache Schleife müsste doch diese ganzen Zahlen
generieren und die entsprechenden Kommandos generieren können...
Daher werden die Leser meiner Arbeit wohl wunderbare kleinskalierte
Arialbeschriftungen lesen müssen.

Sollte noch jemand meine Idee charmant finden und mehr Fähigkeiten in
LaTeX besitzen, vielleicht würde ja jemand den Ehrgeiz und die
Freundlichkeit besitzen, seine Idee hier zu posten?
Alternativ, vielleicht hat ja jemand dasselbe Problem schon gelöst und
es ist gar nicht nötig, das Rad neu zu erfinden?

Das wäre natürlich große Klasse und ich stelle den Vorschlag einfach
mal hier zur Diskussion.

Viele Grüße :-)

Arian

Christoph Bersch

unread,
Jul 23, 2008, 3:24:28 AM7/23/08
to
arian schrieb:

> Es geht um das Paket psfrag zum nachträglichen Ersetzen von Strings in
> eps-Bildern, die in LaTeX-Dokumenten mit \includegraphics eingebunden
> werden.
>
> Ich wundere mich ein wenig, dass ich in allen solchen Graphiken (in
> meinem Fall sehr viele Graphen) die üblichen ständig vorkommenden
> Zahlen (Beschriftungen der Achsen dieser Graphiken), und das sind sehr
> viele, per Hand einzeln ersetzen muss. Schließlich wird LaTeX nicht
> erst seit gestern bevorzugt von Naturwissenschaflern, Ingenieuren und
> Mathematikern verwendet und die lieben Graphen?

Nunja, dafür musst du die von dem Zeichenprogramm deiner Wahl verwendete
Schriftfamilie ändern ;-)
Mit gnuplot kannst du z.B. die CM-Schriften direkt in der eps-Ausgabe
verwenden. Kann dir jetzt aber nicht sagen, wie man es unabhängig vom
Zeichenprogramm machen kann. Das ist meiner Ansicht nach aber keine
Aufgabe für LaTeX und sollte von anderen Programmen gemacht werden.

> Ich verwende ja epsfrag unter anderem, weil ich es unschön finde, dass
> die Beschriftungen meiner Graphiken ansonsten
> 1. mit der Graphik skalieren und nicht mehr in der Textschriftgröße
> gesetzt werden,

Die Linien und Punkte werden auch mit skaliert. Daher solltest du
möglichst immer die Ausgabegröße nehmen, die du für dein Dokument brauchst.

> 2. insbesondere Formeln etc. nicht richtig dargestellt werden und

Einfache Sachen gehen auch mit gnuplot (enhanced eps), ist bei Matlab
auch kein Problem. Das ansonsten zu ersetzen ist auch kein Problem, da
es meist nur wenig ist.

> 3. in den gruseligsten, unpassenden Schriftarten, am besten in Arial
> dargestellt werden.

s.o.

Frohes Schaffen,
Christoph

Andrea Blomenhofer

unread,
Jul 23, 2008, 5:33:48 AM7/23/08
to
On 23 Jul., 09:24, Christoph Bersch <use...@bersch.net> wrote:

> Mit gnuplot kannst du z.B. die CM-Schriften direkt in der eps-Ausgabe
> verwenden.

Gnuplot kennt ausserdem die epslatex-Ausgabe: Grafik in eps, sämtliche
Beschriftung in LaTeX (in der aktuellen Textschriftgröße am Ort des
\input-Befehls).

Mit den CM-Schriften direkt in Gnuplot habe ich auch schon
experimentiert, war aber nicht so recht überzeugt: die Abstände der
Buchstaben sind anders als im Fließtext, und das schaut - meiner
Meinung nach - eigenartiger aus, als die konsequente Verwendung einer
anderen Schrift in den Grafiken.

> > 2. insbesondere Formeln etc. nicht richtig dargestellt werden und
>
> Einfache Sachen gehen auch mit gnuplot (enhanced eps), ist bei Matlab
> auch kein Problem. Das ansonsten zu ersetzen ist auch kein Problem, da
> es meist nur wenig ist.

So etwas lässt sich auch problemlos per Paket overpic nachträglich
über beliebige Grafiken drüberlegen.

Gruß,
Andrea

Peter Ullrich

unread,
Jul 23, 2008, 2:51:32 PM7/23/08
to
probier doch mal pgf / tikz

arian

unread,
Jul 23, 2008, 6:26:20 PM7/23/08
to
On 23 Jul., 09:24, Christoph Bersch <use...@bersch.net> wrote:

> Mit gnuplot kannst du z.B. die CM-Schriften direkt in der eps-Ausgabe
> verwenden. Kann dir jetzt aber nicht sagen, wie man es unabhängig vom
> Zeichenprogramm machen kann. Das ist meiner Ansicht nach aber keine
> Aufgabe für LaTeX und sollte von anderen Programmen gemacht werden.

Naja, ich bin nunmal leider an gewisse Programme gebunden. Das sind,
wie bei so vielen, Matlab, Mathematica, Origin. Und die Schriftart/
Familie auszuwählen wäre wohl noch das geringste Problem, auch wenn
das bereits nervt. Die Skalierung ist das ärgerlichste und das sollte
man ganz zum Schluss machen, sinnvollerweise wohl da, wo man die
Graphik einbindet und das letzte Mal die Maße ändert, das ist eben
LaTeX.
Und wenn ich in LaTeX dem Programm freie Hand lasse, die
ästhetischsten \textwidth und anderen Maße zu wählen, dann wäre es
schon sehr merkwürdig inkonsistent, die mit dem Lineal auszumessen und
das Zeug danach zu fertigen. Denke ich.

> Die Linien und Punkte werden auch mit skaliert. Daher solltest du
> möglichst immer die Ausgabegröße nehmen, die du für dein Dokument brauchst.

Klar schaue ich, dass die Größe ungefähr passt. Aber das ist aber das
schöne an psfrag. Deshalb ersetze ich ja alle Beschriftungen mit
diesem Paket, funktioniert soweit ja auch blendend, schließlich
skaliert zwar das Bild, aber die Anker bleiben, wo sie sein sollen.
Nur die ewigen, monotonen Zahlenreihen, die am Rand der Graphen
stehen, die alle einzugeben ist unglaubliche Zeitverschwendung...

> Einfache Sachen gehen auch mit gnuplot (enhanced eps), ist bei Matlab
> auch kein Problem. Das ansonsten zu ersetzen ist auch kein Problem, da
> es meist nur wenig ist.

Verstehe ich das richtig? enhanced eps geht mit Matlab? Habe ich
gesucht, nachdem Du das geschrieben hast, aber leider nichts dazu
finden können... Vielleicht nur bei der aktuellsten Version? Alle
meine in anderen Programmen generierten Ergebnisse dann zum Schluss
nochmal durch Gnuplot zu jagen, wobei ich mit dem Programm von den
genannten am wenigsten auskenne, das ist irgendwie auch ein bisschen
umständlich... wobei diese Funktion "enhanced eps" ja wirklich ein
"Verkaufsargument" von Gnuplot sein könnte. :-)

pgf/tikz habe ich mir gerade das erste Mal kurz angeschaut... nur, wie
es mir scheint ist das nicht viel anderes als ein stark erweitertes
pstricks... oder? Oder wüsstest du, dass man damit entsprechende
Schleifen zum Ersetzen einer riesigen Anzahl von Zahlenreihen
programmieren könnte? Dann würde es sich vielleicht lohnen, dass ich
mich da erstmal einarbeite, auch wenn ich befürchte, dass das ein
bisschen zu lange dauern würde bei dem riesen System...

> So etwas lässt sich auch problemlos per Paket overpic nachträglich
> über beliebige Grafiken drüberlegen.

Wenn ich schon Vektorgraphiken mit Text drin habe, wäre ja das
generieren eines überlagerten overpics, wenn ich das richtig gesehen
habe, mindestens genauso aufwändig, wie das einzelne Ersetzen aller
Achsenbeschriftungen...

Also. Vielen Dank schonmal für Euer aller Ratschläge... so richtig
das, was ich meinte habe ich noch nicht. Vielleicht fällt mir ja doch
noch was ein. Eigentlich liegt es ja wohl nur an meiner eigenen
fehlenden Erfahrung... sonst hätte ich diese Ersetzungskommando-
Generierungsschleife schon längst programmiert...

Viele Grüße

Arian

Christoph Bersch

unread,
Jul 24, 2008, 5:30:22 AM7/24/08
to
arian schrieb:

> On 23 Jul., 09:24, Christoph Bersch <use...@bersch.net> wrote:
>
>> Mit gnuplot kannst du z.B. die CM-Schriften direkt in der eps-Ausgabe
>> verwenden. Kann dir jetzt aber nicht sagen, wie man es unabhängig vom
>> Zeichenprogramm machen kann. Das ist meiner Ansicht nach aber keine
>> Aufgabe für LaTeX und sollte von anderen Programmen gemacht werden.
>
> Naja, ich bin nunmal leider an gewisse Programme gebunden. Das sind,
> wie bei so vielen, Matlab, Mathematica, Origin. Und die Schriftart/
> Familie auszuwählen wäre wohl noch das geringste Problem, auch wenn
> das bereits nervt.

Aber genau das ist es doch, was du unter anderem willst: die Schrift der
Zahlen an den Achsen passen dir nicht -> Schriftfamilie ändern sollte
zumindest das beheben. Ich weiß, dass Matlab (auf jeden Fall 2007a und
2007b) die CM-Schriften sowohl als Type1 als auch als TTF mitbringt. Wie
man diese nun auswählt, weiß ich nicht. Auch sollte es entsprechend kein
Problem sein zumindest die TTF-Schriften der CM für Origin oder
Mathematica zu verwenden.

> Die Skalierung ist das ärgerlichste und das sollte
> man ganz zum Schluss machen, sinnvollerweise wohl da, wo man die
> Graphik einbindet und das letzte Mal die Maße ändert, das ist eben
> LaTeX.

Nunja, dass hängt nicht mit LaTeX zusammen. Egal womit du deinen Text
schreibst, musst du die Größe der Grafik deinem Satzspiegel anpassen!

> Und wenn ich in LaTeX dem Programm freie Hand lasse, die
> ästhetischsten \textwidth und anderen Maße zu wählen, dann wäre es
> schon sehr merkwürdig inkonsistent, die mit dem Lineal auszumessen und
> das Zeug danach zu fertigen. Denke ich.

Du beschreibst das jetzt so, als würde LaTeX nach Belieben und je nach
Mondphase die Maße anders wählen... Du musst dir halt einmal anschauen,
wie breit eine Grafik sein darf, wenn du sie alleinstehend einbindest
und wie breit, falls du zwei nebeneinander stellen willst, und gut ist!

>> Die Linien und Punkte werden auch mit skaliert. Daher solltest du
>> möglichst immer die Ausgabegröße nehmen, die du für dein Dokument brauchst.
>
> Klar schaue ich, dass die Größe ungefähr passt. Aber das ist aber das
> schöne an psfrag. Deshalb ersetze ich ja alle Beschriftungen mit
> diesem Paket, funktioniert soweit ja auch blendend, schließlich
> skaliert zwar das Bild, aber die Anker bleiben, wo sie sein sollen.

Aber mit psfrag kannst du die Linienbreite und Punktgröße nicht auch
noch einstellen...

> Nur die ewigen, monotonen Zahlenreihen, die am Rand der Graphen
> stehen, die alle einzugeben ist unglaubliche Zeitverschwendung...

s.o. -> zumindest CM TTF Schriften zu verwenden sollte wohl gehen (kann
dir aber nicht sagen, wie)

>> Einfache Sachen gehen auch mit gnuplot (enhanced eps), ist bei Matlab
>> auch kein Problem. Das ansonsten zu ersetzen ist auch kein Problem, da
>> es meist nur wenig ist.
>
> Verstehe ich das richtig? enhanced eps geht mit Matlab? Habe ich
> gesucht, nachdem Du das geschrieben hast, aber leider nichts dazu
> finden können... Vielleicht nur bei der aktuellsten Version?

Nur bei gnuplot heißt das 'enhanced eps', bei Matlab wird ein
LaTeX-Basissystem mitgeliefert, mit dem du Beschriftungen setzen kannst.
Kann dir aber auch hier nicht sagen, wie du es für die
Achsenbeschriftungen verwendest.

> Alle
> meine in anderen Programmen generierten Ergebnisse dann zum Schluss
> nochmal durch Gnuplot zu jagen, wobei ich mit dem Programm von den
> genannten am wenigsten auskenne, das ist irgendwie auch ein bisschen
> umständlich...

Ich mache es genau so: Mit Matlab simuliere ich, schreibe die Daten mit
savegpbin in eine Textdatei und plotte diese mit gnuplot. Die
eps-Dateien von gnuplot haben halt eine exzellente Qualität (im
Gegensatz z.B. zu Origin) und das ist mir wichtig.

> pgf/tikz habe ich mir gerade das erste Mal kurz angeschaut... nur, wie
> es mir scheint ist das nicht viel anderes als ein stark erweitertes
> pstricks... oder?

Eher so eine Art Postscript unabhängiges PSTricks mit etwas anderer
Funktionalität.


Vielleicht bringt dich das bei deinen Überlegungen weiter,

Frohes Schaffen,
Christoph

Andrea Blomenhofer

unread,
Jul 24, 2008, 7:04:50 AM7/24/08
to
On 24 Jul., 00:26, arian <akrie...@googlemail.com> wrote:
> Naja, ich bin nunmal leider an gewisse Programme gebunden. Das sind,
> wie bei so vielen, Matlab, Mathematica, Origin.

Sag doch gleich, was Du benutzt...

Mir ist gestern (auf Deine Frage hin) das Paket psfragx aufgefallen,
das ich noch nicht kannte. Und in diesem Paket schlummert ein Skript
namens laprint für Matlab, das (der Dokumentation nach) für Matlab das
gleiche tut, wie das epslatex-Terminal für Gnuplot:
Es erzeugt eine eps-Grafik mit Beschriftung separat in einer .tex-
Datei.

Das könnte die Lösung für Dein Problem sein - zumindest für Matlab.

> > So etwas lässt sich auch problemlos per Paket overpic nachträglich
> > über beliebige Grafiken drüberlegen.
>
> Wenn ich schon Vektorgraphiken mit Text drin habe, wäre ja das
> generieren eines überlagerten overpics, wenn ich das richtig gesehen
> habe, mindestens genauso aufwändig, wie das einzelne Ersetzen aller
> Achsenbeschriftungen...

Ja, siehst Du richtig, wenn Du sämtlichen Text ersetzen willst, bringt
es nix. Wenn Deine Achsenbeschriftung aber schon passt (CM oder was
auch immer in sinnvoller Größe verwendet), und Du nur Formeln oder
ähnliches noch in die Grafik setzen willst, hat overpic den Vorteil
über psfrag, dass Du keinen "Platzhalter" im eps brauchst, der ersetzt
wird.

Gruß,
Andrea

Ina Reichel

unread,
Jul 24, 2008, 8:31:11 PM7/24/08
to
arian <akri...@googlemail.com> wrote:
>Naja, ich bin nunmal leider an gewisse Programme gebunden. Das sind,
>wie bei so vielen, Matlab, Mathematica, Origin. Und die Schriftart/
>Familie auszuwählen wäre wohl noch das geringste Problem, auch wenn
>das bereits nervt. Die Skalierung ist das ärgerlichste und das sollte
>man ganz zum Schluss machen, sinnvollerweise wohl da, wo man die
>Graphik einbindet und das letzte Mal die Maße ändert, das ist eben
>LaTeX.

Zumindest in Matlab kann man doch ganz einfach beim Export die Grösse
angeben. Ich habe üblicherweise für alle meine Plots noch das Skript,
dass ich sie in 10 Sekunden neu erzeugen und dann gegebenenfalls in
einer anderen Grösse exportieren kann.

Cheers

Ina
--
Ina Reichel irei...@lbl.gov

"In the quiet of the night let our candle always burn
let us never lose the lessons we have learned." B.M. 1976

arian

unread,
Jul 24, 2008, 10:40:36 PM7/24/08
to

> Mir ist gestern (auf Deine Frage hin) das Paket psfragx aufgefallen,
> das ich noch nicht kannte. Und in diesem Paket schlummert ein Skript
> namens laprint für Matlab, das (der Dokumentation nach) für Matlab das
> gleiche tut, wie das epslatex-Terminal für Gnuplot:
> Es erzeugt eine eps-Grafik mit Beschriftung separat in einer .tex-
> Datei.
>
> Das könnte die Lösung für Dein Problem sein  - zumindest für Matlab.

Ja wunderbar! Vielen Dank :-)
In der Tat löst dieses kleine Matlab-Skript mein Problem zumindest für
die dort generierten Grafiken.

Wusste ich doch, dass sich irgendjemad schonmal damit beschäftigt
haben muss und dass Ihr davon etwas wissen würdet. :-)

Viele Grüße

Arian

0 new messages