我的问题涉及: “数学字母太多”错误 但我认为它有足够的不同,值得开辟一条新线索。
假设两件事:
在我的序言中,我已经做了大量工作来以各种方式设置“正常”的数学版本。
另外,在我的序言中,我写道:\DeclareMathVersion{normal2}
这是我的问题:在 LaTeX 文档的主体中,我想要执行以下操作:
\mathversion{normal}
\input chapter1.tex
\input chapter2.tex
\input chapter3.tex
\input chapter4.tex
\input chapter5.tex
\input chapter6.tex
\input chapter7.tex
\input chapter8.tex
\input chapter9.tex
(实际上远不止 9 章。我有大约 200 章,超过 5000 页的数学内容,是同事的论文集。)
不幸的是,假设第 3 章需要几种数学字体。(还假设其他几个章节也需要几种自己的数学字体……但第 3 章需要的数学字体最多。)我们知道 LaTeX 中数学字体的数量限制为 16 种。因此,如果第 3 章使用了很多字体,那么我可能会在其他章节中用尽数学字体的空间。例如,当我读到(比如说)第 4、5、6 章等时,我得到了这个可怕的错误:
“普通版本中使用的数学字母太多。”
最近几天我多次阅读了这个帖子(以及许多其他相关帖子):
在 Lars Hellström 的回复中,Lars 说:
“我们能够通过为字母表繁多的论文之一声明一个单独的数学版本来解决这个问题。具体来说,我们将命令 \DeclareMathVersion{normal2} 放在序言的末尾,并将命令 \mathversion{normal2} 和 \mathversion{normal} 分别放在字母表繁多的论文的 \include 之前和之后。”
因此我尝试了 Lars 的建议,如下:
\mathversion{normal}
\input chapter1.tex
\input chapter2.tex
\mathversion{normal2}
\input chapter3.tex
\mathversion{normal}
\input chapter4.tex
\input chapter5.tex
\input chapter6.tex
\input chapter7.tex
\input chapter8.tex
\input chapter9.tex
Lars 说道:“这个技巧所依赖的一件事是,新数学版本是在旧数学版本的所有设置都到位的情况下创建的,因此之前为数学版本 normal 所做的所有声明也将在数学版本 normal2 中适用(以及 normal3,依此类推,如果需要重复这个技巧的话)。”
但我没有看到这种情况发生。当我运行 pdflatex 时,我没有看到 \mathversion{normal} 中的所有良好属性在第 3 章中生效。例如,符号的数学字体,它与第 1 章和第 2 章以及第 4、5、6 章中的“正常”数学版本配合得很好,但属性在第 3 章中却乱了套。
我非常渴望弄清楚这一点。
我想知道(例如)我是否可以将“normal”的属性完全复制到“normal2”,然后在第 3 章中(仅)修改“normal2”(而不更改“normal”)。这样,当我读到第 4、5、6 章……时,我将回到我的常规“normal”数学字体设置。
这可能吗?我基本上想将“normal”中的所有属性复制到“normal2”中,这样我就可以将“normal2”用于(仅)第 3 章(完全不修改“normal”),然后最后再使用“normal”用于第 4、5、6 章……
非常感谢您考虑我的问题!
请注意:我不想转到 XeTeX 或 LuaTeX,因为我多年来一直在研究这些论文集,而且我即将完成这个漫长的过程。我可以让每个章节独立工作,但当我尝试将所有章节打包成一个文档时,使用大量数学字体的章节(例如这里的第 3 章)阻止我有效地继续处理文档的其余部分(例如第 8 章和第 9 章),同时无法始终保持“普通”数学字体的良好属性。
这是一个完整的最小工作示例:
\documentclass[letterpaper,12pt]{article}
\usepackage[margin=1in,vmargin=1in]{geometry}
\usepackage{amsmath,amssymb}
\usepackage{mathrsfs}
\usepackage{yfonts}
\usepackage{txfonts}
\usepackage[mathscr]{euscript}
\usepackage{mathtime}
\DeclareMathVersion{normal2}
\begin{document}
%% CHAPTER 1
Ch~1: My favorite fonts are $\mathrm{A} + (\mathfrak{B} + \mathcal{C}) = \mathscr{D}$.
\vskip 24pt
%% CHAPTER 2
Ch~2: I also like bold faced types like $\mathbb{BBB}$.
Here is an interesting math equation:
$(\mathnormal{E} + \textfrak{F}) + \textswab{G} + \textgoth{H} = \varmathbb{I}$
\vskip 24pt
\mathversion{normal2}
%% CHAPTER 3
Ch~3: We can try some more font math. This Chapter is using mathversion ``normal2''.
PROBLEM \#1: This equation is strange, because the left-and-right
parens appear as triangles, and the equal sign appears as a script D:
$(\mathsf{J} + \mathtt{K}) = \mathit{L}$
PROBLEM \#2: Also, the following equation, which worked in Ch.~2, does not
work anymore!
$(\mathnormal{E} + \textfrak{F}) + \textswab{G} + \textgoth{H} = \varmathbb{I}$
\mathversion{normal}
\vskip 24pt
Ch~4: Now I am ready to move onwards with more math. For instance,
the math parentheses and equal sign work again,
because this chapter uses mathversion ``normal'' again.
$(\mathbf{Q} + \mathbf{R}) = \mathbf{S}$
Fortunately, the equation from Ch.~2 works again:
$(\mathnormal{E} + \textfrak{F}) + \textswab{G} + \textgoth{H} = \varmathbb{I}$
\end{document}
答案1
这是 mathtime 特有的问题。通常,新的数学版本“使用迄今为止声明的所有符号字体和数学字母的默认值进行初始化”。但mathtime
不使用\DeclareSymbolFont
来声明其字体,因此\SetSymbolFont
新的数学版本会获得原始默认值。您必须重置新版本的数学字体:
\documentclass[letterpaper,12pt]{article}
\usepackage[margin=1in,vmargin=1in]{geometry}
\usepackage{amsmath,amssymb}
\usepackage{mathtime}
\DeclareMathVersion{normal2}
\makeatletter %needed: (we are setting the symbol font for normal2 here:)
\SetSymbolFont{operators} {normal2}{\operator@encoding}{ptm}{m}{n}
\SetSymbolFont{letters} {normal2}{MY1}{mtt}{m}{it}
\SetSymbolFont{symbols} {normal2}{MY2}{mtt}{m}{n}
\SetSymbolFont{largesymbols}{normal2}{MY3}{mtt}{m}{n}
\makeatother
\begin{document}
$(a=b)$
\mathversion{normal2}
$(a=b)$
\end{document}