为什么 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}