我正在排版一份文件。我导入了该breqn
包,一切正常。我不喜欢默认的 Computer Modern 数学字体,所以我想把它改成更漂亮的字体,然后通过LaTeX 字体目录我找到了 Heuristica。一切都很顺利,直到我注意到\implies
渲染方式存在问题。这是我输入时的输出$ = \implies $
。
如您所见,该\implies
符号看起来像一个等号,上面覆盖着一个较短的箭头。如果我删除任何一个包,问题就会消失。为什么会出现这个问题?我该如何解决这个问题?
梅威瑟:
\documentclass{standalone}
\usepackage[scale=0.85]{heuristica}
\usepackage[heuristica,vvarbb,bigdelims]{newtxmath}
\usepackage[T1]{fontenc}
\renewcommand*\oldstylenums[1]{\textosf{#1}}
\usepackage{breqn}
\begin{document}
$ = \implies $
\end{document}
答案1
我很清楚地看到等号 =
被“向下移动”了 breqn
。这一观察暗示=
符号可能取自错误的数学字体插槽。因此,我认为冲突不是在 breqn
和 之间heuristica
,而是在 breqn
和 之间newtxmath
。
我将首先使用 =
在newtxmath.sty
:
\DeclareMathSymbol{=}{\mathrel}{lettersA}{61}
=
这会使MWE 中的第一个 向上移动到其正确位置。
然后我将提供
\edef\Relbar{\mathchar\string"\hexnumber@\symlettersA3D }
以修复\Relbar
应该如何表现。请注意,用于\Relbar
构造许多其他符号,例如\Longrightarrow
,,,和(最后 3 个来自)。\Longleftarrow
\xLeftarrow
\xRightarrow
\xLeftrightarrow
mathtools
\documentclass{article}
\usepackage{mathtools}
\usepackage[scale=0.85]{heuristica}
\usepackage[heuristica]{newtxmath}
\usepackage{breqn}
\DeclareMathSymbol{=}{\mathrel}{lettersA}{61}
\makeatletter
\edef\Relbar{\mathchar\string"\hexnumber@\symlettersA3D }
\makeatother
\begin{document}
$= \implies$\par
$\Longrightarrow \, \Longleftarrow$\par
$\xLeftarrow{abc} \, \xRightarrow{abc} \, \xLeftrightarrow{abc}$
\end{document}
免责声明:虽然上述解决方案解决了您的问题,但它无法breqn
在等号处自动换行。不过,我不喜欢breqn
包:它的工作原理是从根本上改变 TeX 处理数学列表的方式。目前,它支持 Computer Modern、mathpazo
和mathptmx
,但仅此而已。它不支持新的数学字体包,如newpxmath
和(它们是和newtxmath
的推荐替代品),并且,可以理解的是,它不支持商业数学字体,如。mathpazo
mathptmx
mtpro2
如果你最喜欢的数学字体不能使用breqn
,其文档状态
第 3 页:如果您发现某个数学字体包不起作用,那么请参阅实现
flexisym.dtx
以了解如何创建支持文件 — — 它比人们想象的要容易。
但目前flexisym
文档根本没有多少文档。除非有人已经拥有大量使用 TeX 的经验,否则我怀疑任何普通用户都无法即时创建这样的支持文件。我花了几个小时才找到这个错误,然后又花了几个小时才找到修复方法。
另外,如果你没有加载,你就不会遇到这个问题breqn
。在这方面,我完全同意@egreg在先前的答案:
…我认为这是
breqn
一个很好的概念证明,但在文档层面上没有什么真正可用的东西。
对任何人来说,手动换行一个方程,知道他/她有完全控制breqn
印刷最终结果如何?谁知道加载 后还会出现什么意外情况。你有很多选择amsmath
:
align, align*, gather, gather*, ... ;
split, aligned, gathered, ...