바벨에 독일어와 헝가리어가 모두 설정되면 pdflatex가 중지됩니다.

바벨에 독일어와 헝가리어가 모두 설정되면 pdflatex가 중지됩니다.

이것은 MWE입니다:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[german,hungarian]{babel}

\begin{document}

babel test

\end{document}

이 MWE에서 pdflatex를 실행하면 프로그램이 다음과 같이 중지됩니다.

pdflatex babel-test.tex
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex)
 restricted \write18 enabled.
entering extended mode
(./babel-test.tex
LaTeX2e <2021-11-15> patch level 1
L3 programming layer <2022-04-10>
(/usr/local/texlive/2022/texmf-dist/tex/latex/base/article.cls
Document Class: article 2021/10/04 v1.4n Standard LaTeX document class
(/usr/local/texlive/2022/texmf-dist/tex/latex/base/size10.clo))
(/usr/local/texlive/2022/texmf-dist/tex/latex/base/fontenc.sty)
(/usr/local/texlive/2022/texmf-dist/tex/latex/base/inputenc.sty)
(/usr/local/texlive/2022/texmf-dist/tex/generic/babel/babel.sty
(/usr/local/texlive/2022/texmf-dist/tex/generic/babel/txtbabel.def)
(/usr/local/texlive/2022/texmf-dist/tex/generic/babel-german/german.ldf
(/usr/local/texlive/2022/texmf-dist/tex/generic/babel-german/germanb.ldf))
(/usr/local/texlive/2022/texmf-dist/tex/generic/babel-hungarian/magyar.ldf))
(/usr/local/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def)
(./babel-test.aux)
(/usr/local/texlive/2022/texmf-dist/tex/latex/base/article.cls) [1{/usr/local
/texlive/2022/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
(./babel-test.aux
! Missing number, treated as zero.
<to be read again>
                   \hskip
l.4 \catcode `"
               \active
?                                      

왜 이런 현상이 발생하며 어떻게 해결할 수 있나요? Linux에 TeXLive 2022를 새로 설치했습니다.

감사해요.

답변1

magyar.ldf는 (내부) latex 명령을 패치하여 \@begindocumenthookaux 파일에 일부 코드를 삽입합니다.

{\toks@\expandafter{\expandafter\@@magyar@protect@backtick\@begindocumenthook}%
   \xdef\@begindocumenthook{\the\toks@}}% Dat: \@begindocumenthook has #1 #2 etc.

라텍스에 새로운 후크 시스템이 도입되면서 더 이상 의도한 대로 작동하지 않습니다. catcode 변경이 늦었습니다.

저자는 이에 대해 2년 전에 통보받았지만 magyar.ldf는 적용되지 않았습니다.

해결 방법으로 \begin{document} 전에 문제가 있는 catcode를 재설정할 수 있습니다.

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[german,hungarian]{babel}

\AddToHook{begindocument}[test]{\catcode\string``=12 }
\DeclareHookRule{begindocument}{test}{before}{babel}

\begin{document}
babel test
\end{document}

더 이상 필요하지 않기 때문에 inputenc 줄을 제거했습니다. 몇 년 전부터 utf8이 기본값입니다.

관련 정보