
Diese Frage bezieht sich aufDieses hierUm aus der Dokumentation zu zitieren:
Wenn Sie einen anderen Basiskartendateinamen als pdftex.map verwenden oder die Verarbeitungsoptionen über ein pdfTeX-Format ändern möchten, können Sie dies tun, indem Sie den
\pdfmapfile
Befehl an die\everyjob{}
Tokenliste für die -ini-Ausführung anhängen, z. B.:\everyjob\expandafter{\the\everyjob\pdfmapfile{+myspecial.map}} \dump
Dadurch wird die Datei immermyspecial.map
nach der Standarddatei gelesenpdftex.map
.
Ich habe versucht, diese Anweisungen bei der Erstellung meines Formats zu befolgen, aber ohne Erfolg. Ich habe die Anweisung am Ende der pdftexconfig.tex
Datei platziert, so wie es in der Datei früher funktioniert hat pdftex.cfg
, aber ich erhalte die Fehlermeldung
MLTeX v2.2 enabled
***pdflatex.ini
(/texmf/tex/initex/pdflatex.ini (/texmf/tex/initex/pdftexcf.tex
! Missing { inserted.
<to be read again>
{
l.23 \everyjob\expandafter{\the\everyjob
\pdfmapfile{+cmfonts.map}}
? x
Ansonsten (ohne diesen Zusatz am Ende der pdftexcf.tex
Datei) läuft die Formaterstellung problemlos. Kann jemand raten, warum das so ist?
Vorbehalt: Ich habe den Namen der Konfigurationsdatei gekürzt, da ich unter DOS arbeite; aus genau demselben Grund kann ich es mir nicht leisten, auszuführen updmap
.
Antwort1
Der Fehler sah zunächst wirklich seltsam aus, denn er \the\everyjob
sollte auf den Inhalt des \everyjob
Registers erweitert werden, und dann sollte alles normal funktionieren. Die Missing { inserted
Meldung ist klar: TeX hat nach einem gesucht {
(das anscheinend vorhanden ist), es aber nicht gefunden. Die einzige Möglichkeit, dies zu erreichen, ist, wenn {
es nicht vorhanden ist.Genau genommenA {
:
\everyjob{}
\catcode`\{=12
\everyjob\expandafter{\the\everyjob\pdfmapfile{+cmfonts.map}}
dann ist die Fehlermeldung die gleiche:
! Missing { inserted.
<to be read again>
{
l.3 \everyjob\expandafter{\the\everyjob
\pdfmapfile{+cmfonts.map}}
?
Wie GuM im Kommentar anmerkte, führt INITEX ein geradezu minimales Catcode-Setup durch, sodass Sie es tatsächlich verwenden können, und alle anderen Zeichen werden mit Catcode 12 initialisiert. Der Absatz vonDas TeXBook:
Zu
INITEX
Beginn kennt es nichts außer den TeX-Grundelementen. Alle 256 Zeichen sind anfangs von Kategorie 12, außer dass<return>
Kategorie 5 hat,<space>
Kategorie 10 hat,<null>
Kategorie 9 hat,<delete>
Kategorie 15 hat, die 52 BuchstabenA
...Z
unda
...z
haben Kategorie 11%
und\
haben die jeweiligen Kategorien 14 und 0. Daraus folgt, dassINITEX
es anfangs nicht in der Lage ist, einige der TeX-Grundelemente auszuführen, die von der Gruppierung abhängen; Sie können\def
oder nicht verwenden\hbox
, bis Zeichen der Kategorien 1 und 2 vorhanden sind. Das Format in Anhang B beginnt mit\catcode
Befehlen, um Zeichen der erforderlichen Kategorien bereitzustellen; z. B.\catcode`\{=1
Wenn Sie tatsächlich die nächste }
Fehlermeldung ( Too many }'s
) überspringen würden (der Vernunft halber wird davon ausgegangen, dass es sich mindestens um einen catcode-2 handelt), und Sie dies täten, \showthe\everyjob
würden Sie Folgendes sehen: {\pdfmapfile {+cmfonts.map
. Herrlich :-)
Mit dieser Meldung teilt Ihnen TeX mit, dass es {
beim Suchen nach einem ein ungültiges Token (hier alles, was nicht erweiterbar ist, nicht -) gefunden hat {
. Die unteren beiden Kontextzeilen zeigen, dass es nicht einmal bei angekommen ist \pdfmapfile
, also ist das nicht das Problem, und \everyjob
es ist leer (das haben wir oben sichergestellt). Das Einzige, was übrig bleibt, ist das {
selbst. Die <to be read again>
Zeile bedeutet, dass das Token {
erneut gelesen wird, nachdem das Fehlende {
eingefügt wurde (TeX ist lustig).
Moral: TeX's Fehlermeldungen sindsehrDie Bedeutung ist klar. Manches davon muss man nur genau überlegen, um es zu verstehen.
Der Vollständigkeit halber pdftex.cfg
müssen Sie zur Wiederherstellung der ursprünglichen Funktionalität Folgendes hinzufügen:
\begingroup
\catcode`\{=1 %
\catcode`\}=2 %
\global\everyjob\expandafter{\the\everyjob\pdfmapfile{+cmfonts.map}}
\endgroup
am Ende der pdftexconfig.tex
Datei. Bearbeiten Sie den Rest der Konfigurationsdatei entsprechend Ihren Anforderungen.