我正在通过 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
。使用此样式,您应该提供选项default
和defaultsans
使用 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