我正在用 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-spanish
并breqn
相互合作。
使用\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
}
请注意,我将其改为subfigure
,subfig
因为前者已经过时了。请查看后一个软件包的文档。subcaption
不过,您可能想使用功能更强大的软件包。
我注释掉了对 的调用mcode
,因为我没有它。
您不应该\baselinestretch
直接设置,而应该考虑使用setspace
包(假设您有使用大行距)。