在 Rmarkdown 的 PDF 输出中使用 Fira 代码启用连字
Enable ligatures with Fira Code in PDF output of Rmarkdown
以下代码使我能够使用 Fira Code 作为单色字体。
---
monofont: "Fira Code"
output:
pdf_document:
latex_engine: xelatex
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
```{r}
x <- 1:5
x != 2
```
这会为 !=
生成所需的连字,但不会为 <-
生成所需的连字。
this post 中接受的答案中详述的解决方案在 LaTeX 中完成时有效,例如
\documentclass{article}
\usepackage{mathspec}
\setmonofont[Contextuals={Alternate}, Scale=0.75, Ligatures=TeX]{Fira Code}
\makeatletter
\def\verbatim@nolig@list{}
\makeatother
\begin{document}
\begin{verbatim}
x <- 1:5
x != 2
\end{verbatim}
\end{document}
以下 YAML 不起作用。
---
monofont: "Fira Code"
output:
pdf_document:
latex_engine: xelatex
header-includes: |
\makeatletter
\def\verbatim@nolig@list{}
\makeatother
---
是否可以直接在 YAML 中启用连字?
如果您查看生成的 LaTeX 输出,您会发现大括号已被引用:\def\verbatim@nolig@list\{\}
。这个引用问题已经在 github 上的几个问题中进行了讨论,并且似乎有一个可用的修复程序 (c.f。this issue),但是我还没有测试过它,因为我的 Debian 测试机还在使用 pandoc 1.19.2.4。作为解决方法,您可以将必要的命令放入单独的文件中,比如 preamble.tex
:
\makeatletter
\def\verbatim@nolig@list{}
\makeatother
然后使用
---
monofont: "Fira Code"
output:
pdf_document:
latex_engine: xelatex
include:
in_header: preamble.tex
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
```{r}
x <- 1:5
x != 2
```
以下代码使我能够使用 Fira Code 作为单色字体。
---
monofont: "Fira Code"
output:
pdf_document:
latex_engine: xelatex
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
```{r}
x <- 1:5
x != 2
```
这会为 !=
生成所需的连字,但不会为 <-
生成所需的连字。
this post 中接受的答案中详述的解决方案在 LaTeX 中完成时有效,例如
\documentclass{article}
\usepackage{mathspec}
\setmonofont[Contextuals={Alternate}, Scale=0.75, Ligatures=TeX]{Fira Code}
\makeatletter
\def\verbatim@nolig@list{}
\makeatother
\begin{document}
\begin{verbatim}
x <- 1:5
x != 2
\end{verbatim}
\end{document}
以下 YAML 不起作用。
---
monofont: "Fira Code"
output:
pdf_document:
latex_engine: xelatex
header-includes: |
\makeatletter
\def\verbatim@nolig@list{}
\makeatother
---
是否可以直接在 YAML 中启用连字?
如果您查看生成的 LaTeX 输出,您会发现大括号已被引用:\def\verbatim@nolig@list\{\}
。这个引用问题已经在 github 上的几个问题中进行了讨论,并且似乎有一个可用的修复程序 (c.f。this issue),但是我还没有测试过它,因为我的 Debian 测试机还在使用 pandoc 1.19.2.4。作为解决方法,您可以将必要的命令放入单独的文件中,比如 preamble.tex
:
\makeatletter
\def\verbatim@nolig@list{}
\makeatother
然后使用
---
monofont: "Fira Code"
output:
pdf_document:
latex_engine: xelatex
include:
in_header: preamble.tex
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
```{r}
x <- 1:5
x != 2
```