Включить лигатуры с Fira Code в PDF-выводе Rmarkdown - PullRequest
0 голосов
/ 28 апреля 2018

Следующий код позволяет мне использовать 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
```

Создает желаемую лигатуру для !=, но не для <-.

enter image description here

Решение, детализированное в принятом ответе в этом посте работает, когда сделано в 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}

enter image description here

Следующий YAML не работает.

---
monofont: "Fira Code"
output: 
  pdf_document:
    latex_engine: xelatex
header-includes: |
  \makeatletter
  \def\verbatim@nolig@list{}
  \makeatother
---

Можно ли включить лигатуры непосредственно в YAML?

1 Ответ

0 голосов
/ 28 апреля 2018

Если вы посмотрите на сгенерированный вывод LaTeX, вы увидите, что фигурные скобки были заключены в кавычки: \def\verbatim@nolig@list\{\}. Эта проблема цитирования обсуждалась в нескольких проблемах на github, и, кажется, существует исправление (см. эта проблема ), но я не проверял его, так как моя машина тестирования 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
```
...