1.更改XeLaTeX和LuaLaTeX的字体:

1.更改XeLaTeX和LuaLaTeX的字体:

我有一些用 MultiMarkDown 编写的报告,想用 pandoc 将它们转换为 pdf(通过 xelatex)。由于我在专业环境中,所以必须使用某种字体系列。字体位于 windows/fonts 文件夹中,名为font-regular.otffont-italic.otf等等。

我知道命令行开关-V mainfont:font-regular.otf,我可以用它来切换字体,但这只能设置常规字体。我可以运行 a.tex而不是 a .pdf,然后手动编辑文件,例如

\setmainfont[
BoldFont = Font-Bold.otf,
ItalicFont = Font-Italic.otf,
BoldItalicFont = Font-BoldItalic.otf
]{Font-Regular.otf}

但这很麻烦,因为每个文档都需要转换,这需要额外的工作。

有没有办法:

  • 轻松创建一个我可以传递的“字体系列”,或者
  • 通过命令行传递 fout .otf(因此通过脚本或批处理)

答案1

YAML 标头

---
mainfont: Font-Regular.otf
mainfontoptions:
- BoldFont=Font-Bold.otf
- ItalicFont=Font-Italic.otf
- BoldItalicFont=Font-BoldItalic.otf
---

命令行

$ pandoc in.md --pdf-engine=xelatex \
         -V 'mainfont:Font-Regular.otf' \
         -V 'mainfontoptions:BoldFont=Font-Bold.otf, ItalicFont=Font-Italic.otf, BoldItalicFont=Font-BoldItalic.otf'
         -o out.pdf

自从我回答了最初的问题后,很多事情都发生了变化。因此,这里是关于如何使用 pandoc 设置字体的更新。有几种方法可以更改字体,pandoc而且它们都很好记录如今。以下是简要概述:

1.更改XeLaTeX和LuaLaTeX的字体:

您可以指定系统上可以使用的任何字体fontspec

在 markdown 文件的 YAML 标头中,为 XeLaTeX 设置如下变量:

---
mainfont: DejaVuSerif.ttf
sansfont: DejaVuSans.ttf
monofont: DejaVuSansMono.ttf 
mathfont: texgyredejavu-math.otf 
---

或者,对于 LuaLaTex:

---
mainfont: DejaVuSerif
sansfont: DejaVuSans
monofont: DejaVuSansMono
mathfont: TeXGyreDejaVuMath-Regular
---

如果需要更细粒度的控制,可以指定选项:

---
mainfont: DejaVuSerif
mainfontoptions:
- Extension=.ttf
- UprightFont=*
- BoldFont=*-Bold
- ItalicFont=*-Italic
- BoldItalicFont=*-BoldItalic
---

调用 pandoc 并将--pdf-engine其设置为xelatexlualatex

$ pandoc in.md --pdf-engine=xelatex -o out.pdf

您也可以在命令行上设置字体:

$ pandoc in.md --pdf-engine=xelatex \
         -V 'mainfont:DejaVuSerif.ttf' \
         -V 'sansfont:DejaVuSans.ttf' \
         -V 'monofont:DejaVuSansMono.ttf' \
         -V 'mathfont:texgyredejavu-math.otf' \
         -o out.pdf

或者

$ pandoc in.md --pdf-engine=lualatex \
         -V 'mainfont:DejaVuSerif' \
         -V 'sansfont:DejaVuSans' \
         -V 'monofont:DejaVuSansMono' \
         -V 'mathfont:TeXGyreDejaVuMath-Regular' \
         -o out.pdf

再次,有选项:

$ pandoc in.md --pdf-engine=xelatex \
         -V 'mainfont:DejaVuSerif' \
         -V 'mainfontoptions:Extension=.ttf, UprightFont=*, BoldFont=*-Bold, ItalicFont=*-Italic, BoldItalicFont=*-BoldItalic' \
         -V 'sansfont:DejaVuSans.ttf' \
         -V 'monofont:DejaVuSansMono.ttf' \
         -V 'mathfont:texgyredejavu-math.otf' \
         -o out.pdf

注意,xelatex需要文件名,而lualatex包含字体系列名称。您可以使用信息网获取有关您将要使用的字体的名称和特征的更多信息。

例子

2. 更改模板

一些软件包例如dejavu-otflibertinus-otf为您执行 fontspec 设置,但您必须修改模板才能使它们工作。

获取默认模板并将其保存到某个文件:

$ pandoc -D latex > template.latex

打开文件并删除所有字体配置代码并替换为,例如:

\usepackage{dejavu-otf} 

3. 设置fontfamilypdflatex

如果您正在使用pdflatex,则可以使用:

---
fontfamily: dejavu
---

或者

$ pandoc in.md --pdf-engine=pdflatex \ 
         -V 'fontfamily:dejavu' \
         -o demo.pdf

该选项fontfamily尝试加载具有指定名称的包。这通常适用于 Type 1 字体,pdflatex但也有一些包在从或fontspec调用时在内部使用。lualatexxelatex

4. 设置上下文字体

---
mainfont: DejaVuSerif
sansfont: DejaVuSans
monofont: DejaVuSansMono
mathfont: TeXGyreDejaVuMath
---

或者

$ pandoc in.md --pdf-engine=context \
         -V 'mainfont:DejaVuSerif' \
         -V 'sansfont:DejaVuSans' \
         -V 'monofont:DejaVuSansMono' \
         -V 'mathfont:TeXGyreDejaVuMath' \
         -o out.odf

答案2

我刚刚在寻找如何使用 pandoc -> xelatex 设置标题字体时看到了这一点

可以使用元数据设置来设置 mainfont 和 mainfont 选项。例如,您的配置将如下所示:

mainfont: Font-Regular.otf
mainfontoptions: BoldFont=Font-Bold.otf
mainfontoptions: ItalicFont=Font-Italic.otf
mainfontoptions: BoldItalicFont=Font-BoldItalic.otf

您也可以使用字体的全名。以下是我将 Gentium Basic 设置为主要字体的方法:

mainfont: Gentium Basic
mainfontoptions: BoldFont=Gentium Basic Bold
mainfontoptions: ItalicFont=Gentium Basic Italic
mainfontoptions: BoldItalicFont=Gentium Basic Bold Italic

答案3

tex通过运行从 pandoc获取默认模板pandoc -D latex,然后将所需的字体定义添加到文档。另存为my-font.latex。然后使用开关运行 pandoc --template=my-font

相关内容