当我使用小于或大于符号时出现编译问题

当我使用小于或大于符号时出现编译问题

我正在用 Texmaker 编写文档,当我写一些带有小于 (<) 或大于 (>) 符号的等式时,它无法编译(它不会结束编译并且我也没有收到错误消息)。

如果我写方程式时不考虑这些符号,那么一切都正确,程序也能编译通过。我不知道为什么会发生这种情况。

代码如下:

\documentclass[12pt,a4paper,oneside]{article}
\setlength{\headheight}{15pt}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{listingsutf8}
\usepackage[spanish]{babel}
\usepackage{fancyhdr}
\usepackage[framed,numbered,autolinebreaks,useliterate]{mcode}
\lstset{breakatwhitespace=false}
\usepackage{lscape}
\usepackage{float}
\usepackage{breqn}
\bibliographystyle{plain}
\usepackage{array}
\newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}}
\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}}
\usepackage{graphicx}
\usepackage{subfigure}
\graphicspath{{images/}}
\renewcommand{\baselinestretch}{1.5}
\lstset{
literate=%
         {á}{{\'a}}1
         {í}{{\'i}}1
         {é}{{\'e}}1
         {ó}{{\'o}}1
         {ú}{{\'u}}1
         {ñ}{{\~n}}1
         {Á}{{\'A}}1
         {Í}{{\'I}}1
         {É}{{\'E}}1
         {Ó}{{\'O}}1
         {Ú}{{\'U}}1
         {Ñ}{{\~N}}1
         {¿}{{?`}}1
         {¡}{{!`}}1
}
\begin{document}
$D_{P} < D < D_{o}$
\end{document}

谢谢

答案1

如果你进一步简化示例,则会得到以下结果:

\documentclass{article}
\usepackage[spanish]{babel}
\usepackage{breqn}
\begin{document}
$<$
\end{document}

breqn因此,与之间存在一些交互babel,这会导致问题。如果未breqn使用该包的任何功能,则只需删除 即可\usepackage{breqn}

然而,看起来这是一个包的加载顺序很重要的情况;通过交换顺序,示例就可以正常工作。

\documentclass{article}
\usepackage{breqn}
\usepackage[spanish]{babel}
\begin{document}
$<$
\end{document}

答案2

问题在于如何创造babel-spanishbreqn相互合作。

使用\usepackage[spanish]{babel}<字符变为活动字符,表示

\es@use@shorthand <

当 LaTeX 处于某些状态时,此命令会转换<为其他字符,否则会执行相关的速记。\string

在数学中,我们当然希望<表现得像“小于”符号,因此\string<在正常设置下应用它会做正确的事情。

breqn加载时则不然,因为它会<变成数学活跃字符。这意味着当<找到类别代码为 12 的 时,TeX 会用其作为活动字符的含义替换它。好吧,作为活动字符的含义刚刚已经解释过了,因此<被替换为 ,\string<变为类别代码 12 <,因此其作为活动字符的含义被使用……

哎呀!无限循环!

breqn之前加载babel是一种解决方案,因为在这种情况下知道作为活动字符babel已经具有含义并在数学模式中使用它。<

另一方面,作为<简写提供的功能非常有限,手册上babel-spanish

这些缩短的潜在不兼容性非常大。

(这些速记的潜在不兼容性是巨大的。)所以最好的是加载

\usepackage[spanish,es-noquoting]{babel}

并忘记这个(错误)功能。


无关,但很重要。您的前言相当混乱,因为它将软件包加载与设置混在一起。

\documentclass[12pt,a4paper,oneside]{article}

% language and input
\usepackage[T1]{fontenc} % compulsory for Spanish
\usepackage[utf8]{inputenc}
\usepackage[spanish,es-noquoting]{babel}

% math facilities
\usepackage{amsmath}
\usepackage{amssymb} % already loads amsfonts
\usepackage{breqn}

% other facilities
\usepackage{listingsutf8}
\usepackage{fancyhdr}
\usepackage{lscape}
\usepackage{float}
\usepackage{array}
\usepackage{graphicx}
\usepackage{subfig} % subfigure is obsolete

% non CTAN package
%\usepackage[framed,numbered,autolinebreaks,useliterate]{mcode}

%%% Settings

% pagination
\setlength{\headheight}{15pt}
\renewcommand{\baselinestretch}{1.5}

% generic
\newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}}
\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}}
\graphicspath{{images/}}

% bibliography
\bibliographystyle{plain}

% listings
\lstset{breakatwhitespace=false}
\lstset{
literate=%
         {á}{{\'a}}1
         {í}{{\'i}}1
         {é}{{\'e}}1
         {ó}{{\'o}}1
         {ú}{{\'u}}1
         {ñ}{{\~n}}1
         {Á}{{\'A}}1
         {Í}{{\'I}}1
         {É}{{\'E}}1
         {Ó}{{\'O}}1
         {Ú}{{\'U}}1
         {Ñ}{{\~N}}1
         {¿}{{?`}}1
         {¡}{{!`}}1
}

请注意,我将其改为subfiguresubfig因为前者已经过时了。请查看后一个软件包的文档。subcaption不过,您可能想使用功能更强大的软件包。

我注释掉了对 的调用mcode,因为我没有它。

您不应该\baselinestretch直接设置,而应该考虑使用setspace包(假设您使用大行距)。

相关内容