PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : psfrag - String ersetzen mit Original-Schriftart



hueschel
18-04-2012, 21:44
Hallo liebe LateX-Gemeinde,

ich sitze derzeit an meiner Diplomarbeit und darin muss ich in ps-Grafiken chemische Strukturen durchnummerieren. Das ganze soll dynamisch geschehen daher verwende ich das sog. "chemnum" Paket. Dieses ersetzt temporäre Platzhalter (TMP1, TMP2, TMP3, ...) in ps-Grafiken durch Zahlen, die durch einen Counter definiert sind

Beispiel:


Verbindung \cmpd{alkohol1} und \cmpd{alkohol2} sind Alkohole

gibt aus: "Verbindung 1 und 2 sind Alkohole"

Nun kann man mittels


\begin{scheme}
\cmpdref{alkohol1} % Ersetzt in der Graphik TMP1 mit 1
\cmpdref{alkohol2} % Ersetzt in der Graphik TMP2 mit 2
\includegraphics{schema}
\end{scheme}

die ps-Datei abändern.

So weit so gut. Das Problem ist, dass die neu erstellten Zahlen nicht die Original-Schrift der Datei sondern den Latex-Schriften entsprechen. Oft sitzen die neuen Zahlen auch etwas abseits von der eigentlich gedachten Stelle. Mir wäre es lieber wenn praktisch der Code der ps-Datei geändert werden würde, statt eine neue Ebene auf das vorhanene Bild zu pappen. Das Paket arbeitet mit psfrag.

Gibt es die Möglichkeit, ps-Dateien direkt zu ändern?

(Wenn man ps-Dateien mit einem Texteditor öffnet, kann man tatsächlich die Platzhalter finden und beliebig ersetzen. Der neue Text erscheint dann wie gewollt in der erneuerten Datei)

cgnieder
19-04-2012, 13:22
Ich verstehe nicht ganz, wieso Du nicht die „LaTeX-Schriften“ haben möchtest? Wieso verwendest Du nicht dieselbe Schriftart einfach auch beim erstellen der eps-Datei?

\cmpdref macht im Grunde folgendes:

\psfrag{tmp-marker}[b][b]{\cmpd{label}}

Das erste [b] bedeutet „bottom“ des TeX-Texts, das zweite „bottom“ des ersetzten ps-Texts. Wenn die Einstellung nicht gefällt, ist die einzige Möglichkeit, \psfrag direkt einzusetzen und die Positionierung selbst vorzunehmen.

Wirklich abseits von der gedachten Stelle können die Label eigentlich nicht sitzen, es sei den, der temporäre Marker sitzt auch nicht genau da, wo er sein soll. Oder gibt es außer den Markern noch mehr Text in der eps-Datei?

hueschel
19-04-2012, 18:11
Ja es gibt teilweise noch mehr Text und das sieht dann halt leider ein bisschen blöd aus wenn da unterschiedliche Schriften in einem Bild sind.
Die Grafiken werden mit ChemDraw erstellt und stellen leider nicht alle Schriftarten zu Verfügung die man so gern hätte. In den Grafiken verwende ich Arial und das soll auch so bleiben, die Marker sollten dann aber eben auch Arial sein und die gleiche Schriftgröße haben

Schonmal Danke für die kurze Erläuterung mit dem psfrag-Befehl, vielleicht hilft mir das weiter beim richtigen Positionieren des Markers

edit: hier mal ein kleines Beispiel zur Verdeutlichung: http://www.file-upload.net/download-4285658/main.pdf.html
Die Zahlen werden zu weit rechts gesetzt und sie liegen nicht direkt übereinander sondern werden irgendwie linksausgerichtet gesetzt.

cgnieder
19-04-2012, 20:23
Vielleicht wäre es so oder so gut, die serifenlose Schrift des Dokuments der der Schemata anzupassen. Arial kann man offenbar mit urw-arial (http://www.ctan.org/pkg/urw-arial) einbinden, das Paket ist aber weder in MiKTeX noch in TeX Live enthalten.

Als Alternative böte sich an, vielleicht Helvetica zu verwenden. Die Schrift sieht nicht gleich aber recht ähnlich aus.

Die Label werden momentan in die Mitte der Box gesetzt, die durch den temporären Marker erzeugt wird. Durch die \psfrag-Voreinstellung würden sie links ausgerichtet (das entspräche den optionalen Argumenten [Bl]: \psfrag{marker}[Bl][Bl]{label}.


\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[scaled]{helvet}
\usepackage[ngerman]{babel}
\usepackage[runs=2]{auto-pst-pdf}% lets us use pdflatex with eps graphics
\usepackage{chemnum,chemstyle}
\begin{document}

Im Text: \cmpd{eins,zwei}

\begin{scheme}
% umständlicher aber möglich: das manuelle Ersetzen der Marker
\cmpdsetup{cmpd-style=\sffamily}
\psfrag{TMP1}{\cmpd{eins}}
% der Default entpricht diesen Argumenten:
\psfrag{TMP2}[Bl][Bl]{\cmpd{zwei}}
\includegraphics{scheme}
\end{scheme}

\end{document}

Ich denke gerade darüber nach, bei chemnum eine Option anzubieten, die einen die Positionierungs-Optionen von \psfrag für \cmpdref wählen lässt... ich glaube, das wäre eine sinnvolle Erweiterung, z.B. für Fälle wie Deinen.

Dann könnte man z.B. etwas in der Art machen:

% global:
\cmpdsetup{ref-pos={Bl}{Bl}}
% oder lokal:
\cmpdref[ref-pos={Bl}{Bl}]{label}

Nachtrag: Version 0.5 von chemnum bietet nun die vorgeschlagene Option.

Gruß

hueschel
25-04-2012, 21:29
Hallo,

vielen Dank dafür.

PS: Freut mich den Autor vom chemnum-Paket kennenzulernen. Ist das derzeit beste Chemie-Paket :)



Grüße
hueschel