更改 LateX 模板中节标题字体时出现问题

更改 LateX 模板中节标题字体时出现问题

我正在通过 Pandoc 将 Markdown 文档转换为 PDF,使用名为 Eisvogel 的 LaTeX 模板。我相信 Pandoc 使用的是 pdfTeX。(我对这一切都很陌生,所以请提前原谅我!)

模板:https://github.com/Wandmalfarbe/pandoc-latex-template/blob/master/eisvogel.tex

简而言之:我需要将文本字体设置为“Lato”,将标题设置为“Lato Light”。

我已设法将“Lato”设置为文档正文的字体(以一种相当迂回的方式),但是,章节标题似乎(我认为)由 Beamer 控制。奇怪的是,目录中的第三级标题链接使用了 Lato,但标题本身使用的是 LM Sans 10,目录中的其他标题也是如此。

我之前尝试在我的 markdown 文档的 YAML 标头中使用“fontfamily:Lato”,但出现了此错误:生成 PDF 时出错。!pdfTeX 错误(字体扩展):只有可缩放字体才能自动扩展。

相反,我通过将默认字体系列更改为 Lato 来使文本字体正常工作:

\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
  $if(fontfamily)$
  $else$
  \usepackage[default]{Lato}
  \usepackage[T1]{fontenc}
  $endif$
\else % if not pdftex
  $if(mainfont)$
  $else$
  \usepackage[default]{Lato}
  \usepackage[T1]{fontenc}

我曾以为“if(fontfamily)”只会使用我的 YAML 中的“Lato”,但显然不是 - 只有将其作为“else”才能起作用,现在我想我明白了,这是因为抛出错误的是 Beamer 部分,而不是这部分代码。

所以问题似乎出在 Beamer 身上。LaTeX/Pandoc 的其余部分在处理普通文本时对 Lato 没有问题,但我认为 Beamer 肯定试图对它不喜欢的标题做一些事情。我尝试在下面简单地将 \usepackage{lato} 替换为 \usepackage{lmodern},但无济于事。

$if(beamerarticle)$
\usepackage{beamerarticle} % needs to be loaded first
$endif$
$if(fontfamily)$
\usepackage[$for(fontfamilyoptions)$$fontfamilyoptions$$sep$,$endfor$]{$fontfamily$}
$else$
\usepackage{lmodern}
$endif$

这是我在旅途中遇到的瓶颈。我知道可以使用 Lato,因为它适用于我文档中的普通文本,而且我在旅途中也看到过人们使用 Lato 作为幻灯片和文档标题的例子,所以我不明白为什么 Beamer 必须使用 lmodern,而真的不喜欢使用 Lato。

如能得到任何指导或解释我错在哪里,我将不胜感激!

答案1

无需更改模板。您可以通过 使用 Lato 字体lato.sty。使用此样式,您应该提供选项defaultdefaultsans使用 Lato 作为默认系列和默认无衬线字体,这可以使用 YAML 字段fontfamily和来完成fontfamilyoptions

fontfamily: lato
fontfamilyoptions: 
- default
- defaultsans

使用未修改 eisvogel.tex模板与本示例文档一起

---
title: "Example PDF"
author: [Author]
date: "2019-06-16"
subject: "Markdown"
keywords: [Markdown, Example]
lang: "en"
fontfamily: lato
fontfamilyoptions: 
- default
- defaultsans
...

# Vinaque sanguine metuenti cuiquam Alcyone fixus

Lorem markdownum Letoia, et alios: figurae flectentem annis aliquid Peneosque ab
esse, obstat gravitate.

并处理

pandoc beamer.md -o beamer.pdf --from markdown --to beamer --template ./eisvogel.tex

生成仅使用 Lato 字体的 PDF:

$ pdffonts beamer.pdf 
name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
BBNBGL+Lato-Regular                  Type 1            Custom           yes yes no      18  0

相关内容