有没有一种合适的方法可以将 pzc 字体加粗,定义为
\DeclareMathAlphabet{\mathpzc}{OT1}{pzc}{m}{it}
在数学模式中。尝试使用 \bm 如下,没有发现任何东西
\documentclass{report}
\usepackage{amsmath}
\usepackage{bm}
\DeclareMathAlphabet{\mathpzc}{OT1}{pzc}{m}{it}
\begin{document}
$\mathpzc{A}$ is a set and $\bm{ \mathpzc{B}}$ is a polyset.
\end{document}
有什么建议么?
答案1
Zapf Chancery 字体(或其克隆版)不提供粗体版本。
如果您愿意使用 XeLaTeX 或 LuaLaTeX,您可以利用 TeX Gyre Chorus,它是 Zapf Chancery 的克隆版,可以伪造粗体。
\documentclass{article}
\usepackage{fontspec}
\newfontfamily{\chorus}{TeX Gyre Chorus}[
NFSSFamily=chorus,
BoldFont=*,
BoldFeatures={FakeBold=3},
]
\DeclareMathAlphabet{\mathzc}{TU}{chorus}{m}{n}
\DeclareMathAlphabet{\mathzcb}{TU}{chorus}{b}{n}
\begin{document}
$\mathzc{A}\ne\mathzcb{A}$
\end{document}
答案2
完全根据用户@egreg 的意见,有两个极端的选择:
- 或使用
contour
包(以我的拙见,这是一个很好的折衷方案):
\documentclass[a4paper,12pt]{article}
\usepackage{amsmath}
\usepackage{contour}
\DeclareMathAlphabet{\mathpzc}{OT1}{pzc}{m}{it}
\begin{document}
$\mathpzc{A}$ is a set and \contour[2]{black}{$\mathpzc{A}$} is a polyset.
\end{document}
我认为该参数2
接近良好且正确。否则,您可以使用 设置选项1
。请参阅下面带有参数的示例1
:
\documentclass[a4paper,12pt]{article}
\usepackage{amsmath}
\usepackage{contour}
\DeclareMathAlphabet{\mathpzc}{OT1}{pzc}{m}{it}
\begin{document}
$\mathpzc{A}$ (normal) \contour[1]{black}{$\mathpzc{A}$} (bold)
\end{document}
您可以看到放大您可以看到双重背景,但在远处看并不明显。
- 或者使用带有包的可怕的:-)假粗体符号
amsbsy
:
\documentclass[a4paper,12pt]{article}
\usepackage{amsmath}
\usepackage{amsbsy}
\DeclareMathAlphabet{\mathpzc}{OT1}{pzc}{m}{it}
\begin{document}
$\mathpzc{A}$ is a set and $\pmb{\mathpzc{A}}$ is a polyset.
\end{document}
附录:
- 使用以下方法可以获得另一个最佳结果
xfakebold
Herbert Voß 版本 0.08 的软件包 2020-06-24。
答案3
你这里有XY 问题。 你真正想要的不是“粗体 pzc for mathmode”,而是粗体数学脚本字母表。有几个软件包提供它们,但最好的是\symbfcal
和\symbfscr
字母表unicode-math
以及\mathbcal
和\mathbscr
字母mathalpha
. 两者都提供了全面的选择、字体样本、缩放和多种字体的标准界面。
正如mathalpha
文档所警告的那样,Zapf Chancery“由于高度和深度不同,并且某些字形的尾巴很长,因此不太适合用作数学字母表。请谨慎使用。”
这是适用于现代或经典 TeX 的 MWE。它使用 pxmath/txmath\mathcal
字母表的克隆。您可能更喜欢不同的字体集,但这两个软件包都为您提供了多种选择。
\documentclass{article}
\usepackage{iftex}
\ifTUTeX
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}
\setmathfont{Asana Math}[range={scr,bfscr}, Alternate, Scale=MatchUppercase]
\else
\usepackage{amsmath}
\usepackage[scr=pxtx]{mathalpha}
\newcommand\mathbfscr[1]{\mathbscr{#1}}
\fi
\pagestyle{empty}
\begin{document}
\(\mathscr A\) is a set and \(\mathbfscr A\) is a polyset.
\end{document}
在 LuaLaTeX 或 XeLaTeX 中,编译为:
在 PDFLaTeX 中,它编译为:
值得一提的是,Hermann Zapf 确实设计了一种专门用作数学字母的书法字体:Euler Calligraphic,最早用于 DEK 的书中具体数学:计算机科学的基础。您可以将其作为cal=euler
或scr=euler
选项获取mathalpha
,或作为 OpenType 数学字体获取新欧拉。
但是,您可以应用 egreg 的解决方案,FakeBold=
使用标准\mathcal
或\mathscr
字母表以及 Zapf Chancery 的克隆。
\documentclass{article}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}
\setmathfont{TeX Gyre Chorus}[range=scr,Scale=MatchUppercase]
\setmathfont{TeX Gyre Chorus}[range=bfscr,Scale=MatchUppercase,FakeBold=1.2]
\pagestyle{empty}
\begin{document}
\(\mathscr A\) is a set and \(\mathbfscr A\) is a polyset.
\end{document}