MIKTeX 无法编译西里尔文(保加利亚语)

MIKTeX 无法编译西里尔文(保加利亚语)

我正在排版一本数学教科书的一段非常简单的摘录,使用 MIKTeX 上的 pdfLaTeX。我只做到了这一点:

\documentclass[openany,draft]{tagiis}
\begin{document}
%Стр. 112-115 номера на първата и последната от дадените стр.
\[ \int\limits_{\overline{a}}^b f(x)\,dx \geqq 0 \], \\
\[ \int\limits_a^{\overline{b}} f(x)\,dx \geqq 0 \].
Специално, ако функцията f(x) е интегруема, то
\[ \int\limits_a^b f(x)\,dx \geqq 0 \].
\end{document}

这会导致以下错误:

Underfull \hbox (badness 10000) in paragraph at lines 24--25

! Missing $ inserted.
<inserted text> 
                $
l.26 Спе
           циално, ако функцията f(x) е интегруе�...

? 

如果我删除西里尔文的句子,它就可以正常工作。有什么建议可以解决这个问题吗?

PS我尝试添加:

\usepackage[cp1251]{inputenc}
\usepackage[bulgarian]{babel}

这似乎没什么区别。
另外,我已经安装了语言支持 -> 西里尔文

编辑:
我不知道这是否有帮助,但我加载了老师给我的一个文件,MIKTeX 将其解释为以下内容:

\documentclass[openany,draft]{tagiis}
\begin{document}
���. ���-��� ������ �� ������� � ���������� �� �������� ���.
\end{document}

这编译得很完美...
如果我在文本编辑器中打开文件,它看起来就像一个普通的文本文件,就像我正在编写的一样。如果它有帮助 - 我选择的文本编辑器是 Notepad++。

答案1

您使用了错误的编码。如果您的文本采用 UTF-8 编码,并且tagiis加载了未知类\usepackage[ansinew]{inputenc},那么第三个西里尔字母处的错误可以解释为:

Спе由 Unicode 字符 U+0421、U+043F 和 U+0435 按此顺序组成。如果以 UTF-8 编码,则以下显示字节(十六进制值,括号中为十进制值):

U+0421: 0xD0 (208), 0xA1 (161)
U+043F: 0xD0 (208), 0xBF (191)
U+0435: 0xD0 (208), 0xB5 (181)

查找后ansinew.def我们得到:

\DeclareInputText{208}{\DH}
\DeclareInputText{161}{\textexclamdown}
\DeclareInputText{191}{\textquestiondown}
\DeclareInputMath{181}{\mu}

后者是数学字符,并且 TeX 抱怨缺少数学模式(Missing $ inserted)。

使用类article和正确的编码可以进行以下工作:

\documentclass[openany,draft]{article}
\usepackage[utf8]{inputenc}
\usepackage[bulgarian]{babel}
\begin{document}
%Стр. 112-115 номера на първата и последната от дадените стр.
\[ \int\limits_{\overline{a}}^b f(x)\,dx \geq 0\,, \] \\
\[ \int\limits_a^{\overline{b}} f(x)\,dx \geq 0\,. \]
Специално, ако функцията f(x) е интегруема, то
\[ \int\limits_a^b f(x)\,dx \geq 0\,. \]
\end{document}

结果

评论:

  • 我把标点符号移到了等式中。如果标点符号在等式后面单独一行,那对我来说看起来太奇怪了。

相关内容