
這個問題與這個。引用文件:
如果您想使用 pdftex.map 以外的底圖檔案名,或透過 pdfTeX 格式變更其處理選項,您可以透過將命令附加
\pdfmapfile
到\everyjob{}
-ini 運行的標記清單來完成此操作,例如:\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 正在尋找 a {
(顯然它就在那裡),但沒有找到它。唯一的方法就是如果{
不是實際上A {
:
\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 初始化。電子書:
開始時
INITEX
,它只知道 TeX 的原語。所有 256 個字元最初都屬於類別 12,除了<return>
具有類別 5、<space>
具有類別 10、<null>
具有類別 9、<delete>
具有類別 15、52 個字母A
...Z
和a
...z
具有類別 11%
以及\
各自的類別 14 和 0。 因此INITEX
最初無法執行一些依賴分組的TeX 原語;除非有類別 1 和類別 2 的字符,否則不能使用\def
或。例如,\hbox
\catcode
\catcode`\{=1
事實上,如果您要跳過下一條(}
為了理智起見,假設至少有一個 catcode-2 )錯誤訊息 ( Too many }'s
),並且您\showthe\everyjob
會看到:{\pdfmapfile {+cmfonts.map
。令人愉快的:-)
透過該訊息,TeX 告訴您{
在尋找{
.底部的兩行上下文顯示它甚至沒有到達\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
。根據您的需求編輯設定檔的其餘部分。