使用时的选项pdflatex

使用时的选项pdflatex

我正在制作 Beamer 演示文稿,想使用非常优雅的 Vollkorn 字体。Vollkorn 对数学的支持不太好,所以我想找到一种不失协调的替代品。Libertine 字体系列具有类似的衬线粗细,理论上可用于数学运算\usepackage[libertine]{newtxmath},但我就是无法让它正常工作。另一个相关的限制是我想在某些幻灯片上呈现黑底白字的文本。

我将部分关注这个答案它建议用\usepackage{unicode-math}和 替换mathbf,因此为了进行比较,我在演示时用虚拟命令symbf替换了。\symbf\usepackage[libertine]{newtxmath}

我也使用\usepackage{textgreek}它来替代一些希腊字符的文本渲染以实现所需的风格。

我将使用 进行编译pdfTeX 3.141592653-2.6-1.40.22,默认情况下,它具有 ok 的 unicode 源处理能力。我将比较这些与 的输出XeTeX 3.141592653-2.6-0.999993。我使用 Ubuntu 上的 TexLive 包安装了它,版本 2021.20220204-1。

使用时的选项pdflatex

newtxmath + 默认字体

使用pdflatex,仅使用\usepackage[libertine]{newtxmath}\usepackage{libertine}带 OT1 字体,这些字体并不美观。该命令mathbf已损坏。此外,此处的衬线粗细不适用于任何字体粗细的黑底白字。请注意,没有缺少任何字形(pdflatex 在需要时会找到 OT1 替换)

\usepackage{textgreek}
\usepackage[libertine]{newtxmath}

pdflatex newtxmath 默认

newtxmath + libertine 字体

使用pdflatex和 和\usepackage{libertine}\usepackage[libertine]{newtxmath}我们得到了一系列漂亮的样式,它们与正文一致,拉丁文和希腊文也相似。我认为这里唯一的区别是它使用 Libertine 主文本字体来替换缺失的字形,而不是 OT1。不过,这里的衬线粗细不适用于黑底白字,我希望用 Vollkorn 来增添趣味。

\usepackage{textgreek}
\usepackage{libertine}
\usepackage[libertine]{newtxmath}

pdflatex newtxmath libertine

使用时的选项xetex

Xetex 与 newtxmath

使用默认字体

切换到 时,我们注意到的第一件事是xetex使用\usepackage[libertine]{newtxmath}默认字体时缺少几个字形。现在, 是\boldsymbol而不是\mathbf。从像素角度来看,它与 pdflatex 没有太大区别。

\usepackage{textgreek}
\usepackage[libertine]{newtxmath}

xetex + newtxmath + 默认

使用自由字体

在 xetex 中,\usepackage{libertine}略有\usepackage[libertine]{newtxmath}缺陷。它在某些地方替代了计算机现代字体,总体上不如 的输出pdflatex

\usepackage{textgreek}
\usepackage{libertine}
\usepackage[libertine]{newtxmath}

xetex + newtxmath + libertine字体

Xetex 与\usepackage{unicode-math}

注意:\usepackage{unicode-math}与 不兼容\usepackage[libertine]{newtxmath}

使用默认字体(未显示)\usepackage{unicode-math}效果不佳。字形缺失,字体替换看起来不合适。与 相比\usepackage[libertine]{newtxmath},命令\boldsymbol中断。

\usepackage{textgreek}
\usepackage{unicode-math}

添加\usepackage{libertine}(下面)可以带来一些改进,但仍然缺少字形。与 相比pfdlatexnewtxmath该命令\boldsymbol已损坏。您可能还会注意到文本 μ 上的降部重量略轻。在我看来,渲染pdflatex+newtxmath更符合拉丁文本字符的样式。

\usepackage{textgreek}
\usepackage{libertine}
\usepackage{unicode-math}

xetex unicode 自由派

添加 Vollkorn 字体

据我所知,Vollkorn 字体需要这两条神奇的线

\usepackage[]{fontspec}
\setmainfont[BoldFont=Vollkorn Bold, BoldItalicFont=Vollkorn Medium Italic, Numbers={Proportional,Uppercase}]{Vollkorn}

该包fontspec不适用于pdflatex,因此我们只能使用xetexluatex

正如您在下面看到的\usepackage{unicode-math}真的Vollkorn 很糟糕。这并不奇怪,因为 Vollkorn 没有数学支持。

\usepackage{textgreek}
\usepackage{unicode-math}
\usepackage[]{fontspec}
\setmainfont[BoldFont=Vollkorn Bold, BoldItalicFont=Vollkorn Medium Italic, Numbers={Proportional,Uppercase}]{Vollkorn}

xetex+vollkorn+unicode

删除unicode-math和添加\usepackage{libertine}\usepackage[libertine]{newtxmath}不起作用:它有时会替换 OT1 字体,但看起来不正确。

\usepackage{textgreek}
\usepackage{libertine}
\usepackage[libertine]{newtxmath}
\usepackage[]{fontspec}
\setmainfont[BoldFont=Vollkorn Bold, BoldItalicFont=Vollkorn Medium Italic, Numbers={Proportional,Uppercase}]{Vollkorn}

xetex libertine newtxmath vollkorn

所以,这一切都非常令人沮丧。

  • Vollkorn 字体确实很棒,但 fontspec 限制我们使用 xetex/luatex
  • Vollkorn 不支持数学,所以我们需要另一个选项。OT 和 CM 字体不一致。这个unicode-math包经常被推荐,但实际上不起作用。
  • Libtertine math 具有类似的衬线重量,并且\usepackage{libertine}\usepackage[libertine]{newtxmath}中运行良好。但是,一旦我们添加 Vollkorn,pdflatex它就不会很好地发挥作用。xetex

我假设一个选项是使用我不知道的各种命令对数学样式进行一些非常具体的调整。如果你现在还没猜到,我在写这个问题时发现了另一个解决方案,我会把它作为答案发布出来。

答案1

经过一番搜索,我最终找到了最终的排列组合,即使用fontspecVollkorn 字体,然后使用\usepackage[libertine]{newtxmath} 没有正在导入\usepackage{libertine}

\usepackage{textgreek}
\usepackage[libertine]{newtxmath}
\usepackage[]{fontspec}
\setmainfont[BoldFont=Vollkorn Bold, BoldItalicFont=Vollkorn Medium Italic, Numbers={Proportional,Uppercase}]{Vollkorn}

解决方案

当然,这仍然有很多不足之处:

  • \mathbf并且\operatorname不研究希腊语。
    • 通过\usepackage{libertine},可以通过插入文本字形来匹配样式。
    • 现在,使用 Vollkorn 字体。粗体不是看起来不错,但标准的中等重量的 Vollkorn 在紧要关头可能会代替大胆的 Libertine。
  • Libertine 字体在\text数学样式模式下表现非常好,而 Vollkorn 则表现不佳。我真的很怀念粗体 μ。

我确信有某种方法可以xetex在数学环境中默认使用 Libertine 文本而不是 Vollkorn 文本,没有打破\mathbf\operatorname命令,但它是什么?

相关内容