\sqrt 不起作用

\sqrt 不起作用

为什么 sqrt 不起作用?(我不想删除软件包)

在此处输入图片描述

\documentclass{standalone}
\usepackage{physics}
\usepackage{MnSymbol}

\makeatletter
\DeclareSymbolFont{largesymbols}{OMX}{cmex}{m}{n}
\SetSymbolFont{largesymbols}{bold}{OMX}{cmex}{b}{n}
\DeclareMathDelimiter{(}{\mathopen}{letters}{46}{largesymbols}{0}
\DeclareMathDelimiter{)}{\mathclose}{letters}{47}{largesymbols}{1}
\makeatother

\begin{document}

$ \qty(\frac{2}{3})+\sqrt{x} $

\end{document}

答案1

您对largesymbols字体的声明将覆盖 所做的声明MnSymbols。但是,即使MnSymbol字体MnSymbolE应该是 OMX 编码的,但实际上并非如此。

具体来说,部首的位置与兼容 OMX 编码字体的位置非常不同。MnSymbol.sty我们发现

\DeclareMathRadical{\sqrtsign}{largesymbols}{'272}{largesymbols}{'272}

而 LaTeX 默认有

\DeclareMathRadical{\sqrtsign}{symbols}{"70}{largesymbols}{"70}

十进制'272为 186,而"70十进制为 112。在插槽中'272字体cmex没有任何东西。

如果你想替换所做的某些选择MnSymbol,你应该使用不同的名称,比如说

\DeclareSymbolFont{cmexlargesymbols}{OMX}{cmex}{m}{n}
\SetSymbolFont{cmexlargesymbols}{bold}{OMX}{cmex}{b}{n}
\DeclareMathDelimiter{(}{\mathopen}{letters}{46}{cmexlargesymbols}{0}
\DeclareMathDelimiter{)}{\mathclose}{letters}{47}{cmexlargesymbols}{1}

不过,我的意见是,MnSymbol只有当主文档字体是 Minion 时才应该使用。可能从中导入选择的符号,但那是另一个故事。

答案2

您应该插入以下声明\sqrtsign

\documentclass{standalone}
\usepackage{physics}
\usepackage{MnSymbol}

\makeatletter
\DeclareSymbolFont{largesymbols}{OMX}{cmex}{m}{n}
\SetSymbolFont{largesymbols}{bold}{OMX}{cmex}{b}{n}
\DeclareMathDelimiter{(}{\mathopen}{letters}{46}{largesymbols}{0}
\DeclareMathDelimiter{)}{\mathclose}{letters}{47}{largesymbols}{1}
\DeclareMathRadical{\sqrtsign}{largesymbols}{"70}{largesymbols}{"70}
\makeatother

\begin{document}

$ \qty(\frac{2}{3})+\sqrt{x} $

\end{document}

相关内容