【问题标题】:Tilde over n when when converting from markdown to latex with pandoc使用 pandoc 从 markdown 转换为 Latex 时超过 n 的波浪号
【发布时间】:2016-04-27 22:52:57
【问题描述】:

我有一个降价文档,我通过 pandoc 的乳胶引擎将其转换为 PDF。我正在尝试渲染一个带有波浪号的 n,如“niño”,降价如下:

ni\~{n}o

...但这只是在 PDF 中呈现为“ni~no”——即波浪号被逐字解释。我还尝试转义反斜杠(ni\\~{n}o),将所有内容括在括号中(ni{\~{n}}o),基本上我认为这是此序列中转义字符的所有可能组合,但没有任何效果。即使序列是独立的(即\~{n}),它也会失败。

但是,其他基于字母而非符号的类似序列也可以正常工作(例如,Otter\r{a} 被正确呈现为“Otterå”)。 Pandoc 特别无法处理波浪号(或者更一般地说,可能是基于非字母的乳胶字符序列——我没有测试过其他的)。

我用来构建 pdf 的命令是 pandoc file.md -o file.pdf。我也尝试过指定-f markdown+raw_tex,但它仍然失败(我也不应该这样做,因为\r{a} 没有它也可以工作,而且我认为raw_tex 无论如何都是默认启用的)。

有什么想法吗?我知道我可以使用 xetex 直接输入这些字符,但这并不是一个真正令人满意的解决方案...

【问题讨论】:

  • 你试过直接使用ñ吗?
  • 不,但这并不是问题的重点——正如我所提到的,要在 markdown 中使用 Unicode 字符,我很确定我必须使用 xelatex 引擎而不是本机乳胶,更不用说拥有支持这些字符的终端和文本编辑器。我会这样做,但我希望有一个更强大且与平台无关的工作流程。
  • 其实我刚刚发现 pandoc 会自动处理 Unicode 字符。我以为它会破坏它们,但我猜如果它在文档中检测到任何内容,它会切换到 xelatex,这非常漂亮!

标签: latex markdown pandoc


【解决方案1】:

除了直接使用 ñ 字符(这显然在原生 Pandoc 中有效,因为它很神奇!),另一种方法是创建一个简单的 LaTeX \newcommand 来强制原生 TeX 解释。

\newcommand{\tex}[1]{#1}

ni\tex{\~n}o

感谢 John McFarlane 向我介绍这个巧妙的解决方法!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-21
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    • 2013-07-27
    • 2013-04-07
    相关资源
    最近更新 更多