Seite 1 von 1

Problem mit chemnum (bzw. psfrag) und Tex Live-Schriften

Verfasst: So 11. Dez 2016, 13:30
von Erdapfelfresse
Hallo Leute,

ich habe ein sehr spezielles Problem, bei dem ich hoffe, dass mir jemand behilflich sein kann. Ich benutze das Paket "chemnum", um meine Strukturformeln zu nummerieren. Das Paket arbeitet letzten Endes mit psfrag, um bestimmte Marker (TMP1 usw.) in EPS-Dateien zu ersetzen. Da als Schriftart von meinem Lehrstuhl Arial (ja, ich weiß, dass das Blödsinn ist) verlangt wird, habe ich für das gesamte Dokument Helvetica als Schriftart festgelegt.
Unter MiKTeX hat das alles immer wunderbar funktioniert. Ich habe nun aber aufgrund einiger anderer Dinge beschlossen, zu Tex Live zu wechseln und seitdem macht mir das Paket einen Riesenärger, den ich bis jetzt nicht wirklich ausmerzen konnte. Sowohl auf Windows 10, als auch auf Arch Linux tritt das Problem auf.
Nun zum Problem an sich: Sobald ich den \replacecmpd-Befehl in einem meiner Bilder nutze, werden Buchstaben aus den Bildern einfach nicht mehr dargestellt. Die verwendete Schriftart im Bild ist Arial, da die Bilder mit dem Programm "ChemDraw" erstellt werden. Interessanterweise tritt das Problem nicht mehr auf, wenn ich das Paket "helvet" deaktiviere. Es tritt ebenfalls nicht auf, sobald man den \replacecmpd-Befehl auskommentiert. Nur fehlt dann natürlich die Nummerierung.
Da beim Kompilieren immer die Meldung "Test-autopp.ps dvips: Font Helvetica used in file Testbild.eps is not in the mapping file." ausgegeben wird, tippe ich auf eine fehlerhafte Installation der Schriftarten. Das Seltsame ist nur, dass es funktioniert, sobald man das helvet-Paket nicht mehr benutzt.
\documentclass[a4paper,12pt]{scrartcl}

\usepackage[T1]{fontenc}

\usepackage[utf8]{inputenc}

\usepackage[ngerman]{babel}

\usepackage{helvet}
\renewcommand{\familydefault}{\sfdefault}
\fontfamily{phv}\selectfont

\usepackage[version=3]{mhchem}

\usepackage[runs=2,crop=off]{auto-pst-pdf}

\usepackage{graphicx}

\usepackage{chemnum}
\setchemnum{replace-style = \fontsize{10}{12}}

\begin{document}

Es bleiben alle Buchstaben erhalten, wie sie im EPS-File gespeichert sind, solange der Befehl "\(\backslash\)replacecmpd" nicht benutzt wird. Allerdings fehlt dann die Nummerierung. Sobald er benutzt wird, verschwinden einige Buchstaben im Bild.

\begin{figure}[h]
\centering
\replacecmpd{Teststruktur}
\includegraphics[scale=1]{Testbild.eps}
\end{figure}


\end{document}

PS: wenn ich in dem Bild die Schriftart in den Molekülen verändere (Bsp: Times New Roman), funktioniert auch alles wunderbar.

Verfasst: So 11. Dez 2016, 17:23
von u_fischer
Das Grundproblem ist, dass dein Bild die in ihm benützte Schrift nicht einbettet, sondern nur auf Helvetica verweist. Und in texlive versucht dvips im Dokument die Schrift einzubetten, hat aber keine Ahnung, was es damit machen soll.

Du kannst versuchen, dvips mit der Option -u +builtin35 aufzurufen. Dann versucht dvips die Schrift nicht mehr einzubetten, aber Achtung: das gilt dann auch für das Helvet im Dokument.


Hintergrundinfo:
https://www.tug.org/pipermail/tex-live/ ... 32650.html
https://groups.google.com/forum/#!topic ... arFX8RMzdM

Verfasst: So 11. Dez 2016, 20:29
von Erdapfelfresse
Ok, danke für die Erklärung. :) Heißt das im Umkehrschluss, das MiKTeX mit EPS-Dateien anders umgeht als Tex Live? Ich habe es vorhin nämlich nochmal auf einem anderen Rechner mit MiKTeX-Installation versucht und dort klappt alles ohne Probleme.
Ist es denn möglich, Programme anzuweisen, gewisse Schriften einzubetten oder ist man da an das gebunden, was voreingestellt ist?

Verfasst: So 11. Dez 2016, 22:45
von u_fischer
Die dvips-Konfiguration in miktex ist anders, aber das kann man ändern. Deswegen habe ich ja vorgeschlagen, dvips mit `-u +builtin35 ` aufzurufen.

Verfasst: Mo 12. Dez 2016, 08:44
von Gast
Am Rande sei erwähnt, dass es auch Pakete wie chemfig gibt, mit denen man chemische Formeln direkt in LaTeX zeichnen kann. Das befreit einen vor Problemen mit nicht eingebetteten Fonts beim EPS-Export anderer Programme. Der Workflow wird eventuell auch angenehmer.

Verfasst: Mo 12. Dez 2016, 08:51
von Gast
Wenn tatsächlich nicht eingebettete Fonts das Problem sind, kann man diese eventuell nachträglich mit ghostscript in die EPS-Dateien einbetten. Dazu benötigt man natürlich den einzubettenden Font. Theroretisch sollte das dann mit:
ps2ps -dSAFER -dNOPLATFONTS -dEmbedAllFonts=true -dCompressFonts=true -dSubsetFonts=true -dEPSCrop Testbild.eps Testbild_with_fonts.eps
möglich sein. Das funktioniert aber nicht immer. Manchmal muss man auch Option -dNOPLATFONTS weglassen. Auf jeden Fall muss sie vor -dEmbedAllFonts=true stehen.

Oft funktioniert das aber auch nicht wie gewünscht.

Verfasst: Di 13. Dez 2016, 18:17
von cgnieder
Erinnert mich an http://tex.stackexchange.com/questions/ ... class-nih/

Dort gibt es zwar bis jetzt keine echte Antwort...

Verfasst: Di 13. Dez 2016, 23:06
von u_fischer
cgnieder hat geschrieben:Erinnert mich an http://tex.stackexchange.com/questions/ ... class-nih/

Dort gibt es zwar bis jetzt keine echte Antwort...
Ja, das ist das gleiche Problem. Nimbus ist ein Klon von Helvetica. Da die eps-Datei selbst keine Schrift enthält, muss der Viewer einen Ersatz suchen, und wenn das Dokument Nimbus lädt, nimmt es halt die Schrift, und da die nur teilweise eingebettet wurde, fehlen Buchstaben.

Verfasst: Di 7. Mär 2017, 15:31
von Xulua
Hallo!
Ich habe ziemlich genau das gleiche Problem wie der Threadersteller beschrieben hat. Ich nutze TexnicCenter 2.02 und TexLive 2016.
u_fischer hat geschrieben: Du kannst versuchen, dvips mit der Option -u +builtin35 aufzurufen.
Ich würde gern diesen Vorschlag umsetzen; leider habe ich keine Ahnung, wo ich das "hinschreiben" muss. Ich kann auch nirgends etwas dazu finden. Kann mir jemand helfen?

Danke!