
Замечания
-Пакет newtxmath
поставляется с поддержкой различных шрифтов, включая libertine
, minion
или garamondx
. Лично мне очень нравится Garamond, но garamondx
он не входит в установку по умолчанию. Поэтому я использую ebgaramond
вместо него.
Для этого я просто скопировал часть, где настраиваются шрифты, из newtxmath
.
Постановка задачи
Вот минимальныйНЕТрабочий пример того, что я пытался загрузить ebgaramond
в качестве математического алфавита. ( unicode-math
или mathspec
это не вариант, он должен быть pdflatex
совместимым)
\documentclass{article}
\usepackage{ebgaramond}
\usepackage[cmintegrals,cmbraces]{newtxmath}
\DeclareSymbolFont{letters}{OML}{EBGaramond12-Italic-lf-t1--base}{m}{it}
\SetSymbolFont{letters}{bold}{OML}{EBGaramond12-Italic-lf-t1--base}{b}{it}
\DeclareFontSubstitution{OML}{EBGaramond12-Italic-lf-t1--base}{m}{it}
\begin{document}
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
1234567890
$ABCDEFGHIJKLMNOPQRSTUVWXYZ$
$abcdefghijklmnopqrstuvwxyz$
$1234567890$
\end{document}
Бонусный вопрос
Как я могу использоватьперекосглифы как mathcal
алфавит?
ИЗМЕНИТЬ 2014-01-03
Как указано в комментарии cfr, вопрос сводится к следующему:Как создать OML-файлы для ebgaramond
?(Бонусный вопрос остается в силе)
решение1
Обновлять
Самое простое решение — использоватьebgaramond-математика, новый пакет, доступный от CTAN.
ebgaramond-maths
теперь включен в TeX Live. Если у вас установлен TeX Live 2014, вы должны получить пакет при обновлении. (Например, запустив tlmgr update --all
в командной строке или используя предпочитаемую вами оболочку GUI.)
Приведенный ниже ответ, скорее всего, будет полезен только в том случае, если вы захотите подкорректировать результаты или применить метод к другому шрифту.
Оригинальный ответ
Настройка \mathcal относительно проста. Настройка поддержки OML не так проста.
Обеспечить поддержку OML для EBGaramond
Возможны несколько подходов. Я взял то, что мне показалось самым простым, учитывая то, как работает существующий пакет ebgaramond. Я бы, наверное, поступил иначе, если бы создавал поддержку и текста, и математики с нуля, но в этом случае я пытаюсь максимально избегать дублирования усилий.
Переменные
Создайте где-нибудь рабочий каталог, который я назову
${work}
. Неважно где, главное, чтобы у вас было разрешение писать туда. (Не делайте этого как root, конечно.)Я назову
${texmain}
ваш основной, текущий каталог texmf. В моей системе это/usr/local/texlive/current
или/usr/local/texlive/2013
.
Рабочая обстановка
Измените на ${work}
. С этого момента я предполагаю, что все команды выполняются в этом каталоге и что все созданные файлы сохраняются здесь.
Скопируйте необходимые файлы в рабочий каталог или создайте символические ссылки, если это необходимо:
cp ${texmain}/texmf-dist/tex/fontinst/mathetx/oml.etx ${texmain}/texmf-dist/fonts/opentype/public/ebgaramond/EBGaramond12-Italic.otf ./
или
ln -s ${texmain}/texmf-dist/tex/fontinst/mathetx/oml.etx ${texmain}/texmf-dist/fonts/opentype/public/ebgaramond/EBGaramond12-Italic.otf ./
Создайте предварительный файл кодирования
Это не тот файл кодировки, о котором вы в конечном итоге сообщите TeX, но он ляжет в основу этого файла.
Сначала запустите fontinst в интерактивном режиме. (То есть просто введите «fontinst» в качестве команды.) В командной строке:
\input finstmsc.sty
\etxtoenc{oml}{oml-ebgaramond}
\bye
В результате будет создан файл oml-ebgaramond.enc, который вы можете слегка изменить перед отправкой в otftotfm.
sed -i -e 's/TeXMathItalicEncoding/EBGaramondTeXMathItalicEncoding/g' -e 's/oldstyle//' oml-ebgaramond.enc
Сгенерировать шрифт TeX
ebgaramond уже предоставляет файлы type1, которые вам нужны, поэтому нет необходимости их повторно генерировать. Все, что требуется, это сгенерировать подходящий .tfm.
otftotfm -e oml-ebgaramond.enc EBGaramond12-Italic.otf > EBGaramond-Maths.map
Это создаст как файл .tfm, так и фрагмент файла .map, который TeX должен использовать для шрифта. По сути, .tfm — это просто шрифт с точки зрения TeX. (pdfTeX видит вещи немного по-другому — ему также нужен бит type1.)
Он также создаст новый файл кодировки с тем, что почти наверняка будет очень странным именем. Это файл кодировки, который будет использовать TeX, как указано во фрагменте файла .map. oml-ebgaramond.enc теперь можно удалить, если хотите, так как он больше не нужен.
Создайте определение шрифта для LaTeX
otftotfm не генерирует файлы определения шрифтов для LaTeX, насколько я могу судить, но файл в этом случае довольно прост. Создайте файл со следующим содержимым:
%Filename: OMLEBGaramond-Maths.fd
%Based on a file created using fontinst v1.928
%THIS FILE SHOULD BE PUT IN A TEX INPUTS DIRECTORY
\ProvidesFile{OMLEBGaramond-Maths.fd}
[2014/01/03 font definitions for OML/EBGaramond-Maths.]
\DeclareFontFamily{OML}{EBGaramond-Maths}{}
\DeclareFontShape{OML}{EBGaramond-Maths}{m}{it}{
<-> EBGaramond12-Italic--oml-ebgaramond
}{}
\DeclareFontShape{OML}{EBGaramond-Maths}{b}{it}{<->ssub * EBGaramond-Maths/m/it}{}
\DeclareFontShape{OML}{EBGaramond-Maths}{bx}{it}{<->ssub * EBGaramond-Maths/m/it}{}
\endinput
и сохраните его как OMLEBGaramond-Maths.fd
. Это сообщает LaTeX, из чего состоит семейство шрифтов EBGaramond-Maths в кодировке OML. В частности, он сообщает, какие шрифты TeX принадлежат к этому семейству в этой кодировке и характеристики каждого из них. (В этом случае есть только один такой шрифт, который затем заменяет другие веса, поскольку в EBGaramond нет полужирного начертания, а OML заботится только о форме курсива.)
Создать файл пакета для LaTeX (необязательно)
Обычно проще загрузить пакет, чем повторять настройку шрифта каждый раз, когда вы хотите использовать определенную конфигурацию, поэтому я бы создал пакет LaTeX. Для этого создайте еще один файл со следующим содержимым:
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{ebgaramond-maths}[2014/01/03 v1.0 ebgaramond-maths for use with EBGaramond]
\RequirePackage{ebgaramond}
% \pdfmapfile{+EBGaramond-Maths.map}
\DeclareSymbolFont{letters} {OML} {EBGaramond-Maths} {m} {it}
\DeclareSymbolFont{operators} {OT1} {EBGaramond-LF} {m} {n}
\SetSymbolFont{letters} {bold} {OML} {EBGaramond-Maths} {b} {it}
\SetSymbolFont{operators} {bold} {OT1} {EBGaramond-LF} {bx} {n}
\DeclareFontSubstitution{OML}{EBGaramond-Maths}{m}{it}
\DeclareFontSubstitution{OT1}{EBGaramond-LF}{m}{n}
\SetMathAlphabet{\mathbf} {normal} {OT1} {EBGaramond-LF} {bx} {n}
\SetMathAlphabet{\mathbf} {bold} {OT1} {EBGaramond-LF} {bx} {n}
\SetMathAlphabet{\mathit} {normal} {OT1} {EBGaramond-LF} {m} {it}
\SetMathAlphabet{\mathit} {bold} {OT1} {EBGaramond-LF} {bx} {it}
\DeclareMathAlphabet{\mathcal} {OT1} {EBGaramond-LF} {m} {sw}
\endinput
и сохраните его как ebgaramond-maths.sty
.
- Если вы не хотите просить людей устанавливать шрифты, раскомментируйте соответствующую строку в файле .sty.
Затем из ${work} можно проверить результат перед установкой шрифтов:
\documentclass{article}
\usepackage{ebgaramond}
\usepackage[cmintegrals,cmbraces]{newtxmath}
\pdfmapfile{+EBGaramond-Maths.map}
\usepackage{ebgaramond-maths}
\begin{document}
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
1234567890
$ABCDEFGHIJKLMNOPQRSTUVWXYZ$
$abcdefghijklmnopqrstuvwxyz$
$1234567890$
$\Gamma\varGamma\Delta\Lambda\varLambda\Xi\varXi\Pi\varPi\Sigma\varSigma\Upsilon\varUpsilon\Phi\varPhi\Psi\varPsi\Omega\varOmega$
$\alpha\beta\gamma\delta\epsilon\varepsilon\zeta\eta\theta\iota\kappa\lambda\mu\nu\xi\pi\rho\varrho\sigma\varsigma\tau\upsilon\phi\varphi\chi\psi\omega$
$\mathbf{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$
$\mathbf{abcdefghijklmnopqrstuvwxyz}$
$\mathbf{0123456789}$
$\mathit{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$
$\mathit{abcdefghijklmnopqrstuvwxyz}$
$\mathit{0123456789}$
$\mathrm{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$
$\mathrm{abcdefghijklmnopqrstuvwxyz}$
$\mathrm{0123456789}$
$\mathcal{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$
$\mathcal{abcdefghijklmnopqrstuvwxyz}$
$\mathcal{0123456789}$
\end{document}
производит:
решение2
Еслитолькотогда нужен математический шрифт
\documentclass{article}
\usepackage[ebgaramond]{newtxmath}
\begin{document}
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
1234567890
$ABCDEFGHIJKLMNOPQRSTUVWXYZ$
$abcdefghijklmnopqrstuvwxyz$
$1234567890$
\end{document}
но если ebgaramond
это необходимо и в тексте, то
\documentclass{article}
\usepackage[ebgaramond]{newtx}
\begin{document}
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
1234567890
$ABCDEFGHIJKLMNOPQRSTUVWXYZ$
$abcdefghijklmnopqrstuvwxyz$
$1234567890$
\end{document}