unicode-math 包弄乱了 MnSymbol 符号

unicode-math 包弄乱了 MnSymbol 符号

使用 TeXLive 2015。

加载包时,命令\lsem\rsem不起作用。比较代码,和MnSymbolunicode-mathunicode-math

\documentclass{scrreprt}


\usepackage{unicode-math}

\usepackage{MnSymbol}



\begin{document}

  With unicode-math: $\lsem x \rsem$

\end{document}

并且没有unicode-math

\documentclass{scrreprt}


%\usepackage{unicode-math}

\usepackage{MnSymbol}



\begin{document}

  Without unicode-math: $\lsem x \rsem$

\end{document}

以及它们各自的产出:

使用 unicode-math 没有 unicode-math

问题。我该如何修复这个问题\lsem并按\rsem预期使用?

答案1

MnSymbol旨在改变全部数学符号,使用自己的。为此,它重新定义了标准数学系列以使用其字体。特别是它

\DeclareSymbolFont{largesymbols}  {OMX}{MnSymbolE}{m}{n}
\DeclareSymbolFont{symbols}       {U}  {MnSymbolF}{m}{n}

但这些声明后来被覆盖unicode-math,因此当某些东西使用largesymbols数学组时,它最终会以当前 Unicode 数学字体中的字符结束。

使包与 兼容意味着将所有使用和unicode-math的符号定义更改为不同的。要获取和,您可以这样做:largesymbolssymbols\lsem\rsem

\documentclass{scrreprt}
\usepackage{MnSymbol}
\usepackage{unicode-math}

\DeclareSymbolFont{MNlargesymbols}{OMX}{MnSymbolE}{m}{n}
\makeatletter
\Decl@Mn@Open {\lsem}{MNlargesymbols}{'102}
\Decl@Mn@Close{\rsem}{MNlargesymbols}{'107}
\makeatother

\begin{document}
With unicode-math: $\lsem x \rsem$
\end{document}

在此处输入图片描述

您可能需要更多重新定义,但它们和这些一样简单:只需在中查找所需符号的定义即可MnSymbol.sty

答案2

\lsem并且\rsem也可以在 XITS 字体中使用,\lBrack以及\rBrack

\documentclass{article}
\usepackage{unicode-math}
\setmathfont{XITS Math}
\begin{document}
$\lBrack x \rBrack$
\end{document}

在此处输入图片描述

相关内容