
Esta pregunta está relacionada conÉste. Para citar la documentación:
Si desea utilizar un nombre de archivo de mapa base que no sea pdftex.map, o cambiar sus opciones de procesamiento a través de un formato pdfTeX, puede hacerlo agregando el
\pdfmapfile
comando a la\everyjob{}
lista de tokens para la ejecución -ini, por ejemplo:\everyjob\expandafter{\the\everyjob\pdfmapfile{+myspecial.map}} \dump
Esto siempre se leerá el archivomyspecial.map
después delpdftex.map
archivo predeterminado.
Intenté seguir estas instrucciones en la creación de mi formato, sin éxito. Coloqué la instrucción al final del pdftexconfig.tex
archivo, como solía funcionar en el pdftex.cfg
archivo, pero aparece el error.
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
De lo contrario (sin esta adición al final del pdftexcf.tex
archivo) la creación del formato se realiza sin problemas. ¿Alguien puede adivinar por qué es así?
Advertencia: acorté el nombre del archivo de configuración porque lo estoy ejecutando en DOS; Por esa misma razón, no puedo darme el lujo de postularme updmap
.
Respuesta1
El error tenía un aspecto realmente extraño al principio, porque \the\everyjob
debería expandirse al contenido del \everyjob
registro y luego todo debería funcionar normalmente. El Missing { inserted
mensaje es claro: TeX estaba buscando un {
(que aparentemente está ahí), pero no lo encontró. La única manera de tener eso es si {
no lo es.de hechoa {
:
\everyjob{}
\catcode`\{=12
\everyjob\expandafter{\the\everyjob\pdfmapfile{+cmfonts.map}}
entonces el mensaje de error es el mismo:
! Missing { inserted.
<to be read again>
{
l.3 \everyjob\expandafter{\the\everyjob
\pdfmapfile{+cmfonts.map}}
?
Como GuM señaló en el comentario, INITEX realiza una configuración mínima del código cat, por lo que realmente puedes usarlo, y todos los demás caracteres se inicializan con el código cat 12. El párrafo deEl libro de texto:
Cuando
INITEX
comienza, no sabe nada más que las primitivas de TeX. Los 256 caracteres son inicialmente de categoría 12, excepto que<return>
tiene categoría 5,<space>
tiene categoría 10,<null>
tiene categoría 9,<delete>
tiene categoría 15, las 52 letrasA
...Z
ya
...z
tienen categoría 11,%
y\
tienen las respectivas categorías 14 y 0. De ello se deduce queINITEX
inicialmente es incapaz de ejecutar algunas de las primitivas de TeX que dependen de la agrupación; no puede usar\def
o\hbox
hasta que haya caracteres de las categorías 1 y 2. El formato en el Apéndice B comienza con\catcode
comandos para proporcionar caracteres de las categorías necesarias; p.ej,\catcode`\{=1
De hecho, si omitiera el siguiente }
mensaje de error (asumiendo al menos catcode-2, por razones de cordura) Too many }'s
, y lo hiciera, \showthe\everyjob
vería: {\pdfmapfile {+cmfonts.map
. Encantador :-)
Con ese mensaje, TeX le dice que encontró un token ilegal (aquí, cualquier cosa que no sea expandible, que no sea {
) mientras buscaba un archivo {
. Las dos líneas de contexto inferiores muestran que ni siquiera llegó a \pdfmapfile
, por lo que ese no es el problema y \everyjob
está vacío (nos aseguramos de eso arriba). Lo único que queda es el {
mismo. La <to be read again>
línea significa que el token {
se leerá nuevamente después de {
insertar el que falta (TeX es gracioso).
Moraleja: los mensajes de error de TeX sonmuyclaro en significado. Sólo tienes que pensar mucho para entender algunos.
En aras de la integridad, para restaurar la pdftex.cfg
funcionalidad original, debe agregar
\begingroup
\catcode`\{=1 %
\catcode`\}=2 %
\global\everyjob\expandafter{\the\everyjob\pdfmapfile{+cmfonts.map}}
\endgroup
al final del pdftexconfig.tex
archivo. Edite el resto del archivo de configuración según sus necesidades.