
評論
-packagenewtxmath
支援各種字體,包括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 支援就不那麼重要了。
為EBGaramond提供OML支持
有幾種方法是可能的。鑑於現有 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
這將建立 TeX 需要使用字體的 .tfm 檔案和 .map 檔案片段。本質上,就 TeX 而言,.tfm 只是一種字體。 (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}