gpt4 book ai didi

pandoc - 使用标题栏将多个文件编译为一个文件

转载 作者:行者123 更新时间:2023-12-04 00:52:28 25 4
gpt4 key购买 nike

我想知道如何将多个 pandoc 文件编译成一个输出文档,其中每个输入文件都有一个标题块 .

例如。假设我有两个文件:
ch1.md :

% Chapter 1
% John Doe
% 1 Jan 2014
Here is chapter 1.
ch2.md :
% Chapter 2
% Jane Smith
% 3 Jan 2014
Here is chapter 2.

通常,对于多个输入文件,您可以通过将它们提供给 pandoc 来编译它们:
pandoc ch1.md ch2.md --standalone -o output.html

但是 pandoc 在编译之前连接输入文件,这意味着只有第一个标题块(来自 ch1.md )被适本地设置样式。
我希望每个标题块的样式都适当(例如,在 html 中,标题块的第一行样式为 <h1 class="title"> ,第二个 <h2 class="author"> 等等)。

(注意:我也尝试将每一章单独编译,然后使用 pandoc 将它们连接在一起。这会删除 1 之后章节的标题样式,但保留作者/日期的样式)。

为什么? 我可以:
  • 将每一章编译成单独的文档,并适当标记作者/标题/日期
  • 一起编译整个文档,并为每一章适当标记作者/标题/日期(可以使用 --chapters 选项)

  • 我可以直接在每个章节文件中用'#'(h1)指定标题,用'##'(h2)指定作者,用'###'(h3)指定日期,但这意味着pandoc不“知道”我的文档的标题/标题/日期是什么,所以(例如)如果我编译为 latex 它不会使用 \date{}\author{}适本地标记。

    最佳答案

    我写了一个 pandoc filter当在每个单独章节的文件上运行时,插入标题块作为标题(标题为 1 级,作者为 2 级,日期为 3 级。这就是 HTML 编写者所做的)。

    这使您可以在每个章节上单独运行 pandoc(以生成 pandoc 输出加上格式化的标题块),然后在所有章节上一起运行 pandoc 以编译单个文档。

    过滤器在这里的要点(我对故障代码等不承担任何责任):https://gist.github.com/mathematicalcoffee/e4f25350449e6004014f

    如果你希望它的格式不同,你可以修改它(例如,作者/日期出现在目录中,因为它们是标题,这不太正确......但这是一个不同的问题,因为它发生在默认情况下HTML 编写器也是)。

    我的工作流程现在是这样的:

    FORMAT=latex  # as understood by -t <format> in pandoc
    FLAGS=--toc # other flags for pandoc, --smart, etc
    OUT=pdf # output extension
    for f in Chapter*.md; do \
    pandoc $FLAGS -t $FORMAT --filter ./chapter.hs $f; \
    echo ""; \
    done | pandoc $FLAGS --standalone -o thesis.$OUT

    我在哪里 chmod +x chapter.hs它在当前目录中。

    (我还有一个 title.txt,我用整个论文的标题块(而不是每章的标题块)突出在前面)。

    我从 pandoc google group 得到了一些帮助太棒了。

    关于pandoc - 使用标题栏将多个文件编译为一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21247978/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com