为什么 fdsymbol 与 \mapstochar 冲突?

为什么 fdsymbol 与 \mapstochar 冲突?

此代码:

\documentclass{acmart}
\usepackage{fdsymbol}
\begin{document}
$\mapstochar\relbar\mathrel{\mkern-12mu}\mapsto$
\end{document}

给出这个:

! Undefined control sequence.
<recently read> \mapstochar

l.4 $\mapstochar
                \relbar\mathrel{\mkern-12mu}\mapsto$

但是,如果我删除\usepackage{fdsymbol}-- ,编译就没问题了。问题是什么?如何解决?我确实需要fdsymbol\mapstochar

答案1

尝试进行下面的实验。

\documentclass{acmart}
%\usepackage{fdsymbol}

\begin{document}

%$\mapstochar\relbar\mathrel{\mkern-12mu}\mapsto$

$A\to B\otimes C$

$X\mapsto Y\cong Z$

\end{document}

在此处输入图片描述

现在取消注释该fdsymbol行,输出将更改为

在此处输入图片描述

如果你fdsymbolMnSymbol

在此处输入图片描述

这绝不是 ACM 的文字编辑们所希望看到的。ACM 聘请了 Boris Veytsman(他目前还担任 TUG 主席),以便用一个文档类来取代多年来为满足 ACM 期刊或会议的需求而编写的过多的类。这样,ACM 就可以确保其所有已发布文档的一致性。

如果我负责接受或拒绝一份投稿,那么带有上述符号的投稿将被拒绝。而且我认为不只是我一个人会这么做。

反对意见认为fdsymbol提供的符号太多amssymb是无效的。该包确实有很多符号,但使用这些符号的代价是可能拒绝提交,此外该文件看起来更像是拼凑物,而不是印刷精美的作品。

现在,你的字体符号是什么acmart?你使用的代码在这种情况下不太好,但下面的代码会

\documentclass{acmart}

\begin{document}

$A\mapsto B$

$A\mathrel{\mkern2mu}\mapstochar\mathrel{\mkern-2mu}\mapsto B$

\end{document}

在此处输入图片描述

这利用了宽度为零的事实\mapstochar(在标准设置中,Libertine 数学字体紧随其后)。使用 Computer Modern 时,输出将是

在此处输入图片描述

现在,如果你真的想用 做同样的事情fdsymbol,你不能使用\mapstochar,因为它不存在。但你可以手工制作它。

\documentclass{article}
\usepackage{fdsymbol}
\usepackage{trimclip}

\makeatletter
\providecommand{\mapstochar}{\mathrel{\mathpalette\mapstochar@\relax}}
\newcommand{\mapstochar@}[2]{%
  \makebox[0pt][l]{%
    \clipbox{0 0 {0.8\width} 0}{$\m@th#1\mapsto$}%
  }%
}
\makeatother

\newcommand{\dblmapsto}{%
  \mathrel{\mkern2mu}\mapstochar\mathrel{\mkern-2mu}\mapsto
}

\begin{document}

$A\mapsto B$

$A\dblmapsto B$

\end{document}

在此处输入图片描述

相关内容