
この質問はこれですドキュメントを引用すると:
pdftex.map 以外のベース マップ ファイル名を使用する場合、または pdfTeX 形式を介してその処理オプションを変更する場合は、-ini 実行のトークン リスト
\pdfmapfile
にコマンドを追加することでこれを実行できます。例: これにより、常に既定のファイルの後の ファイルが読み取られます 。\everyjob{}
\everyjob\expandafter{\the\everyjob\pdfmapfile{+myspecial.map}} \dump
myspecial.map
pdftex.map
pdftexconfig.tex
フォーマット作成時にこれらの指示に従おうとしましたが、うまくいきませんでした。ファイル内で以前と同じように、指示をファイルの最後に配置しましたpdftex.cfg
が、エラーが発生します。
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
それ以外の場合 (ファイルの最後にこの追加がない場合pdftexcf.tex
)、フォーマットの作成は問題なく行われます。なぜそうなるのか、誰か推測できますか?
注意: DOS 上で実行しているため、構成ファイルの名前を短くしました。そのため、 を実行することはできませんupdmap
。
答え1
最初は、エラーは本当に奇妙に見えました。なぜなら、はレジスタ\the\everyjob
の内容に展開され\everyjob
、その後はすべて正常に動作するはずだからです。Missing { inserted
メッセージは明確です。TeXは (どうやらそこにあるようです)を探していましたが、見つかりませんでした。それを得る唯一の方法は、 がない{
場合です。{
実はあ{
:
\everyjob{}
\catcode`\{=12
\everyjob\expandafter{\the\everyjob\pdfmapfile{+cmfonts.map}}
エラーメッセージは同じです:
! Missing { inserted.
<to be read again>
{
l.3 \everyjob\expandafter{\the\everyjob
\pdfmapfile{+cmfonts.map}}
?
GuMがコメントで指摘したように、INITEXは最小限のcatcode設定を行うので、実際に使用することができ、他のすべての文字はcatcode 12で初期化されます。TeXBook について:
が開始するとき
INITEX
、TeX のプリミティブ以外は何も知りません。256 文字すべてが最初はカテゴリ 12 ですが、<return>
はカテゴリ 5、<space>
はカテゴリ 10、<null>
はカテゴリ 9、はカテゴリ 15、 ...と...<delete>
の 52 文字はカテゴリ 11、はそれぞれカテゴリ 14 と 0 です。したがって、 は最初はグループ化に依存する TeX のプリミティブの一部を実行することができません。カテゴリ 1 と 2 の文字が存在するまで、または は使用できません。付録 B の形式は、必要なカテゴリの文字を提供するコマンドで始まります。例:A
Z
a
z
%
\
INITEX
\def
\hbox
\catcode
\catcode`\{=1
実際、次のエラー メッセージ ( )をスキップすると (}
正気を保つために、少なくとも catcode-2 を想定) 、次のように表示されます。素晴らしいですね :-)Too many }'s
\showthe\everyjob
{\pdfmapfile {+cmfonts.map
{
このメッセージで、TeX はを探しているときに不正なトークン (ここでは、展開できないもの、 以外) が見つかったことを伝えています{
。下の 2 つのコンテキスト行は に到達していないことを示しているので\pdfmapfile
、これは問題ではなく、\everyjob
は空です (これは上で確認しました)。残っているのは 自体だけです{
。<to be read again>
行は、不足している が挿入された後にトークン{
が再度読み取られることを意味します{
(TeX は面白いです)。
教訓:TeXのエラーメッセージはとても意味は明確です。理解するには一生懸命考えなければなりません。
完全性のために、元の機能を復元するにはpdftex.cfg
、以下を追加する必要があります。
\begingroup
\catcode`\{=1 %
\catcode`\}=2 %
\global\everyjob\expandafter{\the\everyjob\pdfmapfile{+cmfonts.map}}
\endgroup
ファイルの末尾に追加しますpdftexconfig.tex
。必要に応じて、構成ファイルの残りの部分を編集します。