在精算文件中,我们使用很多数学符号,因此我们需要很多数学字体。
“输入行 xxx 上无数学字母表更改为冻结版本正常”是什么意思?
David Carlisle 解释说,当加载一定数量的字体时,新的 LaTeX 功能会产生信息消息。
我们观察到使用 tensor 包时存在问题。当使用 \tensor 时,不同数学字体的数量达到警告限制 (14) 时,会抛出 6 个 LaTeX 错误,并且 makro 的内容会被排版 3 次。a
) 这是 LaTeX 核心还是 tensor 的问题?
b) 有没有办法在问题解决之前规避它?
以下最小示例显示 \tensor 产生错误和意外结果。
\documentclass{article}
\RequirePackage{amsfonts} % load a range of math fonts
\RequirePackage{mathcomp}
\RequirePackage{MnSymbol}
\RequirePackage{tensor}
\begin{document}
\section{Test}
% approach limit of 14 fonts
$\mathcal{X}$ % same result: \ensuremath{\mathcal{X}}
$\mathtt{X}$ % same result \ensuremath{\mathtt{X}}
$\mathbf{X}$ % same result \ensuremath{\mathbf{X}}
% the following lines typesets X 3 times and produces 6 LaTeX errors
$\tensor*{\mathsf{X}}{}$ % same result \ensuremath{\tensor*{\mathsf{X}}{}}
% the following line would produce the same error
% $\tensor*[_{}^{}]{\mathsf{X}}{_{}^{}}$ % same result \ensuremath{\tensor*[_{}^{}]{\mathsf{X}}{_{}^{}}}
% the following line would produce no error
% $\mathsf{X}$ % same result \ensuremath{\mathsf{X}}
\end{document}
答案1
我不认为你应该加载 amsfonts 因为它们大多被 mnsymbol 隐藏,但它足以确保第一次使用\mathsf
不在\tensor
(即使该使用是在丢弃的框中,如这里)
\documentclass{article}
\RequirePackage{amsfonts} % load a range of math fonts
\RequirePackage{mathcomp}
\RequirePackage{MnSymbol}
\RequirePackage{tensor}
\begin{document}
\section{Test}
% approach limit of 14 fonts
$\mathcal{X}$ % same result: \ensuremath{\mathcal{X}}
$\mathtt{X}$ % same result \ensuremath{\mathtt{X}}
$\mathbf{X}$ % same result \ensuremath{\mathbf{X}}
\sbox0{$\mathsf{X}$}%<<<<<<<<<<<<<<<<<<<<<
% the following lines typesets X 3 times and produces 6 LaTeX errors
$\tensor*{\mathsf{X}}{}$ % same result \ensuremath{\tensor*{\mathsf{X}}{}}
% the following line would produce the same error
% $\tensor*[_{}^{}]{\mathsf{X}}{_{}^{}}$ % same result \ensuremath{\tensor*[_{}^{}]{\mathsf{X}}{_{}^{}}}
% the following line would produce no error
% $\mathsf{X}$ % same result \ensuremath{\mathsf{X}}
\end{document}
一个更简单的无包示例是
\documentclass{article}
\DeclareSymbolFont{letters1} {OML}{cmm} {m}{it}
\DeclareSymbolFont{letters2} {OML}{cmm} {m}{it}
\DeclareSymbolFont{letters3} {OML}{cmm} {m}{it}
\DeclareSymbolFont{letters4} {OML}{cmm} {m}{it}
\DeclareSymbolFont{letters5} {OML}{cmm} {m}{it}
\DeclareSymbolFont{letters6} {OML}{cmm} {m}{it}
\DeclareSymbolFont{letters7} {OML}{cmm} {m}{it}
\DeclareSymbolFont{letters8} {OML}{cmm} {m}{it}
\DeclareSymbolFont{letters9} {OML}{cmm} {m}{it}
\DeclareSymbolFont{lettersa} {OML}{cmm} {m}{it}
\begin{document}
\section{Test}
%$\mathsf{X}$
$\mathchoice{\mathsf{X}}{\mathsf{X}}{\mathsf{X}}{\mathsf{X}}$
\end{document}
这会产生相同的错误。不声明lettersa
或使用\mathsf
before\mathchoice
可避免此错误。我们也许能够捕获这种情况。