評論

評論

評論

-packagenewtxmath支援各種字體,包括libertineminiongaramondx。我個人非常喜歡 Garamond,但garamondx它不是預設安裝的一部分。因此我用ebgaramond它來代替。

為此,我只是複製了從 中設定字體的部分newtxmath

問題陳述

這是一個最小的不是到目前為止我嘗試加載ebgaramond為數學字母表的工作範例。 (unicode-mathmathspec不是一個選項,它需要相容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}

數學和文字

相關內容