如何使用pandoc获取本地化引号?

问题描述 投票:0回答:4

我想得到像这样的引号“...”,但是当我用 Pandoc 处理我的 Markdown 文本时,它给了我“...”。这可能归结为一个问题:如何让 Pandoc 使用区域设置?这是我的命令行:

pandoc -o out.pdf  -f markdown -t latex in.md
pdf localization latex locale pandoc
4个回答
4
投票

您可能想要指定整个文档的语言,这样它不仅会影响引号,还会影响连字、不可分割的空格和其他区域设置细节。

为此,您可以指定

lang
选项。来自pandoc手册

lang:使用符合 BCP 47 的代码(例如 en 或 en-GB)标识文档的主要语言。对于某些输出格式, pandoc 会将其转换为适当的格式存储在 附加变量 babel-lang、polyglossia-lang (LaTeX) 和 上下文语言 (ConTeXt)。

此外,同一份手册还指出:

如果您的 LaTeX 模板或任何包含的头文件调用 csquotes 包,pandoc 将自动检测到这一点并使用 nquote{...} 来引用文本。

在我看来,确保报价本地化的最佳方法是添加:

---
lang: fr-FR
header-includes:
- \usepackage{csquotes}
---

或者更好的是,编辑 pandoc 默认模板

pandoc -D latex > ~/.pandoc/templates/default.latex

并永久添加

\usepackage{csquotes}


2
投票

Pandoc 目前(2015 年 11 月)仅生成英文类型引号。但你有两个选择:

  1. 您可以使用

    --no-tex-ligatures
    选项关闭
    --smart
    排版
    选项,该选项在 LaTeX 输出中默认打开。然后使用您想要的正确的 unicode 字符(例如
    „...”
    )并使用支持 unicode 的
    --latex-engine
    lualatex
    xelatex
    )。

  2. 您可以在

    Pandoc LaTeX 模板
    中使用\usepackage[danish=quotes]{csquotes}或类似内容。来自自述文件

    如果指定了

    --smart
    选项,pandoc 将生成印刷正确的输出,将直引号转换为弯引号,将
    ---
    转换为长破折号,
    --
    转换为短破折号,将
    ...
    转换为省略号。在某些缩写后面插入不间断空格,例如“Mr.”

    注意:如果您的 LaTeX 模板调用 csquotes 包,pandoc 将自动检测到此并使用

    \enquote{...}
    来引用文本。


1
投票

尽管 @mb21 已经提供了答案,但我想补充一点,现在可以简单地将您需要的内容包含在(例如)您的 yaml 元数据块中,因此不再需要创建自己的模板。示例:

---
title: foo
author: bar
# other stuff
header-includes:
    - \usepackage[german=quotes]{csquotes}
---

# contents

0
投票

对于我的 pandoc 3.1.3 版本,接受的答案不起作用。在我看来,@rriemann 提到的更好、更简单的解决方案确实有效:

使用
lang
csquotes: true
yaml 元数据字段

示例:

---
lang: fr-FR
csquotes: true
---
© www.soinside.com 2019 - 2024. All rights reserved.