我在 FreeBSD 上使用 TeXLive 2014。每个 LaTeX 文件都会产生以下警告:
LaTeX Warning: Please use \usepackage[latin2]{inputenc} with
\usepackage[magyar]{babel}.
“Magyar” 是匈牙利语中匈牙利人的名字:)
我的文件的相关部分:
\documentclass[a4paper]{article}
\usepackage[magyar]{babel}
\usepackage[utf8]{inputenc}
\usepackage{t1enc}
\begin{document}
Árvíztűrő tükörfúrógép.
\end{document}
我可以跳过这个警告吗?还是应该做些什么来修复它?或者这可能是一个错误?
在 TeXLive 2014 之前不会出现此警告。
答案1
magyar.ldf
正如 Psyconaut 指出的那样,CTAN 上现已提供更新版本,可以修复该问题。
在输入编码测试中存在一些错误。如果您选择作为编码,magyar.ldf
则会收到相同的错误消息。的相关部分是: latin2
magyar.ldf
\def\magyar@sugg@ie@lowb#1{\@latex@warning@no@line{Please use \string\usepackage[latin2]{inputenc} with\MessageBreak \string\usepackage[#1]{babel}}}%
%** @param #1 \@inpenc@undefined@
%** @param #2 input encoding name
\def\magyar@sugg@ie@low#1#2#3\vfuzz#4{%
\def\reserved@b{#2}%
\def\reserved@a{latin2}%
\ifx\reserved@a\reserved@b\else
\def\reserved@a{utf8}%
\ifx\reserved@a\reserved@b\else
\def\reserved@a{utf8x}%
\ifx\reserved@a\reserved@b\else
\def\reserved@a{cp1250}%
\ifx\reserved@a\reserved@b\else
\magyar@sugg@ie@lowb{#4}%
\fi
\fi
\fi
\fi
}
很明显,我们的目的是让latin2
、utf8
或utf8x
编码cp1250
不出现错误。看起来这个文件需要更新。
更新:更多分析表明,此命令期望接收的是
\@inpenc@undefined@ {latin2}....\vfuzz{#1}
替换latin2
为实际选择的编码,但实际接收的是
\protect \@inpenc@undefined@ {latin2}....\vfuzz{#1}
因此,一个简单的解决方法是将定义的第一行更改为
\def\magyar@sugg@ie@low\protect #1#2#3\vfuzz#4{%
因此模式匹配会吞噬\protect
。在此阶段,我建议您将其复制magyar.ldf
到工作目录或本地 texmf 树,然后在该副本中进行此更改。
更新pts 指出,上述方法在旧版本的 中不起作用babel
。我无法测试,但他建议将定义更改为
\def\magyar@sugg@ie@low#1\@inpenc@undefined@#2#3\vfuzz#4{%
显然,它适用于所有版本。现在,它已包含在 CTAN 上的版本中magyar.ldf
,因此现在建议的操作是更新到该版本。
答案2
使用suggestions=no
选项magyar.ldf
,它将解决您的问题:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\PassOptionsToPackage{defaults=hu-min,suggestions=no}{magyar.ldf}
\usepackage[magyar]{babel}
\begin{document}
Árvíztűrő tükörfúrógép.
\end{document}