我想得到像这样的引号“...”,但是当我用 Pandoc 处理我的 Markdown 文本时,它给了我“...”。这可能归结为一个问题:如何让 Pandoc 使用区域设置?这是我的命令行:
pandoc -o out.pdf -f markdown -t latex in.md
您可能想要指定整个文档的语言,这样它不仅会影响引号,还会影响连字、不可分割的空格和其他区域设置细节。
为此,您可以指定
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}
。
Pandoc 目前(2015 年 11 月)仅生成英文类型引号。但你有两个选择:
您可以使用
--no-tex-ligatures
选项关闭 --smart
排版 选项,该选项在 LaTeX 输出中默认打开。然后使用您想要的正确的 unicode 字符(例如 „...”
)并使用支持 unicode 的 --latex-engine
(lualatex
或 xelatex
)。您可以在
Pandoc LaTeX 模板中使用
\usepackage[danish=quotes]{csquotes}
或类似内容。来自自述文件:
如果指定了
选项,pandoc 将生成印刷正确的输出,将直引号转换为弯引号,将--smart
转换为长破折号,---
转换为短破折号,将--
转换为省略号。在某些缩写后面插入不间断空格,例如“Mr.”...
注意:如果您的 LaTeX 模板调用 csquotes 包,pandoc 将自动检测到此并使用
来引用文本。\enquote{...}
尽管 @mb21 已经提供了答案,但我想补充一点,现在可以简单地将您需要的内容包含在(例如)您的 yaml 元数据块中,因此不再需要创建自己的模板。示例:
---
title: foo
author: bar
# other stuff
header-includes:
- \usepackage[german=quotes]{csquotes}
---
# contents
对于我的 pandoc 3.1.3 版本,接受的答案不起作用。在我看来,@rriemann 提到的更好、更简单的解决方案确实有效:
lang
和 csquotes: true
yaml 元数据字段示例:
---
lang: fr-FR
csquotes: true
---