Accentset 无法与 fraktur 配合使用

Accentset 无法与 fraktur 配合使用

以下代码运行良好

% arara: pdflatex
\documentclass[12pt]{book}

\usepackage{accents}

\usepackage[
    cal = cm,
    bb = ams,
    frak = euler,
    scr = euler
]{mathalfa}

\begin{document}

$\accentset{\circ}{\mathfrak{D}}$ % newton

\end{document}

但是当我把牛顿线放入另一个已amsfonts加载的文件中,并添加我的所有工作时,我得到了

! Use of \reserved@a doesn't match its definition.
\reserved@b ->\relax 
                     \ifmmode \else \non@alpherr \mathfrak  \fi \use@mathgro...
l.50 \end{align}

? 
! Emergency stop.
\reserved@b ->\relax 
                     \ifmmode \else \non@alpherr \mathfrak  \fi \use@mathgro...
l.50 \end{align}

我认为问题出在命令上\accentset
如何解决这个问题?

答案1

该包mathalfa虽然可能方便设置不同的数学字母,但与amsfonts定义\mathfrak和相冲突\mathbb

但是amsfonts这个定义是有条件的:

103 \@ifundefined{mathfrak}{%
104     \DeclareMathAlphabet{\mathfrak}{U}{euf}{m}{n}
105     \SetMathAlphabet{\mathfrak}{bold}{U}{euf}{b}{n}
106 }{}
107 \@ifundefined{mathbb}{%
108     \DeclareSymbolFontAlphabet{\mathbb}{AMSb}%
109 }{}

所以可以安全地加载它 mathalfa\mathfrak。在这种情况下,如果您已经为和\mathbb其他包声明了字体,它什么也不做,但如果您想要加载amssymb(这取决于amsfonts),它很重要。

所以正确的顺序是

\usepackage{amsmath}
\usepackage{accents}
\usepackage[
    cal = cm,
    bb = ams,
    frak = euler,
    scr = euler
]{mathalfa}
\usepackage{amssymb}

\text{$...$}该错误是在环境中触发的align,因为这是一个相当复杂的情况,数学在各个层次上嵌套在数学中,另外还存在材料双重传递的问题。

请注意,在数学模式下你不需要accents响铃重音,因为 LaTeX 已经提供了\mathring

\documentclass[12pt]{book}
\usepackage{amsmath}
\usepackage{accents}
\usepackage[
    cal = cm,
    bb = ams,
    frak = euler,
    scr = euler
]{mathalfa}
\usepackage{amssymb}

\begin{document}

\begin{align}
\text{$S$}
\mathring{\mathfrak{D}}
\accentset{\circ}{\mathfrak{D}}
\end{align}

\end{document}

在此处输入图片描述

我发现渲染效果\mathring好多了。

答案2

在做mwe的时候,我发现了错误的线路。
感谢大家的帮助。

% arara: pdflatex
\documentclass[12pt]{book}

\usepackage{amsmath}
\usepackage{amsfonts} % delete to remove error
\usepackage{accents}
\usepackage[
    cal = cm,
    bb = ams,
    frak = euler,
    scr = euler
]{mathalfa}

\begin{document}     

\begin{align}
     \text{  $S$ }
     \accentset{\circ}{ \mathfrak{D} }
\end{align}

\end{document}

相关内容