형식 생성 시 `\pdfmapfile` 사용

형식 생성 시 `\pdfmapfile` 사용

이 질문은 다음과 관련이 있습니다.이 하나. 문서를 인용하려면 다음을 수행하십시오.

pdftex.map 이외의 기본 맵 파일 이름을 사용하거나 pdfTeX 형식을 통해 처리 옵션을 변경하려면 -ini 실행을 위한 토큰 목록 \pdfmapfile에 명령을 추가하여 수행할 수 있습니다. 예: 이것은 항상 다음과 같습니다. 기본 파일 다음의 파일 .\everyjob{}\everyjob\expandafter{\the\everyjob\pdfmapfile{+myspecial.map}} \dumpmyspecial.mappdftex.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를 찾고 있었지만 {찾지 못했습니다. 그것을 가질 수 있는 유일한 방법은 그렇지 {않은 경우입니다.실제로{:

\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:

시작 되면 INITEXTeX의 기본 요소 외에는 아무것도 모릅니다. 모든 256개 문자는 처음에 카테고리 12에 속합니다. 단, <return>카테고리 5, <space>카테고리 10, <null>카테고리 9, <delete>카테고리 15, A... Za... 문자 z는 카테고리 11, %각각 \카테고리 14 및 0을 갖습니다. 따라서 INITEX처음에는 그룹화에 의존하는 TeX의 기본 요소 중 일부를 수행할 수 없습니다. 범주 1과 2의 문자가 있을 때까지는 \def또는를 사용할 수 없습니다 . 부록 B의 형식은 필요한 범주의 문자를 제공하는 명령으로 시작됩니다. 예:\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. 필요에 따라 나머지 구성 파일을 편집합니다.

관련 정보