Pandoc `lang` 选项使字体难看

Pandoc `lang` option makes font ugly

我正在努力学习pandoc。我之前使用latex因为我总是和公式、代码打交道。这是我编译成pdf的简单文档:

---
title: Test
...

# Test!

This is a test of *pandoc*.

- list one
- list two
- $E=mc^2$
- На русском

Горит костер рябины красной.

$$
A = \int\limits_{-\infty}^{\infty} e^{-x^2}dx
$$

```python
class ClassName(object):
    """docstring for ClassName (Кириллица?)"""
    def __init__(self, arg):
        super(ClassName, self).__init__() # English comment
        self.arg = arg # Кириллический комментарий

```

我尝试了两种不同的命令来生成 pdf:

  1. pandoc test1.md -o test1.pdf
  2. pandoc -V lang=ru-RU -o test1-2.pdf test1.md

第一个命令无法呈现西里尔符号。此外,我总是写非英语文档,所以我需要生成带有俄语字幕的文档。我使用 lang 属性 按照 pandoc 文档的建议进行操作。现在,西里尔符号呈现正确,但如果你看几秒钟的屏幕截图,你会发现字体看起来比以前难看多了。特别是代码。

这是怎么回事,如何解决?

我发现很难以与 pandoc 提供的界面一致的方式为拉丁文、西里尔文、数学和代码块设置字体。我发现的最佳折衷方案是:

  • lang 设置为 en 并明确标记俄语部分。
  • 对普通文本和数学使用 XITS 字体
  • 使用覆盖西里尔文的固定宽度字体,例如解放单声道
  • 使用 XeLaTeX 或 LuaLaTeX 处理

全部合并:

---
title: Test
mainfont: XITS
monofont: Liberation Mono
mathfont: XITS Math
lang: en
---

# Test!

This is a test of *pandoc*.

- list one
- list two
- $E=mc^2$
- [На русском]{.class lang="ru-RU"}

::::: {.class lang="ru-RU"}

Горит костер рябины красной.

:::::


$$
A = \int\limits_{-\infty}^{\infty} e^{-x^2}dx
$$


```python
class ClassName(object):
    """docstring for ClassName (Кириллица?)"""
    def __init__(self, arg):
        super(ClassName, self).__init__() # English comment
        self.arg = arg # Кириллический комментарий

```

pandoc cyr.md --pdf-engine=lualatex -o cyr.pdf的结果: