答案1
这里有一个解决方案pict2e
。当然,可以随意更改参数。
\documentclass{article}
\usepackage{amsmath}% for \slimits@ and scalable fraction rule width
\usepackage{pict2e}
\makeatletter
\newcommand*{\sanssum}{\DOTSB\mathop{\mathpalette{\sans@op\sum{0.9}}\sans@sum}\slimits@}
\newcommand*{\sansprod}{\DOTSB\mathop{\mathpalette{\sans@op\prod{0.8}}\sans@prod}\slimits@}
\newcommand*{\sans@op}[4]{%
\sbox0{\m@th$\m@th#3#1$}%
\unitlength\ht0
\advance\unitlength\dp0
\vcenter{%
\hbox{%
\begin{picture}(#2,1)
\linethickness{%
\ifx#3\displaystyle2\fontdimen8\textfont\else
\ifx#3\textstyle1.7\fontdimen8\textfont\else
\ifx#3\scriptstyle1.6\fontdimen8\scriptfont\else
1.6\fontdimen8\scriptscriptfont\fi\fi\fi 3}
\roundcap
\roundjoin
#4
\end{picture}%
}%
}%
}
\newcommand*{\sans@sum}{%
\polyline(0.83,0.07)(0.08,0.07)(0.45,0.5)(0.08,0.93)(0.83,0.93)%
}
\newcommand*{\sans@prod}{%
\put(0.05,0.93){\line(1,0){0.7}}%
\put(0.19,0.07){\line(0,1){0.86}}%
\put(0.61,0.07){\line(0,1){0.86}}%
}
\makeatother
\begin{document}
\begin{minipage}{.3\linewidth}
\begin{gather*}
\sum_{i=1}^n a_i \bigcup \sanssum_{i=1}^n a_i \\
\textstyle \sum_{i=1}^n a_i \bigcup \sanssum_{i=1}^n a_i \\
\scriptstyle \sum_{i=1}^n a_i \bigcup \sanssum_{i=1}^n a_i \\
\scriptscriptstyle \sum_{i=1}^n a_i \bigcup \sanssum_{i=1}^n a_i
\end{gather*}
\end{minipage}
\begin{minipage}{.3\linewidth}
\begin{gather*}
\prod_{i=1}^n a_i \bigcup \sansprod_{i=1}^n a_i \\
\textstyle \prod_{i=1}^n a_i \bigcup \sansprod_{i=1}^n a_i \\
\scriptstyle \prod_{i=1}^n a_i \bigcup \sansprod_{i=1}^n a_i \\
\scriptscriptstyle \prod_{i=1}^n a_i \bigcup \sansprod_{i=1}^n a_i
\end{gather*}
\end{minipage}
\end{document}
答案2
要使用 将所有\sum
和\prod
符号更改为无衬线字体unicode-math
,请使用 加载无衬线 OpenType 数学字体range={\sum,\prod}
。Kp 字体是同系列中少数具有无衬线数学字体的字体之一,因此我将它们用于此 MWE。
\documentclass{article}
\usepackage{unicode-math}
\defaultfontfeatures{ Scale=MatchLowercase, Ligatures=TeX }
\setmainfont{TeX Gyre Pagella}[Scale=1.0]
\setmathfont{KpMath-Regular.otf}
\setmathfont{KpMath-Sans.otf}[range={\sum,\prod}]
\begin{document}
\[ \sum_{i=0}^{N} \prod_{j=1}^{M} ij
\]
\end{document}
但是,您可能想在同一文档中使用\sum
和\sanssum
(出于某些我不明白的原因)。这可以通过定义不同的数学版本来实现。对于这个 MWE,我选择了不同的默认数学字体,它\prod
与 有更明显的不同\sansprod
。
\documentclass{article}
\usepackage{unicode-math}
\defaultfontfeatures{ Scale=MatchLowercase, Ligatures=TeX }
\setmainfont{TeX Gyre Pagella}[Scale=1.0]
\setmathfont{TeX Gyre pagella Math}
\setmathfont{KpMath-Bold.otf}[version=bold]
\setmathfont{KpMath-Sans.otf}[version=sans]
% Based on the definition of \boldsymbol in amsbsy.sty:
\makeatletter
\DeclareRobustCommand{\sanssymbol}[1]{%
\begingroup
\let\@nomath\@gobble \mathversion{sans}%
\math@atom{#1}{%
\mathchoice%
{\hbox{$\m@th\displaystyle#1$}}%
{\hbox{$\m@th\textstyle#1$}}%
{\hbox{$\m@th\scriptstyle#1$}}%
{\hbox{$\m@th\scriptscriptstyle#1$}}}%
\endgroup}
\makeatother
\newcommand\sanssum{\mathop{\sanssymbol{\sum}}}
\newcommand\sansprod{\mathop{\sanssymbol{\prod}}}
\begin{document}
\[ \sum_{i=0}^{N} \prod_{j=1}^{M} ij \qquad
\sanssum_{i=0}^{N} \sansprod_{j=1}^{M} ij
\]
\end{document}
一个可能更简单的替代方案是加载无衬线数学字体。如果自动缩放不能满足您的要求,\setmathfontface
您可以调整数学字体的。Scale=
使用 PDFLaTeX 中的传统 8 位字体编码,您可以选择无衬线数学字体,用 加载它\DeclareSymbolFont
,查找该字体中的\sum
和的插槽\prod
,然后用 声明\sanssum
和\sansprod
符号\DeclareMathSymbol
。不幸的是,几乎每个传统的 LaTeX 数学字体都有不同的编码。