我在 Ubuntu 20.04.2 上使用 pdflatex。我编写了以下 latex 代码。
\documentclass{article}
\usepackage{amssymb,breqn}
\newcommand{\bZ}{{\mathbb Z}}
\newcommand{\lhdZl}{\lhd_{\bZ^{l}}}
\begin{document}
\begin{align}
a &\not\lhdZl b\\
a &\not\lhd_{\bZ^{l}} b
\end{align}
\end{document}
在我看来,align 环境中的两行应该给出相同的表达式,因为第一行使用\lhdZl
,其定义为\lhd_{\bZ^{l}}
,而第二行仅使用\lhd_{\bZ^{l}}
。但是,下面生成的 pdf 将第一行与 放在一起\mathbb Z
,而将第二行与 放在一起\mathbb Z
。
有什么不对?
答案1
明显的问题是breqn
。
一开始有几个修复:
正确的语法是
\mathbb{Z}
,不是{\mathbb Z}
;\lhd
是不是定义为二元关系符号。
修复无breqn
:
\documentclass{article}
\usepackage{amsmath,amssymb}
\newcommand{\bZ}{\mathbb{Z}}
\newcommand{\nsg}{\mathrel{\lhd}} % normal subgroup
\newcommand{\nsgZl}{\nsg_{\bZ^{l}}}
\begin{document}
\begin{align}
a &\not\nsgZl b\\
a &\not\nsg_{\bZ^{l}} b
\end{align}
\end{document}
现在让我们尝试一下breqn
。不,它不起作用。抱歉。你能做什么?不要使用breqn
。
显然,breqn
(或者说,flexisym
)希望_
在否定符号后看到显式,而将其隐藏在宏中会毁掉一切。而且,出于奇怪的原因,将其变成\lhd
二元关系符号将\not
无法将其识别为二元关系符号。这是 中的一个错误breqn
:例如,也会\not\sqsubset
产生正确的结果。