此代码:
\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
行,输出将更改为
如果你fdsymbol
用MnSymbol
这绝不是 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}