Hallo! In folgendem Beispiel habe ich ein paar Schriften (von insg. etwa 33'000) aus der Famlie cmr und der Kodierung LAE gewählt. Die ersten beiden LAE-Schriften führen zu einer Fehlermeldung des Typs

Open in writeLaTeX
! Font LAE/asv/bx/n/12=asv-bold at 14.39996pt not loadable: Metric (TFM) file n
ot found.

Der Rest funktioniert. Klickt man die Fehlermeldung weg sieht man das Bild unten. Das Problem ist hier im Wesentlichen, daß das Programm durch diese Fehlermeldung abgebrochen wird.

Was könnte ich hier tun, um diesen Programmabbruch zu verhindern und ggf., also falls möglich, einen Hinweis o.ä. an den betreffenden Stellen zu ergänzen?

alt text

Open in writeLaTeX
\documentclass[12pt, pointednumbers]{scrartcl}
\usepackage[utf8]{inputenc}
 \usepackage{selinput}
 \SelectInputMappings{adieresis={ä},  germandbls={ß}}
\usepackage[T5, T1, LY1, LTH, TS1, L7X, LAE]{fontenc}

\usepackage[ngerman]{babel}

\usepackage{datatool}
\usepackage{xcolor}
\usepackage{hyperref}

%Überschriften
\setkomafont{disposition}{\normalcolor\usefont{T1}{lmtt}{\bfdefault}{n}}%\bfseries\ttfamily

\newcommand{\ABC}{%
ABCDEFGHIJKLMNOPQURSTUVWYZ Ä Ö Ü \par
           abcdefghijklmnopqrstuvwxyz ä ö ü ß\par
           0123456789\par
 .,:;-!" '\$\%\&/@\_\S\#\textasciitilde\textbackslash\textless\textgreater[]\{\}() 
}

\usepackage{filecontents}
\begin{filecontents}{mydata.csv}
L7x;uzc;b;it;C:/
LAE;asv;bx;n;C:/
LAE;asv;m;n;C:/
LAE;cmr;b;n;C:/
LAE;cmr;bx;it;C:/
LAE;cmr;bx;n;C:/
LAE;cmr;bx;sl;C:/
LAE;cmr;m;it;C:/
\end{filecontents}

\DTLsetseparator{;}
\DTLloaddb[
  noheader,
   keys={encoding,family,series,shape,adress}
  ]{mydb}{mydata.csv}

%=========
\begin{document}
%=========
%\tableofcontents
%\newpage

\DTLforeach*{mydb}{\encoding=encoding, \family=family, \series=series, \shape=shape, \adress=adress}{%
  \section[\textbackslash usefont\{\encoding\}\{\family\}\{\series\}\{\shape\}]{\textbackslash usefont\{\encoding\}\{\family\}\{\series\}\{\shape\} \\
\footnotesize{found in:  \adress}}

\begingroup
%\inputencoding{\encoding}
 \usefont{\encoding}{\family}{\series}{\shape}
 \ABC
\endgroup
}

%=========
\end{document}
%=========

PS: Kompilieren im nonstopmode könnte hier noch gehen, bei größeren Beispielen aber leider nimmer.

gefragt 21 Jun '14, 02:27

cis's gravatar image

cis
9.5k93459491
Akzeptiert-Rate: 29%

bearbeitet 21 Jun '14, 05:25

2

Du lernst gerade etwas über die Grenzen der Automation. Schriften können aus vielen Gründen nicht funktionieren. Diesen speziellen Fehler kannst du noch über einen kpsewhich-Aufruf, der überprüft ob die tfm existiert, abfangen. Aber wenn die fehlende tfm mit virtuellen Schriften verbunden ist, wenn die eigentliche Schrift (mf/pfb) oder der map-Eintrag fehlt, dann wird es nicht mehr gehen. Was du brauchst, ist eine Datenbank, die u.a. die Ressourcen einer Schrift beschreibt. Die wirst du in vielen Teilen manuell bearbeiten müssen. N.B: Schriftdefinitionen gibt es nicht nur in fd-Dateien.

(21 Jun '14, 12:44) Ulrike Fischer

Aja, hättest Du vll. einen konkreten Code-Einbau, der hier nützen könnte?

"N.B: Schriftdefinitionen gibt es nicht nur in fd-Dateien."

Das ist jetzt aber eine Hiobsbotschaft - gibt es aufrufbare Schriften, zu denen keine fd-Datei existiert? :()

(21 Jun '14, 23:10) cis

Also ich meine, bräuchte doch hier nur etwas, was die Fehlermeldung "abfängt" und zum Bsp. hinschreibt "Metric (TFM) file not found.", also kein Abgleich von fd- mit tfm-Dateien o.ä. - aber da weiß ich halt nicht, wie sowas geht :(

(22 Jun '14, 02:55) cis

Ach Mann, das muß doch irgendwie gehen mit der guten Schriftenauflistung :( - ich weiß, daß ihr da schon Ideen habt, auch weiß ich, daß ihr da teilweise eigene Versuche unternommen habt (dafür ist das Thema viel zu spannend); ihr haltet halt damit hinterm Zaun, aber eine akzeptable Lösung muß es doch geben :() ;)

(22 Jun '14, 03:09) cis

@cis: Mich wundert Dein Entsetzen über Ulrikes Antwort. Ich habe doch bereits darauf hingewiesen, dass es Fonts gibt, die eben nicht über fd-Dateien eingebunden werden oder bei denen die Einbindung (auch über fd-Dateien) nur funktioniert, wenn entsprechende Pakete geladen sind. Auf das Beispiel der C…-Codierungen warst Du doch bereits selbst gestoßen. Und nein, ich verheimliche nichts fertiges, denn ich halte das ganze Vorgehen, auf Teufel komm raus an den Schriftpaketen (wozu ich jetzt auch fontspec zähle) vorbei, Fonts laden zu wollen, noch immer nicht für besonders sinnvoll.

(22 Jun '14, 10:23) gast3

@Ijon Tichy: Es ist ja weniger das Ziel fonts auf die Weise zu laden, sondern endlich mal eine (vollständige) optische Übersicht zu erhalten - ich habe mit der Methode schon viele Schriften gesehen, die mir aus keiner Übersicht jemals bekannt waren ;)

Nachtrag: Ich ich behaupte, da waren Schriften dabei, die hat, von einzelnen Ausnahmen abgesehen, noch kein TeXer jemals gesehen oder benutzt. Sie werden auch nie in sogen. "Übersichten" auftauchen, diese spiegeln vermutlich nicht selten die Vorlieben des Übersichtserstellers wieder.

(22 Jun '14, 10:42) cis

PS: Ja, einerseits gibt es Schriften ohne fd; dann Schriften mit fd, die nur in Verbindung mit Paketen tun; dann Schriften mit fd und ohne Paket. Wenn Du mir da einen goldenen Mittelweg hast, bin ich ganz Ohr. Also ich finde ja 33'000 DeclareFontShape Aufrufe, abgesehen davon, daß das immer noch unvollständig ist, wäre es schonmal schön, wenn die Übersicht davon täte.

PPS: Hehe, übrigens sind auch unter den Cxy-Kodierungen dabei, die tun, z.B. unter C65. Das deutet m.E. darauf hin, daß man besser nichts ausschließt und einen gescheiten "Fehlermeldungsabfang" braucht.

(22 Jun '14, 11:04) cis

Du hast viele Schriften doppelt und dreifach. Welche Sinn hat es, Schriften in OT1, T1 und LY1-encoding zu zeigen? Oder eine slanted Variante aufzunehmen, die sowieso über sub durch italic ersetzt wird? Und während ich sehr dafür wäre, dass skaknew in LSB-encoding drin wäre, sind LSBxx nur Varianten. Und nein: Du kannst nicht alle Fehlermeldungen während des Setzens abfangen - nicht ohne eine bessere Datenbank mit genaueren Informationen zu den Schriften oder einer ausführlichen "Blacklist" der problematischen Schriften/Kombinationen. Ein Beispiel für eine Schrift ohne fd is callibra.

(22 Jun '14, 12:26) Ulrike Fischer

Ja wir brauchen halt eine Gesamtliste und nicht nur einen Teil davon. Aber in der Tat könnte man sich überlegen, aufzuteilen, etwa: "Zeige nur T1- oder LAE- oder ... -Schriften an". Ja, aber da kommt wieder ein wenig das Grundproblem: Ich wollte mir die 10 B1-Schriften aus den 33000 Listeneinträgen anzeigen lassen. Dazu braucht datatoll stundenlang und kommt zur Abbruchmeldung, daß meine 500MB Speicher voll wären oder so. Mit kleineren Auszügen, z.B. 10x B1 und 20 andere, geht es problemlos.

Und zusammen, insb. mit den Schriften ohne fd, ist das sehr deprimierend alles.

(22 Jun '14, 12:41) cis

Ich würde datatool (oder sonst ein TeX-Paket) nicht für große Datenbanken benutzen. Da ist ein externes Werkzeug oder luatex geeigneter (aber auch damit wirst du nicht um eine manuelle Verbesserung deiner Daten herumkommen). Du kannst bei fehlender tfm einen Text ausgeben, indem du auf \nullfont testest. http://tex.stackexchange.com/questions/53443/how-to-check-if-a-font-exists-in-xelatex/53448#53448. Bei fehlender pfb hilft das aber nicht.

(22 Jun '14, 14:28) Ulrike Fischer

Äh ja, der Link sieht vielversprechend aus, aber ich weiß nicht, wie ich das hier anwenden kann.

(22 Jun '14, 15:43) cis
Ergebnis 5 von 11 show 6 more comments

(Zu lang für einen Kommentar): Hier eine Anwendung des Tests auf nullfont. Aber wie in den Kommentaren schon gesagt: Es fängt nicht alle Fehler ab:

Open in writeLaTeX
\documentclass{article}
\usepackage[B1,LAE,T1]{fontenc}
\newcommand\testfont[4]{%
 \batchmode
 \usefont{#1}{#2}{#3}{#4}%
 \font\test=\fontname\font\relax
 \ifx\test\nullfont
  \usefont{T1}{cmr}{m}{n}
   Die Schrift #1/#2/#3/#4 existiert nicht!\par
 \else
   mein Text\par
 \fi 
 \errorstopmode}
\begin{document}

\testfont{LAE}{asv}{bx}{n}
\testfont{B1}{auncl}{m}{n}

\end{document}
Permanenter link

beantwortet 22 Jun '14, 16:26

Ulrike%20Fischer's gravatar image

Ulrike Fischer
3.6k23
Akzeptiert-Rate: 52%

Mmmh, man könnte sich natürlich auch auf die (ca. 6000) T1-Schriften konzentrieren. Auch das will nicht wirklich: Programm läuft durch (> 99min.), aber die PDF ist nicht öffenbar.

(23 Jun '14, 18:21) cis
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×49
×17
×13
×7

gestellte Frage: 21 Jun '14, 02:27

Frage wurde gesehen: 11,573 Mal

zuletzt geändert: 23 Jun '14, 18:21