【问题标题】:How can I specify pandoc's markdown extensions using a YAML block?如何使用 YAML 块指定 pandoc 的降价扩展?
【发布时间】:2015-12-06 03:59:07
【问题描述】:

背景

Pandoc 的降价让您specify extensions 了解您希望如何处理降价:

可以通过将+EXTENSION-EXTENSION 附加到格式名称来单独启用或禁用Markdown 语法扩展。因此,例如,markdown_strict+footnotes+definition_lists 是启用脚注和定义列表的严格降价,markdown-pipe_tables+hard_line_breaks 是 pandoc 的降价,没有管道表和硬换行符。

我的具体问题

对于给定的 pandoc 转换,例如,我在源代码中使用 grid tables

pandoc myReport.md --from markdown+pipe_tables --to latex -o myReport.pdf

如何编写pandoc YAML block 来完成同样的事情(指定我的源包含网格表?)

我的问题的一般形式

如何使用 pandoc YAML 打开和关闭扩展?

我认为不能完全回答我的问题的堆栈溢出问题

也可能没有办法做到这一点

pandoc 始终有可能并非旨在让您在 YAML 中指定这些扩展。不过,我希望是这样。

【问题讨论】:

标签: yaml markdown rstudio r-markdown pandoc


【解决方案1】:

您可以在 Rmarkdown 文档中使用 Markdown 变体来执行此操作。本质上,您将扩展名输入到 .Rmd 文件开头的 YAML 标头块中的 variant 选项中。

例如,要使用网格表,您的 YAML 标题块中有这样的内容:

---
title: "Habits"
author: John Doe
date: March 22, 2005
output: md_document
    variant: markdown+grid_tables
---

然后,您可以直接在pandoc 中编译为 PDF,方法是在命令行中输入如下内容:

pandoc yourfile.md -o yourfile.pdf

有关 RStudio 中的降价变体的更多信息:http://rmarkdown.rstudio.com/markdown_document_format.html#markdown_variants

有关 RStudio 中 markdown/Rmarkdown 中 Pandoc 扩展的更多信息: http://rmarkdown.rstudio.com/authoring_pandoc_markdown.html#pandoc_markdown

【讨论】:

  • 那不是pandoc yourfile.rmd -o yourfile.pdf吗?
  • @Merchako 不,输出类型是md_document
  • 我认为在这个答案中添加一些澄清文本会很有帮助。听起来您正在采取两个步骤,但您没有明确表示。 yourfile.md 来自哪里?
  • 假设您的原始文件名为 yourfile.Rmd - 按照说明在 YAML 标头中添加额外文本会导致创建 yourfile.md 文件,然后您可以在 pandoc 中使用该文件。跨度>
  • 我明白了,但我认为应该将它纳入您的答案中以确保正确的流程。对于那些还没有使用 Rmarkdown 的人来说,这没有意义。由于这个问题是关于 Pandoc 的,因此您不能假设您熟悉 Rmarkdown。
【解决方案2】:

您可以使用每种输出格式中包含的md_extension 参数在 yaml 标头中指定 pandoc markdown 扩展。

---
title: "Your title"
output:
  pdf_document:
    md_extensions: +grid_tables
---

这将激活扩展程序。详情请见Rmarkdown Definitive Guide

【讨论】:

    【解决方案3】:

    在 Rmarkdown 范围之外,您可以对其使用 Pandocomatic,或对 Ruby 使用 Paru

    ---
     title: My first pandocomatic-converted document
     pandocomatic_:
         pandoc:
             from: markdown+footnotes
             to: html
     ...
    

    【讨论】:

      【解决方案4】:

      对于在 2021 年或之后遇到此问题的人来说,这可以在没有 Rmarkdown 的情况下完成。您可以指定一个 YAML“默认”文件,该文件基本上包括您想要配置的任何内容。

      为了做 OP 想要的,你需要做的就是

      from: markdown+pipe_tables
      

      在默认文件中,然后在编译时传递它。 您还可以指定输入和输出文件,这样您就可以得到最简单的命令 pandoc --defaults=defaults.yaml 并让它为您处理其余的事情。请参阅https://pandoc.org/MANUAL.html#extensions 了解更多信息。

      【讨论】:

        【解决方案5】:

        正如 Merchako 所说,接受的答案是特定于 rmarkdown 的。例如,Atom md_extensions: 不起作用。

        更通用的方法是将扩展名放在命令行选项中。这个例子很好用:

        ----
        title: "Word document with emojis"
        author: me
        date: June 9, 2021
        output:
          word_document:
            pandoc_args: ["--standalone", "--from=markdown+emoji"]
        ----
        
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-08
          • 2023-01-03
          • 2013-06-02
          • 1970-01-01
          相关资源
          最近更新 更多