博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pandoc epub_使用Pandoc将您的书变成网站和ePub
阅读量:2535 次
发布时间:2019-05-11

本文共 5854 字,大约阅读时间需要 19 分钟。

pandoc epub

Pandoc是用于将文件从一种标记语言转换为另一种标记语言的命令行工具。 在我 ,我解释了如何将用Markdown编写的文本转换为网站,幻灯片和PDF。

在后续文章中,我深入地研究 ,展示如何从相同的Markdown源文件生成网站和ePub图书。 我将以我即将使用该过程创建的电子书作为示例。

首先,我将解释用于本书的文件结构,然后介绍如何使用Pandoc生成网站并将其部署在GitHub中。 最后,我演示了如何生成其配套的ePub书。

您可以在我的 GitHub存储库中找到代码。

设置写作结构

我用Markdown语法编写所有文章。 您也可以使用HTML,但是当Pandoc将Markdown转换为ePub文档时,引入HTML越多,出现问题的风险就越大。 我的书遵循每文件一章的模式。 使用Markdown标题H1( )声明章节。 您可以在每个文件中放置多个章节,但是将它们放在单独的文件中可以更轻松地查找内容并稍后进行更新。

元信息遵循类似的模式:每种输出格式都有其自己的元信息文件。 元信息文件定义有关文档的信息,例如要添加到HTML的文本或ePub的许可证。 我将所有Markdown文档存储在一个名为parts的文件夹中(这对于生成网站和ePub的Makefile很重要)。 例如,让我们看一下目录,序言和about章节(分为toc.md,preface.md和about.md文件),为清楚起见,我们将省略其余章节。

我的About文件可能像这样开始:

# About this book {-}     
## Who should read this book {-}
Before creating a complex software system one needs to create a solid foundation.
General Responsibility Assignment Software Principles (GRASP) are guidelines to assign
responsibilities to software classes in object-oriented programming.

完成各章后,下一步是添加元信息以设置网站和ePub的格式。

生成网站

创建HTML元信息文件

我网站的元信息文件(web-metadata.yaml)是一个简单的YAML文件,其中包含有关作者,标题,权利, <head>标记的内容以及HTML文件的开头和结尾的内容的信息。

我建议(至少)在web-metadata.yaml文件中包括以下字段:

---     
title: GRASP principles for the Object-oriented mind
author: Kiko Fernandez-Reyes
rights: 2017 Kiko Fernandez-Reyes, CC-BY-NC-SA 4.0 International
header-includes:
- |
  ```{=html}
 
 
  ```
include-before:
- |
  ```{=html}
 

If you like this book, please consider

      spreading the word or
     
        buying me a coffee
     
 

  ```
include-after:
- |
  ```{=html}
 
   

   
       
   
 
  ```
---

需要注意的一些变量:

  • header-includes变量包含将嵌入在<head>标记内HTML。
  • 调用变量后的行必须是-| 。 下一行必须以与|对齐的三重反引号开头 否则Pandoc将拒绝它。 {= html}告诉Pandoc,这是原始文本,不应作为Markdown处理。 (为此,您需要检查是否已启用Pandoc中的raw_attribute扩展名。要进行检查,请键入pandoc --list-extensions | grep raw并确保返回的列表包含名为+ raw_html的项目;加号指示它已启用。)
  • 变量include-before在您网站的开头添加了一些HTML,我请读者考虑推广这个单词或向我购买咖啡。
  • include-after变量在网站末尾附加原始HTML,并显示我的书的许可证。

这些只是一些可用的字段。 看一下HTML中的模板变量(我文章涵盖了LaTeX,但HTML的过程相同)以了解其他内容。

将网站分成章节

该网站可以作为一个整体生成,导致包含所有内容的页面很长,也可以分成几章,我认为这更易于阅读。 我将解释如何将网站分成几章,以使读者不会被冗长的网站所吓倒。

为了使网站易于部署在GitHub Pages上,我们需要创建一个名为docs的根文件夹(这是GitHub Pages默认用于呈现网站的根文件夹)。 然后,我们需要为docs下的每个章节创建文件夹,将HTML章节放置在它们自己的文件夹中,并将文件内容放置在名为index.html的文件中。

例如,about.md文件将转换为名为index.html的文件,该文件位于名为about (about / index.html)的文件夹中。 以此方式,当用户输入http:// <your-website.com> /左右/,从文件夹的index.html文件有关将在其浏览器中显示。

以下Makefile可以完成所有这些操作:

# Your book files     
DEPENDENCIES= toc preface about
# Placement of your HTML files
DOCS=docs
all: web
web: setup $(DEPENDENCIES)
        @cp $(DOCS)/toc/index.html $(DOCS)
# Creation and copy of stylesheet and images into
# the assets folder. This is important to deploy the
# website to Github Pages.
setup:
        @mkdir -p $(DOCS)
        @cp -r assets $(DOCS)
# Creation of folder and index.html file on a
# per-chapter basis
$(DEPENDENCIES):
        @mkdir -p $(DOCS)/$@
        @pandoc -s --toc web-metadata.yaml parts/$@.md \
        -c /assets/pandoc.css -o $(DOCS)/$@/index.html
clean:
        @rm -rf $(DOCS)
.PHONY: all clean web setup

选项-c /assets/pandoc.css声明要使用CSS样式表。 它将从/assets/pandoc.css中获取。 换句话说,Pandoc在<head> HTML标记内添加以下行:

要生成网站,请输入:

make

现在,根文件夹应包含以下结构和文件:

.---parts     
|    |--- toc.md
|    |--- preface.md
|    |--- about.md
|
|---docs
    |--- assets/
    |--- index.html
    |--- toc
    |     |--- index.html
    |
    |--- preface
    |     |--- index.html
    |
    |--- about
          |--- index.html
   

部署网站

要在GitHub上部署网站,请执行以下步骤:

  1. 创建一个新的仓库
  2. 将您的内容推送到存储库
  3. 转到存储库设置中的GitHub Pages部分,然后选择GitHub的选项以使用Master分支中的内容

您可以在网站上获得更多详细信息。

查看使用此过程生成的 ,以查看结果。

生成ePub书

创建ePub元信息文件

ePub元信息文件epub-meta.yaml与HTML元信息文件类似。 主要区别在于ePub提供了其他模板变量,例如PublisherCover-image 。 您的ePub图书的样式表可能与您网站的样式表有所不同; 我使用了一个名为epub.css的文件。

---      
title
: 'GRASP principles for the Object-oriented Mind'
publisher
: 'Programming Language Fight Club'
author
: Kiko Fernandez-Reyes
rights
: 2017 Kiko Fernandez-Reyes, CC-BY-NC-SA 4.0 International
cover-image
: assets/cover.png
stylesheet
: assets/epub.css
...

更新Makefile并部署ePub

将以下内容添加到先前的Makefile中:

epub:     
        @pandoc -s --toc epub-meta.yaml \
        $(addprefix parts/, $(DEPENDENCIES:=.md)) -o $(DOCS)/assets/book.epub

ePub目标的命令从HTML版本(您的章节名称)获取所有依赖项,将Markdown扩展名附加到它们,并为它们添加文件夹章节的路径,以便Pandoc知道如何处理它们。 例如,如果$(DEPENDENCIES)仅作为about的前言 ,那么Makefile将调用:

@pandoc -s --toc epub-meta.yaml \     
parts/preface.md parts/about.md -o $(DOCS)/assets/book.epub

Pandoc将采用这两章,将它们合并,生成一个ePub,然后将该书放在Assets文件夹下。

这是使用此过程创建的ePub的 。

总结过程

从Markdown文件创建网站和ePub的过程并不困难,但是有很多细节。 以下概述可能使您更容易理解。

  • HTML书籍:
    • 在Markdown中撰写章节
    • 添加元数据
    • 创建一个Makefile将块粘合在一起
    • 设置GitHub Pages
    • 部署
  • ePub书:
    • 重用以前工作中的章节
    • 添加新的元数据文件
    • 创建一个Makefile将块粘合在一起
    • 设置GitHub Pages
    • 部署

翻译自:

pandoc epub

转载地址:http://eeczd.baihongyu.com/

你可能感兴趣的文章
Linux下安装rabbitmq
查看>>
曹德旺
查看>>
【转】判断点在多边形内(matlab)
查看>>
java基础之集合:List Set Map的概述以及使用场景
查看>>
Python 线程 进程 协程
查看>>
iOS语言中的KVO机制
查看>>
excel第一次打开报错 向程序发送命令时出错 多种解决办法含终极解决方法
查看>>
响应式web设计之CSS3 Media Queries
查看>>
实验三
查看>>
机器码和字节码
查看>>
环形菜单的实现
查看>>
【解决Chrome浏览器和IE浏览器上传附件兼容的问题 -- Chrome关闭flash后,uploadify插件不可用的解决办法】...
查看>>
34 帧动画
查看>>
二次剩余及欧拉准则
查看>>
Centos 7 Mysql 最大连接数超了问题解决
查看>>
thymeleaf 自定义标签
查看>>
关于WordCount的作业
查看>>
C6748和音频ADC连接时候的TDM以及I2S格式问题
查看>>
UIView的layoutSubviews,initWithFrame,initWithCoder方法
查看>>
STM32+IAP方案 实现网络升级应用固件
查看>>