Есть ли приличный способ сделать шрифт 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
Пакет Герберта Фосса версии 0.08 2020-06-24.
решение3
То, что у вас здесь есть, этопроблема XY. То, что вам действительно нужно, это не «Bold pzc for mathmode», а жирный математический алфавит. Есть несколько пакетов, которые их предоставляют, но лучшими являются \symbfcal
и \symbfscr
алфавитыunicode-math
, и алфавиты \mathbcal
и\mathbscr
mathalpha
. Оба предоставляют полный выбор, образцы шрифтов, масштабирование и стандартный интерфейс для нескольких шрифтов.
Как mathalpha
предупреждает документация, Zapf Chancery «не очень подходит для использования в качестве математического алфавита из-за разной высоты и глубины, а также длинных хвостов у некоторых глифов. Используйте с осторожностью».
Вот MWE для современного или классического TeX. Он использует клоны алфавита 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 компилируется в:
Если говорить точнее, Герман Цапф разработал каллиграфический шрифт специально для использования в качестве математического алфавита: Euler Calligraphic, впервые использованный в книге DEK.Конкретная математика: основа компьютерной науки. Вы можете получить его как опцию cal=euler
или , или как математический шрифт OpenTypescr=euler
mathalpha
Нео Эйлер.
Однако вы можете применить решение 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}