【问题标题】:Pandoc `lang` option makes font uglyPandoc `lang` 选项使字体难看
【发布时间】:2018-11-25 21:46:48
【问题描述】:

我正在努力学习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

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

发生了什么以及如何解决?

【问题讨论】:

  • 可能它现在选择了不同的字体...您可以尝试pandoc -s -o output.tex 来查看 LaTeX pandoc 生成的内容。然后你可以通过例如修复它设置权mainfont,见pandoc.org/MANUAL.html#variables-for-latex
  • @mb21 是的,你是对的。问题是pandoc 将拉丁现代字体设置为默认字体。它没有西里尔字母符号。我已将 pdf-engine 更改为 xelatex 并将字体设置为 DejaVu Serif。现在它适用于文本和代码,但我仍然有数学问题,因为 pandoc 忽略了-V mathfont="Some Math Font"

标签: fonts latex pandoc cyrillic


【解决方案1】:

我发现很难以与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的结果:

【讨论】:

  • 也许我做错了,但您的解决方案似乎在数学字体方面面临同样的问题:如果您在等式中使用这样的 smth:$k_Б = 1,381 \cdot 10^{-23}$,则下划线的“Б”不会呈现。此外,编译器这样说:[WARNING] Missing character: There is no Б (U+0411) in font lmmi10! [WARNING] Missing character: There is no Б (U+0411) in font lmmi7!。看起来 XITS 数学没有设置为数学字体。
  • @danielleontiev 如果我删除mathfont: XITS Math,我会得到明显不同的结果。所以我很肯定,对我来说,mathfont 设置正确。我会使用$k_\text{Б} = 1,381 \cdot 10^{-23}$,因为“Б”可能是“Boltzmann”(西里尔字母音译)的缩写。如果它不是数学变量,则应使用周围的文本字体。如果您想使用西里尔字母作为变量,事情会变得更加困难。我知道没有为此设置的字体。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-26
  • 1970-01-01
  • 1970-01-01
  • 2011-11-20
相关资源
最近更新 更多