我会在数学模式下使用两种不同的字体。我个人的目标是达到下图所示的结果(我从一个意大利网站上截取的)。在这张图片中,使用的是 computer modern sans serif(在数学模式下,仅在“Definizione”和“Esempi”环境中),而不是文本字体,即 serif computer modern。
因此,我将创建一个新环境,例如“示例”,其中使用计算机现代无衬线字体(在数学和文本模式下)。PS 我已经知道如何使用更改文本和数学模式下的主字体
\DeclareSymbolFont
等等,但我不知道如何将两种不同的字体系列一起使用。
你能帮助我吗?
谢谢。
答案1
LaTeX 有一个数学版本的概念,请参阅fntguide.pdf
。
通常,仅提供两个数学版本,分别是normal
和bold
。但是,您可以使用 设置一个新的版本\DeclareMathVersion
。然后,使用 引入新的符号字体\DeclareSymbolFont
,并通过 将其设置为使用,\SetSymbolFont
其第二个参数指定数学版本。类似的命令对数学字母表执行相同的操作。然后,您可以使用 命令\mathversion
切换到新版本。
请注意,它最初会继承当前的默认字体,因此您只需指定需要更改的字体。
下面的示例借用了一些代码来mathpazo.sty
更改中的几种字体\mathversion{mymath}
,然后设置了一个包含数学版本开关的示例环境。
\documentclass{article}
\DeclareMathVersion{mymath}
\DeclareSymbolFont{myletters}{OML}{zplm}{m}{it}
\SetSymbolFont{letters}{mymath}{OML}{zplm}{m}{it}
\DeclareSymbolFont{myoperators}{OT1}{pplx}{m}{n}
\SetSymbolFont{operators}{mymath}{OT1}{pplx}{m}{n}
\newenvironment{Exx}{\mathversion{mymath}\bigbreak\noindent\textbf{Example}\par}{\par\noindent\textit{End Example}\par\bigbreak}
\begin{document}
Test \( x + y = \int_0^3 f(t)\,dt \).
\begin{Exx}
Test \( x + y = \int_0^3 f(t)\,dt \).
\end{Exx}
Test \( x + y = \int_0^3 f(t)\,dt \).
\end{document}
类似地,可以提供具有无衬线字体的版本:
\documentclass{article}
\DeclareMathVersion{sfmath}
\DeclareSymbolFont{sfletters}{OT1}{cmss}{m}{sl}
\SetSymbolFont{letters}{sfmath}{OT1}{cmss}{m}{sl}
\DeclareSymbolFont{sfoperators}{OT1}{cmss}{m}{n}
\SetSymbolFont{operators}{sfmath}{OT1}{cmss}{m}{n}
\SetMathAlphabet\mathit{sfmath}{OT1}{cmss}{m}{sl}
\SetMathAlphabet\mathrm{sfmath}{OT1}{cmss}{m}{n}
\newenvironment{Exx}{\sffamily\mathversion{sfmath}\bigbreak\noindent\textbf{Example}\par}{\par\noindent\textsl{End Example}\par\bigbreak}
\begin{document}
Test \( x + y = \int_0^3 f(t)\,dt \) and \( \tan t = \frac{\sin
t}{\cos t} \).
\begin{Exx}
Test \( x + y = \int_0^3 f(t)\,dt \) and \( \tan t = \frac{\sin
t}{\cos t} \).
\end{Exx}
Test \( x + y = \int_0^3 f(t)\,dt \) and \( \tan t = \frac{\sin
t}{\cos t} \).
\end{document}
但请注意,希腊符号会出现问题,因为这些符号不在所需的位置cmss
。