
これは 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 コマンドにパッチを適用して\@begindocumenthook
、aux ファイルにいくつかのコードを挿入します。
{\toks@\expandafter{\expandafter\@@magyar@protect@backtick\@begindocumenthook}%
\xdef\@begindocumenthook{\the\toks@}}% Dat: \@begindocumenthook has #1 #2 etc.
LaTeX に新しいフック システムが導入されたため、これは意図したとおりに動作しなくなりました。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 がデフォルトになっています。