我一直在寻找答案,找到了几个,但无法让它们在我的特定情况下发挥作用。如果有进行更改的通用程序,我很乐意阅读它。有没有办法将几个符号从一个符号集更改为另一个符号集?更具体地说,我想将总和和乘积运算符从mtpro2
(精简)更改为 中的运算符mathptmx
。如果有一组新的命令,例如\newsum
或\newprod
用于新定义的符号,那就太好了。我正在使用 XeLaTeX。一个基本的 TeX 文件是我在下面发布的。谢谢。
\documentclass[14pt, a4paper, reqno]{extarticle}
\usepackage{amsmath}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\usepackage{mathptmx}
\usepackage[lite]{mtpro2}
\usepackage{mathspec}
\setmainfont[Scale=0.95]{Crimson Text}
\setsansfont[Scale=0.8]{Ubuntu}
\setmonofont[Scale=0.9]{Ubuntu Mono}
\setmathsfont(Latin)[Uppercase=Italic,Lowercase=Italic,Scale=0.95]{Crimson Text}
\setmathsfont(Greek)[Uppercase=Regular,Lowercase=Regular,Scale=0.85]{GFS Didot}
\setmathrm{Crimson Text}
\usepackage{microtype}
\usepackage{amssymb}
\usepackage{amstext}
\usepackage{amsthm}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
$$\sum_{i=1}^nX_iY_{n-i}$$
$\sum_i\varphi (x_i)$
\end{document}
答案1
使用现代字体
在 中unicode-math
,您可以用 替换这些符号\setmathfont[range = ...]
:
\documentclass{article}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}
\setmathfont[range={\sum, \prod, \coprod},
Scale=MatchUppercase
]{STIX Two Math}
\begin{document}
\[ \sum_{a \in \mathcal{S}} a = \prod_{b \in \mathcal{T}} b \]
\end{document}
使用旧字体
使用传统的 8 位数学字体,您需要查找数学字体中大运算符和小运算符的插槽号,加载这些数学字母(其中只有 16 个),并声明命令在四种数学模式中的每一种中使用适当的大符号或小符号。
确切的命令会因包而异,但此示例从导入\sum
和。\prod
txfonts
\documentclass{article}
\DeclareSymbolFont{replacement-operators}{OMX}{txex}{m}{n}
\DeclareMathSymbol{\bigsum}{\mathop}{replacement-operators}{"58}
\DeclareMathSymbol{\smallsum}{\mathop}{replacement-operators}{"50}
\DeclareMathSymbol{\bigprod}{\mathop}{replacement-operators}{"59}
\DeclareMathSymbol{\smallprod}{\mathop}{replacement-operators}{"51}
\renewcommand\sum{\mathop{\mathchoice
{\bigsum}%
{\smallsum}%
{\smallsum}%
{\smallsum}}}
\renewcommand\prod{\mathop{\mathchoice
{\bigprod}%
{\smallprod}%
{\smallprod}%
{\smallprod}}}
\begin{document}
\[ \sum_{a \in \mathcal{S}} a = \prod_{b \in \mathcal{T}} b \]
\end{document}
如果您愿意,可以很容易地将\renewcommand
声明更改为\newcommand\newsum
和。\newcommand\newprod
使用这些newtxmath
符号需要对源代码进行更多的挖掘。其扩展符号字体声明了 7 位 OMX 编码的 8 位扩展,您必须对其进行设置。
\documentclass{article}
\usepackage[T1]{fontenc}
\DeclareFontEncoding{LMX}{}{}
\DeclareFontSubstitution{LMX}{ntxexx}{m}{n}
\DeclareSymbolFont{replacement-operators}{LMX}{ntxexx}{m}{n}
\DeclareMathSymbol{\bigsum}{\mathop}{replacement-operators}{"58}
\DeclareMathSymbol{\smallsum}{\mathop}{replacement-operators}{"50}
\DeclareMathSymbol{\bigprod}{\mathop}{replacement-operators}{"59}
\DeclareMathSymbol{\smallprod}{\mathop}{replacement-operators}{"51}
\renewcommand\sum{\mathop{\mathchoice
{\bigsum}%
{\smallsum}%
{\smallsum}%
{\smallsum}}}
\renewcommand\prod{\mathop{\mathchoice
{\bigprod}%
{\smallprod}%
{\smallprod}%
{\smallprod}}}
\begin{document}
\[ \sum_{a \in \mathcal{S}} a = \prod_{b \in \mathcal{T}} b \]
\end{document}
答案2
mtpro2
与和等不同包交互mathspec
并不总是那么容易。在这个特定情况下,你不应该重新定义\sum
和\prod
,而应该重新定义\upsumop
和\upprodop
。
\documentclass[14pt, a4paper, reqno]{extarticle}
% package loading
\usepackage[lite]{mtpro2}
\usepackage{amsmath}
\usepackage{mathspec}
\usepackage{microtype}
\usepackage{amssymb}
\usepackage{amsthm}
% setup
\DeclareSymbolFont{mathptmxlargesymbols}{OMX}{ztmcm}{m}{n}
\DeclareMathSymbol{\upsumop}{\mathop}{mathptmxlargesymbols}{"50}
\DeclareMathSymbol{\upprodop}{\mathop}{mathptmxlargesymbols}{"51}
\setmainfont[Scale=0.95]{Crimson Pro}
%\setsansfont[Scale=0.8]{Ubuntu}
%\setmonofont[Scale=0.9]{Ubuntu Mono}
\setmathsfont(Latin)[Uppercase=Italic,Lowercase=Italic,Scale=0.95]{Crimson Pro}
\setmathsfont(Greek)[Uppercase=Regular,Lowercase=Regular,Scale=0.85]{GFS Didot}
\setmathrm{Crimson Pro}
\begin{document}
\[\prod_{k}\sum_{i=1}^nX_iY_{n-i}\]
$\prod_k\sum_i\varphi (x_i)$
\end{document}
生产说明。我将 Crimson Text 改成了我手头的 Crimson Pro,以便体验最终的效果。我注释掉了对 Ubuntu 字体的调用,因为我的系统上目前没有这些字体。