我搜索了网站,但找不到答案。我正在尝试使用 Minion Pro。有些符号对我来说似乎不太好。你能解释一下如何更改它们吗?(也许是变成mathpazo
更好的一个。)
\documentclass[12pt,a4paper]{article}%
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amsfonts}
\usepackage{graphicx}
\usepackage[MnSymbol]{mathspec}
\setmainfont[Numbers={Lining,Proportional}]{Minion Pro}
\setmathsfont(Digits,Latin,Greek)[Numbers={Lining,Proportional}]{Minion Pro}
\begin{document}
These symbols don't seem good.
\begin{equation}
\sim\implies\leqslant\geqslant=<>\int\partial
\end{equation}
\end{document}
答案1
实现起来非常复杂。以下代码让您大致了解了如何实现,但并未尝试满足您的所有要求。尽管如此,相对于问题的复杂性,这是一个相当广泛的开始。(也许看起来并不多,但这只是表明结果并不总是与付出的劳动成正比!)它是否产生与您所希望的结果类似的结果则是另一个问题。
\documentclass[12pt,a4paper]{article}%
\usepackage{amssymb}
\usepackage{amsmath}
\usepackage{amsthm}
\usepackage{amsfonts}
\usepackage{graphicx}
\usepackage[MnSymbol]{mathspec}
\setmainfont[Numbers={Lining,Proportional}]{Minion Pro}
\setmathsfont(Digits,Latin,Greek)[Numbers={Lining,Proportional}]{Minion Pro}
% based on uflm.fd
\DeclareFontFamily{U}{mymathpazo}{}
\DeclareFontShape{U}{mymathpazo}{m}{n}{<-> fplmri}{}
\DeclareFontShape{U}{mymathpazo}{b}{n}{<-> fplmbi}{}
\DeclareFontFamily{U}{mypazo}{}
\DeclareFontShape{U}{mypazo}{m}{n}{<-> pplri}{}
\DeclareFontShape{U}{mypazo}{b}{n}{<-> pplbi}{}
% brazenly stolen from egreg's answer at http://tex.stackexchange.com/a/14406/39222
\usepackage{pifont}
\makeatletter
\newcommand\Pimathsymbol[3][\mathord]{%
#1{\@Pimathsymbol{#2}{#3}}}
\def\@Pimathsymbol#1#2{\mathchoice
{\@Pim@thsymbol{#1}{#2}\tf@size}
{\@Pim@thsymbol{#1}{#2}\tf@size}
{\@Pim@thsymbol{#1}{#2}\sf@size}
{\@Pim@thsymbol{#1}{#2}\ssf@size}}
\def\@Pim@thsymbol#1#2#3{%
\mbox{\fontsize{#3}{#3}\Pisymbol{#1}{#2}}}
\makeatother
\newcommand{\varpartial}{\Pimathsymbol[\mathord]{mymathpazo}{182}}
\newcommand{\varleqslant}{\Pimathsymbol[\mathord]{mypazo}{160}}
\newcommand{\vargeqslant}{\Pimathsymbol[\mathord]{mypazo}{165}}
\newcommand{\varequals}{\Pimathsymbol[\mathord]{mypazo}{61}}
\newcommand{\varless}{\Pimathsymbol[\mathord]{mypazo}{60}}
\newcommand{\vargreater}{\Pimathsymbol[\mathord]{mypazo}{62}}
\DeclareSymbolFont{mpazosymbols} {OMS}{zplm}{m}{n}% Use our last maths family for the symbol font
\SetSymbolFont{mpazosymbols}{bold} {OMS}{zplm}{b}{n}
\DeclareMathSymbol{\sim}{\mathrel}{mpazosymbols}{"18}
\DeclareMathSymbol{\leqslant} {\mathrel}{AMSa}{"36}% Try taking these from the AMS fonts since these families are defined already
\DeclareMathSymbol{\geqslant} {\mathrel}{AMSa}{"3E}
\begin{document}
\thispagestyle{empty}
$\sim\leqslant\geqslant\varequals\varless\vargreater\varpartial$
\end{document}
存在两个问题:
- 您的序言使用了几乎所有可用的数学系列。在超出 TeX 的容量之前,只能声明一个额外的符号字体。这意味着 Werner 提供的链接中 egreg 提供的解决方案是完成(大部分)此任务的唯一方法。
- 您首选的替代字体包括虚拟字体,这些字体本身基于重新编码的字体。这些字体使用来自不同字体的字形,不仅包括 mathpazo,还包括 Palatino 和 Computer Modern。这些字体中的每一种都至少使用
8r
“原始”编码进行了重新编码。这些特定虚拟字体的创建涉及取消设置字形并重置它们、重命名字形以及调整特定字符的位置和字距。我试图向后追溯,但后来意识到源是可用的,所以我建议您向前追溯。在 TeX Live 中,源位于texmf-dist/source/latex/mathpazo/
。(这不包括.pl
Palatino 字体的文件等,但.tfm
和.vf
文件包括到 8r 编码 Palatino 的字符映射。)
请注意,这里发生的是问题 1 或问题 2独自的相对来说比较容易管理。组合这让事情变得如此复杂。如果你能声明额外的数学家族,那么这些家族包含虚拟字体就无关紧要了。或者,如果替代字符是从非虚拟字体中提取的(如 egreg 关于的回答中所述mathabx
),那么它会相对简单(考虑到 egreg 的技巧)。正是这种组合让问题变得如此复杂。
此外,即使您将所需的字符追溯回其源字体,您仍然需要调整间距以重新创建 mathpazo 设置的字符。(虚拟字体水平和/或垂直移动字符,有时还会引入字距调整。)这是可行的,但显然会进一步复杂化。
还要注意,这\implies
是一个组合字符。我建议你直接重新定义它以适应。在这种情况下,你不会找到源字体,因为据我所知,该符号是 LaTeX 构造。