从LaTeX包中加载单个符号

从LaTeX包中加载单个符号,latex,package,symbols,Latex,Package,Symbols,使用MnSymbol软件包时,pdflatex会给出两个字体警告: LaTeX Font Warning: Encoding 'OMS' has changed to 'U' for symbol font (Font) 'symbols' in the math version 'normal' on input line 120. LaTeX Font Info: Overwriting symbol font 'symbols' in version 'n

使用MnSymbol软件包时,pdflatex会给出两个字体警告:

LaTeX Font Warning: Encoding 'OMS' has changed to 'U' for symbol font
(Font)              'symbols' in the math version 'normal' on input line 120.

LaTeX Font Info:    Overwriting symbol font 'symbols' in version 'normal'
(Font)                  OMS/cmsy/m/n --> U/MnSymbolF/m/n on input line 120.
事实证明,这可能是由于与AMSSymb包的冲突


因为我只需要包中的几个符号:有没有办法从包中加载一个符号而不是所有符号?

这些警告不需要担心。事实上,在下一次乳胶释放中,它们将消失(请参阅)。不过,这方面没有预计

此外,这是否真的会影响文件的排版

没有

有没有办法防止这种情况


可以在加载软件包之前修补LaTeX警告消息代码,然后在加载后再次恢复(这是我过去在自己的软件包中所做的),但作为一个用户,我只需要学会忽略警告。

以下内容可能会有所帮助。这是我必须添加的代码,以便从MnSymbol包中仅获取\bigominus符号

\DeclareFontFamily{U}{MnSymbolF}{}<br>
\DeclareSymbolFont{mnsymbols}{U}{MnSymbolF}{m}{n}<br>
\DeclareFontShape{U}{MnSymbolF}{m}{n}{<br>
    <-6>  MnSymbolF5<br>
   <6-7>  MnSymbolF6<br>
   <7-8>  MnSymbolF7<br>
   <8-9>  MnSymbolF8<br>
   <9-10> MnSymbolF9<br>
  <10-12> MnSymbolF10<br>
  <12->   MnSymbolF12}{}<br>
\DeclareMathSymbol{\bigominus}{\mathop}{mnsymbols}{55}
\DeclareFontFamily{U}{MnSymbolF}{}
\DeclareSymbolFont{mnsymbols}{U}{MnSymbolF}{m}{n}
\DeclareFontShape{U}{MnSymbolF}{m}{n}{
MnSymbolF5
MnSymbolF6
MnSymbolF7
MnSymbolF8
MnSymbolF9
MnSymbolF10
MnSymbolF12}{}
\DeclareMathSymbol{\bigominus}{\mathop}{mnsymbols}{55}
以下是我解决这个问题的方法:

从综合latex符号文档源下载perl脚本“makefakeMnSymbol”:

接下来,在命令行do
chmod+x makefakeMnSymbol
使其可执行。然后,跑

./makefakeMnSymbol `kpsewhich MnSymbol.sty` > fakeMnSymbol.sty
将fakeMnSymbol.sty放入所选的texmf目录(全局或本地),然后运行
texhash

如果你现在把

\usepackage{fakeMnSymbol}
在序言中,您现在可以使用任何MnSymbol,如
\powerset
,方法是像
\MNSpowerset
一样对其进行前缀

非常感谢Scott Pakin的这次破解。。。对于他全面的符号指南


这种黑客在下标/上标符号方面存在问题。一种解决方法是使用查看
fakeMnSymbol.sty
源代码来查找您想要的符号是从哪个字体加载的,以及它的编号。下面是我的一篇序言中的一个示例,其中我使用MnSymbol覆盖了内置的
\box减号

\usepackage[]{fakeMnSymbol}
\DeclareSymbolFont{mnsymbolc}{U}{MnSymbolC}{m}{n}
\let\boxminus=\undefined
\DeclareMathSymbol{\boxminus}{2}{mnsymbolc}{112}

排版有实际问题吗,或者你只是担心看到警告?我没有看到任何排版问题;我只是想尽量减少警告的数量。与此同时,我发现了问题:MnSymbol包正在更改amssymb中的一些符号。文档说明它不兼容。今天再次讨论此问题。不幸的是,MnSymbol仍然会更改AMS符号。不过,通过fakeMnSymbols的解决方案是一个很好的解决方案。另请参见注释:它确实会通过替换大量标准AMS符号来影响文档的排版。当然,如果加载一个包以更改数学字体,您会得到不同的符号:)显然。我将尝试找到一种解决方法,仅加载我需要的某些符号(即\lefthalfsqcup和双大括号)